Paul Berry
b3af151325
Rework detection of uninstantiated bound errors.
...
We now determine whether a type is simply bounded in the summary
linker, so that we can take advantage of the linker's circularity
detection logic.
Fixes #34635 .
Fixes #34636 .
Change-Id: I6c5040dbaeb79957d8a84e3f76e6a51834b57f05
Reviewed-on: https://dart-review.googlesource.com/c/78867
Commit-Queue: Paul Berry <paulberry@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
2018-10-09 22:07:02 +00:00
Paul Berry
28780d34df
Convert element.dart to triple-slash comment style.
...
Change-Id: I8af3b0fb06f10ffbc1b9fca6489d3e82ea77dcc6
Reviewed-on: https://dart-review.googlesource.com/c/78600
Auto-Submit: Paul Berry <paulberry@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2018-10-08 20:22:59 +00:00
Brian Wilkerson
6c577f0620
Deprecate Element.isVirtual
...
Change-Id: I987ba5fbe847c961d698692e0e8b6c98cdbfb30c
Reviewed-on: https://dart-review.googlesource.com/77230
Reviewed-by: Jenny Messerly <jmesserly@google.com >
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
2018-09-29 15:43:43 +00:00
Konstantin Shcheglov
2455141018
Remove ClassElement.isSuperConstructorAccessible().
...
I don't see it used anywhere outside of Analyzer itself in internal
codebase. So, I think it is safe to remove.
R=brianwilkerson@google.com , paulberry@google.com
Change-Id: If5dafdaaa0f94cf280822418d99ed64060b66d4b
Reviewed-on: https://dart-review.googlesource.com/75562
Reviewed-by: Paul Berry <paulberry@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2018-09-20 16:28:13 +00:00
Konstantin Shcheglov
81ce969060
Enable implicit constructors with optional parameters in mixin applications.
...
The spec changed in https://github.com/dart-lang/sdk/commit/63c6851dd01514e9d9e6cb96da0430e15b66d576
R=brianwilkerson@google.com
Bug: https://github.com/dart-lang/sdk/issues/34375
Change-Id: If7ba66d82fa4127cc6764d93f299790e8a862b42
Reviewed-on: https://dart-review.googlesource.com/75422
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2018-09-19 16:12:21 +00:00
Konstantin Shcheglov
c29ec5994c
Resolve super invocations in mixin declarations.
...
R=brianwilkerson@google.com
Change-Id: I81dddc8187a13a17db91f77dc0df19248db7d45b
Reviewed-on: https://dart-review.googlesource.com/74007
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2018-09-07 20:06:21 +00:00
Konstantin Shcheglov
d659022f08
Build elements for MixinDeclaration(s).
...
R=brianwilkerson@google.com , paulberry@google.com
Change-Id: Ica9912b795bbdfeea2dd46130e30bde3bdc4cef3
Reviewed-on: https://dart-review.googlesource.com/72067
Reviewed-by: Paul Berry <paulberry@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2018-08-29 21:05:35 +00:00
Konstantin Shcheglov
9c642328ac
Summarize mixin declarations.
...
R=brianwilkerson@google.com , paulberry@google.com
Change-Id: I2aecbe4e3c5548a8034c51191f58eaf3439b9d76
Reviewed-on: https://dart-review.googlesource.com/71928
Reviewed-by: Paul Berry <paulberry@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2018-08-29 19:08:56 +00:00
Sam Rawlins
ff3908d6df
Implement INVALID_SEALED_ANNOTATION analyzer Hint
...
This follows the pattern of other meta-annotations, when it comes to the AST:
* Element gains a new `hasSealed` getter. Many overrides.
* ElementAnnotation gains a new `isSealed` getter.
Bug: https://github.com/dart-lang/sdk/issues/34232
Change-Id: If8ae8e16b500125cb3b92b3cf83d46de6ca6ee23
Reviewed-on: https://dart-review.googlesource.com/71227
Commit-Queue: Samuel Rawlins <srawlins@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2018-08-23 22:03:22 +00:00
Brian Wilkerson
b8ee603eb2
Deprecate the EMPTY_LIST constants in analyzer
...
Change-Id: I4c85c8c21207c86003cdb47d499ae9a934606889
Reviewed-on: https://dart-review.googlesource.com/71234
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
2018-08-23 14:32:20 +00:00
Brian Wilkerson
de3570d8bd
Add support for the new mixin feature to the element model
...
Change-Id: I99344c387c4138438d3d7390bfce15b12e0073ab
Reviewed-on: https://dart-review.googlesource.com/71221
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
2018-08-23 00:19:06 +00:00
Sam Rawlins
7818db20a7
Add analysis hint for invalid use of @visibleForTemplate code.
...
Bug: https://github.com/dart-lang/sdk/issues/33353
Change-Id: Iaafccc3dca6b8d87bd54ed721871c72e9ac456c8
Reviewed-on: https://dart-review.googlesource.com/68432
Commit-Queue: Samuel Rawlins <srawlins@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2018-08-09 16:51:45 +00:00
Brian Wilkerson
e98334a58c
Remove remaining references to propagated types and mark the members as deprecated
...
Change-Id: I2508bc7d6afb36a42e33f0e421f3a39f6d8b4d02
Reviewed-on: https://dart-review.googlesource.com/66142
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Reviewed-by: Devon Carew <devoncarew@google.com >
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
2018-07-22 23:47:01 +00:00
Paul Berry
9179db84df
Resynthesize typedef types properly from kernel.
...
I broke this functionality when I refactored FunctionTypeImpl into
lazy and strict variants; this CL restores it and simplifies it.
This CL also adds a new method to the analyzer API:
FunctionTypeAliasElement.instantiate(), to allow a client to supply
type arguments to a typedef (as one would at a site where the typedef
is used), to produce a type. Putting the method in
FunctionTypeAliasElement helps move us toward an API that
distinguishes type "constructors" from types (a generic typedef
defines not just one type but a family of types; to obtain a type one
must instantiate the typedef by supplying type arguments).
Change-Id: I722db2befe2d54fd53d625ddba0dec856a555a7b
Reviewed-on: https://dart-review.googlesource.com/62282
Commit-Queue: Paul Berry <paulberry@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2018-06-26 23:32:48 +00:00
Sam Rawlins
ed0ba901e1
Doc - Fix library links in analyzer docs
...
These new links are stil brittle; if dartdoc changes the paths of libraries, or
if `element.dart` gets a `library` directive. But at least they're fixed. There
doesn't appear to be a less brittle solution.
Bug: https://github.com/dart-lang/sdk/issues/27994
Change-Id: Ibff7c01442d10e7133e68500219ac9a5713888b2
Reviewed-on: https://dart-review.googlesource.com/61913
Reviewed-by: Janice Collins <jcollins@google.com >
Commit-Queue: Samuel Rawlins <srawlins@google.com >
2018-06-22 18:40:05 +00:00
Konstantin Shcheglov
8515d74332
Add ImportElement.namespace and use it in completion.
...
R=brianwilkerson@google.com
Change-Id: I58cadf0e3239ad4ae8584d79485f4d9ebda10eba
Reviewed-on: https://dart-review.googlesource.com/54064
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2018-05-07 21:23:48 +00:00
Konstantin Shcheglov
b7a63c8d52
Use @isTest and @isTestGroup to understand executable element as a test/group.
...
R=brianwilkerson@google.com , devoncarew@google.com
Bug: https://github.com/flutter/flutter-intellij/issues/2055
Change-Id: I7c8e7639d111eca63df0780ebdec182573493047
Reviewed-on: https://dart-review.googlesource.com/53690
Reviewed-by: Devon Carew <devoncarew@google.com >
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
2018-05-04 17:09:06 +00:00
Brian Wilkerson
a865531f57
Remove two unused classes from the public API
...
Change-Id: I4d27bc95d3a3e0ffc3ad379ffd823abf4fff0db1
Reviewed-on: https://dart-review.googlesource.com/51244
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
2018-04-16 19:15:29 +00:00
Brian Wilkerson
dd897d35a2
Move the task API out of the public API
...
Change-Id: I0fbafb4965ced89fb9a063edb773c3f1cb3a39fa
Reviewed-on: https://dart-review.googlesource.com/51242
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
2018-04-16 18:18:08 +00:00
Brian Wilkerson
1d159e7c23
Rename annotation testing methods in Element
...
Change-Id: I0f60b9abd3de350e62d89eac0d690a1db40316b7
Reviewed-on: https://dart-review.googlesource.com/45080
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
2018-03-05 17:23:48 +00:00
Brian Wilkerson
5fd560f96b
Add getters to replace ParameterKind
...
Change-Id: I0886c8d032e963857b8054e894ed3343a235b5c2
Reviewed-on: https://dart-review.googlesource.com/44921
Reviewed-by: Konstantin Shcheglov <scheglov@google.com >
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com >
2018-03-05 14:22:52 +00:00
Paul Berry
593273cf51
Finish implementing mixin type inference in the analyzer.
...
Fixes #32146 .
Change-Id: Ia46b6a54757901681858e682bdd6f809c194999c
Reviewed-on: https://dart-review.googlesource.com/43944
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
Commit-Queue: Paul Berry <paulberry@google.com >
2018-02-27 17:49:59 +00:00
Sam Rawlins
14629098dd
Enforce @visibleForTesting annotations.
...
In particular, enforce that a method annotated with @visibleForTesting can only
be referenced from within the declaring library, or within a file that has
"/test" in its path. This allows @visibleForTesting methods to be accessed from
test files, or files in "/testing" folders, etc.
Bug: https://github.com/dart-lang/sdk/issues/28273
Change-Id: I3c19f73be330c49face7e3203879742d514bca74
Reviewed-on: https://dart-review.googlesource.com/27201
Commit-Queue: Samuel Rawlins <srawlins@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2017-12-14 00:17:24 +00:00
Sam Rawlins
0a6253312f
Check for @alwaysThrows when evaluating for dead code.
...
The meta package version 1.1.0 includes a new `alwaysThrows`, which developers
can use to annotate methods that always throw. This helps to avoid erroneous
DEAD_CODE warnings from analyzer.
Bug: https://github.com/dart-lang/sdk/issues/31384
Change-Id: I70e2469b4f3a0d2c87064851160b268ea2259807
Reviewed-on: https://dart-review.googlesource.com/26563
Commit-Queue: Samuel Rawlins <srawlins@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2017-12-07 19:29:18 +00:00
Konstantin Shcheglov
e8fe137e94
Remove ExecutableElement.functions and don't resynthesize local functions.
...
As for all other local elements - variables and labels, we now
created them when we analyze the unit, but we don't export them
through the element model.
R=brianwilkerson@google.com , paulberry@google.com
Bug:
Change-Id: I71eb567f58d6d710fc8a58d1653a66d95ef1ddcd
Reviewed-on: https://dart-review.googlesource.com/9861
Commit-Queue: Konstantin Shcheglov <scheglov@google.com >
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com >
2017-10-01 21:08:04 +00:00
Brian Wilkerson
7afa1e2986
Deprecate MethodElement.getReifiedType
...
R=jmesserly@google.com
Review-Url: https://codereview.chromium.org/2997333002 .
2017-08-21 16:21:43 -07:00
Konstantin Shcheglov
ce4d7b1891
Restore UriReferencedElement and its uri/uriOffset/uriEnd properties.
...
This is a partial rollback of bdd69ccd6c ,
it restores APIs and implementations, but does not restore its usages
in analyzer or analysis_server. Should be enough to make clients
temporary OK, but also keeps resynthesizing from Kernel working.
R=brianwilkerson@google.com , paulberry@google.com
BUG=
Review-Url: https://codereview.chromium.org/2991453002 .
2017-07-21 16:59:52 -07:00
Konstantin Shcheglov
bdd69ccd6c
Remove UriReferencedElement with its uri/uriOffset/uriEnd properties.
...
The 'Move File' refactoring does not work, so I comment out most
of its code.
R=brianwilkerson@google.com , paulberry@google.com
BUG=
Review-Url: https://codereview.chromium.org/2982993003 .
2017-07-19 09:31:03 -07:00
Konstantin Shcheglov
51b50f7710
Restore visitLabelElement() and visitLocalVariableElement().
...
Revert "Remove visitLabelElement() and visitLocalVariableElement()."
This reverts commit 2c064df145 .
R=brianwilkerson@google.com , paulberry@google.com
BUG=
Review-Url: https://codereview.chromium.org/2977623002 .
2017-07-10 11:00:27 -07:00
Konstantin Shcheglov
2c064df145
Remove visitLabelElement() and visitLocalVariableElement().
...
These elements are not parts of the bigger element model, so it
does not make sense to implement these visit methods.
R=brianwilkerson@google.com , paulberry@google.com
BUG=
Review-Url: https://codereview.chromium.org/2971253002 .
2017-07-07 08:04:59 -07:00
Konstantin Shcheglov
49da688b0b
Remove ExecutableElement.labels altogether.
...
R=brianwilkerson@google.com
BUG=
Review-Url: https://codereview.chromium.org/2972103002 .
2017-07-06 14:32:07 -07:00
Konstantin Shcheglov
7ed5e1c433
Remove ExecutableElement.localVariables altogether.
...
It is not used in analyzer or analysis_server, and in packages in
internal codebase.
R=brianwilkerson@google.com
BUG=
Review-Url: https://codereview.chromium.org/2966313002 .
2017-07-05 16:59:41 -07:00
Konstantin Shcheglov
7ea7324747
Remove CompilationUnitElement.getElementAt().
...
It is not used by any package we use internally.
It was added for search, but is not used anymore.
R=brianwilkerson@google.com
BUG=
Review-Url: https://codereview.chromium.org/2967203002 .
2017-07-05 10:52:02 -07:00
Brian Wilkerson
4fab4a1f52
Clean up type parameters in comments
...
R=devoncarew@google.com
Review-Url: https://codereview.chromium.org/2948393002 .
2017-06-23 12:53:11 -07:00
Janice Collins
37330be1b9
Expose function contained in GenericTypeAliasImpl.
...
R=brianwilkerson@google.com
Review-Url: https://codereview.chromium.org/2787513003 .
2017-03-30 09:08:46 -07:00
Brian Wilkerson
4f28d97ac2
Add error checking for the immutable annotation (issue 27750)
...
R=pquitslund@google.com
Review-Url: https://codereview.chromium.org/2775863004 .
2017-03-24 11:56:24 -07:00
Jacob Richman
6d1e3b4a90
Fix analyzer formatter errors.
...
BUG=
R=jmesserly@google.com
Review-Url: https://codereview.chromium.org/2765153002 .
2017-03-21 21:42:40 -07:00
Brian Wilkerson
c56210c294
Create a new element for generic function types
...
R=scheglov@google.com
Review-Url: https://codereview.chromium.org/2758123002 .
2017-03-19 10:45:50 -07:00
Brian Wilkerson
0fa6715bd8
More support for generic function types
...
Review-Url: https://codereview.chromium.org/2736643006 .
2017-03-07 08:04:01 -08:00
Janice Collins
05b00a9884
Add toSource() to ElementAnnotation, ElementAnnotationImpl (issue 28631)
...
This is the dartdoc-required case only.
R=brianwilkerson@google.com
Review-Url: https://codereview.chromium.org/2713243003 .
2017-02-27 09:22:27 -08:00
Konstantin Shcheglov
f47ebbcea3
Add CompilationUnitElement.lineInfo and resynthesize it.
...
One bit that is not quite straight is that UnlinkedUnit.lineInfo is
empty. Normally we would have [0] for empty files, which we pretend
missing files are. Should we fix this instead of checking in the
resynthesizer?
R=brianwilkerson@google.com , paulberry@google.com
BUG=
Review-Url: https://codereview.chromium.org/2694403003 .
2017-02-15 09:54:28 -08:00
Jennifer Messerly
0e00b3e5c8
fix #28008 , fix #28009 implement FutureOr<T>
...
This implements FutureOr<T> in strong mode, otherwise it's ignored (treated as `dynamic`.
Also fixes strong mode's inference subtype function incorrectly treating `void` as a malformed type. This had the consequence of allowing `void` to be inferred as a type argument.
R=leafp@google.com , paulberry@google.com
Review-Url: https://codereview.chromium.org/2647833002 .
2017-01-25 15:32:57 -08:00
Bob Nystrom
590a188066
Use "Object" as the reified type of covariant override parameters.
...
This ensures the runtime type is of the tear-off expression's static
type, even when accessed through a superclass.
I also moved the two tests into a subdirectory so they are easier to
find. (It is inscrutable to me why we would have a single directory
with 1,868 test files in it.) That involved enabling recursive
directory listing in codegen_test, which exposed a couple of things.
Fix #27484 .
R=leafp@google.com
Review-Url: https://codereview.chromium.org/2641543003 .
2017-01-18 14:48:42 -08:00
Konstantin Shcheglov
24f61aef20
Report HintCode.MISSING_RETURN for async functions with return type that matters.
...
R=brianwilkerson@google.com , paulberry@google.com
BUG=
Review-Url: https://codereview.chromium.org/2630023003 .
2017-01-15 09:51:26 -08:00
Brian Wilkerson
d1fcb1e986
Add visitors that throw by default
...
R=paulberry@google.com
Review-Url: https://codereview.chromium.org/2623453003 .
2017-01-09 10:08:53 -08:00
Paul Berry
ae6fd961a1
Prepare for decoupling analyzer ASTs from element model.
...
This CL creates top level accessor functions which may be used to map from AST data structures to their corresponding elements and types, and begins using those accessor functions throughout the SDK. It also adds empty interfaces ResolutionTarget and ResolutionType, which are implemented by Element and DartType respectively.
In a future CL, I will change the types stored in the AST to ResolutionTarget and ResolutionType, rather than specific element types; this will decouple the ASTs from the element model. The presence of the accessor functions will allow clients to continue accessing elements and types in a type-safe way.
R=asgerf@google.com , brianwilkerson@google.com , scheglov@google.com , vsm@google.com
Review URL: https://codereview.chromium.org/2551023005 .
2016-12-07 11:08:14 -08:00
Andrew Lorenzen
c9d7a5a5c8
Make Element.accept() generic. ( #27690 )
...
* Make Element.accept() generic.
* Update subclasses of Element.
2016-12-06 20:42:00 +01:00
Jennifer Messerly
4213059b74
fix #27040 , promote the upper bound of a type parameter
...
also fixes #27210 , by cleaning up TypeParameterMember equality TODO.
R=leafp@google.com
Review URL: https://codereview.chromium.org/2375373002 .
2016-11-01 18:14:59 -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
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