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

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

Issue 1004683002: Refactor IrBuilder to use SemanticVisitor. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Handle local/static constants and index prefix/postfix. Created 5 years, 9 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 /// 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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/semantic_visitor.dart ('k') | pkg/compiler/lib/src/resolution/send_resolver.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698