Commit Graph

69 Commits

Author SHA1 Message Date
Brian Wilkerson 6446cab391 Guard against exceptions thrown by linters (issue 27545)
R=scheglov@google.com

Review URL: https://codereview.chromium.org/2407553002 .
2016-10-07 14:37:39 -07:00
Brian Wilkerson f87e62ef14 Convert subclasses of Enum
R=scheglov@google.com

Review URL: https://codereview.chromium.org/2365553004 .
2016-09-23 06:54:26 -07:00
Paul Berry dac96d0584 Add SyntacticEntity, an interface shared by AstNode and Token.
This allows types to be tightened up for AstNode.childEntities.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org/2357803002 .
2016-09-21 11:23:46 -07:00
John Messerly 865e808f15 support @virtual fields, fix #27384
R=leafp@google.com

Review URL: https://codereview.chromium.org/2352433002 .
2016-09-19 09:45:24 -07:00
Konstantin Shcheglov 54ee2b88c8 ImportElement/ExportElement 'uri' should be the selected URI.
So, that the URI is consistent with the imported/exportedLibrary.

R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org/2343103003 .
2016-09-17 17:26:13 -07:00
Brian Wilkerson 772c93ccf2 Rename libraryUri
R=scheglov@google.com

Review URL: https://codereview.chromium.org/2347213002 .
2016-09-16 10:54:25 -07:00
Brian Wilkerson 7eb7573dc4 Initial support for the NNBD proposal
R=scheglov@google.com

Review URL: https://codereview.chromium.org/2342383002 .
2016-09-16 10:51:19 -07:00
Brian Wilkerson 22040876bf Use declared variables to select the correct configuration for resolution
R=paulberry@google.com, scheglov@google.com

Review URL: https://codereview.chromium.org/2345773003 .
2016-09-16 07:32:40 -07:00
John Messerly 28247a3daa fix #25578, implement @covariant parameter overrides
R=leafp@google.com

Review URL: https://codereview.chromium.org/2336503003 .
2016-09-13 14:57:22 -07:00
Konstantin Shcheglov 8c1d5a3b56 Remove LibraryElement.visibleLibraries.
It is not used now.
The only other is smoke, and its only in test, and it is actually
used incorrectly there.

R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org/2336913002 .
2016-09-13 07:45:53 -07:00
Konstantin Shcheglov 4e95a1b8b6 Remove LibraryElement.isUpToDate().
It is not used anywhere.

R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org/2335843003 .
2016-09-12 15:03:58 -07:00
Konstantin Shcheglov 663a3e810c Reapply abc5051854: Remove 'Element.docRange'.
I also marked the corresponding information in summaries as @deprecated
and made a small tweak to the generator so that it knows that the ids
of deprecated fields are still used.

R=brianwilkerson@google.com, paulberry@google.com
BUG=

Review URL: https://codereview.chromium.org/2330813002 .
2016-09-11 09:41:53 -07:00
pq b7f0ce083b Revert "Remove 'Element.docRange'."
This reverts commit abc5051854.

Background: required to keep `analyzer` version-compatible with `test`.

BUG=
R=brianwilkerson@google.com, scheglov@google.com

Review URL: https://codereview.chromium.org/2293143003 .
2016-08-30 13:10:15 -07:00
Konstantin Shcheglov abc5051854 Remove 'Element.docRange'.
I also marked the corresponding information in summaries as @deprecated
and made a small tweak to the generator so that it knows that the ids
of deprecated fields are still used.

R=brianwilkerson@google.com, paulberry@google.com
BUG=

Review URL: https://codereview.chromium.org/2270903002 .
2016-08-24 09:40:23 -07:00
Paul Berry 052a6c867d Fix summary handling of unresolved imports, exports, and parts.
Previously this was working for a few use cases by dumb luck, but it
wasn't well tested and became broken by
b29c6bf330.  This CL fixes it for real
and adds tests to verify the fix.

Note that there is a change to how we represent an unresolved
import/export: instead of storing a URI_EXISTS modifier in the element
model, we simply mark the imported library element as synthetic.
(This library element existed anyway; we just weren't marking it as
synthetic).  This makes it easy to tie in with summaries, since it is
easy for the resynthesizer to detect that the library doesn't exist at
the time the library handle is resolved.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org/2235373003 .
2016-08-12 13:59:51 -07:00
Brian Wilkerson b29c6bf330 Suppress follow-on errors when a file is imported with either a prefix or a show clause
R=scheglov@google.com

Review URL: https://codereview.chromium.org/2226613004 .
2016-08-09 11:11:39 -07:00
Brian Wilkerson 4dcb9b6196 Initial implementation for lazy compound assignment operators
R=scheglov@google.com

