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

Side by Side Diff: pkg/compiler/lib/src/kernel/element_map_impl.dart

Issue 2927093002: Support user class in compile_from_dill_test (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 unified diff | Download patch
OLDNEW
1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2017, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 library dart2js.kernel.element_map; 5 library dart2js.kernel.element_map;
6 6
7 import 'package:kernel/ast.dart' as ir; 7 import 'package:kernel/ast.dart' as ir;
8 import 'package:kernel/clone.dart'; 8 import 'package:kernel/clone.dart';
9 import 'package:kernel/type_algebra.dart'; 9 import 'package:kernel/type_algebra.dart';
10 10
(...skipping 15 matching lines...) Expand all
26 import '../frontend_strategy.dart'; 26 import '../frontend_strategy.dart';
27 import '../js_backend/backend_usage.dart'; 27 import '../js_backend/backend_usage.dart';
28 import '../js_backend/constant_system_javascript.dart'; 28 import '../js_backend/constant_system_javascript.dart';
29 import '../js_backend/interceptor_data.dart'; 29 import '../js_backend/interceptor_data.dart';
30 import '../js_backend/native_data.dart'; 30 import '../js_backend/native_data.dart';
31 import '../js_backend/no_such_method_registry.dart'; 31 import '../js_backend/no_such_method_registry.dart';
32 import '../native/native.dart' as native; 32 import '../native/native.dart' as native;
33 import '../native/resolver.dart'; 33 import '../native/resolver.dart';
34 import '../ordered_typeset.dart'; 34 import '../ordered_typeset.dart';
35 import '../ssa/kernel_impact.dart'; 35 import '../ssa/kernel_impact.dart';
36 import '../universe/class_set.dart';
37 import '../universe/function_set.dart';
38 import '../universe/selector.dart';
36 import '../universe/world_builder.dart'; 39 import '../universe/world_builder.dart';
40 import '../world.dart';
37 import '../util/util.dart' show Link, LinkBuilder; 41 import '../util/util.dart' show Link, LinkBuilder;
38 import 'element_map.dart'; 42 import 'element_map.dart';
39 import 'elements.dart'; 43 import 'elements.dart';
40 44
41 part 'native_basic_data.dart'; 45 part 'native_basic_data.dart';
42 part 'no_such_method_resolver.dart'; 46 part 'no_such_method_resolver.dart';
43 part 'types.dart'; 47 part 'types.dart';
44 48
45 /// Element builder used for creating elements and types corresponding to Kernel 49 /// Element builder used for creating elements and types corresponding to Kernel
46 /// IR nodes. 50 /// IR nodes.
(...skipping 1440 matching lines...) Expand 10 before | Expand all | Expand 10 after
1487 return elementMap._getAppliedMixin(cls); 1491 return elementMap._getAppliedMixin(cls);
1488 } 1492 }
1489 1493
1490 @override 1494 @override
1491 bool validateClass(ClassEntity cls) => true; 1495 bool validateClass(ClassEntity cls) => true;
1492 1496
1493 @override 1497 @override
1494 bool checkClass(ClassEntity cls) => true; 1498 bool checkClass(ClassEntity cls) => true;
1495 } 1499 }
1496 1500
1501 class KernelClosedWorld extends ClosedWorldBase {
1502 final KernelToElementMapImpl _elementMap;
1503 final ElementEnvironment _elementEnvironment;
1504
1505 KernelClosedWorld(this._elementMap,
1506 {ElementEnvironment elementEnvironment,
1507 CommonElements commonElements,
1508 ConstantSystem constantSystem,
1509 NativeData nativeData,
1510 InterceptorData interceptorData,
1511 BackendUsage backendUsage,
1512 ResolutionWorldBuilder resolutionWorldBuilder,
1513 FunctionSet functionSet,
1514 Iterable<TypedefElement> allTypedefs,
1515 Map<ClassEntity, Set<ClassEntity>> mixinUses,
1516 Map<ClassEntity, Set<ClassEntity>> typesImplementedBySubclasses,
1517 Map<ClassEntity, ClassHierarchyNode> classHierarchyNodes,
1518 Map<ClassEntity, ClassSet> classSets})
1519 : this._elementEnvironment = elementEnvironment,
1520 super(
1521 commonElements: commonElements,
1522 constantSystem: constantSystem,
1523 nativeData: nativeData,
1524 interceptorData: interceptorData,
1525 backendUsage: backendUsage,
1526 resolutionWorldBuilder: resolutionWorldBuilder,
1527 functionSet: functionSet,
1528 allTypedefs: allTypedefs,
1529 mixinUses: mixinUses,
1530 typesImplementedBySubclasses: typesImplementedBySubclasses,
1531 classHierarchyNodes: classHierarchyNodes,
1532 classSets: classSets);
1533
1534 @override
1535 bool hasConcreteMatch(ClassEntity cls, Selector selector,
1536 {ClassEntity stopAtSuperclass}) {
1537 throw new UnimplementedError('KernelClosedWorld.hasConcreteMatch');
1538 }
1539
1540 @override
1541 bool isNamedMixinApplication(ClassEntity cls) {
1542 throw new UnimplementedError('KernelClosedWorld.isNamedMixinApplication');
1543 }
1544
1545 @override
1546 ClassEntity getAppliedMixin(ClassEntity cls) {
1547 throw new UnimplementedError('KernelClosedWorld.getAppliedMixin');
1548 }
1549
1550 @override
1551 Iterable<ClassEntity> getInterfaces(ClassEntity cls) {
1552 throw new UnimplementedError('KernelClosedWorld.getInterfaces');
1553 }
1554
1555 @override
1556 ClassEntity getSuperClass(ClassEntity cls) {
1557 throw new UnimplementedError('KernelClosedWorld.getSuperClass');
1558 }
1559
1560 @override
1561 int getHierarchyDepth(ClassEntity cls) {
1562 return _elementMap._getHierarchyDepth(cls);
1563 }
1564
1565 @override
1566 OrderedTypeSet getOrderedTypeSet(ClassEntity cls) {
1567 return _elementMap._getOrderedTypeSet(cls);
1568 }
1569
1570 @override
1571 bool checkInvariants(ClassEntity cls, {bool mustBeInstantiated: true}) =>
1572 true;
1573
1574 @override
1575 bool checkClass(ClassEntity cls) => true;
1576
1577 @override
1578 bool checkEntity(Entity element) => true;
1579
1580 @override
1581 void registerClosureClass(ClassElement cls) {
1582 throw new UnimplementedError('KernelClosedWorld.registerClosureClass');
1583 }
1584
1585 @override
1586 bool hasElementIn(ClassEntity cls, Selector selector, Entity element) {
1587 while (cls != null) {
1588 MemberEntity member = _elementEnvironment
1589 .lookupClassMember(cls, selector.name, setter: selector.isSetter);
1590 if (member != null &&
1591 (!selector.memberName.isPrivate ||
1592 member.library == selector.library)) {
1593 return member == element;
1594 }
1595 cls = _elementEnvironment.getSuperClass(cls);
1596 }
1597 return false;
1598 }
1599 }
1600
1497 // Interface for testing equivalence of Kernel-based entities. 1601 // Interface for testing equivalence of Kernel-based entities.
1498 class WorldDeconstructionForTesting { 1602 class WorldDeconstructionForTesting {
1499 final KernelToElementMapImpl elementMap; 1603 final KernelToElementMapImpl elementMap;
1500 1604
1501 WorldDeconstructionForTesting(this.elementMap); 1605 WorldDeconstructionForTesting(this.elementMap);
1502 1606
1503 KClass getSuperclassForClass(KClass cls) { 1607 KClass getSuperclassForClass(KClass cls) {
1504 _KClassEnv env = elementMap._classEnvs[cls.classIndex]; 1608 _KClassEnv env = elementMap._classEnvs[cls.classIndex];
1505 ir.Supertype supertype = env.cls.supertype; 1609 ir.Supertype supertype = env.cls.supertype;
1506 if (supertype == null) return null; 1610 if (supertype == null) return null;
(...skipping 56 matching lines...) Expand 10 before | Expand all | Expand 10 after
1563 return node.isExternal && 1667 return node.isExternal &&
1564 !elementMap.isForeignLibrary(node.enclosingLibrary); 1668 !elementMap.isForeignLibrary(node.enclosingLibrary);
1565 } 1669 }
1566 1670
1567 @override 1671 @override
1568 bool isJsInteropMember(MemberEntity element) { 1672 bool isJsInteropMember(MemberEntity element) {
1569 // TODO(johnniwinther): Compute this. 1673 // TODO(johnniwinther): Compute this.
1570 return false; 1674 return false;
1571 } 1675 }
1572 } 1676 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698