mirror of
https://github.com/dart-lang/sdk
synced 2024-11-02 09:43:08 +00:00
506ac7f953
This CL changes the way linker type inference works. Instead of walking the operations in an UnlinkedExpr in order and inferring types directly, it first builds an AST for the expression using ExprBuilder, then uses ResolverVisitor to resolve the AST and perform type inference. This helps ensure that summary type inference and ordinary AST-based type inference produce the same result, since they now use the same core algorithm. In particular, this means that summary type inference now does downwards inference properly. Since the ResolverVisitor makes greater use of the element model than the rest of the linker, this required implementing additional methods in the linker's element model. This CL includes some minor fixes to ExprBuilder that were uncovered during testing. It also contains some minor changes to ResolverVisitor to make it work during linking. Fixes #32525. Fixes #32394. Change-Id: I5ec9b2bf5565ad30b8cc856475334323dc118da8 Reviewed-on: https://dart-review.googlesource.com/48741 Commit-Queue: Paul Berry <paulberry@google.com> Reviewed-by: Konstantin Shcheglov <scheglov@google.com> |
||
---|---|---|
.. | ||
angular | ||
co19 | ||
co19_2 | ||
compiler | ||
corelib | ||
corelib_2 | ||
dart | ||
html | ||
isolate | ||
kernel | ||
language | ||
language_2 | ||
lib | ||
lib_2 | ||
search | ||
standalone | ||
standalone_2 | ||
light_unittest.dart | ||
README |
Run Existing Tests ================== See the output of ../tools/test.py --help for how to run tests. See also https://code.google.com/p/dart/wiki/Building#Testing for detailed examples. Create New Tests ================ See comments above factory StandardTestSuite.forDirectory in ../tools/testing/dart/test_suite.dart for the default test directory layout. By default test-file names must end in "_test.dart", but some test suites, such as ./co19, subclass StandardTestSuite and override this default. See comments at the beginning of ../tools/testing/dart/multitest.dart for how to create tests that pass by failing with a known error. For example, ... int x = "not an int"; /// 01: static type warning ... as part of a test will only pass the "--compiler dart2analyzer" test if the assignment generates a static type warning.