| OLD | NEW |
| 1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2016, 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 /// Functions for asserting equivalence across serialization. | 5 /// Functions for asserting equivalence across serialization. |
| 6 | 6 |
| 7 library dart2js.serialization.equivalence; | 7 library dart2js.serialization.equivalence; |
| 8 | 8 |
| 9 import '../closure.dart'; |
| 9 import '../common.dart'; | 10 import '../common.dart'; |
| 10 import '../common/resolution.dart'; | 11 import '../common/resolution.dart'; |
| 11 import '../constants/expressions.dart'; | 12 import '../constants/expressions.dart'; |
| 12 import '../dart_types.dart'; | 13 import '../dart_types.dart'; |
| 13 import '../elements/elements.dart'; | 14 import '../elements/elements.dart'; |
| 14 import '../elements/visitor.dart'; | 15 import '../elements/visitor.dart'; |
| 15 import '../js_backend/backend_serialization.dart' | 16 import '../js_backend/backend_serialization.dart' |
| 16 show JavaScriptBackendSerializer; | 17 show JavaScriptBackendSerializer; |
| 17 import '../native/native.dart' show NativeBehavior; | 18 import '../native/native.dart' show NativeBehavior; |
| 18 import '../resolution/access_semantics.dart'; | 19 import '../resolution/access_semantics.dart'; |
| (...skipping 379 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 398 return visit(element1.library, element2.library); | 399 return visit(element1.library, element2.library); |
| 399 } | 400 } |
| 400 } | 401 } |
| 401 | 402 |
| 402 @override | 403 @override |
| 403 bool visitFieldElement(FieldElement element1, FieldElement element2) { | 404 bool visitFieldElement(FieldElement element1, FieldElement element2) { |
| 404 return checkMembers(element1, element2); | 405 return checkMembers(element1, element2); |
| 405 } | 406 } |
| 406 | 407 |
| 407 @override | 408 @override |
| 409 bool visitBoxFieldElement( |
| 410 BoxFieldElement element1, BoxFieldElement element2) { |
| 411 return element1.box.name == element2.box.name && |
| 412 visit(element1.box.executableContext, element2.box.executableContext) && |
| 413 visit(element1.variableElement, element2.variableElement); |
| 414 } |
| 415 |
| 416 @override |
| 408 bool visitConstructorElement( | 417 bool visitConstructorElement( |
| 409 ConstructorElement element1, ConstructorElement element2) { | 418 ConstructorElement element1, ConstructorElement element2) { |
| 410 return checkMembers(element1, element2); | 419 return checkMembers(element1, element2); |
| 411 } | 420 } |
| 412 | 421 |
| 413 @override | 422 @override |
| 414 bool visitMethodElement(MethodElement element1, MethodElement element2) { | 423 bool visitMethodElement(MethodElement element1, MethodElement element2) { |
| 415 return checkMembers(element1, element2); | 424 return checkMembers(element1, element2); |
| 416 } | 425 } |
| 417 | 426 |
| (...skipping 397 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 815 resolvedAst1.node.accept(indices1); | 824 resolvedAst1.node.accept(indices1); |
| 816 AstIndexComputer indices2 = new AstIndexComputer(); | 825 AstIndexComputer indices2 = new AstIndexComputer(); |
| 817 resolvedAst2.node.accept(indices2); | 826 resolvedAst2.node.accept(indices2); |
| 818 | 827 |
| 819 TreeElements elements1 = resolvedAst1.elements; | 828 TreeElements elements1 = resolvedAst1.elements; |
| 820 TreeElements elements2 = resolvedAst2.elements; | 829 TreeElements elements2 = resolvedAst2.elements; |
| 821 | 830 |
| 822 TreeElementsEquivalenceVisitor visitor = new TreeElementsEquivalenceVisitor( | 831 TreeElementsEquivalenceVisitor visitor = new TreeElementsEquivalenceVisitor( |
| 823 indices1, indices2, elements1, elements2, strategy); | 832 indices1, indices2, elements1, elements2, strategy); |
| 824 resolvedAst1.node.accept(visitor); | 833 resolvedAst1.node.accept(visitor); |
| 825 return visitor.success; | 834 if (visitor.success) { |
| 835 return strategy.test(elements1, elements2, 'containsTryStatement', |
| 836 elements1.containsTryStatement, elements2.containsTryStatement); |
| 837 } |
| 838 return false; |
| 826 } | 839 } |
| 827 | 840 |
| 828 /// Visitor that checks the equivalence of [TreeElements] data. | 841 /// Visitor that checks the equivalence of [TreeElements] data. |
| 829 class TreeElementsEquivalenceVisitor extends Visitor { | 842 class TreeElementsEquivalenceVisitor extends Visitor { |
| 830 final TestStrategy strategy; | 843 final TestStrategy strategy; |
| 831 final AstIndexComputer indices1; | 844 final AstIndexComputer indices1; |
| 832 final AstIndexComputer indices2; | 845 final AstIndexComputer indices2; |
| 833 final TreeElements elements1; | 846 final TreeElements elements1; |
| 834 final TreeElements elements2; | 847 final TreeElements elements2; |
| 835 bool success = true; | 848 bool success = true; |
| (...skipping 951 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1787 @override | 1800 @override |
| 1788 bool visitStatement(Statement node1, Statement node2) { | 1801 bool visitStatement(Statement node1, Statement node2) { |
| 1789 throw new UnsupportedError('Unexpected nodes: $node1 <> $node2'); | 1802 throw new UnsupportedError('Unexpected nodes: $node1 <> $node2'); |
| 1790 } | 1803 } |
| 1791 | 1804 |
| 1792 @override | 1805 @override |
| 1793 bool visitStringNode(StringNode node1, StringNode node2) { | 1806 bool visitStringNode(StringNode node1, StringNode node2) { |
| 1794 throw new UnsupportedError('Unexpected nodes: $node1 <> $node2'); | 1807 throw new UnsupportedError('Unexpected nodes: $node1 <> $node2'); |
| 1795 } | 1808 } |
| 1796 } | 1809 } |
| OLD | NEW |