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 |