| OLD | NEW |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2015, 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.serialization_test; | 5 library dart2js.serialization_test; |
| 6 | 6 |
| 7 import 'dart:io'; | 7 import 'dart:io'; |
| 8 import 'memory_compiler.dart'; | 8 import 'memory_compiler.dart'; |
| 9 import 'package:async_helper/async_helper.dart'; | 9 import 'package:async_helper/async_helper.dart'; |
| 10 import 'package:compiler/src/constants/constructors.dart'; | 10 import 'package:compiler/src/constants/constructors.dart'; |
| (...skipping 530 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 541 } | 541 } |
| 542 for (Element member in members2) { | 542 for (Element member in members2) { |
| 543 names.add(member.name); | 543 names.add(member.name); |
| 544 } | 544 } |
| 545 element1 = element1.implementation; | 545 element1 = element1.implementation; |
| 546 element2 = element2.implementation; | 546 element2 = element2.implementation; |
| 547 for (String name in names) { | 547 for (String name in names) { |
| 548 Element member1 = element1.localLookup(name); | 548 Element member1 = element1.localLookup(name); |
| 549 Element member2 = element2.localLookup(name); | 549 Element member2 = element2.localLookup(name); |
| 550 if (member1 == null) { | 550 if (member1 == null) { |
| 551 print('Missing member for $member2 in\n ${members1.join('\n ')}'); | 551 String message = |
| 552 continue; | 552 'Missing member for $member2 in\n ${members1.join('\n ')}'; |
| 553 if (member2.isAbstractField) { |
| 554 // TODO(johnniwinther): Ensure abstract fields are handled correctly. |
| 555 print(message); |
| 556 continue; |
| 557 } else { |
| 558 throw message; |
| 559 } |
| 553 } | 560 } |
| 554 if (member2 == null) { | 561 if (member2 == null) { |
| 555 print('Missing member for $member1 in\n ${members2.join('\n ')}'); | 562 String message = |
| 556 continue; | 563 'Missing member for $member1 in\n ${members2.join('\n ')}'; |
| 564 if (member1.isAbstractField) { |
| 565 // TODO(johnniwinther): Ensure abstract fields are handled correctly. |
| 566 print(message); |
| 567 continue; |
| 568 } else { |
| 569 throw message; |
| 570 } |
| 557 } | 571 } |
| 558 visit(member1, member2); | 572 visit(member1, member2); |
| 559 } | 573 } |
| 560 } | 574 } |
| 561 | 575 |
| 562 @override | 576 @override |
| 563 void visitClassElement(ClassElement element1, ClassElement element2) { | 577 void visitClassElement(ClassElement element1, ClassElement element2) { |
| 564 checkElementIdentities(null, null, null, element1, element2); | 578 checkElementIdentities(null, null, null, element1, element2); |
| 565 check(element1, element2, 'name', | 579 check(element1, element2, 'name', |
| 566 element1.name, element2.name); | 580 element1.name, element2.name); |
| (...skipping 47 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 614 checkTypeLists( | 628 checkTypeLists( |
| 615 element1, element2, 'types', | 629 element1, element2, 'types', |
| 616 typeSet1.types.toList(), | 630 typeSet1.types.toList(), |
| 617 typeSet2.types.toList()); | 631 typeSet2.types.toList()); |
| 618 | 632 |
| 619 checkTypeLists( | 633 checkTypeLists( |
| 620 element1, element2, 'interfaces', | 634 element1, element2, 'interfaces', |
| 621 element1.interfaces.toList(), | 635 element1.interfaces.toList(), |
| 622 element2.interfaces.toList()); | 636 element2.interfaces.toList()); |
| 623 | 637 |
| 638 List<ConstructorElement> getConstructors(ClassElement cls) { |
| 639 return cls.implementation.constructors.map((c) => c.declaration).toList(); |
| 640 } |
| 641 |
| 642 checkElementLists( |
| 643 element1, element2, 'constructors', |
| 644 getConstructors(element1), |
| 645 getConstructors(element2)); |
| 646 |
| 624 visitMembers(element1, element2); | 647 visitMembers(element1, element2); |
| 625 } | 648 } |
| 626 | 649 |
| 627 @override | 650 @override |
| 628 void visitFieldElement(FieldElement element1, FieldElement element2) { | 651 void visitFieldElement(FieldElement element1, FieldElement element2) { |
| 629 checkElementIdentities(null, null, null, element1, element2); | 652 checkElementIdentities(null, null, null, element1, element2); |
| 630 check(element1, element2, 'name', | 653 check(element1, element2, 'name', |
| 631 element1.name, element2.name); | 654 element1.name, element2.name); |
| 632 check(element1, element2, 'sourcePosition', | 655 check(element1, element2, 'sourcePosition', |
| 633 element1.sourcePosition, element2.sourcePosition); | 656 element1.sourcePosition, element2.sourcePosition); |
| (...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1100 exp1, exp2, 'expression', | 1123 exp1, exp2, 'expression', |
| 1101 exp1.expression, exp2.expression); | 1124 exp1.expression, exp2.expression); |
| 1102 } | 1125 } |
| 1103 | 1126 |
| 1104 @override | 1127 @override |
| 1105 visitDeferred(DeferredConstantExpression exp1, | 1128 visitDeferred(DeferredConstantExpression exp1, |
| 1106 DeferredConstantExpression exp2) { | 1129 DeferredConstantExpression exp2) { |
| 1107 // TODO: implement visitDeferred | 1130 // TODO: implement visitDeferred |
| 1108 } | 1131 } |
| 1109 } | 1132 } |
| OLD | NEW |