Files
sdk/pkg/kernel
Dmitry Stefantsov 6bfdd5239b [cfe] Remove best-effort testing of round-trip text serialization
Tests are now run over entire libraries instead of their sub-trees
that are deemed to be ready for the serialization by the verifier.
The update revealed two scoping bugs.  This CL fixes them as well,
namely the following:

  * Result expression of a block expression should be in the scope of
    the block.  That is, the variables declared in the block are
    visible in the result expression.

  * Local function declarations should be visible in the blocks they
    are declared in.  Accidentally, the Bind combinator was used
    instead of Rebind, resulting in local functions being visible in
    their own bodies, but not in the blocks they are declared in.

Change-Id: I856045464caa934228d5f259a4d2d582e77deb88
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/155124
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Dmitry Stefantsov <dmitryas@google.com>
2020-07-21 11:01:41 +00:00
..

Dart Kernel

Dart Kernel is a small high-level language derived from Dart. It is designed for use as an intermediate format for whole-program analysis and transformations, and to be consumed by codegen and execution backends.

The kernel language has an in-memory representation in Dart and can be serialized as binary or text.

Both the kernel language and its implementations are unstable and are under development.

This package contains the Dart part of the implementation and contains:

  • A transformable IR for the kernel language
  • Serialization of kernel code

Note: The APIs in this package are in an early state; developers should be careful about depending on this package. In particular, there is no semver contract for release versions of this package. Please depend directly on individual versions.

See ast.dart for the in-memory IR, or binary.md for a description of the binary format. For now, the textual format is very ad-hoc and cannot be parsed back in.