Index: tests/compiler/dart2js/serialization/equivalence_test.dart |
diff --git a/tests/compiler/dart2js/serialization/equivalence_test.dart b/tests/compiler/dart2js/serialization/equivalence_test.dart |
index 7caae2856979629c7a44d87dcb6b6a91378e32dc..443e69983cfbc70c9150aacf55b99f78810f83f1 100644 |
--- a/tests/compiler/dart2js/serialization/equivalence_test.dart |
+++ b/tests/compiler/dart2js/serialization/equivalence_test.dart |
@@ -135,7 +135,10 @@ checkLibraryContent( |
checkElementProperties( |
Object object1, object2, String property, |
Element element1, Element element2) { |
+ currentCheck = |
+ new Check(currentCheck, object1, object2, property, element1, element2); |
const ElementPropertyEquivalence().visit(element1, element2); |
+ currentCheck = currentCheck.parent; |
} |
/// Checks the equivalence of [constructor1] and [constructor2]. |
@@ -255,6 +258,16 @@ class ElementPropertyEquivalence extends BaseElementVisitor<dynamic, Element> { |
element1.isFinal, element2.isFinal); |
check(element1, element2, 'isConst', |
element1.isConst, element2.isConst); |
+ check(element1, element2, 'isAbstract', |
+ element1.isAbstract, element2.isAbstract); |
+ check(element1, element2, 'isStatic', |
+ element1.isStatic, element2.isStatic); |
+ check(element1, element2, 'isTopLevel', |
+ element1.isTopLevel, element2.isTopLevel); |
+ check(element1, element2, 'isClassMember', |
+ element1.isClassMember, element2.isClassMember); |
+ check(element1, element2, 'isInstanceMember', |
+ element1.isInstanceMember, element2.isInstanceMember); |
} |
@override |
@@ -360,7 +373,10 @@ class ElementPropertyEquivalence extends BaseElementVisitor<dynamic, Element> { |
throw message; |
} |
} |
+ currentCheck = new Check(currentCheck, element1, element1, |
+ 'member:$name', member1, member2); |
visit(member1, member2); |
+ currentCheck = currentCheck.parent; |
} |
} |
@@ -369,14 +385,28 @@ class ElementPropertyEquivalence extends BaseElementVisitor<dynamic, Element> { |
checkElementIdentities(null, null, null, element1, element2); |
check(element1, element2, 'name', |
element1.name, element2.name); |
- check(element1, element2, 'sourcePosition', |
+ if (!element1.isUnnamedMixinApplication) { |
+ check(element1, element2, 'sourcePosition', |
element1.sourcePosition, element2.sourcePosition); |
+ } else { |
+ check(element1, element2, 'sourcePosition.uri', |
+ element1.sourcePosition.uri, element2.sourcePosition.uri); |
+ } |
checkElementIdentities( |
element1, element2, 'library', |
element1.library, element2.library); |
checkElementIdentities( |
element1, element2, 'compilationUnit', |
element1.compilationUnit, element2.compilationUnit); |
+ checkTypeLists( |
+ element1, element2, 'typeVariables', |
+ element1.typeVariables, element2.typeVariables); |
+ checkTypes( |
+ element1, element2, 'thisType', |
+ element1.thisType, element2.thisType); |
+ checkTypes( |
+ element1, element2, 'rawType', |
+ element1.rawType, element2.rawType); |
check(element1, element2, 'isObject', |
element1.isObject, element2.isObject); |
checkTypeLists(element1, element2, 'typeVariables', |
@@ -436,6 +466,15 @@ class ElementPropertyEquivalence extends BaseElementVisitor<dynamic, Element> { |
getConstructors(element2)); |
visitMembers(element1, element2); |
+ |
+ ClassElement superclass1 = element1.superclass; |
+ ClassElement superclass2 = element2.superclass; |
+ while (superclass1 != null && superclass1.isMixinApplication) { |
+ checkElementProperties(element1, element2, 'supermixin', |
+ superclass1, superclass2); |
+ superclass1 = superclass1.superclass; |
+ superclass2 = superclass2.superclass; |
+ } |
} |
@override |
@@ -550,8 +589,13 @@ class ElementPropertyEquivalence extends BaseElementVisitor<dynamic, Element> { |
check( |
element1, element2, 'name', |
element1.name, element2.name); |
- check(element1, element2, 'sourcePosition', |
+ if (!element1.isSynthesized) { |
+ check(element1, element2, 'sourcePosition', |
element1.sourcePosition, element2.sourcePosition); |
+ } else { |
+ check(element1, element2, 'sourcePosition.uri', |
+ element1.sourcePosition.uri, element2.sourcePosition.uri); |
+ } |
checkListEquivalence( |
element1, element2, 'parameters', |
element1.parameters, element2.parameters, |