Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(356)

Side by Side Diff: pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart

Issue 1120633002: Refactor index operator in SimpleTypeInferrer. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Fix bug. Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
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
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
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
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
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
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
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 handleSuperUnresolvedGetterIndexPostfixPrefix(
6454 Send node,
6455 Element element,
6456 Node index,
6457 IncDecOperator operator,
6458 A arg,
6459 {bool isPrefix});
6460
6461 R handleSuperUnresolvedSetterIndexPostfixPrefix(
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
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 handleSuperUnresolvedGetterIndexPostfixPrefix(
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 handleSuperUnresolvedGetterIndexPostfixPrefix(
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 handleSuperUnresolvedSetterIndexPostfixPrefix(
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 handleSuperUnresolvedSetterIndexPostfixPrefix(
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
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 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698