It doesn't work to make TypeParameterElement.type choose
nullability/non-nullability based on the enclosing library, because
for type parameters of synthetic function types, there is no enclosing
library.
Change-Id: Ic74cc639534e3c03f3c46e7eacfb5655ca74019a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102981
Auto-Submit: Paul Berry <paulberry@google.com>
Commit-Queue: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
1. Read GenericFunctionType fully, but in two steps to avoid recursion.
We need to read it fully, because it might be a part of a const
initializer, so the client might request the initializer expression,
and there is no way to him to finish reading. Amnd in general, we
don't read expressions lazily.
2. For consistency we need to set identifiers for all GenericFunctionType
nodes that we want to store. So, DeclarationResolver should be updated
to move the identifier number even though we don't use the same
mechanism for building elements ininitializers, as we use for type
annotations outside expressions.
R=brianwilkerson@google.com
Change-Id: I58faa5408bff5250a8c775249438def7f742594b
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102840
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
1. Don't store tokens.
2. Start moving toward storing only semantic information.
3. Don't use DeclarationSplicer, DeclarationResolver.
4. GenericFunctionType(s) don't work, we need a way to associate AST
location to summary location. I think it is solvable.
Change-Id: If0bf9f20f8092068488322129853b788dd947eb0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102127
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This is needed for two reasons:
1. Summary linking, because type inference needs to behave differently
for opted-in vs. opted-out libraries.
2. Summary resynthesis, because TypeParameterElement.type needs to
behave differently for opted-in vs. opted-out libraries.
Note that reason 1 won't apply to the summary2 mechanism, because it
has access to full ASTs when doing type inference. But it will still
need to record compilation unit NNBD status for reason 2.
This CL merely stores the correct data in the summary; it doesn't
address resynthesis, linking, or summary2.
Change-Id: I1aa2226e5865ef76747267de6198223997d6ad0d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101920
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
The fasta parser handles error tokens produced by the scanner
but the old parser expect error tokens to have been already
translated into error messages. This updates the analyzer scanner
to optionally translate scanner errors.
Change-Id: I62383965285511c93e8fbf6a4cada97e9e4e3c04
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102143
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This is the first of several CLs that move error tokens to the head
of the token stream so that parser handling of error tokens
can be simplified and less error prone.
In this particular CL:
- update parser to handle error tokens at the head of the token stream
- remove several places that analyzer was preprocessing error tokens
now that the parser handles them
Change-Id: Iddf60ab2879567a345a692b64043bd42f1871947
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102040
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Dan Rubel <danrubel@google.com>
In the long term this class will take over much of the role played by
RestrictedAnalysisContext. For now it is simply a container for the
analysis options, declared variables, type provider, and type system.
In follow-up CLs I will plumb this object through various parts of the
analyzer, especially the LinterContext; this will enable the
canBeConst... methods to be moved into SynchronousSession, and that
will allow us to stop creating a LinterContext in
BestPracticesVerifier.
Change-Id: I7ac2d386c10d2e5339d9715848b185c163e1f858
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101860
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>
Also remove FunctionTypeImpl.recoverTypeArguments because Analyzer
does not need it anymore.
This CL used to replace GenericFunctionTypeElement based FunctionType(s)
with synthetic FunctionType(s). But this is not enough step, because
ideally we want to do this for all FunctionType(s) in invocations. And
this is too big change that affects many parts of Analyzer to do it now.
R=brianwilkerson@google.com, paulberry@google.com
Change-Id: I180eca03ed249abfafe8d6faa94050a30969f125
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/98984
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
This is necessary in order for resynthesis tests to be unambiguous in
the presence of NNBD, because with the old syntax, it wasn't clear
whether a type like `() -> int?` meant `int? Function()` or `int
Function()?`. In a future CL, we'll make a similar change
FunctionType.toString().
Change-Id: Iedf6162de53c7fe57f858913d8e82faac17971c0
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101242
Commit-Queue: Paul Berry <paulberry@google.com>
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
FunctionTypeImpl.fresh() works in inscrutable ways, and does not work
correctly for synthetic FunctionType(s).
This change breaks 2 or 3 tests with summary2, because of using
FunctionTypeImpl.recoverTypeArguments() in ErrorVerifier
_checkForImplicitDynamicInvoke().
CheckerTest | test_implicitDynamic_function
CheckerTest | test_implicitDynamic_method
I prototyped a way to stop recovering type arguments some time ago.
https://dart-review.googlesource.com/c/sdk/+/98984R=brianwilkerson@google.com
Change-Id: I0077e9d91663912cbd4f6c1bf0c2acea5a5056e1
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101241
Reviewed-by: Brian Wilkerson <brianwilkerson@google.com>
Commit-Queue: Konstantin Shcheglov <scheglov@google.com>
I elected not to provide an `sdkVersion` argument to FeatureSet for
these tests, on the grounds that if any new features are added to the
SDK before NNBD, we want to make sure that those features are
compatible with the NNBD summary behavior.
Change-Id: I62e383e903b5756dcbb8cb498e71c4e739731d3d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/101070
Reviewed-by: Konstantin Shcheglov <scheglov@google.com>
Commit-Queue: Paul Berry <paulberry@google.com>