[dart2js] Use J- instead of K- entities everywhere.
The only entities specific to the K- model are `KLocalFunction` and `KLocalTypeVariable`. I've copied these both (as is) to the J- model.
The only thing we "lose" here is the calls to `checkFamily` in `kernel/element_map_impl.dart`. Given how interchangable the 2 models were, this wasn't adding much value anyway.
Since there is still a distinction between the K- environment and J- environment, we can now think of that conversion as being between a `J` and `J'` environment where the semantics are slightly different (e.g. `J'` has closure conversion applied).
Using the same model also makes it easier to have more intermediate states of the `J` model. For example, we might keep around the `JLocalFunction` nodes until SSA and do closure conversion at that point instead.
Change-Id: If149241725a03b8de6aba6d486506434529b998d
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/306980
Commit-Queue: Nate Biggs <natebiggs@google.com>
Reviewed-by: Sigmund Cherem <sigmund@google.com>
diff --git a/pkg/compiler/lib/src/deferred_load/entity_data_info.dart b/pkg/compiler/lib/src/deferred_load/entity_data_info.dart
index 7c2e831..ac1d009 100644
--- a/pkg/compiler/lib/src/deferred_load/entity_data_info.dart
+++ b/pkg/compiler/lib/src/deferred_load/entity_data_info.dart
@@ -16,8 +16,8 @@
import '../elements/types.dart';
import '../ir/util.dart';
import '../kernel/element_map.dart';
-import '../kernel/kelements.dart' show KLocalFunction;
import '../kernel/kernel_world.dart' show KClosedWorld;
+import '../js_model/elements.dart' show JLocalFunction;
import '../universe/use.dart';
import '../universe/world_impact.dart' show WorldImpact;
@@ -125,9 +125,9 @@
if (usedEntity is MemberEntity) {
addMember(usedEntity, import: staticUse.deferredImport);
} else {
- assert(usedEntity is KLocalFunction,
+ assert(usedEntity is JLocalFunction,
failedAt(usedEntity, "Unexpected static use $staticUse."));
- var localFunction = usedEntity as KLocalFunction;
+ var localFunction = usedEntity as JLocalFunction;
// TODO(sra): Consult KClosedWorld to see if signature is needed.
addTypeDependencies(localFunction.functionType);
addLocalFunction(localFunction);
diff --git a/pkg/compiler/lib/src/js_backend/field_analysis.dart b/pkg/compiler/lib/src/js_backend/field_analysis.dart
index 9acaa02..7f0e4a2 100644
--- a/pkg/compiler/lib/src/js_backend/field_analysis.dart
+++ b/pkg/compiler/lib/src/js_backend/field_analysis.dart
@@ -11,10 +11,9 @@
import '../elements/entity_utils.dart';
import '../elements/types.dart';
import '../ir/scope_visitor.dart';
-import '../js_model/elements.dart' show JField;
+import '../js_model/elements.dart' show JClass, JConstructor, JField;
import '../js_model/js_to_frontend_map.dart' show JsToFrontendMap;
import '../kernel/element_map.dart' show KernelToElementMap;
-import '../kernel/kelements.dart' show KClass, KField, KConstructor;
import '../kernel/kernel_world.dart';
import '../options.dart';
import '../serialization/serialization.dart';
@@ -39,18 +38,18 @@
class KFieldAnalysis {
final KernelToElementMap _elementMap;
- final Map<KClass, ClassData> _classData = {};
- final Map<KField, StaticFieldData> _staticFieldData = {};
+ final Map<JClass, ClassData> _classData = {};
+ final Map<JField, StaticFieldData> _staticFieldData = {};
KFieldAnalysis(this._elementMap);
// Register class during resolution. Use simple syntactic analysis to find
// null-initialized fields.
- void registerInstantiatedClass(KClass class_) {
+ void registerInstantiatedClass(JClass class_) {
ir.Class classNode = _elementMap.getClassNode(class_);
- List<KConstructor> constructors = [];
- Map<KField, AllocatorData> fieldData = {};
+ List<JConstructor> constructors = [];
+ Map<JField, AllocatorData> fieldData = {};
for (ir.Field field in classNode.fields) {
if (!field.isInstanceMember) continue;
@@ -67,20 +66,20 @@
requireConstant: false, implicitNull: true);
}
if (value != null && value.isConstant) {
- fieldData[fieldElement as KField] = AllocatorData(value);
+ fieldData[fieldElement as JField] = AllocatorData(value);
}
}
for (ir.Constructor constructor in classNode.constructors) {
- KConstructor constructorElement =
- _elementMap.getConstructor(constructor) as KConstructor;
+ JConstructor constructorElement =
+ _elementMap.getConstructor(constructor) as JConstructor;
ir.StaticTypeContext staticTypeContext =
_elementMap.getStaticTypeContext(constructorElement);
constructors.add(constructorElement);
for (ir.Initializer initializer in constructor.initializers) {
if (initializer is ir.FieldInitializer) {
AllocatorData? data =
- fieldData[_elementMap.getField(initializer.field) as KField];
+ fieldData[_elementMap.getField(initializer.field) as JField];
if (data == null) {
// TODO(johnniwinther): Support initializers with side-effects?
@@ -130,7 +129,7 @@
_classData[class_] = ClassData(constructors, fieldData);
}
- void registerStaticField(KField field, EvaluationComplexity complexity) {
+ void registerStaticField(JField field, EvaluationComplexity complexity) {
ir.Field node = _elementMap.getMemberNode(field) as ir.Field;
ir.Expression? expression = node.initializer;
ConstantValue? value;
@@ -151,18 +150,18 @@
_staticFieldData[field] = StaticFieldData(value, complexity);
}
- AllocatorData? getAllocatorDataForTesting(KField field) {
+ AllocatorData? getAllocatorDataForTesting(JField field) {
return _classData[field.enclosingClass!]!.fieldData[field];
}
- StaticFieldData? getStaticFieldDataForTesting(KField field) {
+ StaticFieldData? getStaticFieldDataForTesting(JField field) {
return _staticFieldData[field];
}
}
class ClassData {
- final List<KConstructor> constructors;
- final Map<KField, AllocatorData> fieldData;
+ final List<JConstructor> constructors;
+ final Map<JField, AllocatorData> fieldData;
ClassData(this.constructors, this.fieldData);
}
@@ -178,7 +177,7 @@
class AllocatorData {
final ConstantValue? initialValue;
- final Map<KConstructor, Initializer> initializers = {};
+ final Map<JConstructor, Initializer> initializers = {};
AllocatorData(this.initialValue);
@@ -279,7 +278,7 @@
closedWorld.fieldAnalysis._classData
.forEach((ClassEntity cls, ClassData classData) {
- classData.fieldData.forEach((KField kField, AllocatorData data) {
+ classData.fieldData.forEach((JField kField, AllocatorData data) {
JField? jField = map.toBackendMember(kField) as JField?;
if (jField == null) {
return;
@@ -315,7 +314,7 @@
memberUsage.initialConstants!.forEach(includeInitialValue);
bool inAllConstructors = true;
- for (KConstructor constructor in classData.constructors) {
+ for (JConstructor constructor in classData.constructors) {
if (isTooComplex) {
break;
}
@@ -396,14 +395,14 @@
});
});
- List<KField> independentFields = [];
- List<KField> dependentFields = [];
+ List<JField> independentFields = [];
+ List<JField> dependentFields = [];
closedWorld.liveMemberUsage
.forEach((MemberEntity member, MemberUsage memberUsage) {
if (member is FieldEntity && !member.isInstanceMember) {
StaticFieldData staticFieldData =
- closedWorld.fieldAnalysis._staticFieldData[member as KField]!;
+ closedWorld.fieldAnalysis._staticFieldData[member as JField]!;
if (staticFieldData.hasDependencies) {
dependentFields.add(member);
} else {
@@ -413,10 +412,10 @@
});
// Fields already processed.
- Set<KField> processedFields = {};
+ Set<JField> processedFields = {};
// Fields currently being processed. Use for detecting cyclic dependencies.
- Set<KField> currentFields = {};
+ Set<JField> currentFields = {};
// Index ascribed to eager fields that depend on other fields. This is
// used to sort the field in emission to ensure that used fields have been
@@ -428,7 +427,7 @@
///
/// If the data is currently been computed, that is, [kField] has a
/// cyclic dependency, `null` is returned.
- FieldAnalysisData? processField(KField kField) {
+ FieldAnalysisData? processField(JField kField) {
JField? jField = map.toBackendMember(kField) as JField?;
// TODO(johnniwinther): Can we assert that [jField] exists?
if (jField == null) return null;
@@ -493,8 +492,8 @@
isEager = complexity.isEager;
if (isEager && complexity.fields != null) {
for (ir.Field node in complexity.fields!) {
- KField otherField =
- closedWorld.elementMap.getField(node) as KField;
+ JField otherField =
+ closedWorld.elementMap.getField(node) as JField;
FieldAnalysisData? otherData = processField(otherField);
if (otherData == null) {
// Cyclic dependency on [otherField].
@@ -555,7 +554,7 @@
// Process dependent fields in declaration order to make ascribed creation
// indices stable. The emitter uses the creation indices for sorting
// dependent fields.
- dependentFields.sort((KField a, KField b) {
+ dependentFields.sort((JField a, JField b) {
int result =
compareLibrariesUris(a.library.canonicalUri, b.library.canonicalUri);
if (result != 0) return result;
diff --git a/pkg/compiler/lib/src/js_backend/no_such_method_registry.dart b/pkg/compiler/lib/src/js_backend/no_such_method_registry.dart
index 64035c2..5e1f896 100644
--- a/pkg/compiler/lib/src/js_backend/no_such_method_registry.dart
+++ b/pkg/compiler/lib/src/js_backend/no_such_method_registry.dart
@@ -7,7 +7,7 @@
import '../common/names.dart' show Identifiers, Selectors;
import '../elements/entities.dart';
import '../inferrer/types.dart' show GlobalTypeInferenceResults;
-import '../kernel/kelements.dart' show KFunction;
+import '../js_model/elements.dart' show JFunction;
import '../kernel/no_such_method_resolver.dart';
import '../serialization/serialization.dart';
@@ -124,7 +124,7 @@
if (_commonElements.isDefaultNoSuchMethodImplementation(element)) {
_defaultImpls.add(element);
return NsmCategory.DEFAULT;
- } else if (_resolver.hasForwardingSyntax(element as KFunction)) {
+ } else if (_resolver.hasForwardingSyntax(element as JFunction)) {
_forwardingSyntaxImpls.add(element);
// If the implementation is 'noSuchMethod(x) => super.noSuchMethod(x);'
// then it is in the same category as the super call.
diff --git a/pkg/compiler/lib/src/js_backend/resolution_listener.dart b/pkg/compiler/lib/src/js_backend/resolution_listener.dart
index d88c5a2..576d09a 100644
--- a/pkg/compiler/lib/src/js_backend/resolution_listener.dart
+++ b/pkg/compiler/lib/src/js_backend/resolution_listener.dart
@@ -11,7 +11,7 @@
import '../elements/entities.dart';
import '../elements/types.dart';
import '../enqueue.dart' show Enqueuer, EnqueuerListener;
-import '../kernel/kelements.dart' show KClass;
+import '../js_model/elements.dart' show JClass;
import '../native/enqueue.dart';
import '../options.dart' show CompilerOptions;
import '../universe/call_structure.dart' show CallStructure;
@@ -420,7 +420,7 @@
@override
WorldImpact registerInstantiatedClass(ClassEntity cls) {
- _fieldAnalysis.registerInstantiatedClass(cls as KClass);
+ _fieldAnalysis.registerInstantiatedClass(cls as JClass);
return _processClass(cls);
}
diff --git a/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart b/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart
index d8a4fa4..886aad8 100644
--- a/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart
+++ b/pkg/compiler/lib/src/js_backend/runtime_types_resolution.dart
@@ -11,7 +11,7 @@
import '../elements/names.dart';
import '../elements/types.dart';
import '../ir/runtime_type_analysis.dart';
-import '../kernel/kelements.dart';
+import '../js_model/elements.dart' show JLocalFunction;
import '../kernel/kernel_world.dart';
import '../options.dart';
import '../serialization/serialization.dart';
@@ -1157,7 +1157,7 @@
if (closedWorld.annotationsData
// TODO(johnniwinther): Support @pragma on local functions and use
// this here instead of the enclosing member.
- .getParameterCheckPolicy((function as KLocalFunction).memberContext)
+ .getParameterCheckPolicy((function as JLocalFunction).memberContext)
.isEmitted) {
checkFunction(
function, _elementEnvironment.getLocalFunctionType(function));
diff --git a/pkg/compiler/lib/src/js_model/element_map_impl.dart b/pkg/compiler/lib/src/js_model/element_map_impl.dart
index fa84576..e0457f6 100644
--- a/pkg/compiler/lib/src/js_model/element_map_impl.dart
+++ b/pkg/compiler/lib/src/js_model/element_map_impl.dart
@@ -39,7 +39,6 @@
import '../kernel/dart2js_target.dart' show allowedNativeTest;
import '../kernel/element_map.dart';
import '../kernel/env.dart';
-import '../kernel/kelements.dart';
import '../native/behavior.dart';
import '../options.dart';
import '../ordered_typeset.dart';
@@ -2404,7 +2403,7 @@
}
@override
- FunctionType getLocalFunctionType(covariant KLocalFunction function) {
+ FunctionType getLocalFunctionType(covariant JLocalFunction function) {
return function.functionType;
}
diff --git a/pkg/compiler/lib/src/js_model/elements.dart b/pkg/compiler/lib/src/js_model/elements.dart
index 4b1ce72..4457c8d 100644
--- a/pkg/compiler/lib/src/js_model/elements.dart
+++ b/pkg/compiler/lib/src/js_model/elements.dart
@@ -4,6 +4,8 @@
library dart2js.js_model.elements;
+import 'package:kernel/ast.dart' as ir show LocalFunction;
+
import '../common/names.dart' show Names;
import '../elements/entities.dart';
import '../elements/indexed.dart';
@@ -817,3 +819,36 @@
String toString() =>
'${jsElementPrefix}type_variable(${typeDeclaration?.name}.$name)';
}
+
+class JLocalFunction implements Local {
+ @override
+ final String? name;
+ final MemberEntity memberContext;
+ final Entity executableContext;
+ final ir.LocalFunction node;
+ late final FunctionType functionType;
+
+ JLocalFunction(
+ this.name, this.memberContext, this.executableContext, this.node);
+
+ @override
+ String toString() => '${jsElementPrefix}local_function'
+ '(${memberContext.name}.${name ?? '<anonymous>'})';
+}
+
+class JLocalTypeVariable implements TypeVariableEntity {
+ @override
+ final JLocalFunction typeDeclaration;
+ @override
+ final String name;
+ @override
+ final int index;
+ late final DartType bound;
+ late final DartType defaultType;
+
+ JLocalTypeVariable(this.typeDeclaration, this.name, this.index);
+
+ @override
+ String toString() =>
+ '${jsElementPrefix}local_type_variable(${typeDeclaration.name}.$name)';
+}
diff --git a/pkg/compiler/lib/src/js_model/js_world_builder.dart b/pkg/compiler/lib/src/js_model/js_world_builder.dart
index 21bea52..2c7c139 100644
--- a/pkg/compiler/lib/src/js_model/js_world_builder.dart
+++ b/pkg/compiler/lib/src/js_model/js_world_builder.dart
@@ -22,7 +22,6 @@
import '../js_backend/native_data.dart';
import '../js_backend/no_such_method_registry.dart';
import '../js_backend/runtime_types_resolution.dart';
-import '../kernel/kelements.dart';
import '../kernel/kernel_world.dart';
import '../options.dart';
import '../universe/class_hierarchy.dart';
@@ -160,14 +159,14 @@
Set<ir.LocalFunction>();
for (Local localFunction
in kernelRtiNeed.localFunctionsNeedingSignature) {
- ir.LocalFunction node = (localFunction as KLocalFunction).node;
+ ir.LocalFunction node = (localFunction as JLocalFunction).node;
localFunctionsNodesNeedingSignature.add(node);
}
Set<ir.LocalFunction> localFunctionsNodesNeedingTypeArguments =
Set<ir.LocalFunction>();
for (Local localFunction
in kernelRtiNeed.localFunctionsNeedingTypeArguments) {
- ir.LocalFunction node = (localFunction as KLocalFunction).node;
+ ir.LocalFunction node = (localFunction as JLocalFunction).node;
localFunctionsNodesNeedingTypeArguments.add(node);
}
@@ -417,7 +416,7 @@
localFunctionMap.forEach((Local entity, OutputUnit unit) {
// Ensure closure classes are included in the output unit corresponding
// to the local function.
- if (entity is KLocalFunction) {
+ if (entity is JLocalFunction) {
var closureInfo = closureDataLookup.getClosureInfo(entity.node);
result[closureInfo.closureClassEntity!] = unit;
}
@@ -441,7 +440,7 @@
localFunctionMap.forEach((Local entity, OutputUnit unit) {
// Ensure closure call-methods are included in the output unit
// corresponding to the local function.
- if (entity is KLocalFunction) {
+ if (entity is JLocalFunction) {
var closureInfo = closureDataLookup.getClosureInfo(entity.node);
result[closureInfo.callMethod!] = unit;
if (closureInfo.signatureMethod != null) {
@@ -577,7 +576,7 @@
}
TypeVariableEntity? toBackendTypeVariable(TypeVariableEntity typeVariable) {
- if (typeVariable is KLocalTypeVariable) {
+ if (typeVariable is JLocalTypeVariable) {
if (_closureData == null) {
failedAt(
typeVariable,
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index 46e09c1..3cbe138 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -38,6 +38,7 @@
import '../js_backend/namer.dart';
import '../js_backend/native_data.dart';
import '../js_backend/runtime_types_resolution.dart';
+import '../js_model/elements.dart';
import '../js_model/locals.dart';
import '../kernel/dart2js_target.dart';
import '../kernel/transformations/late_lowering.dart' as late_lowering
@@ -53,7 +54,6 @@
import '../universe/world_impact.dart';
import 'element_map.dart';
import 'env.dart';
-import 'kelements.dart';
import 'kernel_impact.dart';
/// Implementation of [IrToElementMap] that only supports world
@@ -110,7 +110,7 @@
BehaviorBuilder? _nativeBehaviorBuilder;
- Map<KMember, Map<ir.Expression, TypeMap>>? typeMapsForTesting;
+ Map<IndexedMember, Map<ir.Expression, TypeMap>>? typeMapsForTesting;
Map<ir.Member, ImpactData>? impactDataForTesting;
KernelToElementMap(this.reporter, this._environment, this.options) {
@@ -156,7 +156,7 @@
spannable.memberIndex < members.length) {
KMemberData data = members.getData(spannable);
return computeSourceSpanFromTreeNode(data.node);
- } else if (spannable is KLocalFunction) {
+ } else if (spannable is JLocalFunction) {
return getSourceSpan(spannable.memberContext, currentElement);
} else if (spannable is JLocal) {
return getSourceSpan(spannable.memberContext, currentElement);
@@ -176,14 +176,12 @@
}
String _getLibraryName(IndexedLibrary library) {
- assert(checkFamily(library));
KLibraryEnv libraryEnv = libraries.getEnv(library);
return libraryEnv.library.name ?? '';
}
MemberEntity? lookupLibraryMember(IndexedLibrary library, String name,
{bool setter = false}) {
- assert(checkFamily(library));
KLibraryEnv libraryEnv = libraries.getEnv(library);
ir.Member? member = libraryEnv.lookupMember(name, setter: setter);
return member != null ? getMember(member) : null;
@@ -191,7 +189,6 @@
void _forEachLibraryMember(
IndexedLibrary library, void f(MemberEntity member)) {
- assert(checkFamily(library));
KLibraryEnv libraryEnv = libraries.getEnv(library);
libraryEnv.forEachMember((ir.Member node) {
f(getMember(node));
@@ -199,7 +196,6 @@
}
ClassEntity? lookupClass(IndexedLibrary library, String name) {
- assert(checkFamily(library));
KLibraryEnv libraryEnv = libraries.getEnv(library);
KClassEnv? classEnv = libraryEnv.lookupClass(name);
if (classEnv != null) {
@@ -209,7 +205,6 @@
}
void _forEachClass(IndexedLibrary library, void f(ClassEntity cls)) {
- assert(checkFamily(library));
KLibraryEnv libraryEnv = libraries.getEnv(library);
libraryEnv.forEachClass((KClassEnv classEnv) {
if (!classEnv.isUnnamedMixinApplication) {
@@ -238,13 +233,11 @@
MemberEntity? lookupClassMember(IndexedClass cls, Name name,
{bool setter = false}) {
- assert(checkFamily(cls));
KClassEnv classEnv = classes.getEnv(cls);
return classEnv.lookupMember(this, name);
}
ConstructorEntity? lookupConstructor(IndexedClass cls, String name) {
- assert(checkFamily(cls));
KClassEnv classEnv = classes.getEnv(cls);
return classEnv.lookupConstructor(this, name);
}
@@ -265,7 +258,6 @@
@override
InterfaceType? getSuperType(IndexedClass cls) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
_ensureSupertypes(cls, data);
return data.supertype;
@@ -278,7 +270,6 @@
}
void _ensureCallType(ClassEntity cls, KClassData data) {
- assert(checkFamily(cls));
if (!data.isCallTypeComputed) {
MemberEntity? callMember =
_elementEnvironment.lookupClassMember(cls, Names.call);
@@ -292,7 +283,6 @@
}
void _ensureThisAndRawType(ClassEntity cls, KClassData data) {
- assert(checkFamily(cls));
if (data.thisType == null) {
ir.Class node = data.node;
if (node.typeParameters.isEmpty) {
@@ -314,7 +304,6 @@
}
void _ensureJsInteropType(ClassEntity cls, KClassData data) {
- assert(checkFamily(cls));
if (data.jsInteropType == null) {
ir.Class node = data.node;
if (node.typeParameters.isEmpty) {
@@ -328,7 +317,6 @@
}
void _ensureClassInstantiationToBounds(ClassEntity cls, KClassData data) {
- assert(checkFamily(cls));
if (data.instantiationToBounds == null) {
ir.Class node = data.node;
if (node.typeParameters.isEmpty) {
@@ -348,7 +336,6 @@
getTypeVariableInternal(node);
void _ensureSupertypes(ClassEntity cls, KClassData data) {
- assert(checkFamily(cls));
if (data.orderedTypeSet == null) {
_ensureThisAndRawType(cls, data);
@@ -629,7 +616,6 @@
@override
FunctionType? getCallType(InterfaceType type) {
IndexedClass cls = type.element as IndexedClass;
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
_ensureCallType(cls, data);
if (data.callType != null) {
@@ -640,61 +626,52 @@
@override
InterfaceType getThisType(IndexedClass cls) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
_ensureThisAndRawType(cls, data);
return data.thisType!;
}
InterfaceType? _getJsInteropType(IndexedClass cls) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
_ensureJsInteropType(cls, data);
return data.jsInteropType;
}
InterfaceType _getRawType(IndexedClass cls) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
_ensureThisAndRawType(cls, data);
return data.rawType!;
}
InterfaceType _getClassInstantiationToBounds(IndexedClass cls) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
_ensureClassInstantiationToBounds(cls, data);
return data.instantiationToBounds!;
}
DartType _getFieldType(IndexedField field) {
- assert(checkFamily(field));
KFieldData data = members.getData(field) as KFieldData;
return data.getFieldType(this);
}
FunctionType _getFunctionType(IndexedFunction function) {
- assert(checkFamily(function));
KFunctionData data = members.getData(function) as KFunctionData;
return data.getFunctionType(this);
}
List<TypeVariableType> _getFunctionTypeVariables(IndexedFunction function) {
- assert(checkFamily(function));
KFunctionData data = members.getData(function) as KFunctionData;
return data.getFunctionTypeVariables(this);
}
@override
DartType getTypeVariableBound(IndexedTypeVariable typeVariable) {
- assert(checkFamily(typeVariable));
KTypeVariableData data = typeVariables.getData(typeVariable);
return data.getBound(this);
}
@override
List<Variance> getTypeVariableVariances(IndexedClass cls) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
return data.getVariances();
}
@@ -706,34 +683,29 @@
// class B = Object with A;
// class C = Object with B;
ClassEntity? getAppliedMixin(IndexedClass cls) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
_ensureSupertypes(cls, data);
return data.mixedInType?.element;
}
bool _isMixinApplication(IndexedClass cls) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
_ensureSupertypes(cls, data);
return data.isMixinApplication;
}
bool _isUnnamedMixinApplication(IndexedClass cls) {
- assert(checkFamily(cls));
KClassEnv env = classes.getEnv(cls);
return env.isUnnamedMixinApplication;
}
void _forEachSupertype(IndexedClass cls, void f(InterfaceType supertype)) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
_ensureSupertypes(cls, data);
data.orderedTypeSet!.supertypes!.forEach(f);
}
void _forEachMixin(IndexedClass? cls, void f(ClassEntity mixin)) {
- assert(checkFamily(cls!));
while (cls != null) {
KClassData data = classes.getData(cls);
_ensureSupertypes(cls, data);
@@ -745,13 +717,11 @@
}
void _forEachConstructor(IndexedClass cls, void f(ConstructorEntity member)) {
- assert(checkFamily(cls));
KClassEnv env = classes.getEnv(cls);
env.forEachConstructor(this, f);
}
void _forEachLocalClassMember(IndexedClass cls, void f(MemberEntity member)) {
- assert(checkFamily(cls));
KClassEnv env = classes.getEnv(cls);
env.forEachMember(this, (MemberEntity member) {
f(member);
@@ -760,14 +730,12 @@
void forEachInjectedClassMember(
IndexedClass cls, void f(MemberEntity member)) {
- assert(checkFamily(cls));
throw UnsupportedError(
'KernelToElementMapBase._forEachInjectedClassMember');
}
void _forEachClassMember(
IndexedClass cls, void f(ClassEntity cls, MemberEntity member)) {
- assert(checkFamily(cls));
KClassEnv env = classes.getEnv(cls);
env.forEachMember(this, (MemberEntity member) {
f(cls, member);
@@ -781,7 +749,6 @@
@override
InterfaceType? asInstanceOf(InterfaceType type, ClassEntity cls) {
- assert(checkFamily(cls));
OrderedTypeSet orderedTypeSet =
getOrderedTypeSet(type.element as IndexedClass);
InterfaceType? supertype = orderedTypeSet.asInstanceOf(
@@ -794,7 +761,6 @@
@override
OrderedTypeSet getOrderedTypeSet(IndexedClass cls) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
_ensureSupertypes(cls, data);
return data.orderedTypeSet!;
@@ -808,7 +774,6 @@
/// Returns the hierarchy depth of [cls].
@override
int getHierarchyDepth(IndexedClass cls) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
_ensureSupertypes(cls, data);
return data.orderedTypeSet!.maxDepth;
@@ -816,7 +781,6 @@
@override
Iterable<InterfaceType> getInterfaces(IndexedClass cls) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
_ensureSupertypes(cls, data);
assert(data.interfaces != null);
@@ -825,13 +789,11 @@
/// Returns the defining node for [member].
ir.Member getMemberNode(MemberEntity member) {
- assert(checkFamily(member));
return members.getData(member as IndexedMember).node;
}
/// Returns the defining node for [cls].
ir.Class getClassNode(ClassEntity cls) {
- assert(checkFamily(cls));
return classes.getData(cls as IndexedClass).node;
}
@@ -1195,7 +1157,7 @@
MemberEntity? member = elementEnvironment.lookupLocalClassMember(
superclass, Names.noSuchMethod_);
if (member != null && !member.isAbstract) {
- if (member is KMethod) {
+ if (member is JMethod) {
if (member.parameterStructure.positionalParameters >= 1) {
return member;
}
@@ -1212,7 +1174,7 @@
Iterable<LibraryEntity> get libraryListInternal {
if (env.length != libraryMap.length) {
- // Create a [KLibrary] for each library.
+ // Create a [JLibrary] for each library.
env.forEachLibrary((KLibraryEnv env) {
getLibraryInternal(env.library, env);
});
@@ -1254,7 +1216,7 @@
!envIsClosed,
"Environment of $this is closed. Trying to create "
"class for $node.");
- KLibrary library = getLibraryInternal(node.enclosingLibrary) as KLibrary;
+ JLibrary library = getLibraryInternal(node.enclosingLibrary) as JLibrary;
if (classEnv == null) {
classEnv = libraries.getEnv(library).lookupClass(node.name)!;
}
@@ -1322,7 +1284,7 @@
"constructor for $node.");
ir.FunctionNode functionNode;
final enclosingClass =
- getClassForMemberInternal(node.enclosingClass!) as KClass;
+ getClassForMemberInternal(node.enclosingClass!) as JClass;
Name name = getName(node.name);
bool isExternal = node.isExternal;
@@ -1366,14 +1328,14 @@
"Environment of $this is closed. Trying to create "
"function for $node.");
late IndexedFunction function;
- KLibrary library;
- KClass? enclosingClass;
+ JLibrary library;
+ JClass? enclosingClass;
if (node.enclosingClass != null) {
enclosingClass =
- getClassForMemberInternal(node.enclosingClass!) as KClass;
+ getClassForMemberInternal(node.enclosingClass!) as JClass;
library = enclosingClass.library;
} else {
- library = getLibraryInternal(node.enclosingLibrary) as KLibrary;
+ library = getLibraryInternal(node.enclosingLibrary) as JLibrary;
}
Name name = getName(node.name);
bool isStatic = node.isStatic;
@@ -1419,14 +1381,14 @@
!envIsClosed,
"Environment of $this is closed. Trying to create "
"field for $node.");
- KLibrary library;
- KClass? enclosingClass;
+ JLibrary library;
+ JClass? enclosingClass;
if (node.enclosingClass != null) {
enclosingClass =
- getClassForMemberInternal(node.enclosingClass!) as KClass;
+ getClassForMemberInternal(node.enclosingClass!) as JClass;
library = enclosingClass.library;
} else {
- library = getLibraryInternal(node.enclosingLibrary) as KLibrary;
+ library = getLibraryInternal(node.enclosingLibrary) as JLibrary;
}
Name name = getName(node.name);
bool isStatic = node.isStatic;
@@ -1449,14 +1411,6 @@
isLateFinalBackingField: isLateFinalBackingField));
}
- bool checkFamily(Entity entity) {
- assert(
- '$entity'.startsWith(kElementPrefix),
- failedAt(entity,
- "Unexpected entity $entity, expected family $kElementPrefix."));
- return true;
- }
-
/// NativeBasicData is need for computation of the default super class.
NativeBasicData get nativeBasicData {
var data = _nativeBasicData;
@@ -1484,7 +1438,7 @@
commonElements, nativeBasicData, reporter, options);
WorldImpact computeWorldImpact(
- KMember member,
+ IndexedMember member,
BackendImpacts impacts,
NativeResolutionEnqueuer nativeResolutionEnqueuer,
BackendUsageBuilder backendUsageBuilder,
@@ -1523,16 +1477,16 @@
return converter.convert(impactData);
}
- StaticTypeCache getCachedStaticTypes(KMember member) {
+ StaticTypeCache getCachedStaticTypes(JMember member) {
return members.getData(member).staticTypes!;
}
- Map<ir.Expression, TypeMap>? getTypeMapsForTesting(KMember member) {
+ Map<ir.Expression, TypeMap>? getTypeMapsForTesting(IndexedMember member) {
return typeMapsForTesting![member];
}
/// Returns the kernel [ir.Procedure] node for the [method].
- ir.Procedure lookupProcedure(KFunction method) {
+ ir.Procedure lookupProcedure(JFunction method) {
return members.getData(method).node as ir.Procedure;
}
@@ -1542,8 +1496,8 @@
}
/// Returns the [Local] corresponding to the local function [node].
- KLocalFunction getLocalFunction(ir.LocalFunction? node) {
- KLocalFunction? localFunction = localFunctionMap[node!] as KLocalFunction?;
+ JLocalFunction getLocalFunction(ir.LocalFunction? node) {
+ JLocalFunction? localFunction = localFunctionMap[node!] as JLocalFunction?;
if (localFunction == null) {
late MemberEntity memberContext;
late Entity executableContext;
@@ -1554,7 +1508,7 @@
break;
}
if (parent is ir.LocalFunction) {
- KLocalFunction localFunction = getLocalFunction(parent);
+ JLocalFunction localFunction = getLocalFunction(parent);
executableContext = localFunction;
memberContext = localFunction.memberContext;
break;
@@ -1570,12 +1524,12 @@
function = node.function;
}
localFunction = localFunctionMap[node] =
- KLocalFunction(name, memberContext, executableContext, node);
+ JLocalFunction(name, memberContext, executableContext, node);
int index = 0;
- List<KLocalTypeVariable> typeVariables = <KLocalTypeVariable>[];
+ List<JLocalTypeVariable> typeVariables = <JLocalTypeVariable>[];
for (ir.TypeParameter typeParameter in function.typeParameters) {
typeVariables.add(typeVariableMap[typeParameter] =
- KLocalTypeVariable(localFunction, typeParameter.name!, index));
+ JLocalTypeVariable(localFunction, typeParameter.name!, index));
index++;
}
index = 0;
@@ -1593,7 +1547,6 @@
/// Returns `true` if [cls] implements `Function` either explicitly or through
/// a `call` method.
bool implementsFunction(IndexedClass cls) {
- assert(checkFamily(cls));
KClassData data = classes.getData(cls);
OrderedTypeSet orderedTypeSet = data.orderedTypeSet!;
InterfaceType? supertype = orderedTypeSet.asInstanceOf(
@@ -1675,72 +1628,72 @@
IndexedLibrary createLibrary(
String name, Uri canonicalUri, bool isNonNullableByDefault) {
- return KLibrary(name, canonicalUri, isNonNullableByDefault);
+ return JLibrary(name, canonicalUri, isNonNullableByDefault);
}
- IndexedClass createClass(KLibrary library, String name,
+ IndexedClass createClass(JLibrary library, String name,
{required bool isAbstract}) {
- return KClass(library, name, isAbstract: isAbstract);
+ return JClass(library, name, isAbstract: isAbstract);
}
- KTypeVariable createTypeVariable(
+ IndexedTypeVariable createTypeVariable(
Entity typeDeclaration, String name, int index) {
- return KTypeVariable(typeDeclaration, name, index);
+ return JTypeVariable(typeDeclaration, name, index);
}
IndexedConstructor createGenerativeConstructor(
- KClass enclosingClass, Name name, ParameterStructure parameterStructure,
+ JClass enclosingClass, Name name, ParameterStructure parameterStructure,
{required bool isExternal, required bool isConst}) {
- return KGenerativeConstructor(enclosingClass, name, parameterStructure,
+ return JGenerativeConstructor(enclosingClass, name, parameterStructure,
isExternal: isExternal, isConst: isConst);
}
// TODO(dart2js-team): Rename isFromEnvironmentConstructor to
// isEnvironmentConstructor: Here, and everywhere in the compiler.
IndexedConstructor createFactoryConstructor(
- KClass enclosingClass, Name name, ParameterStructure parameterStructure,
+ JClass enclosingClass, Name name, ParameterStructure parameterStructure,
{required bool isExternal,
required bool isConst,
required bool isFromEnvironmentConstructor}) {
- return KFactoryConstructor(enclosingClass, name, parameterStructure,
+ return JFactoryConstructor(enclosingClass, name, parameterStructure,
isExternal: isExternal,
isConst: isConst,
isFromEnvironmentConstructor: isFromEnvironmentConstructor);
}
- IndexedFunction createGetter(KLibrary library, KClass? enclosingClass,
+ IndexedFunction createGetter(JLibrary library, JClass? enclosingClass,
Name name, AsyncMarker asyncMarker,
{required bool isStatic,
required bool isExternal,
required bool isAbstract}) {
- return KGetter(library, enclosingClass, name, asyncMarker,
+ return JGetter(library, enclosingClass, name, asyncMarker,
isStatic: isStatic, isExternal: isExternal, isAbstract: isAbstract);
}
- IndexedFunction createMethod(KLibrary library, KClass? enclosingClass,
+ IndexedFunction createMethod(JLibrary library, JClass? enclosingClass,
Name name, ParameterStructure parameterStructure, AsyncMarker asyncMarker,
{required bool isStatic,
required bool isExternal,
required bool isAbstract}) {
- return KMethod(
+ return JMethod(
library, enclosingClass, name, parameterStructure, asyncMarker,
isStatic: isStatic, isExternal: isExternal, isAbstract: isAbstract);
}
IndexedFunction createSetter(
- KLibrary library, KClass? enclosingClass, Name name,
+ JLibrary library, JClass? enclosingClass, Name name,
{required bool isStatic,
required bool isExternal,
required bool isAbstract}) {
- return KSetter(library, enclosingClass, name,
+ return JSetter(library, enclosingClass, name,
isStatic: isStatic, isExternal: isExternal, isAbstract: isAbstract);
}
- IndexedField createField(KLibrary library, KClass? enclosingClass, Name name,
+ IndexedField createField(JLibrary library, JClass? enclosingClass, Name name,
{required bool isStatic,
required bool isAssignable,
required bool isConst}) {
- return KField(library, enclosingClass, name,
+ return JField(library, enclosingClass, name,
isStatic: isStatic, isAssignable: isAssignable, isConst: isConst);
}
}
@@ -1804,7 +1757,7 @@
@override
DartType getTypeVariableBound(TypeVariableEntity typeVariable) {
- if (typeVariable is KLocalTypeVariable) return typeVariable.bound;
+ if (typeVariable is JLocalTypeVariable) return typeVariable.bound;
return elementMap.getTypeVariableBound(typeVariable as IndexedTypeVariable);
}
@@ -1835,7 +1788,7 @@
}
@override
- FunctionType getLocalFunctionType(covariant KLocalFunction function) {
+ FunctionType getLocalFunctionType(covariant JLocalFunction function) {
return function.functionType;
}
@@ -1868,7 +1821,6 @@
@override
ClassEntity? getSuperClass(ClassEntity cls,
{bool skipUnnamedMixinApplications = false}) {
- assert(elementMap.checkFamily(cls));
ClassEntity? superclass =
elementMap.getSuperType(cls as IndexedClass)?.element;
if (skipUnnamedMixinApplications) {
@@ -1952,7 +1904,6 @@
@override
Iterable<ImportEntity> getImports(covariant IndexedLibrary library) {
- assert(elementMap.checkFamily(library));
KLibraryData libraryData = elementMap.libraries.getData(library);
return libraryData.getImports(elementMap);
}
@@ -1961,14 +1912,12 @@
Iterable<ConstantValue> getMemberMetadata(covariant IndexedMember member,
{bool includeParameterMetadata = false}) {
// TODO(redemption): Support includeParameterMetadata.
- assert(elementMap.checkFamily(member));
KMemberData memberData = elementMap.members.getData(member);
return memberData.getMetadata(elementMap);
}
@override
bool isEnumClass(ClassEntity cls) {
- assert(elementMap.checkFamily(cls));
KClassData classData = elementMap.classes.getData(cls as IndexedClass);
return classData.isEnumClass;
}
@@ -1984,14 +1933,12 @@
@override
bool isLateBackingField(covariant IndexedField field) {
- assert(elementMap.checkFamily(field));
KFieldData fieldData = elementMap.members.getData(field) as KFieldData;
return fieldData.isLateBackingField;
}
@override
bool isLateFinalBackingField(covariant IndexedField field) {
- assert(elementMap.checkFamily(field));
KFieldData fieldData = elementMap.members.getData(field) as KFieldData;
return fieldData.isLateFinalBackingField;
}
@@ -2015,7 +1962,7 @@
bool isNative = _processMethodAnnotations(node, annotationData);
if (isNative || isJsInterop) {
NativeBehavior behavior = _computeNativeMethodBehavior(
- method as KFunction, annotationData,
+ method as JFunction, annotationData,
isJsInterop: isJsInterop);
_nativeDataBuilder!.setNativeMethodBehavior(method, behavior);
}
@@ -2024,7 +1971,7 @@
bool isNative = _processFieldAnnotations(node, annotationData);
if (isNative || isJsInterop) {
NativeBehavior fieldLoadBehavior = _computeNativeFieldLoadBehavior(
- field as KField, annotationData,
+ field as JField, annotationData,
isJsInterop: isJsInterop);
NativeBehavior fieldStoreBehavior =
_computeNativeFieldStoreBehavior(field);
@@ -2129,13 +2076,13 @@
return annotationData.getNativeMemberName(node);
}
- NativeBehavior _computeNativeFieldStoreBehavior(covariant KField field) {
+ NativeBehavior _computeNativeFieldStoreBehavior(covariant JField field) {
ir.Field node = _elementMap.getMemberNode(field) as ir.Field;
return _elementMap.getNativeBehaviorForFieldStore(node);
}
NativeBehavior _computeNativeFieldLoadBehavior(
- KField field, IrAnnotationData annotationData,
+ JField field, IrAnnotationData annotationData,
{required bool isJsInterop}) {
ir.Field node = _elementMap.getMemberNode(field) as ir.Field;
Iterable<String> createsAnnotations =
@@ -2148,7 +2095,7 @@
}
NativeBehavior _computeNativeMethodBehavior(
- KFunction function, IrAnnotationData annotationData,
+ JFunction function, IrAnnotationData annotationData,
{required bool isJsInterop}) {
ir.Member node = _elementMap.getMemberNode(function);
Iterable<String> createsAnnotations =
diff --git a/pkg/compiler/lib/src/kernel/kelements.dart b/pkg/compiler/lib/src/kernel/kelements.dart
deleted file mode 100644
index 9702fb0..0000000
--- a/pkg/compiler/lib/src/kernel/kelements.dart
+++ /dev/null
@@ -1,292 +0,0 @@
-// Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
-// 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.
-
-import 'package:kernel/ast.dart' as ir;
-import '../elements/entities.dart';
-import '../elements/indexed.dart';
-import '../elements/names.dart';
-import '../elements/types.dart';
-
-const String kElementPrefix = 'k:';
-
-class KLibrary extends IndexedLibrary {
- @override
- final String name;
- @override
- final Uri canonicalUri;
- @override
- final bool isNonNullableByDefault;
-
- KLibrary(this.name, this.canonicalUri, this.isNonNullableByDefault);
-
- @override
- String toString() => '${kElementPrefix}library($name)';
-}
-
-class KClass extends IndexedClass {
- @override
- final KLibrary library;
-
- @override
- final String name;
- @override
- final bool isAbstract;
-
- KClass(this.library, this.name, {required this.isAbstract});
-
- @override
- bool get isClosure => false;
-
- @override
- String toString() => '${kElementPrefix}class($name)';
-}
-
-abstract class KMember extends IndexedMember {
- @override
- final KLibrary library;
- @override
- final KClass? enclosingClass;
- final Name _name;
- final bool _isStatic;
-
- KMember(this.library, this.enclosingClass, this._name,
- {bool isStatic = false})
- : _isStatic = isStatic;
-
- @override
- String get name => _name.text;
-
- @override
- 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 isInstanceMember => enclosingClass != null && !_isStatic;
-
- @override
- bool get isStatic => enclosingClass != null && _isStatic;
-
- @override
- bool get isTopLevel => enclosingClass == null;
-
- String get _kind;
-
- @override
- String toString() => '${kElementPrefix}$_kind'
- '(${enclosingClass != null ? '${enclosingClass!.name}.' : ''}$name)';
-}
-
-abstract class KFunction extends KMember
- implements FunctionEntity, IndexedFunction {
- @override
- final ParameterStructure parameterStructure;
- @override
- final bool isExternal;
- @override
- final AsyncMarker asyncMarker;
-
- KFunction(super.library, super.enclosingClass, super.name,
- this.parameterStructure, this.asyncMarker,
- {super.isStatic, this.isExternal = false});
-}
-
-abstract class KConstructor extends KFunction
- implements ConstructorEntity, IndexedConstructor {
- @override
- final bool isConst;
- @override
- KClass enclosingClass;
-
- KConstructor(
- this.enclosingClass, Name name, ParameterStructure parameterStructure,
- {required bool isExternal, required this.isConst})
- : super(enclosingClass.library, enclosingClass, name, parameterStructure,
- AsyncMarker.SYNC,
- isExternal: isExternal);
-
- @override
- bool get isInstanceMember => false;
-
- @override
- bool get isStatic => false;
-
- @override
- bool get isTopLevel => false;
-
- @override
- bool get isFromEnvironmentConstructor => false;
-
- @override
- String get _kind => 'constructor';
-}
-
-class KGenerativeConstructor extends KConstructor {
- KGenerativeConstructor(
- super.enclosingClass, super.name, super.parameterStructure,
- {required super.isExternal, required super.isConst});
-
- @override
- bool get isFactoryConstructor => false;
-
- @override
- bool get isGenerativeConstructor => true;
-}
-
-class KFactoryConstructor extends KConstructor {
- @override
- final bool isFromEnvironmentConstructor;
-
- KFactoryConstructor(
- super.enclosingClass, super.name, super.parameterStructure,
- {required super.isExternal,
- required super.isConst,
- required this.isFromEnvironmentConstructor});
-
- @override
- bool get isFactoryConstructor => true;
-
- @override
- bool get isGenerativeConstructor => false;
-}
-
-class KMethod extends KFunction {
- @override
- final bool isAbstract;
-
- KMethod(super.library, super.enclosingClass, super.name,
- super.parameterStructure, super.asyncMarker,
- {required super.isStatic,
- required super.isExternal,
- required this.isAbstract});
-
- @override
- bool get isFunction => true;
-
- @override
- String get _kind => 'method';
-}
-
-class KGetter extends KFunction {
- @override
- final bool isAbstract;
-
- KGetter(KLibrary library, KClass? enclosingClass, Name name,
- AsyncMarker asyncMarker,
- {required bool isStatic,
- required bool isExternal,
- required this.isAbstract})
- : super(library, enclosingClass, name, ParameterStructure.getter,
- asyncMarker,
- isStatic: isStatic, isExternal: isExternal);
-
- @override
- bool get isGetter => true;
-
- @override
- String get _kind => 'getter';
-}
-
-class KSetter extends KFunction {
- @override
- final bool isAbstract;
-
- KSetter(KLibrary library, KClass? enclosingClass, Name name,
- {required bool isStatic,
- required bool isExternal,
- required this.isAbstract})
- : super(library, enclosingClass, name, ParameterStructure.setter,
- AsyncMarker.SYNC,
- isStatic: isStatic, isExternal: isExternal);
-
- @override
- bool get isAssignable => true;
-
- @override
- bool get isSetter => true;
-
- @override
- String get _kind => 'setter';
-}
-
-class KField extends KMember implements FieldEntity, IndexedField {
- @override
- final bool isAssignable;
- @override
- final bool isConst;
-
- KField(super.library, super.enclosingClass, super.name,
- {required super.isStatic,
- required this.isAssignable,
- required this.isConst});
-
- @override
- String get _kind => 'field';
-}
-
-class KTypeVariable extends IndexedTypeVariable {
- @override
- final Entity typeDeclaration;
- @override
- final String name;
- @override
- final int index;
-
- KTypeVariable(this.typeDeclaration, this.name, this.index);
-
- @override
- String toString() =>
- '${kElementPrefix}type_variable(${typeDeclaration.name}.$name)';
-}
-
-class KLocalFunction implements Local {
- @override
- final String? name;
- final MemberEntity memberContext;
- final Entity executableContext;
- final ir.LocalFunction node;
- late final FunctionType functionType;
-
- KLocalFunction(
- this.name, this.memberContext, this.executableContext, this.node);
-
- @override
- String toString() => '${kElementPrefix}local_function'
- '(${memberContext.name}.${name ?? '<anonymous>'})';
-}
-
-class KLocalTypeVariable implements TypeVariableEntity {
- @override
- final KLocalFunction typeDeclaration;
- @override
- final String name;
- @override
- final int index;
- late final DartType bound;
- late final DartType defaultType;
-
- KLocalTypeVariable(this.typeDeclaration, this.name, this.index);
-
- @override
- String toString() =>
- '${kElementPrefix}local_type_variable(${typeDeclaration.name}.$name)';
-}
diff --git a/pkg/compiler/lib/src/kernel/kernel_strategy.dart b/pkg/compiler/lib/src/kernel/kernel_strategy.dart
index c429629..0b75294 100644
--- a/pkg/compiler/lib/src/kernel/kernel_strategy.dart
+++ b/pkg/compiler/lib/src/kernel/kernel_strategy.dart
@@ -31,6 +31,7 @@
import '../js_backend/no_such_method_registry.dart';
import '../js_backend/resolution_listener.dart';
import '../js_backend/runtime_types_resolution.dart';
+import '../js_model/elements.dart';
import '../kernel/dart2js_target.dart';
import '../kernel/no_such_method_resolver.dart';
import '../native/enqueue.dart' show NativeResolutionEnqueuer;
@@ -42,7 +43,6 @@
import '../universe/world_builder.dart';
import '../universe/world_impact.dart';
import '../util/enumset.dart';
-import 'kelements.dart';
import 'element_map.dart';
import 'element_map_impl.dart';
import 'native_basic_data.dart';
@@ -395,12 +395,12 @@
}
if (element is FieldEntity && !element.isInstanceMember) {
_fieldAnalysis.registerStaticField(
- element as KField, scopeModel.initializerComplexity);
+ element as JField, scopeModel.initializerComplexity);
}
ImpactBuilderData impactBuilderData = modularMemberData.impactBuilderData;
return _compilerTask.measureSubtask('worldImpact', () {
WorldImpact worldImpact = _elementMap.computeWorldImpact(
- element as KMember,
+ element as JMember,
_impacts,
_nativeResolutionEnqueuer,
_backendUsageBuilder,
diff --git a/pkg/compiler/lib/src/kernel/no_such_method_resolver.dart b/pkg/compiler/lib/src/kernel/no_such_method_resolver.dart
index f4786e0..e9d7397 100644
--- a/pkg/compiler/lib/src/kernel/no_such_method_resolver.dart
+++ b/pkg/compiler/lib/src/kernel/no_such_method_resolver.dart
@@ -8,8 +8,8 @@
import '../common/names.dart';
import '../elements/entities.dart';
+import '../js_model/elements.dart';
import 'element_map.dart';
-import 'kelements.dart';
/// Interface for determining the form of a `noSuchMethod` implementation.
class NoSuchMethodResolver {
@@ -23,7 +23,7 @@
///
/// noSuchMethod(i) => super.noSuchMethod(i);
///
- bool hasForwardingSyntax(KFunction method) {
+ bool hasForwardingSyntax(JFunction method) {
ir.Procedure node = elementMap.lookupProcedure(method);
if (node.function.positionalParameters.isEmpty) return false;
ir.VariableDeclaration firstParameter =
@@ -59,7 +59,7 @@
///
/// noSuchMethod(i) => throw Error();
///
- bool hasThrowingSyntax(KFunction method) {
+ bool hasThrowingSyntax(JFunction method) {
ir.Procedure node = elementMap.lookupProcedure(method);
ir.Statement? body = node.function.body;
if (body is ir.Block && body.statements.isNotEmpty) {
diff --git a/pkg/compiler/test/field_analysis/kfield_analysis_test.dart b/pkg/compiler/test/field_analysis/kfield_analysis_test.dart
index eb3e7e9..ac8b375 100644
--- a/pkg/compiler/test/field_analysis/kfield_analysis_test.dart
+++ b/pkg/compiler/test/field_analysis/kfield_analysis_test.dart
@@ -9,7 +9,7 @@
import 'package:compiler/src/elements/entities.dart';
import 'package:compiler/src/elements/types.dart';
import 'package:compiler/src/js_backend/field_analysis.dart';
-import 'package:compiler/src/kernel/kelements.dart';
+import 'package:compiler/src/js_model/elements.dart';
import 'package:compiler/src/kernel/kernel_strategy.dart';
import 'package:kernel/ast.dart' as ir;
import '../equivalence/id_equivalence.dart';
@@ -44,7 +44,7 @@
Features features = Features();
if (member.isInstanceMember) {
AllocatorData? data =
- allocatorAnalysis.getAllocatorDataForTesting(member as KField);
+ allocatorAnalysis.getAllocatorDataForTesting(member as JField);
if (data != null) {
if (data.initialValue != null) {
features[Tags.initialValue] =
@@ -57,7 +57,7 @@
}
} else {
StaticFieldData staticFieldData =
- allocatorAnalysis.getStaticFieldDataForTesting(member as KField)!;
+ allocatorAnalysis.getStaticFieldDataForTesting(member as JField)!;
if (staticFieldData.initialValue != null) {
features[Tags.initialValue] =
staticFieldData.initialValue!.toStructuredText(dartTypes);
diff --git a/pkg/compiler/test/helpers/type_test_helper.dart b/pkg/compiler/test/helpers/type_test_helper.dart
index 12d0ebc..088362c 100644
--- a/pkg/compiler/test/helpers/type_test_helper.dart
+++ b/pkg/compiler/test/helpers/type_test_helper.dart
@@ -6,13 +6,13 @@
import 'dart:async';
import 'package:compiler/src/elements/names.dart';
+import 'package:compiler/src/js_model/elements.dart';
import 'package:expect/expect.dart';
import 'package:compiler/src/common/elements.dart';
import 'package:compiler/src/commandline_options.dart';
import 'package:compiler/src/compiler.dart' show Compiler;
import 'package:compiler/src/elements/types.dart';
import 'package:compiler/src/elements/entities.dart';
-import 'package:compiler/src/kernel/kelements.dart';
import 'package:compiler/src/kernel/kernel_strategy.dart';
import 'package:compiler/src/kernel/kernel_world.dart';
import 'package:compiler/src/options.dart';
@@ -163,7 +163,7 @@
for (Local local
in compiler.frontendClosedWorldForTesting!.localFunctions) {
- final kLocal = local as KLocalFunction;
+ final kLocal = local as JLocalFunction;
if (kLocal.memberContext == member) {
type ??= elementEnvironment.getLocalFunctionType(kLocal);
}
diff --git a/pkg/compiler/test/model/no_such_method_enabled_test.dart b/pkg/compiler/test/model/no_such_method_enabled_test.dart
index e0f8b68..5c80558 100644
--- a/pkg/compiler/test/model/no_such_method_enabled_test.dart
+++ b/pkg/compiler/test/model/no_such_method_enabled_test.dart
@@ -8,8 +8,8 @@
import 'package:compiler/src/compiler.dart';
import 'package:compiler/src/elements/entities.dart';
import 'package:compiler/src/js_backend/no_such_method_registry.dart';
+import 'package:compiler/src/js_model/elements.dart';
import 'package:compiler/src/js_model/js_world.dart' show JClosedWorld;
-import 'package:compiler/src/kernel/kelements.dart';
import 'package:expect/expect.dart';
import 'package:compiler/src/util/memory_compiler.dart';
@@ -295,7 +295,7 @@
Expect.equals(
info.hasForwardingSyntax,
- resolver.hasForwardingSyntax(noSuchMethod as KFunction),
+ resolver.hasForwardingSyntax(noSuchMethod as JFunction),
"Unexpected hasForwardSyntax result on $noSuchMethod.");
Expect.equals(
info.hasThrowingSyntax,
diff --git a/pkg/compiler/test/static_type/static_type_test.dart b/pkg/compiler/test/static_type/static_type_test.dart
index 86dfbdc..46ae2f4 100644
--- a/pkg/compiler/test/static_type/static_type_test.dart
+++ b/pkg/compiler/test/static_type/static_type_test.dart
@@ -10,8 +10,8 @@
import 'package:compiler/src/ir/cached_static_type.dart';
import 'package:compiler/src/ir/static_type_base.dart';
import 'package:compiler/src/ir/static_type_cache.dart';
+import 'package:compiler/src/js_model/elements.dart';
import 'package:compiler/src/kernel/element_map.dart';
-import 'package:compiler/src/kernel/kelements.dart';
import 'package:compiler/src/kernel/kernel_strategy.dart';
import 'package:kernel/ast.dart' as ir;
import 'package:kernel/class_hierarchy.dart' as ir;
@@ -53,7 +53,7 @@
KernelFrontendStrategy frontendStrategy = compiler.frontendStrategy;
KernelToElementMap elementMap = frontendStrategy.elementMap;
StaticTypeCache staticTypeCache =
- elementMap.getCachedStaticTypes(member as KMember);
+ elementMap.getCachedStaticTypes(member as JMember);
ir.Member node = elementMap.getMemberNode(member);
StaticTypeIrComputer(
compiler.reporter,
diff --git a/pkg/compiler/test/static_type/type_promotion_test.dart b/pkg/compiler/test/static_type/type_promotion_test.dart
index f34cdc1..31ae4bb 100644
--- a/pkg/compiler/test/static_type/type_promotion_test.dart
+++ b/pkg/compiler/test/static_type/type_promotion_test.dart
@@ -7,9 +7,9 @@
import 'package:compiler/src/compiler.dart';
import 'package:compiler/src/diagnostics/diagnostic_listener.dart';
import 'package:compiler/src/elements/entities.dart';
+import 'package:compiler/src/elements/indexed.dart';
import 'package:compiler/src/ir/static_type.dart';
import 'package:compiler/src/kernel/element_map.dart';
-import 'package:compiler/src/kernel/kelements.dart';
import 'package:compiler/src/kernel/kernel_strategy.dart';
import 'package:kernel/ast.dart' as ir;
import 'package:kernel/class_hierarchy.dart' as ir;
@@ -50,7 +50,7 @@
KernelFrontendStrategy frontendStrategy = compiler.frontendStrategy;
KernelToElementMap elementMap = frontendStrategy.elementMap;
Map<ir.Expression, TypeMap> typeMaps =
- elementMap.getTypeMapsForTesting(member as KMember)!;
+ elementMap.getTypeMapsForTesting(member as IndexedMember)!;
ir.Member node = elementMap.getMemberNode(member);
TypePromotionIrComputer(compiler.reporter, actualMap, typeMaps).run(node);
}