Index: pkg/compiler/lib/src/kernel/elements.dart |
diff --git a/pkg/compiler/lib/src/kernel/elements.dart b/pkg/compiler/lib/src/kernel/elements.dart |
index e90b58c1d85e55a08f5ba735d5c5dca7dbf9ee2d..056f09f3403b4920a77dd1d0c4019491f0a55ee7 100644 |
--- a/pkg/compiler/lib/src/kernel/elements.dart |
+++ b/pkg/compiler/lib/src/kernel/elements.dart |
@@ -2,246 +2,28 @@ |
// for details. All rights reserved. Use of this source code is governed by a |
// BSD-style license that can be found in the LICENSE file. |
-/// Entity model for elements derived from Kernel IR. |
+/// Entity interfaces for modeling elements derived from Kernel IR. |
import '../elements/entities.dart'; |
-import '../elements/names.dart'; |
-import '../elements/types.dart'; |
-class KLibrary implements LibraryEntity { |
- /// Library index used for fast lookup in [KernelWorldBuilder]. |
- final int libraryIndex; |
- final String name; |
- final Uri canonicalUri; |
- |
- KLibrary(this.libraryIndex, this.name, this.canonicalUri); |
- |
- String toString() => 'library($name)'; |
-} |
- |
-class KClass implements ClassEntity { |
- final KLibrary library; |
- |
- /// Class index used for fast lookup in [KernelWorldBuilder]. |
- final int classIndex; |
- |
- final String name; |
- final bool isAbstract; |
- |
- KClass(this.library, this.classIndex, this.name, {this.isAbstract}); |
- |
- @override |
- bool get isClosure => false; |
- |
- String toString() => 'class($name)'; |
-} |
- |
-abstract class KMember implements MemberEntity { |
- /// Member index used for fast lookup in [KernelWorldBuilder]. |
- final int memberIndex; |
- final KLibrary library; |
- final KClass enclosingClass; |
- final Name _name; |
- final bool _isStatic; |
- |
- KMember(this.memberIndex, this.library, this.enclosingClass, this._name, |
- {bool isStatic: false}) |
- : _isStatic = isStatic; |
- |
- String get name => _name.text; |
- |
- Name get memberName => _name; |
- |
- @override |
- bool get isAssignable => false; |
- |
- @override |
- bool get isConst => false; |
- |
- @override |
- bool get isAbstract => false; |
- |
- @override |
- bool get isSetter => false; |
- |
- @override |
- bool get isGetter => false; |
- |
- @override |
- bool get isFunction => false; |
- |
- @override |
- bool get isField => false; |
- |
- @override |
- bool get isConstructor => false; |
- |
- @override |
- bool get isInstanceMember => enclosingClass != null && !_isStatic; |
- |
- @override |
- bool get isStatic => enclosingClass != null && _isStatic; |
- |
- @override |
- bool get isTopLevel => enclosingClass == null; |
- |
- String get _kind; |
- |
- String toString() => |
- '$_kind(${enclosingClass != null ? '${enclosingClass.name}.' : ''}$name)'; |
-} |
- |
-abstract class KFunction extends KMember implements FunctionEntity { |
- final ParameterStructure parameterStructure; |
- final bool isExternal; |
- final AsyncMarker asyncMarker; |
- |
- KFunction(int memberIndex, KLibrary library, KClass enclosingClass, Name name, |
- this.parameterStructure, this.asyncMarker, |
- {bool isStatic: false, this.isExternal: false}) |
- : super(memberIndex, library, enclosingClass, name, isStatic: isStatic); |
-} |
- |
-abstract class KConstructor extends KFunction implements ConstructorEntity { |
- final bool isConst; |
- |
- KConstructor(int memberIndex, KClass enclosingClass, Name name, |
- ParameterStructure parameterStructure, {bool isExternal, this.isConst}) |
- : super(memberIndex, enclosingClass.library, enclosingClass, name, |
- parameterStructure, AsyncMarker.SYNC, |
- isExternal: isExternal); |
- |
- @override |
- bool get isConstructor => true; |
- |
- @override |
- bool get isInstanceMember => false; |
- |
- @override |
- bool get isStatic => false; |
- |
- @override |
- bool get isTopLevel => false; |
- |
- @override |
- bool get isFromEnvironmentConstructor => false; |
- |
- String get _kind => 'constructor'; |
+abstract class IndexedLibrary implements LibraryEntity { |
+ /// Library index used for fast lookup in [KernelToElementMapBase]. |
+ int get libraryIndex; |
} |
-class KGenerativeConstructor extends KConstructor { |
- KGenerativeConstructor(int constructorIndex, KClass enclosingClass, Name name, |
- ParameterStructure parameterStructure, {bool isExternal, bool isConst}) |
- : super(constructorIndex, enclosingClass, name, parameterStructure, |
- isExternal: isExternal, isConst: isConst); |
- |
- @override |
- bool get isFactoryConstructor => false; |
- |
- @override |
- bool get isGenerativeConstructor => true; |
-} |
- |
-class KFactoryConstructor extends KConstructor { |
- @override |
- final bool isFromEnvironmentConstructor; |
- |
- KFactoryConstructor(int memberIndex, KClass enclosingClass, Name name, |
- ParameterStructure parameterStructure, |
- {bool isExternal, bool isConst, this.isFromEnvironmentConstructor}) |
- : super(memberIndex, enclosingClass, name, parameterStructure, |
- isExternal: isExternal, isConst: isConst); |
- |
- @override |
- bool get isFactoryConstructor => true; |
- |
- @override |
- bool get isGenerativeConstructor => false; |
+abstract class IndexedClass implements ClassEntity { |
+ /// Class index used for fast lookup in [KernelToElementMapBase]. |
+ int get classIndex; |
} |
-class KMethod extends KFunction { |
- final bool isAbstract; |
- |
- KMethod(int memberIndex, KLibrary library, KClass enclosingClass, Name name, |
- ParameterStructure parameterStructure, AsyncMarker asyncMarker, |
- {bool isStatic, bool isExternal, this.isAbstract}) |
- : super(memberIndex, library, enclosingClass, name, parameterStructure, |
- asyncMarker, |
- isStatic: isStatic, isExternal: isExternal); |
- |
- @override |
- bool get isFunction => true; |
- |
- String get _kind => 'method'; |
+abstract class IndexedMember implements MemberEntity { |
+ /// Member index used for fast lookup in [KernelToElementMapBase]. |
+ int get memberIndex; |
} |
-class KGetter extends KFunction { |
- final bool isAbstract; |
- |
- KGetter(int memberIndex, KLibrary library, KClass enclosingClass, Name name, |
- AsyncMarker asyncMarker, |
- {bool isStatic, bool isExternal, this.isAbstract}) |
- : super(memberIndex, library, enclosingClass, name, |
- const ParameterStructure.getter(), asyncMarker, |
- isStatic: isStatic, isExternal: isExternal); |
- |
- @override |
- bool get isGetter => true; |
- |
- String get _kind => 'getter'; |
-} |
+abstract class IndexedFunction implements IndexedMember, FunctionEntity {} |
-class KSetter extends KFunction { |
- final bool isAbstract; |
+abstract class IndexedConstructor |
+ implements IndexedFunction, ConstructorEntity {} |
- KSetter(int memberIndex, KLibrary library, KClass enclosingClass, Name name, |
- {bool isStatic, bool isExternal, this.isAbstract}) |
- : super(memberIndex, library, enclosingClass, name, |
- const ParameterStructure.setter(), AsyncMarker.SYNC, |
- isStatic: isStatic, isExternal: isExternal); |
- |
- @override |
- bool get isAssignable => true; |
- |
- @override |
- bool get isSetter => true; |
- |
- String get _kind => 'setter'; |
-} |
- |
-class KField extends KMember implements FieldEntity { |
- final bool isAssignable; |
- final bool isConst; |
- |
- KField(int memberIndex, KLibrary library, KClass enclosingClass, Name name, |
- {bool isStatic, this.isAssignable, this.isConst}) |
- : super(memberIndex, library, enclosingClass, name, isStatic: isStatic); |
- |
- @override |
- bool get isField => true; |
- |
- String get _kind => 'field'; |
-} |
- |
-class KTypeVariable implements TypeVariableEntity { |
- final Entity typeDeclaration; |
- final String name; |
- final int index; |
- |
- KTypeVariable(this.typeDeclaration, this.name, this.index); |
- |
- String toString() => 'type_variable(${typeDeclaration.name}.$name)'; |
-} |
- |
-class KLocalFunction implements Local { |
- final String name; |
- final MemberEntity memberContext; |
- final Entity executableContext; |
- final FunctionType functionType; |
- |
- KLocalFunction( |
- this.name, this.memberContext, this.executableContext, this.functionType); |
- |
- String toString() => |
- 'local_function(${memberContext.name}.${name ?? '<anonymous>'})'; |
-} |
+abstract class IndexedField implements IndexedMember, FieldEntity {} |