When it prints the important parts (here) is:
* Print (e.g.) "class Bar extends core::Object" --- it thus visits the
canonical name for "core::Object"
* Prints fields in "Bar" (and thus lazy loads more content).
* Prints constructors with stuff like "super dart.core::Object::•()".
With NNBD SDK this is what happens:
* Prints "core::Object" via *canonical name*.
* Lazy loads; this create a reference on "core::Object".
* Prints "core::Object" via *reference* -> this gives another name (core2).
On the second print it:
* Prints "core::Object" via *reference* (as it was already loaded)
-> this gives the previous "other name" (core2).
* Lazy loads
* Prints "core::Object" via *reference* -> this gives the previous
"another name" (core2).
The important part is, that when loading class Bar (in lazy loading
mode) it has lots of members --- e.g. "Bar::_identityHashCode" which is
a member signature. The name is private and thus has a Library
(dart:core) --- via reference. This creates a reference on the
canonical name for "dart:core".
With a non-NNBD sdk the same thing happens, but there member signatures
aren't there, so dart:core is never given a reference and it thus
continues to use the reference.
The "fix" here is to print the whole thing (and thus lazy load what's
needed) up front, before using the output for a comparison.
One might argue that the ast_to_text printer should be fixed instead,
but for now that's not done.
Fixes#41293.
Change-Id: I87bdfc6357196f52e560ec90de6f5ea3ff610b1a
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/142026
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
Some tests in pkg/frontend/test are actually test suites written using the
pkg/testing framework.
This change runs these suites using a custom test runner instead of simply
running the test file, which makes the individual test results, timings and
logs available to the test system.
Change-Id: Iae5f37d9bd1b3e9b26c66443fe10e5cca6a6b6bf
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/118540
Commit-Queue: Karl Klose <karlklose@google.com>
Reviewed-by: Jonas Termansen <sortie@google.com>
Reviewed-by: Johnni Winther <johnniwinther@google.com>