Review URL: https://codereview.chromium.org/2199323002 .
2016-08-02 09:16:17 -07:00
pq f4c2a0faba Analyzer support for @factory methods (linter#253).
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org/2096103002 .

Fixes: https://github.com/dart-lang/linter/issues/253.
2016-06-24 14:41:00 -07:00
pq c07b21d03b Dangling comment reference cleanup in analyzer.
First pass with the new `comment_reference` lint.

BUG=
R=scheglov@google.com

Review URL: https://codereview.chromium.org/1994243002 .
2016-05-19 10:24:53 -07:00
Brian Wilkerson 3024554b3c Improve type information and minor clean up
R=scheglov@google.com

Review URL: https://codereview.chromium.org/1977413002 .
2016-05-16 08:43:58 -07:00
Brian Wilkerson f2356d0d33 Add API to force the computation of constant values
R=scheglov@google.com

Review URL: https://codereview.chromium.org/1966323002 .
2016-05-12 07:37:08 -07:00
Konstantin Shcheglov 76f73c38cc Add 'ParameterizedType get type' to TypeParameterizedElement.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org/1968543002 .
2016-05-10 11:07:09 -07:00
Brian Wilkerson 61818c95a1 Convert some for-in loops for performance
R=scheglov@google.com

Review URL: https://codereview.chromium.org/1955373003 .
2016-05-09 11:01:16 -07:00
Brian Wilkerson 91e2852659 Remove cast from AstNodeImpl._becomeParentOf
R=scheglov@google.com

Review URL: https://codereview.chromium.org/1939853002 .
2016-05-02 10:21:33 -07:00
Brian Wilkerson 24d23680d1 Use null-aware operators to clean up the code
R=scheglov@google.com

Review URL: https://codereview.chromium.org/1933763002 .
2016-04-29 08:48:12 -07:00
Brian Wilkerson ee8bb2cea9 Add a (public) utility method to clean-up code
R=scheglov@google.com

Review URL: https://codereview.chromium.org/1925173002 .
2016-04-28 10:07:32 -07:00
Konstantin Shcheglov 305f1f538c Pull the 'keyword' property into Token.
So, we can use it without casting to KeywordToken.
This gives small, but noticable performanace boost, about 4% on hot VM.

R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org/1909843002 .
2016-04-21 08:23:49 -07:00
pq ac48484a07 Support for @JS() validation (#26225).
See: https://github.com/dart-lang/sdk/issues/26225

BUG=
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org/1871103002 .
2016-04-08 13:45:46 -07:00
pq 6a430d0730 Validation of @required params (#26182).
See: https://github.com/dart-lang/sdk/issues/26182.

BUG=
R=brianwilkerson@google.com, scheglov@google.com

Review URL: https://codereview.chromium.org/1863803002 .
2016-04-06 06:09:44 -07:00
Brian Wilkerson 513433d514 Sort analyzer sources
R=scheglov@google.com

Review URL: https://codereview.chromium.org/1843473002 .
2016-03-28 17:41:52 -07:00
Bob Nystrom 31aa8e26df Distinguish SimpleIdentifier uses and declarations at parse time.
Instead of a very slow .inDeclarationContext() method which determines
whether a given identifier is in a use position or not, we just create
a different subclass at parse time that encodes that fact directly.

Also, remove an unnecessary _validateElement() method.

On my Mac laptop, this takes benchmark/errors_in_all_libraries.dart

From: 0:00:05.673849
To:   0:00:05.193563 (91.53%)

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org/1833573006 .
2016-03-25 10:38:22 -07:00
Brian Wilkerson 5309d86424 First batch of changes to make analyzer package strong mode error free
Review URL: https://codereview.chromium.org/1808123005 .
2016-03-18 07:47:58 -07:00
Brian Wilkerson 50c9131702 Move DartObject into the public API
R=scheglov@google.com

Review URL: https://codereview.chromium.org/1809013003 .
2016-03-18 07:41:58 -07:00
pq 9a042501c9 Timing hooks to profile linters (#24548).
Adds a `TimedAstVisitor` that wraps and times base visitors.  The perf hit for collecting timing was neglible so I opted to NOT surface a way to not collect the data.  We can add that if needed.

Once this is published in a new analyzer, I can bake client support into (for example) the linter.

More context and a client mock here: https://github.com/dart-lang/sdk/issues/24548

BUG=
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org/1807723002 .
2016-03-15 16:10:35 -07:00
pq 4528052e98 Validation of @mustCallSuper overrides.
Carried over and refined from https://codereview.chromium.org/1767843002/.

BUG=
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org/1773803002 .
2016-03-07 13:37:35 -08:00
Leaf Petersen 7d2976c7d5 Add instantiate method on ParameterizedType and InterfaceType,
and deprecate the old substitute4 in favor of instantiate.

BUG=
R=brianwilkerson@google.com, jmesserly@google.com

Review URL: https://codereview.chromium.org/1758913002 .
2016-03-02 15:06:38 -08:00
pq 9ea17184ad Add @overrides to (a lot of) analyzer.
This gets us roughly half+ way there.  We should defintely consider automating this to speed up the rest.  (Even with the quick-fix it's VERY tedious and slow going.)

Once we've done this in bulk, I'd like to add the  `annotate_overrides` lint to analyzer and server `.analysis_options`.

BUG=
R=brianwilkerson@google.com, scheglov@google.com

Review URL: https://codereview.chromium.org/1749143003 .
2016-03-01 16:33:20 -08:00
Brian Wilkerson 76d22fe363 Move DelegatingAstVisitor into the public API
R=scheglov@google.com

Review URL: https://codereview.chromium.org/1747093002 .
2016-03-01 07:57:01 -08:00
Paul Berry 5b78ff96b3 Expose LibraryElementImpl.libraryCycle through LibraryElement.
This ensures that `libraryCycle` will work properly when accessing an
element model resynthesized from summaries.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org/1744633002 .
2016-02-26 14:03:24 -08:00
Brian Wilkerson 70cbc0764d Fix dartdoc for AST nodes
R=keertip@google.com

Review URL: https://codereview.chromium.org/1738533003 .
2016-02-25 08:35:38 -08:00
pq 84f32fe5a6 Validation of @protected method invocations.
* Defines `isProtected` accessors.
* Adds a simple mechanism to our test `AnalysisContextFactory` allowing us to contribute package resolution to test cases.
* Adds `meta` awareness to `ResolverTest`.

NB: this *only* adds method invocation support.  I'll generalize to all members in a follow-up.  There's enough here though that I wanted to get some early feedback.

BUG=
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org/1723243002 .
2016-02-24 09:25:43 -08:00
John Messerly 18ef4ba22b cleanup to InvocationExpression AST declaration
follow up to https://github.com/dart-lang/sdk/commit/0c4e64c8efafd9ac6d8fd004706ee69639b0d04f
splits getter/setter, fixes some sorting

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org/1717243003 .
2016-02-22 16:52:51 -08:00
John Messerly 0c4e64c8ef fixes #25477, downward inference of generic methods
* we now push the context return type down when inferring
* we also take this into account in our initial downards inference for arguments
* adds a common AST interface for FunctionExpressionInvocation and MethodInvocation, so we can handle these more uniformly

R=brianwilkerson@google.com, leafp@google.com

Review URL: https://codereview.chromium.org/1720433002 .
2016-02-22 14:48:39 -08:00
Paul Berry 4eaafd3ee5 Deprecate old "isPotentiallyMutated..." API.
The getters are rewritten to return `true`.  Technically this is not a
breaking change, since all variables are "potentially mutated" in at
least a vacuous sense.

R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org/1711433002 .
2016-02-17 12:36:58 -08:00
Paul Berry c3d98acbeb Add data structures to AST to indicate potentially mutated variables.
These data structures provide the same functionality as
VariableElement.isPotentiallyMutatedInClosure and
VariableElement.isPotentiallyMutatedInScope, but are only accessible
from a resolved AST.  In a later CL,
VariableElement.isPotentiallyMutatedInClosure and
VariableElement.isPotentiallyMutatedInScope will be deprecated.

R=brianwilkerson@google.com, jmesserly@google.com

Review URL: https://codereview.chromium.org/1700263002 .
2016-02-16 14:04:25 -08:00
Brian Wilkerson 71e7ed86c0 Move scanner out of generated and clean up imports
R=scheglov@google.com

Review URL: https://codereview.chromium.org/1693083004 .
2016-02-14 07:48:44 -08:00
Bob Nystrom b0719aa402 Remove unused or unneeded stuff from java_core.dart.
R=brianwilkerson@google.com

Review URL: https://codereview.chromium.org/1688113004 .
2016-02-12 11:10:48 -08:00
Bob Nystrom e19c6dd79d Consolidate the code that replaces a TypeParameter with its bound.
In the process, I fixed a bug where one version of this same lump of
code wasn't correct anymore now that you can have arbitrarily long
chains of type parameters.

DartType isn't maybe the ideal place for resolveToBound(). I wanted it
somewhere that:

1. Would be obvious enough that someone coming along later would
   discover it instead of reinventing it again.
2. Had access to the various data it needs.
3. Wouldn't need a "is TypeParameterType" guard at every callsite
   before it could be used.

I could put it on TypeProvider instead, since it needs access to Object,
but that felt arbitrary.

It could be a top level function, but then I don't think it would be
very discoverable.

R=brianwilkerson@google.com, jmesserly@google.com

Review URL: https://codereview.chromium.org/1686893002 .
2016-02-11 11:27:01 -08:00
Konstantin Shcheglov 0f78186005 Set visible ranges for local variables/functions to the ranges of enclosing blocks.
R=brianwilkerson@google.com
BUG=

Review URL: https://codereview.chromium.org/1690783002 .
2016-02-10 16:16:56 -08:00
Brian Wilkerson ec04f012f7 Move Token into the public API
R=scheglov@google.com

Review URL: https://codereview.chromium.org/1690523002 .
2016-02-10 09:12:26 -08:00