| 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 /// Mixin that implements all `errorX` methods of [SemanticSendVisitor] by | 7 /// Mixin that implements all `errorX` methods of [SemanticSendVisitor] by |
| 8 /// delegating to a bulk handler. | 8 /// delegating to a bulk handler. |
| 9 /// | 9 /// |
| 10 /// Use this mixin to provide a trivial implementation for all `errorX` methods. | 10 /// Use this mixin to provide a trivial implementation for all `errorX` methods. |
| (...skipping 461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 472 SendSet node, | 472 SendSet node, |
| 473 Element element, | 473 Element element, |
| 474 Node index, | 474 Node index, |
| 475 AssignmentOperator operator, | 475 AssignmentOperator operator, |
| 476 Node rhs, | 476 Node rhs, |
| 477 A arg) { | 477 A arg) { |
| 478 return bulkHandleError(node); | 478 return bulkHandleError(node); |
| 479 } | 479 } |
| 480 | 480 |
| 481 @override | 481 @override |
| 482 R errorUnresolvedSuperIndex( |
| 483 Send node, |
| 484 Element function, |
| 485 Node index, |
| 486 A arg) { |
| 487 return bulkHandleError(node); |
| 488 } |
| 489 |
| 490 @override |
| 491 R errorUnresolvedSuperIndexPostfix( |
| 492 Send node, |
| 493 Element function, |
| 494 Node index, |
| 495 IncDecOperator operator, |
| 496 A arg) { |
| 497 return bulkHandleError(node); |
| 498 } |
| 499 |
| 500 @override |
| 501 R errorUnresolvedSuperIndexPrefix( |
| 502 Send node, |
| 503 Element function, |
| 504 Node index, |
| 505 IncDecOperator operator, |
| 506 A arg) { |
| 507 return bulkHandleError(node); |
| 508 } |
| 509 |
| 510 @override |
| 482 R errorUnresolvedSuperIndexSet( | 511 R errorUnresolvedSuperIndexSet( |
| 483 SendSet node, | 512 SendSet node, |
| 484 Element element, | 513 Element element, |
| 485 Node index, | 514 Node index, |
| 486 Node rhs, | 515 Node rhs, |
| 487 A arg) { | 516 A arg) { |
| 488 return bulkHandleError(node); | 517 return bulkHandleError(node); |
| 489 } | 518 } |
| 490 | 519 |
| 491 @override | 520 @override |
| (...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 544 Send node, | 573 Send node, |
| 545 Node receiver, | 574 Node receiver, |
| 546 IncDecOperator operator, | 575 IncDecOperator operator, |
| 547 Selector getterSelector, | 576 Selector getterSelector, |
| 548 Selector setterSelector, | 577 Selector setterSelector, |
| 549 A arg) { | 578 A arg) { |
| 550 return bulkHandlePrefix(node); | 579 return bulkHandlePrefix(node); |
| 551 } | 580 } |
| 552 | 581 |
| 553 @override | 582 @override |
| 583 R visitIndexPrefix( |
| 584 Send node, |
| 585 Node receiver, |
| 586 Node index, |
| 587 IncDecOperator operator, |
| 588 A arg) { |
| 589 return bulkHandlePrefix(node); |
| 590 } |
| 591 |
| 592 @override |
| 554 R visitLocalVariablePrefix( | 593 R visitLocalVariablePrefix( |
| 555 Send node, | 594 Send node, |
| 556 LocalVariableElement variable, | 595 LocalVariableElement variable, |
| 557 IncDecOperator operator, | 596 IncDecOperator operator, |
| 558 A arg) { | 597 A arg) { |
| 559 return bulkHandlePrefix(node); | 598 return bulkHandlePrefix(node); |
| 560 } | 599 } |
| 561 | 600 |
| 562 @override | 601 @override |
| 563 R visitParameterPrefix( | 602 R visitParameterPrefix( |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 640 R visitSuperGetterSetterPrefix( | 679 R visitSuperGetterSetterPrefix( |
| 641 Send node, | 680 Send node, |
| 642 FunctionElement getter, | 681 FunctionElement getter, |
| 643 FunctionElement setter, | 682 FunctionElement setter, |
| 644 IncDecOperator operator, | 683 IncDecOperator operator, |
| 645 A arg) { | 684 A arg) { |
| 646 return bulkHandlePrefix(node); | 685 return bulkHandlePrefix(node); |
| 647 } | 686 } |
| 648 | 687 |
| 649 @override | 688 @override |
| 689 R visitSuperIndexPrefix( |
| 690 Send node, |
| 691 FunctionElement indexFunction, |
| 692 FunctionElement indexSetFunction, |
| 693 Node index, |
| 694 IncDecOperator operator, |
| 695 A arg) { |
| 696 return bulkHandlePrefix(node); |
| 697 } |
| 698 |
| 699 @override |
| 650 R visitSuperMethodSetterPrefix( | 700 R visitSuperMethodSetterPrefix( |
| 651 Send node, | 701 Send node, |
| 652 FunctionElement method, | 702 FunctionElement method, |
| 653 FunctionElement setter, | 703 FunctionElement setter, |
| 654 IncDecOperator operator, | 704 IncDecOperator operator, |
| 655 A arg) { | 705 A arg) { |
| 656 return bulkHandlePrefix(node); | 706 return bulkHandlePrefix(node); |
| 657 } | 707 } |
| 658 | 708 |
| 659 @override | 709 @override |
| (...skipping 53 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 713 Send node, | 763 Send node, |
| 714 Node receiver, | 764 Node receiver, |
| 715 IncDecOperator operator, | 765 IncDecOperator operator, |
| 716 Selector getterSelector, | 766 Selector getterSelector, |
| 717 Selector setterSelector, | 767 Selector setterSelector, |
| 718 A arg) { | 768 A arg) { |
| 719 return bulkHandlePostfix(node); | 769 return bulkHandlePostfix(node); |
| 720 } | 770 } |
| 721 | 771 |
| 722 @override | 772 @override |
| 773 R visitIndexPostfix( |
| 774 Send node, |
| 775 Node receiver, |
| 776 Node index, |
| 777 IncDecOperator operator, |
| 778 A arg) { |
| 779 return bulkHandlePostfix(node); |
| 780 } |
| 781 |
| 782 @override |
| 723 R visitLocalVariablePostfix( | 783 R visitLocalVariablePostfix( |
| 724 Send node, | 784 Send node, |
| 725 LocalVariableElement variable, | 785 LocalVariableElement variable, |
| 726 IncDecOperator operator, | 786 IncDecOperator operator, |
| 727 A arg) { | 787 A arg) { |
| 728 return bulkHandlePostfix(node); | 788 return bulkHandlePostfix(node); |
| 729 } | 789 } |
| 730 | 790 |
| 731 @override | 791 @override |
| 732 R visitParameterPostfix( | 792 R visitParameterPostfix( |
| (...skipping 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 809 R visitSuperGetterSetterPostfix( | 869 R visitSuperGetterSetterPostfix( |
| 810 Send node, | 870 Send node, |
| 811 FunctionElement getter, | 871 FunctionElement getter, |
| 812 FunctionElement setter, | 872 FunctionElement setter, |
| 813 IncDecOperator operator, | 873 IncDecOperator operator, |
| 814 A arg) { | 874 A arg) { |
| 815 return bulkHandlePostfix(node); | 875 return bulkHandlePostfix(node); |
| 816 } | 876 } |
| 817 | 877 |
| 818 @override | 878 @override |
| 879 R visitSuperIndexPostfix( |
| 880 Send node, |
| 881 FunctionElement indexFunction, |
| 882 FunctionElement indexSetFunction, |
| 883 Node index, |
| 884 IncDecOperator operator, |
| 885 A arg) { |
| 886 return bulkHandlePostfix(node); |
| 887 } |
| 888 |
| 889 @override |
| 819 R visitSuperMethodSetterPostfix( | 890 R visitSuperMethodSetterPostfix( |
| 820 Send node, | 891 Send node, |
| 821 FunctionElement method, | 892 FunctionElement method, |
| 822 FunctionElement setter, | 893 FunctionElement setter, |
| 823 IncDecOperator operator, | 894 IncDecOperator operator, |
| 824 A arg) { | 895 A arg) { |
| 825 return bulkHandlePostfix(node); | 896 return bulkHandlePostfix(node); |
| 826 } | 897 } |
| 827 | 898 |
| 828 @override | 899 @override |
| (...skipping 1603 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2432 R errorTypedefTypeLiteralSet( | 2503 R errorTypedefTypeLiteralSet( |
| 2433 SendSet node, | 2504 SendSet node, |
| 2434 TypeConstantExpression constant, | 2505 TypeConstantExpression constant, |
| 2435 Node rhs, | 2506 Node rhs, |
| 2436 A arg) { | 2507 A arg) { |
| 2437 apply(rhs, arg); | 2508 apply(rhs, arg); |
| 2438 return null; | 2509 return null; |
| 2439 } | 2510 } |
| 2440 | 2511 |
| 2441 @override | 2512 @override |
| 2513 R errorUnresolvedSuperIndex( |
| 2514 Send node, |
| 2515 Element function, |
| 2516 Node index, |
| 2517 A arg) { |
| 2518 apply(index, arg); |
| 2519 return null; |
| 2520 } |
| 2521 |
| 2522 @override |
| 2442 R visitAs( | 2523 R visitAs( |
| 2443 Send node, | 2524 Send node, |
| 2444 Node expression, | 2525 Node expression, |
| 2445 DartType type, | 2526 DartType type, |
| 2446 A arg) { | 2527 A arg) { |
| 2447 apply(expression, arg); | 2528 apply(expression, arg); |
| 2448 return null; | 2529 return null; |
| 2449 } | 2530 } |
| 2450 | 2531 |
| 2451 @override | 2532 @override |
| (...skipping 1428 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3880 } | 3961 } |
| 3881 | 3962 |
| 3882 @override | 3963 @override |
| 3883 R errorUnresolvedSuperUnary( | 3964 R errorUnresolvedSuperUnary( |
| 3884 Send node, | 3965 Send node, |
| 3885 UnaryOperator operator, | 3966 UnaryOperator operator, |
| 3886 Element element, | 3967 Element element, |
| 3887 A arg) { | 3968 A arg) { |
| 3888 return null; | 3969 return null; |
| 3889 } | 3970 } |
| 3971 |
| 3972 @override |
| 3973 R errorUnresolvedSuperIndexPostfix( |
| 3974 Send node, |
| 3975 Element function, |
| 3976 Node index, |
| 3977 IncDecOperator operator, |
| 3978 A arg) { |
| 3979 // TODO: implement errorUnresolvedSuperIndexPostfix |
| 3980 } |
| 3981 |
| 3982 @override |
| 3983 R errorUnresolvedSuperIndexPrefix( |
| 3984 Send node, |
| 3985 Element function, |
| 3986 Node index, |
| 3987 IncDecOperator operator, |
| 3988 A arg) { |
| 3989 // TODO: implement errorUnresolvedSuperIndexPrefix |
| 3990 } |
| 3991 |
| 3992 @override |
| 3993 R visitIndexPostfix( |
| 3994 Send node, |
| 3995 Node receiver, |
| 3996 Node index, |
| 3997 IncDecOperator operator, |
| 3998 A arg) { |
| 3999 // TODO: implement visitIndexPostfix |
| 4000 } |
| 4001 |
| 4002 @override |
| 4003 R visitIndexPrefix( |
| 4004 Send node, |
| 4005 Node receiver, |
| 4006 Node index, |
| 4007 IncDecOperator operator, |
| 4008 A arg) { |
| 4009 // TODO: implement visitIndexPrefix |
| 4010 } |
| 4011 |
| 4012 @override |
| 4013 R visitSuperIndexPostfix( |
| 4014 Send node, |
| 4015 FunctionElement indexFunction, |
| 4016 FunctionElement indexSetFunction, |
| 4017 Node index, |
| 4018 IncDecOperator operator, |
| 4019 A arg) { |
| 4020 // TODO: implement visitSuperIndexPostfix |
| 4021 } |
| 4022 |
| 4023 @override |
| 4024 R visitSuperIndexPrefix( |
| 4025 Send node, |
| 4026 FunctionElement indexFunction, |
| 4027 FunctionElement indexSetFunction, |
| 4028 Node index, |
| 4029 IncDecOperator operator, |
| 4030 A arg) { |
| 4031 // TODO: implement visitSuperIndexPrefix |
| 4032 } |
| 3890 } | 4033 } |
| 3891 | 4034 |
| 3892 /// AST visitor that visits all normal [Send] and [SendSet] nodes using the | 4035 /// AST visitor that visits all normal [Send] and [SendSet] nodes using the |
| 3893 /// [SemanticVisitor]. | 4036 /// [SemanticVisitor]. |
| 3894 class TraversalVisitor<R, A> extends SemanticVisitor<R, A> | 4037 class TraversalVisitor<R, A> extends SemanticVisitor<R, A> |
| 3895 with TraversalMixin<R, A> { | 4038 with TraversalMixin<R, A> { |
| 3896 TraversalVisitor(TreeElements elements) : super(elements); | 4039 TraversalVisitor(TreeElements elements) : super(elements); |
| 3897 | 4040 |
| 3898 SemanticSendVisitor<R, A> get sendVisitor => this; | 4041 SemanticSendVisitor<R, A> get sendVisitor => this; |
| 3899 | 4042 |
| (...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3940 } | 4083 } |
| 3941 return null; | 4084 return null; |
| 3942 } | 4085 } |
| 3943 } | 4086 } |
| 3944 | 4087 |
| 3945 /// Mixin that groups all `visitStaticX` and `visitTopLevelX` method by | 4088 /// Mixin that groups all `visitStaticX` and `visitTopLevelX` method by |
| 3946 /// delegating calls to `handleStaticX` methods. | 4089 /// delegating calls to `handleStaticX` methods. |
| 3947 /// | 4090 /// |
| 3948 /// This mixin is useful for the cases where both top level members and static | 4091 /// This mixin is useful for the cases where both top level members and static |
| 3949 /// class members are handled uniformly. | 4092 /// class members are handled uniformly. |
| 3950 abstract class GroupStaticMixin<R, A> implements SemanticSendVisitor<R, A> { | 4093 abstract class BaseImplementationOfStaticsMixin<R, A> |
| 4094 implements SemanticSendVisitor<R, A> { |
| 3951 R handleStaticFieldCompound( | 4095 R handleStaticFieldCompound( |
| 3952 Send node, | 4096 Send node, |
| 3953 FieldElement field, | 4097 FieldElement field, |
| 3954 AssignmentOperator operator, | 4098 AssignmentOperator operator, |
| 3955 Node rhs, | 4099 Node rhs, |
| 3956 A arg); | 4100 A arg); |
| 3957 | 4101 |
| 3958 R handleStaticFieldGet( | 4102 R handleStaticFieldGet( |
| 3959 Send node, | 4103 Send node, |
| 3960 FieldElement field, | 4104 FieldElement field, |
| (...skipping 420 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4381 A arg) { | 4525 A arg) { |
| 4382 return handleStaticSetterSet(node, setter, rhs, arg); | 4526 return handleStaticSetterSet(node, setter, rhs, arg); |
| 4383 } | 4527 } |
| 4384 } | 4528 } |
| 4385 | 4529 |
| 4386 /// Mixin that groups all `visitLocalX` and `visitParameterX` method by | 4530 /// Mixin that groups all `visitLocalX` and `visitParameterX` method by |
| 4387 /// delegating calls to `handleLocalX` methods. | 4531 /// delegating calls to `handleLocalX` methods. |
| 4388 /// | 4532 /// |
| 4389 /// This mixin is useful for the cases where both parameters, local variables, | 4533 /// This mixin is useful for the cases where both parameters, local variables, |
| 4390 /// and local functions, captured or not, are handled uniformly. | 4534 /// and local functions, captured or not, are handled uniformly. |
| 4391 abstract class GroupLocalMixin<R, A> implements SemanticSendVisitor<R, A> { | 4535 abstract class BaseImplementationOfLocalsMixin<R, A> |
| 4536 implements SemanticSendVisitor<R, A> { |
| 4392 R handleLocalCompound( | 4537 R handleLocalCompound( |
| 4393 Send node, | 4538 Send node, |
| 4394 LocalElement element, | 4539 LocalElement element, |
| 4395 AssignmentOperator operator, | 4540 AssignmentOperator operator, |
| 4396 Node rhs, | 4541 Node rhs, |
| 4397 A arg); | 4542 A arg); |
| 4398 | 4543 |
| 4399 R handleLocalGet( | 4544 R handleLocalGet( |
| 4400 Send node, | 4545 Send node, |
| 4401 LocalElement element, | 4546 LocalElement element, |
| (...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4552 A arg) { | 4697 A arg) { |
| 4553 return handleLocalSet(node, parameter, rhs, arg); | 4698 return handleLocalSet(node, parameter, rhs, arg); |
| 4554 } | 4699 } |
| 4555 } | 4700 } |
| 4556 | 4701 |
| 4557 /// Mixin that groups all `visitConstantX` and `visitXTypeLiteralY` methods for | 4702 /// Mixin that groups all `visitConstantX` and `visitXTypeLiteralY` methods for |
| 4558 /// constant type literals by delegating calls to `handleConstantX` methods. | 4703 /// constant type literals by delegating calls to `handleConstantX` methods. |
| 4559 /// | 4704 /// |
| 4560 /// This mixin is useful for the cases where expressions on constants are | 4705 /// This mixin is useful for the cases where expressions on constants are |
| 4561 /// handled uniformly. | 4706 /// handled uniformly. |
| 4562 abstract class GroupConstantMixin<R, A> implements SemanticSendVisitor<R, A> { | 4707 abstract class BaseImplementationOfConstantsMixin<R, A> |
| 4708 implements SemanticSendVisitor<R, A> { |
| 4563 R handleConstantGet( | 4709 R handleConstantGet( |
| 4564 Send node, | 4710 Send node, |
| 4565 ConstantExpression constant, | 4711 ConstantExpression constant, |
| 4566 A arg); | 4712 A arg); |
| 4567 | 4713 |
| 4568 R handleConstantInvoke( | 4714 R handleConstantInvoke( |
| 4569 Send node, | 4715 Send node, |
| 4570 ConstantExpression constant, | 4716 ConstantExpression constant, |
| 4571 NodeList arguments, | 4717 NodeList arguments, |
| 4572 Selector selector, | 4718 Selector selector, |
| (...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4644 return handleConstantInvoke(node, constant, arguments, selector, arg); | 4790 return handleConstantInvoke(node, constant, arguments, selector, arg); |
| 4645 } | 4791 } |
| 4646 } | 4792 } |
| 4647 | 4793 |
| 4648 /// Mixin that groups all `visitDynamicPropertyX` and `visitThisPropertyY` | 4794 /// Mixin that groups all `visitDynamicPropertyX` and `visitThisPropertyY` |
| 4649 /// methods for by delegating calls to `handleDynamicX` methods, providing | 4795 /// methods for by delegating calls to `handleDynamicX` methods, providing |
| 4650 /// `null` as the receiver for the this properties. | 4796 /// `null` as the receiver for the this properties. |
| 4651 /// | 4797 /// |
| 4652 /// This mixin is useful for the cases where dynamic and this properties are | 4798 /// This mixin is useful for the cases where dynamic and this properties are |
| 4653 /// handled uniformly. | 4799 /// handled uniformly. |
| 4654 abstract class GroupDynamicMixin<R, A> implements SemanticSendVisitor<R, A> { | 4800 abstract class BaseImplementationOfDynamicsMixin<R, A> |
| 4801 implements SemanticSendVisitor<R, A> { |
| 4655 R handleDynamicCompound( | 4802 R handleDynamicCompound( |
| 4656 Send node, | 4803 Send node, |
| 4657 Node receiver, | 4804 Node receiver, |
| 4658 AssignmentOperator operator, | 4805 AssignmentOperator operator, |
| 4659 Node rhs, | 4806 Node rhs, |
| 4660 Selector getterSelector, | 4807 Selector getterSelector, |
| 4661 Selector setterSelector, | 4808 Selector setterSelector, |
| 4662 A arg); | 4809 A arg); |
| 4663 | 4810 |
| 4664 R handleDynamicGet( | 4811 R handleDynamicGet( |
| (...skipping 18 matching lines...) Expand all Loading... |
| 4683 A arg, | 4830 A arg, |
| 4684 {bool isPrefix}); | 4831 {bool isPrefix}); |
| 4685 | 4832 |
| 4686 R handleDynamicSet( | 4833 R handleDynamicSet( |
| 4687 SendSet node, | 4834 SendSet node, |
| 4688 Node receiver, | 4835 Node receiver, |
| 4689 Selector selector, | 4836 Selector selector, |
| 4690 Node rhs, | 4837 Node rhs, |
| 4691 A arg); | 4838 A arg); |
| 4692 | 4839 |
| 4840 R handleDynamicIndexPostfixPrefix( |
| 4841 Send node, |
| 4842 Node receiver, |
| 4843 Node index, |
| 4844 IncDecOperator operator, |
| 4845 A arg, |
| 4846 {bool isPrefix}); |
| 4847 |
| 4693 @override | 4848 @override |
| 4694 R visitDynamicPropertyCompound( | 4849 R visitDynamicPropertyCompound( |
| 4695 Send node, | 4850 Send node, |
| 4696 Node receiver, | 4851 Node receiver, |
| 4697 AssignmentOperator operator, | 4852 AssignmentOperator operator, |
| 4698 Node rhs, | 4853 Node rhs, |
| 4699 Selector getterSelector, | 4854 Selector getterSelector, |
| 4700 Selector setterSelector, | 4855 Selector setterSelector, |
| 4701 A arg) { | 4856 A arg) { |
| 4702 return handleDynamicCompound( | 4857 return handleDynamicCompound( |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4812 } | 4967 } |
| 4813 | 4968 |
| 4814 @override | 4969 @override |
| 4815 R visitThisPropertySet( | 4970 R visitThisPropertySet( |
| 4816 SendSet node, | 4971 SendSet node, |
| 4817 Selector selector, | 4972 Selector selector, |
| 4818 Node rhs, | 4973 Node rhs, |
| 4819 A arg) { | 4974 A arg) { |
| 4820 return handleDynamicSet(node, null, selector, rhs, arg); | 4975 return handleDynamicSet(node, null, selector, rhs, arg); |
| 4821 } | 4976 } |
| 4977 |
| 4978 @override |
| 4979 R visitIndexPostfix( |
| 4980 Send node, |
| 4981 Node receiver, |
| 4982 Node index, |
| 4983 IncDecOperator operator, |
| 4984 A arg) { |
| 4985 return handleDynamicIndexPostfixPrefix( |
| 4986 node, receiver, index, operator, arg, isPrefix: false); |
| 4987 } |
| 4988 |
| 4989 @override |
| 4990 R visitIndexPrefix( |
| 4991 Send node, |
| 4992 Node receiver, |
| 4993 Node index, |
| 4994 IncDecOperator operator, |
| 4995 A arg) { |
| 4996 return handleDynamicIndexPostfixPrefix( |
| 4997 node, receiver, index, operator, arg, isPrefix: true); |
| 4998 } |
| 4822 } | 4999 } |
| 4823 | 5000 |
| 4824 /// Mixin that groups all `visitSuperXPrefix`, `visitSuperXPostfix` methods for | 5001 /// Mixin that groups all `visitSuperXPrefix`, `visitSuperXPostfix` methods for |
| 4825 /// by delegating calls to `handleSuperXPostfixPrefix` methods. | 5002 /// by delegating calls to `handleSuperXPostfixPrefix` methods. |
| 4826 /// | 5003 /// |
| 4827 /// This mixin is useful for the cases where super prefix/postfix expression are | 5004 /// This mixin is useful for the cases where super prefix/postfix expression are |
| 4828 /// handled uniformly. | 5005 /// handled uniformly. |
| 4829 abstract class GroupSuperMixin<R, A> implements SemanticSendVisitor<R, A> { | 5006 abstract class BaseImplementationOfSuperIncDecsMixin<R, A> |
| 5007 implements SemanticSendVisitor<R, A> { |
| 4830 R handleSuperFieldFieldPostfixPrefix( | 5008 R handleSuperFieldFieldPostfixPrefix( |
| 4831 Send node, | 5009 Send node, |
| 4832 FieldElement readField, | 5010 FieldElement readField, |
| 4833 FieldElement writtenField, | 5011 FieldElement writtenField, |
| 4834 IncDecOperator operator, | 5012 IncDecOperator operator, |
| 4835 A arg, | 5013 A arg, |
| 4836 {bool isPrefix}); | 5014 {bool isPrefix}); |
| 4837 | 5015 |
| 4838 R handleSuperFieldSetterPostfixPrefix( | 5016 R handleSuperFieldSetterPostfixPrefix( |
| 4839 Send node, | 5017 Send node, |
| (...skipping 20 matching lines...) Expand all Loading... |
| 4860 {bool isPrefix}); | 5038 {bool isPrefix}); |
| 4861 | 5039 |
| 4862 R handleSuperMethodSetterPostfixPrefix( | 5040 R handleSuperMethodSetterPostfixPrefix( |
| 4863 Send node, | 5041 Send node, |
| 4864 FunctionElement method, | 5042 FunctionElement method, |
| 4865 FunctionElement setter, | 5043 FunctionElement setter, |
| 4866 IncDecOperator operator, | 5044 IncDecOperator operator, |
| 4867 A arg, | 5045 A arg, |
| 4868 {bool isPrefix}); | 5046 {bool isPrefix}); |
| 4869 | 5047 |
| 5048 R handleSuperIndexPostfixPrefix( |
| 5049 Send node, |
| 5050 FunctionElement indexFunction, |
| 5051 FunctionElement indexSetFunction, |
| 5052 Node index, |
| 5053 IncDecOperator operator, |
| 5054 A arg, |
| 5055 {bool isPrefix}); |
| 5056 |
| 4870 @override | 5057 @override |
| 4871 R visitSuperFieldFieldPostfix( | 5058 R visitSuperFieldFieldPostfix( |
| 4872 Send node, | 5059 Send node, |
| 4873 FieldElement readField, | 5060 FieldElement readField, |
| 4874 FieldElement writtenField, | 5061 FieldElement writtenField, |
| 4875 IncDecOperator operator, | 5062 IncDecOperator operator, |
| 4876 A arg) { | 5063 A arg) { |
| 4877 return handleSuperFieldFieldPostfixPrefix( | 5064 return handleSuperFieldFieldPostfixPrefix( |
| 4878 node, readField, writtenField, operator, arg, isPrefix: false); | 5065 node, readField, writtenField, operator, arg, isPrefix: false); |
| 4879 } | 5066 } |
| (...skipping 109 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4989 @override | 5176 @override |
| 4990 R visitSuperMethodSetterPrefix( | 5177 R visitSuperMethodSetterPrefix( |
| 4991 Send node, | 5178 Send node, |
| 4992 FunctionElement method, | 5179 FunctionElement method, |
| 4993 FunctionElement setter, | 5180 FunctionElement setter, |
| 4994 IncDecOperator operator, | 5181 IncDecOperator operator, |
| 4995 A arg) { | 5182 A arg) { |
| 4996 return handleSuperMethodSetterPostfixPrefix( | 5183 return handleSuperMethodSetterPostfixPrefix( |
| 4997 node, method, setter, operator, arg, isPrefix: true); | 5184 node, method, setter, operator, arg, isPrefix: true); |
| 4998 } | 5185 } |
| 5186 |
| 5187 @override |
| 5188 R visitSuperIndexPostfix( |
| 5189 Send node, |
| 5190 FunctionElement indexFunction, |
| 5191 FunctionElement indexSetFunction, |
| 5192 Node index, |
| 5193 IncDecOperator operator, |
| 5194 A arg) { |
| 5195 return handleSuperIndexPostfixPrefix( |
| 5196 node, indexFunction, indexSetFunction, |
| 5197 index, operator, arg, isPrefix: false); |
| 5198 } |
| 5199 |
| 5200 @override |
| 5201 R visitSuperIndexPrefix( |
| 5202 Send node, |
| 5203 FunctionElement indexFunction, |
| 5204 FunctionElement indexSetFunction, |
| 5205 Node index, |
| 5206 IncDecOperator operator, |
| 5207 A arg) { |
| 5208 return handleSuperIndexPostfixPrefix( |
| 5209 node, indexFunction, indexSetFunction, |
| 5210 index, operator, arg, isPrefix: true); |
| 5211 } |
| 4999 } | 5212 } |
| OLD | NEW |