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

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

Issue 2927093002: Support user class in compile_from_dill_test (Closed)
Patch Set: Updated cf. comments 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/element_map_impl.dart
diff --git a/pkg/compiler/lib/src/kernel/element_map_impl.dart b/pkg/compiler/lib/src/kernel/element_map_impl.dart
index 2155286e407641add795795875ac6979f264a28f..3da14d309703079c405b575ffa1e2d26da8ed956 100644
--- a/pkg/compiler/lib/src/kernel/element_map_impl.dart
+++ b/pkg/compiler/lib/src/kernel/element_map_impl.dart
@@ -33,7 +33,11 @@ import '../native/native.dart' as native;
import '../native/resolver.dart';
import '../ordered_typeset.dart';
import '../ssa/kernel_impact.dart';
+import '../universe/class_set.dart';
+import '../universe/function_set.dart';
+import '../universe/selector.dart';
import '../universe/world_builder.dart';
+import '../world.dart';
import '../util/util.dart' show Link, LinkBuilder;
import 'element_map.dart';
import 'elements.dart';
@@ -1494,6 +1498,106 @@ class KernelResolutionWorldBuilder extends KernelResolutionWorldBuilderBase {
bool checkClass(ClassEntity cls) => true;
}
+class KernelClosedWorld extends ClosedWorldBase {
+ final KernelToElementMapImpl _elementMap;
+ final ElementEnvironment _elementEnvironment;
+
+ KernelClosedWorld(this._elementMap,
+ {ElementEnvironment elementEnvironment,
+ CommonElements commonElements,
+ ConstantSystem constantSystem,
+ NativeData nativeData,
+ InterceptorData interceptorData,
+ BackendUsage backendUsage,
+ ResolutionWorldBuilder resolutionWorldBuilder,
+ FunctionSet functionSet,
+ Iterable<TypedefElement> allTypedefs,
+ Map<ClassEntity, Set<ClassEntity>> mixinUses,
+ Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses,
+ Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes,
+ Map<ClassEntity, ClassSet> classSets})
+ : this._elementEnvironment = elementEnvironment,
+ super(
+ commonElements: commonElements,
+ constantSystem: constantSystem,
+ nativeData: nativeData,
+ interceptorData: interceptorData,
+ backendUsage: backendUsage,
+ resolutionWorldBuilder: resolutionWorldBuilder,
+ functionSet: functionSet,
+ allTypedefs: allTypedefs,
+ mixinUses: mixinUses,
+ typesImplementedBySubclasses: typesImplementedBySubclasses,
+ classHierarchyNodes: classHierarchyNodes,
+ classSets: classSets);
+
+ @override
+ bool hasConcreteMatch(ClassEntity cls, Selector selector,
+ {ClassEntity stopAtSuperclass}) {
+ throw new UnimplementedError('KernelClosedWorld.hasConcreteMatch');
+ }
+
+ @override
+ bool isNamedMixinApplication(ClassEntity cls) {
+ throw new UnimplementedError('KernelClosedWorld.isNamedMixinApplication');
+ }
+
+ @override
+ ClassEntity getAppliedMixin(ClassEntity cls) {
+ throw new UnimplementedError('KernelClosedWorld.getAppliedMixin');
+ }
+
+ @override
+ Iterable<ClassEntity> getInterfaces(ClassEntity cls) {
+ throw new UnimplementedError('KernelClosedWorld.getInterfaces');
+ }
+
+ @override
+ ClassEntity getSuperClass(ClassEntity cls) {
+ throw new UnimplementedError('KernelClosedWorld.getSuperClass');
+ }
+
+ @override
+ int getHierarchyDepth(ClassEntity cls) {
+ return _elementMap._getHierarchyDepth(cls);
+ }
+
+ @override
+ OrderedTypeSet getOrderedTypeSet(ClassEntity cls) {
+ return _elementMap._getOrderedTypeSet(cls);
+ }
+
+ @override
+ bool checkInvariants(ClassEntity cls, {bool mustBeInstantiated: true}) =>
+ true;
+
+ @override
+ bool checkClass(ClassEntity cls) => true;
+
+ @override
+ bool checkEntity(Entity element) => true;
+
+ @override
+ void registerClosureClass(ClassElement cls) {
+ throw new UnimplementedError('KernelClosedWorld.registerClosureClass');
+ }
+
+ @override
+ bool hasElementIn(ClassEntity cls, Selector selector, Entity element) {
+ while (cls != null) {
+ MemberEntity member = _elementEnvironment
+ .lookupClassMember(cls, selector.name, setter: selector.isSetter);
+ if (member != null &&
+ (!selector.memberName.isPrivate ||
+ member.library == selector.library)) {
+ return member == element;
+ }
+ cls = _elementEnvironment.getSuperClass(cls);
+ }
+ return false;
+ }
+}
+
// Interface for testing equivalence of Kernel-based entities.
class WorldDeconstructionForTesting {
final KernelToElementMapImpl elementMap;
« no previous file with comments | « pkg/compiler/lib/src/js_backend/namer.dart ('k') | pkg/compiler/lib/src/kernel/kernel_backend_strategy.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698