| Index: sdk/lib/_internal/compiler/implementation/universe/partial_type_tree.dart
|
| diff --git a/sdk/lib/_internal/compiler/implementation/universe/partial_type_tree.dart b/sdk/lib/_internal/compiler/implementation/universe/partial_type_tree.dart
|
| index 53be7491b9abb17022af6de63f025824e7cb953b..b0ed8dc1f304e919328e9b148d286749897d55fc 100644
|
| --- a/sdk/lib/_internal/compiler/implementation/universe/partial_type_tree.dart
|
| +++ b/sdk/lib/_internal/compiler/implementation/universe/partial_type_tree.dart
|
| @@ -5,62 +5,18 @@
|
| part of universe;
|
|
|
| abstract class PartialTypeTree {
|
| -
|
| final Compiler compiler;
|
| PartialTypeTreeNode root;
|
|
|
| - final Map<ClassElement, PartialTypeTreeNode> nodes =
|
| - new Map<ClassElement, PartialTypeTreeNode>();
|
| -
|
| - // TODO(kasperl): For now, we keep track of whether or not the tree
|
| - // contains two classes with a subtype relationship that isn't a
|
| - // subclass relationship.
|
| - bool containsInterfaceSubtypes = false;
|
| -
|
| - final Set<ClassElement> unseenInterfaceSubtypes =
|
| - new Set<ClassElement>();
|
| -
|
| PartialTypeTree(this.compiler);
|
|
|
| - PartialTypeTreeNode newSpecializedNode(ClassElement type);
|
| -
|
| - PartialTypeTreeNode newNode(ClassElement type) {
|
| - PartialTypeTreeNode node = newSpecializedNode(type);
|
| - nodes[type] = node;
|
| - if (containsInterfaceSubtypes) return node;
|
| -
|
| - // Check if the implied interface of the new class is implemented
|
| - // by another class that is already in the tree.
|
| - if (unseenInterfaceSubtypes.contains(type)) {
|
| - containsInterfaceSubtypes = true;
|
| - unseenInterfaceSubtypes.clear();
|
| - return node;
|
| - }
|
| -
|
| - // Run through all the implied interfaces the class that we're
|
| - // adding implements and see if any of them are already in the
|
| - // tree. If so, we have a tree with interface subtypes. If not,
|
| - // keep track of them so we can deal with it if the interface is
|
| - // added to the tree later.
|
| - for (Link link = type.interfaces; !link.isEmpty; link = link.tail) {
|
| - InterfaceType superType = link.head;
|
| - ClassElement superTypeElement = superType.element;
|
| - if (nodes.containsKey(superTypeElement)) {
|
| - containsInterfaceSubtypes = true;
|
| - unseenInterfaceSubtypes.clear();
|
| - break;
|
| - } else {
|
| - unseenInterfaceSubtypes.add(superTypeElement);
|
| - }
|
| - }
|
| - return node;
|
| - }
|
| + PartialTypeTreeNode newNode(ClassElement type);
|
|
|
| - // TODO(kasperl): Move this to the Selector class?
|
| /**
|
| * Returns a [ClassElement] that is an upper bound of the receiver type on
|
| * [selector].
|
| */
|
| + // TODO(kasperl): Move this to the Selector class?
|
| ClassElement selectorType(Selector selector) {
|
| // TODO(ngeoffray): Should the tree be specialized with DartType?
|
| DartType type = selector.receiverType;
|
|
|