Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(617)

Unified Diff: pkg/compiler/lib/src/kernel/elements.dart

Issue 2964683003: Split implementation of KernelToElementMapImpl (Closed)
Patch Set: Created 3 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
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..f5278a5b7273c9fa4996d6e14e2463a1584b5a81 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 modelling elements derived from Kernel IR.
Siggi Cherem (dart-lang) 2017/06/30 22:19:29 ll => l
Johnni Winther 2017/07/03 08:00:58 Done.
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 {}

Powered by Google App Engine
This is Rietveld 408576698