| 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 part of dart2js.semantics_visitor; | 5 part of dart2js.semantics_visitor; |
| 6 | 6 |
| 7 /// Interface for bulk handling of a [Node] in a semantic visitor. | 7 /// Interface for bulk handling of a [Node] in a semantic visitor. |
| 8 abstract class BulkHandle<R, A> { | 8 abstract class BulkHandle<R, A> { |
| 9 /// Handle [node] either regardless of semantics or to report that [node] is | 9 /// Handle [node] either regardless of semantics or to report that [node] is |
| 10 /// unhandled. [message] contains a message template for the latter case: | 10 /// unhandled. [message] contains a message template for the latter case: |
| (...skipping 485 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 @override | 496 @override |
| 497 R errorUnresolvedSet( | 497 R errorUnresolvedSet( |
| 498 Send node, | 498 Send node, |
| 499 Element element, | 499 Element element, |
| 500 Node rhs, | 500 Node rhs, |
| 501 A arg) { | 501 A arg) { |
| 502 return bulkHandleError(node, arg); | 502 return bulkHandleError(node, arg); |
| 503 } | 503 } |
| 504 | 504 |
| 505 @override | 505 @override |
| 506 R errorUnresolvedSuperCompoundIndexSet( | |
| 507 SendSet node, | |
| 508 Element element, | |
| 509 Node index, | |
| 510 AssignmentOperator operator, | |
| 511 Node rhs, | |
| 512 A arg) { | |
| 513 return bulkHandleError(node, arg); | |
| 514 } | |
| 515 | |
| 516 @override | |
| 517 R errorUnresolvedSuperIndexPostfix( | |
| 518 Send node, | |
| 519 Element function, | |
| 520 Node index, | |
| 521 IncDecOperator operator, | |
| 522 A arg) { | |
| 523 return bulkHandleError(node, arg); | |
| 524 } | |
| 525 | |
| 526 @override | |
| 527 R errorUnresolvedSuperIndexPrefix( | |
| 528 Send node, | |
| 529 Element function, | |
| 530 Node index, | |
| 531 IncDecOperator operator, | |
| 532 A arg) { | |
| 533 return bulkHandleError(node, arg); | |
| 534 } | |
| 535 | |
| 536 @override | |
| 537 R errorUnresolvedSuperIndexSet( | |
| 538 SendSet node, | |
| 539 Element element, | |
| 540 Node index, | |
| 541 Node rhs, | |
| 542 A arg) { | |
| 543 return bulkHandleError(node, arg); | |
| 544 } | |
| 545 | |
| 546 @override | |
| 547 R errorUndefinedUnaryExpression( | 506 R errorUndefinedUnaryExpression( |
| 548 Send node, | 507 Send node, |
| 549 Operator operator, | 508 Operator operator, |
| 550 Node expression, | 509 Node expression, |
| 551 A arg) { | 510 A arg) { |
| 552 return bulkHandleError(node, arg); | 511 return bulkHandleError(node, arg); |
| 553 } | 512 } |
| 554 | 513 |
| 555 @override | 514 @override |
| 556 R errorUndefinedBinaryExpression( | 515 R errorUndefinedBinaryExpression( |
| (...skipping 140 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 697 Send node, | 656 Send node, |
| 698 FunctionElement indexFunction, | 657 FunctionElement indexFunction, |
| 699 FunctionElement indexSetFunction, | 658 FunctionElement indexSetFunction, |
| 700 Node index, | 659 Node index, |
| 701 IncDecOperator operator, | 660 IncDecOperator operator, |
| 702 A arg) { | 661 A arg) { |
| 703 return bulkHandlePrefix(node, arg); | 662 return bulkHandlePrefix(node, arg); |
| 704 } | 663 } |
| 705 | 664 |
| 706 @override | 665 @override |
| 666 R visitUnresolvedSuperGetterIndexPrefix( |
| 667 Send node, |
| 668 Element element, |
| 669 Node index, |
| 670 IncDecOperator operator, |
| 671 A arg) { |
| 672 return bulkHandlePrefix(node, arg); |
| 673 } |
| 674 |
| 675 @override |
| 676 R visitUnresolvedSuperSetterIndexPrefix( |
| 677 Send node, |
| 678 MethodElement getter, |
| 679 Element element, |
| 680 Node index, |
| 681 IncDecOperator operator, |
| 682 A arg) { |
| 683 return bulkHandlePrefix(node, arg); |
| 684 } |
| 685 |
| 686 @override |
| 707 R visitSuperMethodSetterPrefix( | 687 R visitSuperMethodSetterPrefix( |
| 708 Send node, | 688 Send node, |
| 709 FunctionElement method, | 689 FunctionElement method, |
| 710 FunctionElement setter, | 690 FunctionElement setter, |
| 711 IncDecOperator operator, | 691 IncDecOperator operator, |
| 712 A arg) { | 692 A arg) { |
| 713 return bulkHandlePrefix(node, arg); | 693 return bulkHandlePrefix(node, arg); |
| 714 } | 694 } |
| 715 | 695 |
| 716 @override | 696 @override |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 887 Send node, | 867 Send node, |
| 888 FunctionElement indexFunction, | 868 FunctionElement indexFunction, |
| 889 FunctionElement indexSetFunction, | 869 FunctionElement indexSetFunction, |
| 890 Node index, | 870 Node index, |
| 891 IncDecOperator operator, | 871 IncDecOperator operator, |
| 892 A arg) { | 872 A arg) { |
| 893 return bulkHandlePostfix(node, arg); | 873 return bulkHandlePostfix(node, arg); |
| 894 } | 874 } |
| 895 | 875 |
| 896 @override | 876 @override |
| 877 R visitUnresolvedSuperGetterIndexPostfix( |
| 878 Send node, |
| 879 Element element, |
| 880 Node index, |
| 881 IncDecOperator operator, |
| 882 A arg) { |
| 883 return bulkHandlePostfix(node, arg); |
| 884 } |
| 885 |
| 886 @override |
| 887 R visitUnresolvedSuperSetterIndexPostfix( |
| 888 Send node, |
| 889 MethodElement getter, |
| 890 Element element, |
| 891 Node index, |
| 892 IncDecOperator operator, |
| 893 A arg) { |
| 894 return bulkHandlePostfix(node, arg); |
| 895 } |
| 896 |
| 897 @override |
| 897 R visitSuperMethodSetterPostfix( | 898 R visitSuperMethodSetterPostfix( |
| 898 Send node, | 899 Send node, |
| 899 FunctionElement method, | 900 FunctionElement method, |
| 900 FunctionElement setter, | 901 FunctionElement setter, |
| 901 IncDecOperator operator, | 902 IncDecOperator operator, |
| 902 A arg) { | 903 A arg) { |
| 903 return bulkHandlePostfix(node, arg); | 904 return bulkHandlePostfix(node, arg); |
| 904 } | 905 } |
| 905 | 906 |
| 906 @override | 907 @override |
| (...skipping 811 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1718 FunctionElement getter, | 1719 FunctionElement getter, |
| 1719 FunctionElement setter, | 1720 FunctionElement setter, |
| 1720 Node index, | 1721 Node index, |
| 1721 AssignmentOperator operator, | 1722 AssignmentOperator operator, |
| 1722 Node rhs, | 1723 Node rhs, |
| 1723 A arg) { | 1724 A arg) { |
| 1724 return bulkHandleIndexSet(node, arg); | 1725 return bulkHandleIndexSet(node, arg); |
| 1725 } | 1726 } |
| 1726 | 1727 |
| 1727 @override | 1728 @override |
| 1729 R visitUnresolvedSuperGetterCompoundIndexSet( |
| 1730 SendSet node, |
| 1731 Element element, |
| 1732 Node index, |
| 1733 AssignmentOperator operator, |
| 1734 Node rhs, |
| 1735 A arg) { |
| 1736 return bulkHandleIndexSet(node, arg); |
| 1737 } |
| 1738 |
| 1739 @override |
| 1740 R visitUnresolvedSuperSetterCompoundIndexSet( |
| 1741 SendSet node, |
| 1742 MethodElement getter, |
| 1743 Element element, |
| 1744 Node index, |
| 1745 AssignmentOperator operator, |
| 1746 Node rhs, |
| 1747 A arg) { |
| 1748 return bulkHandleIndexSet(node, arg); |
| 1749 } |
| 1750 |
| 1751 @override |
| 1728 R visitSuperIndexSet( | 1752 R visitSuperIndexSet( |
| 1729 SendSet node, | 1753 SendSet node, |
| 1730 FunctionElement function, | 1754 FunctionElement function, |
| 1731 Node index, | 1755 Node index, |
| 1732 Node rhs, | 1756 Node rhs, |
| 1733 A arg) { | 1757 A arg) { |
| 1734 return bulkHandleIndexSet(node, arg); | 1758 return bulkHandleIndexSet(node, arg); |
| 1735 } | 1759 } |
| 1760 |
| 1761 @override |
| 1762 R visitUnresolvedSuperIndexSet( |
| 1763 SendSet node, |
| 1764 Element element, |
| 1765 Node index, |
| 1766 Node rhs, |
| 1767 A arg) { |
| 1768 return bulkHandleIndexSet(node, arg); |
| 1769 } |
| 1736 } | 1770 } |
| 1737 | 1771 |
| 1738 /// Mixin that implements all binary visitor methods in [SemanticSendVisitor] by | 1772 /// Mixin that implements all binary visitor methods in [SemanticSendVisitor] by |
| 1739 /// delegating to a bulk handler. | 1773 /// delegating to a bulk handler. |
| 1740 /// | 1774 /// |
| 1741 /// Use this mixin to provide a trivial implementation for all binary visitor | 1775 /// Use this mixin to provide a trivial implementation for all binary visitor |
| 1742 /// methods. | 1776 /// methods. |
| 1743 abstract class BinaryBulkMixin<R, A> | 1777 abstract class BinaryBulkMixin<R, A> |
| 1744 implements SemanticSendVisitor<R, A>, BulkHandle<R, A> { | 1778 implements SemanticSendVisitor<R, A>, BulkHandle<R, A> { |
| 1745 | 1779 |
| (...skipping 2923 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4669 R errorUndefinedUnaryExpression( | 4703 R errorUndefinedUnaryExpression( |
| 4670 Send node, | 4704 Send node, |
| 4671 Operator operator, | 4705 Operator operator, |
| 4672 Node expression, | 4706 Node expression, |
| 4673 A arg) { | 4707 A arg) { |
| 4674 apply(expression, arg); | 4708 apply(expression, arg); |
| 4675 return null; | 4709 return null; |
| 4676 } | 4710 } |
| 4677 | 4711 |
| 4678 @override | 4712 @override |
| 4679 R errorUnresolvedSuperIndexSet( | 4713 R visitUnresolvedSuperIndexSet( |
| 4680 Send node, | 4714 Send node, |
| 4681 Element element, | 4715 Element element, |
| 4682 Node index, | 4716 Node index, |
| 4683 Node rhs, | 4717 Node rhs, |
| 4684 A arg) { | 4718 A arg) { |
| 4685 apply(index, arg); | 4719 apply(index, arg); |
| 4686 apply(rhs, arg); | 4720 apply(rhs, arg); |
| 4687 return null; | 4721 return null; |
| 4688 } | 4722 } |
| 4689 | 4723 |
| 4690 @override | 4724 @override |
| 4691 R errorUnresolvedSuperCompoundIndexSet( | 4725 R visitUnresolvedSuperGetterCompoundIndexSet( |
| 4692 SendSet node, | 4726 SendSet node, |
| 4693 Element element, | 4727 Element element, |
| 4694 Node index, | 4728 Node index, |
| 4695 AssignmentOperator operator, | 4729 AssignmentOperator operator, |
| 4730 Node rhs, |
| 4731 A arg) { |
| 4732 apply(index, arg); |
| 4733 apply(rhs, arg); |
| 4734 return null; |
| 4735 } |
| 4736 |
| 4737 @override |
| 4738 R visitUnresolvedSuperSetterCompoundIndexSet( |
| 4739 SendSet node, |
| 4740 MethodElement getter, |
| 4741 Element element, |
| 4742 Node index, |
| 4743 AssignmentOperator operator, |
| 4696 Node rhs, | 4744 Node rhs, |
| 4697 A arg) { | 4745 A arg) { |
| 4698 apply(index, arg); | 4746 apply(index, arg); |
| 4699 apply(rhs, arg); | 4747 apply(rhs, arg); |
| 4700 return null; | 4748 return null; |
| 4701 } | 4749 } |
| 4702 | 4750 |
| 4703 @override | 4751 @override |
| 4704 R visitUnresolvedSuperBinary( | 4752 R visitUnresolvedSuperBinary( |
| 4705 Send node, | 4753 Send node, |
| 4706 Element element, | 4754 Element element, |
| 4707 BinaryOperator operator, | 4755 BinaryOperator operator, |
| 4708 Node argument, | 4756 Node argument, |
| 4709 A arg) { | 4757 A arg) { |
| 4710 apply(argument, arg); | 4758 apply(argument, arg); |
| 4711 return null; | 4759 return null; |
| 4712 } | 4760 } |
| 4713 | 4761 |
| 4714 @override | 4762 @override |
| 4715 R visitUnresolvedSuperUnary( | 4763 R visitUnresolvedSuperUnary( |
| 4716 Send node, | 4764 Send node, |
| 4717 UnaryOperator operator, | 4765 UnaryOperator operator, |
| 4718 Element element, | 4766 Element element, |
| 4719 A arg) { | 4767 A arg) { |
| 4720 return null; | 4768 return null; |
| 4721 } | 4769 } |
| 4722 | 4770 |
| 4723 @override | 4771 @override |
| 4724 R errorUnresolvedSuperIndexPostfix( | 4772 R visitUnresolvedSuperGetterIndexPostfix( |
| 4725 Send node, | 4773 Send node, |
| 4726 Element function, | 4774 Element element, |
| 4727 Node index, | 4775 Node index, |
| 4728 IncDecOperator operator, | 4776 IncDecOperator operator, |
| 4729 A arg) { | 4777 A arg) { |
| 4730 apply(index, arg); | 4778 apply(index, arg); |
| 4731 return null; | 4779 return null; |
| 4732 } | 4780 } |
| 4733 | 4781 |
| 4734 @override | 4782 @override |
| 4735 R errorUnresolvedSuperIndexPrefix( | 4783 R visitUnresolvedSuperSetterIndexPostfix( |
| 4736 Send node, | 4784 Send node, |
| 4737 Element function, | 4785 MethodElement getter, |
| 4786 Element element, |
| 4738 Node index, | 4787 Node index, |
| 4739 IncDecOperator operator, | 4788 IncDecOperator operator, |
| 4740 A arg) { | 4789 A arg) { |
| 4790 apply(index, arg); |
| 4791 return null; |
| 4792 } |
| 4793 |
| 4794 @override |
| 4795 R visitUnresolvedSuperGetterIndexPrefix( |
| 4796 Send node, |
| 4797 Element element, |
| 4798 Node index, |
| 4799 IncDecOperator operator, |
| 4800 A arg) { |
| 4801 apply(index, arg); |
| 4802 return null; |
| 4803 } |
| 4804 |
| 4805 @override |
| 4806 R visitUnresolvedSuperSetterIndexPrefix( |
| 4807 Send node, |
| 4808 MethodElement getter, |
| 4809 Element element, |
| 4810 Node index, |
| 4811 IncDecOperator operator, |
| 4812 A arg) { |
| 4741 apply(index, arg); | 4813 apply(index, arg); |
| 4742 return null; | 4814 return null; |
| 4743 } | 4815 } |
| 4744 | 4816 |
| 4745 @override | 4817 @override |
| 4746 R visitIndexPostfix( | 4818 R visitIndexPostfix( |
| 4747 Send node, | 4819 Send node, |
| 4748 Node receiver, | 4820 Node receiver, |
| 4749 Node index, | 4821 Node index, |
| 4750 IncDecOperator operator, | 4822 IncDecOperator operator, |
| (...skipping 1620 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6371 | 6443 |
| 6372 R handleSuperIndexPostfixPrefix( | 6444 R handleSuperIndexPostfixPrefix( |
| 6373 Send node, | 6445 Send node, |
| 6374 FunctionElement indexFunction, | 6446 FunctionElement indexFunction, |
| 6375 FunctionElement indexSetFunction, | 6447 FunctionElement indexSetFunction, |
| 6376 Node index, | 6448 Node index, |
| 6377 IncDecOperator operator, | 6449 IncDecOperator operator, |
| 6378 A arg, | 6450 A arg, |
| 6379 {bool isPrefix}); | 6451 {bool isPrefix}); |
| 6380 | 6452 |
| 6453 R handleUnresolvedSuperGetterIndexPostfixPrefix( |
| 6454 Send node, |
| 6455 Element element, |
| 6456 Node index, |
| 6457 IncDecOperator operator, |
| 6458 A arg, |
| 6459 {bool isPrefix}); |
| 6460 |
| 6461 R handleUnresolvedSuperSetterIndexPostfixPrefix( |
| 6462 Send node, |
| 6463 FunctionElement indexFunction, |
| 6464 Element element, |
| 6465 Node index, |
| 6466 IncDecOperator operator, |
| 6467 A arg, |
| 6468 {bool isPrefix}); |
| 6469 |
| 6381 @override | 6470 @override |
| 6382 R visitSuperFieldFieldPostfix( | 6471 R visitSuperFieldFieldPostfix( |
| 6383 Send node, | 6472 Send node, |
| 6384 FieldElement readField, | 6473 FieldElement readField, |
| 6385 FieldElement writtenField, | 6474 FieldElement writtenField, |
| 6386 IncDecOperator operator, | 6475 IncDecOperator operator, |
| 6387 A arg) { | 6476 A arg) { |
| 6388 return handleSuperFieldFieldPostfixPrefix( | 6477 return handleSuperFieldFieldPostfixPrefix( |
| 6389 node, readField, writtenField, operator, arg, isPrefix: false); | 6478 node, readField, writtenField, operator, arg, isPrefix: false); |
| 6390 } | 6479 } |
| (...skipping 135 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6526 Send node, | 6615 Send node, |
| 6527 FunctionElement indexFunction, | 6616 FunctionElement indexFunction, |
| 6528 FunctionElement indexSetFunction, | 6617 FunctionElement indexSetFunction, |
| 6529 Node index, | 6618 Node index, |
| 6530 IncDecOperator operator, | 6619 IncDecOperator operator, |
| 6531 A arg) { | 6620 A arg) { |
| 6532 return handleSuperIndexPostfixPrefix( | 6621 return handleSuperIndexPostfixPrefix( |
| 6533 node, indexFunction, indexSetFunction, | 6622 node, indexFunction, indexSetFunction, |
| 6534 index, operator, arg, isPrefix: true); | 6623 index, operator, arg, isPrefix: true); |
| 6535 } | 6624 } |
| 6625 |
| 6626 @override |
| 6627 R visitUnresolvedSuperGetterIndexPostfix( |
| 6628 Send node, |
| 6629 Element element, |
| 6630 Node index, |
| 6631 IncDecOperator operator, |
| 6632 A arg) { |
| 6633 return handleUnresolvedSuperGetterIndexPostfixPrefix( |
| 6634 node, element, index, operator, arg, isPrefix: false); |
| 6635 } |
| 6636 |
| 6637 @override |
| 6638 R visitUnresolvedSuperGetterIndexPrefix( |
| 6639 Send node, |
| 6640 Element element, |
| 6641 Node index, |
| 6642 IncDecOperator operator, |
| 6643 A arg) { |
| 6644 return handleUnresolvedSuperGetterIndexPostfixPrefix( |
| 6645 node, element, index, operator, arg, isPrefix: true); |
| 6646 } |
| 6647 |
| 6648 @override |
| 6649 R visitUnresolvedSuperSetterIndexPostfix( |
| 6650 Send node, |
| 6651 MethodElement indexFunction, |
| 6652 Element element, |
| 6653 Node index, |
| 6654 IncDecOperator operator, |
| 6655 A arg) { |
| 6656 return handleUnresolvedSuperSetterIndexPostfixPrefix( |
| 6657 node, indexFunction, element, index, operator, arg, isPrefix: false); |
| 6658 } |
| 6659 |
| 6660 @override |
| 6661 R visitUnresolvedSuperSetterIndexPrefix( |
| 6662 Send node, |
| 6663 MethodElement indexFunction, |
| 6664 Element element, |
| 6665 Node index, |
| 6666 IncDecOperator operator, |
| 6667 A arg) { |
| 6668 return handleUnresolvedSuperSetterIndexPostfixPrefix( |
| 6669 node, indexFunction, element, index, operator, arg, isPrefix: true); |
| 6670 } |
| 6536 } | 6671 } |
| 6537 | 6672 |
| 6538 /// Mixin that groups the non-constant `visitXConstructorInvoke` methods by | 6673 /// Mixin that groups the non-constant `visitXConstructorInvoke` methods by |
| 6539 /// delegating calls to the `handleConstructorInvoke` method. | 6674 /// delegating calls to the `handleConstructorInvoke` method. |
| 6540 /// | 6675 /// |
| 6541 /// This mixin is useful for the cases where all constructor invocations are | 6676 /// This mixin is useful for the cases where all constructor invocations are |
| 6542 /// handled uniformly. | 6677 /// handled uniformly. |
| 6543 abstract class BaseImplementationOfNewMixin<R, A> | 6678 abstract class BaseImplementationOfNewMixin<R, A> |
| 6544 implements SemanticSendVisitor<R, A> { | 6679 implements SemanticSendVisitor<R, A> { |
| 6545 | 6680 |
| (...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6590 InterfaceType type, | 6725 InterfaceType type, |
| 6591 ConstructorElement effectiveTarget, | 6726 ConstructorElement effectiveTarget, |
| 6592 InterfaceType effectiveTargetType, | 6727 InterfaceType effectiveTargetType, |
| 6593 NodeList arguments, | 6728 NodeList arguments, |
| 6594 CallStructure callStructure, | 6729 CallStructure callStructure, |
| 6595 A arg) { | 6730 A arg) { |
| 6596 return handleConstructorInvoke( | 6731 return handleConstructorInvoke( |
| 6597 node, constructor, type, arguments, callStructure, arg); | 6732 node, constructor, type, arguments, callStructure, arg); |
| 6598 } | 6733 } |
| 6599 } | 6734 } |
| OLD | NEW |