DartType.subst would accidentally drop FunctionTypeVariables that had
bounds modified by substitution.
Use a visitor for printing, with changes that make it possible to see the accidentally
free FunctionTypeVariables that were dropped.
Change-Id: Ie6c8d0bb8f2a22b11db6f009067cf64e38ab93c7
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/113600
Commit-Queue: Stephen Adams <sra@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
This ensures JS calls in the SDK are statically typed (or, at least, don't
inadvertently trigger dynamic calls).
Analyzer has a hack where `JS('String', ...)` is typed as `String`. Kernel
doesn't, but we get the same effect (in DDK) via `JS<String>('String', ...)`.
This should not affect dart2js which specially interprets the type string
itself.
Change-Id: I63c5f199e2c51da2beca72659261acf1faff66e8
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112937
Reviewed-by: Mark Zhou <markzipan@google.com>
Commit-Queue: Vijay Menon <vsm@google.com>
Users of the CFE often need the ClassHierarchy and may CoreTypes after
invoking the CFE. This CL extends the result of `kernelForProgram` and
`kernelForComponent` to a `CompilerResult` that includes these objects.
Change-Id: I08491198fe876b6514e49993ad794388d6662c9c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/112259
Commit-Queue: Johnni Winther <johnniwinther@google.com>
Reviewed-by: Alexander Markov <alexmarkov@google.com>
We should also be able to test for larger examples, so this CL adds
support for directories where all files are included. If the directory
contains a .packages file that is used so we can test packages too.
Change-Id: Iceda03505575bd9e5604a6e374b7f5fa7185a82e
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/111421
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Add a "-s" (succinct) option to have a more dense output.
Meant for use together with "-a" so one can get a quick overview of how
many tests fail, e.g.
out/ReleaseX64/dart pkg/front_end/test/id_testing/id_testing_test.dart -a -s
Change-Id: I9e1d91694be76e6c66bf0f3c9168783f920a5bf4
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/110914
Commit-Queue: Jens Johansen <jensj@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
The many different entrypoints to the CFE have repeatedly shown problems
with targets that do not support unevaluated constants being used
without providing an environment.
Making the targets opt-in to supporting unevaluated constants will
give the users of CFE early notice that CFE is used inconsistently
(as opposed to the backends failing when they happen to see an
UnevaluatedConstant node that they don't support).
Change-Id: I98c80df3a551823598e413e2895f5649f22f7c22
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/110561
Reviewed-by: Vijay Menon <vsm@google.com>
Commit-Queue: Johnni Winther <johnniwinther@google.com>
The combination of type expression hoisting, hot restart, and generic cache
reset triggers occasional breakage (see #37259). Not clearing the generic
cache should be safe, but will some leak memory: unloaded types will
pollute the cache. References to those unloaded types in user code,
however, should be cleared.
Bug: https://github.com/dart-lang/sdk/issues/37259
Change-Id: Ia15115a41556db7a19109f0178baa63ec0cfcb9c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/109100
Reviewed-by: Leaf Petersen <leafp@google.com>
Commit-Queue: Vijay Menon <vsm@google.com>
This is a first pass at breaking up runtime_types.dart.
runtime_types_resolution.dart contains the former parts of runtime_types
that runtime_types_new depends on (namely, RuntimeTypesNeed and
RuntimeTypesSubstitutions), as well as their transitive dependencies.
This leaves just the code responsible for encoding the old type
representation in runtime_types, mirroring what we have in
runtime_types_new. As a result, both runtime_types and runtime_types_new
have runtime_types_resolution as a common dependency, but
runtime_types_resolution does not depend on a particular encoding.
However, runtime_types_resolution is still over 2.5 KLOC and still
depends on the old TypeCheck representation.
Change-Id: I22d932d2695cb573c2a3b4dafe5132d4e424fa77
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/109557
Commit-Queue: Mayank Patke <fishythefish@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
A bad 'dummy interceptor' optimization was applied to a super-call to
a method that is used in an intercepted class. This lead to seeing '0'
instead of the List receiver. Fix is to base decision on the target
method when available.
Bug: 37494
Change-Id: I07e5555cbe0083d7dd2510dc5bb0cba99201cd0d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/109553
Reviewed-by: Mayank Patke <fishythefish@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
This includes the RTI representation, string/canonical recipe
representations, recipe parsing, and subtyping. We do not yet support
optional parameters (named or positional), required named parameters, or
generic functions.
Change-Id: Ifb8d83f7842028fcd904c17d2e2774e42304d32c
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/108961
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Mayank Patke <fishythefish@google.com>