* add new SyntheticSymbolToken class
* whenever fasta inserts a closer ( '}', ']', ')' ) that is not part
of the original source, ensure that the inserted closer is
synthetic (isSynthetic returns true) and in the token stream
* make EOF a synthetic token
R=ahe@google.com, scheglov@google.com
Review-Url: https://codereview.chromium.org/2777153002 .
- Move some misplaced entry points from the vm list to the standalone embedder list.
- Add missing libdart_with_precompiler to GN.
- Add ability to reference the root library in treeshaking roots without knowing its URI (as ::).
R=zra@google.com
Review-Url: https://codereview.chromium.org/2786483002 .
So, I'm removing this flag that didn't allow us to perform invocation
type inference and caused bogus STRONG_MODE_INVALID_CAST_NEW_EXPR errors.
This causes us to perform inference where we don't need it, and report
(only informational?) info:INFERRED_TYPE_ALLOCATION for these invocations.
At the same point, we report errors for these cases, which should be
fixed anyway, and then downward inference will not be performed anymore.
R=brianwilkerson@google.com, leafp@google.com
BUG=
Review-Url: https://codereview.chromium.org/2779003004 .
Before: Canonical names contained pointers to the corresponding Kernel
tree which assumed that the whole tree was in memory whenever the
canonical names were.
Now: Canonical names do not contain these pointers. They were only
really used to perform name-based lookup in the VM's heap so the
canonical name itself is enough.
If we later find that we need to get from a canonical name to its
Kernel tree we can add an offset in the binary (for instance) to the
canonical name or in a separate mapping on the side.
BUG=
R=asgerf@google.com, vegorov@google.com
Review-Url: https://codereview.chromium.org/2781893004 .
- [x] Include the (non-empty) awaiter stack trace in every `getStack` RPC.
- [x] Append the causal stack trace to the final frame of the awaiter stack trace.
- [x] Unit test for awaiter stack trace.
BUG=
R=rmacnak@google.com
Review-Url: https://codereview.chromium.org/2782703002 .
This is another move towards passing all information through data objects
computed by previous phases rather than pulling it directly from
Backend or Compiler.
This is needed to support a shift from model K to model J between
resolution and codegen.
R=efortuna@google.com
Review-Url: https://codereview.chromium.org/2777393003 .
Yet another move towards passing all information through data objects
computed by previous phases rather than pulling it directly from
Backend or Compiler.
This is needed to support a shift from model K to model J between
resolution and codegen.
R=efortuna@google.com
Review-Url: https://codereview.chromium.org/2783623002 .
This adds the yet unfinished createKernelResolutionEnqueuerListener method
to kernel/closed_world_test for easier tracking of the progress towards
computing a closed world purely from Kernel.
R=efortuna@google.com
Review-Url: https://codereview.chromium.org/2778243002 .
The collected classes were needlessly recomputed in NativeCodegenEnqueuer. Now the set of classes is computed once and copied from NativeResolutionEnqueuer to NativeCodegenEnqueuer.
Next step is to move the collection from NativeResolutionEnqueuer to NativeDataResolver since its computation is AST dependent.
R=efortuna@google.com
Review-Url: https://codereview.chromium.org/2779003002 .
It's not 100% replacement, we handle SDK libraries just as any other
library, if it has not been imported yet somewhere, we don't know
about it. But probably this covers the most often case of using a
library in a new file of the project that already uses this SDK
library.
R=brianwilkerson@google.com
BUG=
Review-Url: https://codereview.chromium.org/2781963002 .
1. When a literal is typed, and is not a constant, we don't need its
elements for type inference. Moreover, in this case elements are
allowed to include nodes that are not immediately-evident expressions,
such as instance creations without all type arguments, closures with
block bodies, etc.
2. When a literal is a constant, so we still have to serialize all its
elements, it is possible that we will encounter something not allowed
for immediately-evident expressions, and fail. But that's OK, because
such expressions are also not allowed in constants, so we will have
a compile time error anyway, and IMHO it is OK to degrade a little
in presence of errors.
3. The same is true for method invocations and instance creations,
we need to serialize arguments only for constants, because top-level
inference never uses arguments to infer returned types.
R=brianwilkerson@google.com
BUG=
Review-Url: https://codereview.chromium.org/2779993002 .