| Index: pkg/compiler/lib/src/elements/entities.dart
|
| diff --git a/pkg/compiler/lib/src/elements/entities.dart b/pkg/compiler/lib/src/elements/entities.dart
|
| index 7d45c4a998403fed4e1d3c2d1ac34843f3f30cef..14a3b386e0d532ad4e68039acf950bb67f2708f6 100644
|
| --- a/pkg/compiler/lib/src/elements/entities.dart
|
| +++ b/pkg/compiler/lib/src/elements/entities.dart
|
| @@ -4,7 +4,20 @@
|
|
|
| library entities;
|
|
|
| -import 'elements.dart' show Entity;
|
| +import '../common.dart';
|
| +
|
| +/// Abstract interface for entities.
|
| +///
|
| +/// Implement this directly if the entity is not a Dart language entity.
|
| +/// Entities defined within the Dart language should implement [Element].
|
| +///
|
| +/// For instance, the JavaScript backend need to create synthetic variables for
|
| +/// calling intercepted classes and such variables do not correspond to an
|
| +/// entity in the Dart source code nor in the terminology of the Dart language
|
| +/// and should therefore implement [Entity] directly.
|
| +abstract class Entity implements Spannable {
|
| + String get name;
|
| +}
|
|
|
| /// Stripped down super interface for library like entities.
|
| ///
|
| @@ -67,3 +80,27 @@ abstract class ConstructorEntity extends FunctionEntity {
|
| bool get isGenerativeConstructor;
|
| bool get isFactoryConstructor;
|
| }
|
| +
|
| +/// An entity that defines a local entity (memory slot) in generated code.
|
| +///
|
| +/// Parameters, local variables and local functions (can) define local entity
|
| +/// and thus implement [Local] through [LocalElement]. For non-element locals,
|
| +/// like `this` and boxes, specialized [Local] classes are created.
|
| +///
|
| +/// Type variables can introduce locals in factories and constructors
|
| +/// but since one type variable can introduce different locals in different
|
| +/// factories and constructors it is not itself a [Local] but instead
|
| +/// a non-element [Local] is created through a specialized class.
|
| +// TODO(johnniwinther): Should [Local] have `isAssignable` or `type`?
|
| +abstract class Local extends Entity {
|
| + /// The context in which this local is defined.
|
| + Entity get executableContext;
|
| +
|
| + /// The outermost member that contains this element.
|
| + ///
|
| + /// For top level, static or instance members, the member context is the
|
| + /// element itself. For parameters, local variables and nested closures, the
|
| + /// member context is the top level, static or instance member in which it is
|
| + /// defined.
|
| + MemberEntity get memberContext;
|
| +}
|
|
|