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

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

Issue 1182563003: Handle most qualified sends. (Closed) Base URL: https://github.com/dart-lang/sdk.git@master
Patch Set: Handle qualified access of ambiguous static members. Created 5 years, 6 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
« no previous file with comments | « pkg/compiler/lib/src/resolution/send_resolver.dart ('k') | pkg/compiler/lib/src/warnings.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 library dart2js.send_structure; 5 library dart2js.send_structure;
6 6
7 import 'access_semantics.dart'; 7 import 'access_semantics.dart';
8 import 'operators.dart'; 8 import 'operators.dart';
9 import 'semantic_visitor.dart'; 9 import 'semantic_visitor.dart';
10 import '../dart_types.dart'; 10 import '../dart_types.dart';
(...skipping 157 matching lines...) Expand 10 before | Expand all | Expand 10 after
168 final Selector selector; 168 final Selector selector;
169 169
170 /// The [CallStructure] of the invocation. 170 /// The [CallStructure] of the invocation.
171 // TODO(johnniwinther): Store this directly for static invocations. 171 // TODO(johnniwinther): Store this directly for static invocations.
172 CallStructure get callStructure => selector.callStructure; 172 CallStructure get callStructure => selector.callStructure;
173 173
174 InvokeStructure(this.semantics, this.selector); 174 InvokeStructure(this.semantics, this.selector);
175 175
176 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) { 176 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) {
177 switch (semantics.kind) { 177 switch (semantics.kind) {
178 case AccessKind.CONDITIONAL_DYNAMIC_PROPERTY:
179 return visitor.visitIfNotNullDynamicPropertyInvoke(
180 node,
181 node.receiver,
182 node.argumentsNode,
183 selector,
184 arg);
178 case AccessKind.DYNAMIC_PROPERTY: 185 case AccessKind.DYNAMIC_PROPERTY:
179 if (node.isConditional) {
180 return visitor.visitIfNotNullDynamicPropertyInvoke(
181 node,
182 node.receiver,
183 node.argumentsNode,
184 selector,
185 arg);
186 }
187 return visitor.visitDynamicPropertyInvoke( 186 return visitor.visitDynamicPropertyInvoke(
188 node, 187 node,
189 node.receiver, 188 node.receiver,
190 node.argumentsNode, 189 node.argumentsNode,
191 selector, 190 selector,
192 arg); 191 arg);
193 case AccessKind.LOCAL_FUNCTION: 192 case AccessKind.LOCAL_FUNCTION:
194 return visitor.visitLocalFunctionInvoke( 193 return visitor.visitLocalFunctionInvoke(
195 node, 194 node,
196 semantics.element, 195 semantics.element,
(...skipping 249 matching lines...) Expand 10 before | Expand all | Expand 10 after
446 /// The target of the read access. 445 /// The target of the read access.
447 final AccessSemantics semantics; 446 final AccessSemantics semantics;
448 447
449 /// The [Selector] for the getter invocation. 448 /// The [Selector] for the getter invocation.
450 final Selector selector; 449 final Selector selector;
451 450
452 GetStructure(this.semantics, this.selector); 451 GetStructure(this.semantics, this.selector);
453 452
454 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) { 453 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) {
455 switch (semantics.kind) { 454 switch (semantics.kind) {
455 case AccessKind.CONDITIONAL_DYNAMIC_PROPERTY:
456 return visitor.visitIfNotNullDynamicPropertyGet(
457 node,
458 node.receiver,
459 selector,
460 arg);
456 case AccessKind.DYNAMIC_PROPERTY: 461 case AccessKind.DYNAMIC_PROPERTY:
457 if (node.isConditional) {
458 return visitor.visitIfNotNullDynamicPropertyGet(
459 node,
460 node.receiver,
461 selector,
462 arg);
463 }
464 return visitor.visitDynamicPropertyGet( 462 return visitor.visitDynamicPropertyGet(
465 node, 463 node,
466 node.receiver, 464 node.receiver,
467 selector, 465 selector,
468 arg); 466 arg);
469 case AccessKind.LOCAL_FUNCTION: 467 case AccessKind.LOCAL_FUNCTION:
470 return visitor.visitLocalFunctionGet( 468 return visitor.visitLocalFunctionGet(
471 node, 469 node,
472 semantics.element, 470 semantics.element,
473 arg); 471 arg);
(...skipping 133 matching lines...) Expand 10 before | Expand all | Expand 10 after
607 /// The target of the assignment. 605 /// The target of the assignment.
608 final AccessSemantics semantics; 606 final AccessSemantics semantics;
609 607
610 /// The [Selector] for the setter invocation. 608 /// The [Selector] for the setter invocation.
611 final Selector selector; 609 final Selector selector;
612 610
613 SetStructure(this.semantics, this.selector); 611 SetStructure(this.semantics, this.selector);
614 612
615 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) { 613 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) {
616 switch (semantics.kind) { 614 switch (semantics.kind) {
615 case AccessKind.CONDITIONAL_DYNAMIC_PROPERTY:
616 return visitor.visitIfNotNullDynamicPropertySet(
617 node,
618 node.receiver,
619 selector,
620 node.arguments.single,
621 arg);
617 case AccessKind.DYNAMIC_PROPERTY: 622 case AccessKind.DYNAMIC_PROPERTY:
618 if (node.isConditional) {
619 return visitor.visitIfNotNullDynamicPropertySet(
620 node,
621 node.receiver,
622 selector,
623 node.arguments.single,
624 arg);
625 }
626 return visitor.visitDynamicPropertySet( 623 return visitor.visitDynamicPropertySet(
627 node, 624 node,
628 node.receiver, 625 node.receiver,
629 selector, 626 selector,
630 node.arguments.single, 627 node.arguments.single,
631 arg); 628 arg);
632 case AccessKind.LOCAL_FUNCTION: 629 case AccessKind.LOCAL_FUNCTION:
633 return visitor.visitLocalFunctionSet( 630 return visitor.visitLocalFunctionSet(
634 node, 631 node,
635 semantics.element, 632 semantics.element,
(...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after
1271 /// The [Selector] for the setter invocation. 1268 /// The [Selector] for the setter invocation.
1272 final Selector setterSelector; 1269 final Selector setterSelector;
1273 1270
1274 CompoundStructure(this.semantics, 1271 CompoundStructure(this.semantics,
1275 this.operator, 1272 this.operator,
1276 this.getterSelector, 1273 this.getterSelector,
1277 this.setterSelector); 1274 this.setterSelector);
1278 1275
1279 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) { 1276 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) {
1280 switch (semantics.kind) { 1277 switch (semantics.kind) {
1278 case AccessKind.CONDITIONAL_DYNAMIC_PROPERTY:
1279 return visitor.visitIfNotNullDynamicPropertyCompound(
1280 node,
1281 node.receiver,
1282 operator,
1283 node.arguments.single,
1284 getterSelector,
1285 setterSelector,
1286 arg);
1281 case AccessKind.DYNAMIC_PROPERTY: 1287 case AccessKind.DYNAMIC_PROPERTY:
1282 if (node.isConditional) {
1283 return visitor.visitIfNotNullDynamicPropertyCompound(
1284 node,
1285 node.receiver,
1286 operator,
1287 node.arguments.single,
1288 getterSelector,
1289 setterSelector,
1290 arg);
1291 }
1292 return visitor.visitDynamicPropertyCompound( 1288 return visitor.visitDynamicPropertyCompound(
1293 node, 1289 node,
1294 node.receiver, 1290 node.receiver,
1295 operator, 1291 operator,
1296 node.arguments.single, 1292 node.arguments.single,
1297 getterSelector, 1293 getterSelector,
1298 setterSelector, 1294 setterSelector,
1299 arg); 1295 arg);
1300 case AccessKind.LOCAL_FUNCTION: 1296 case AccessKind.LOCAL_FUNCTION:
1301 return visitor.visitLocalFunctionCompound( 1297 return visitor.visitLocalFunctionCompound(
(...skipping 396 matching lines...) Expand 10 before | Expand all | Expand 10 after
1698 /// The [Selector] for the setter invocation. 1694 /// The [Selector] for the setter invocation.
1699 final Selector setterSelector; 1695 final Selector setterSelector;
1700 1696
1701 PrefixStructure(this.semantics, 1697 PrefixStructure(this.semantics,
1702 this.operator, 1698 this.operator,
1703 this.getterSelector, 1699 this.getterSelector,
1704 this.setterSelector); 1700 this.setterSelector);
1705 1701
1706 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) { 1702 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) {
1707 switch (semantics.kind) { 1703 switch (semantics.kind) {
1704 case AccessKind.CONDITIONAL_DYNAMIC_PROPERTY:
1705 return visitor.visitIfNotNullDynamicPropertyPrefix(
1706 node,
1707 node.receiver,
1708 operator,
1709 getterSelector,
1710 setterSelector,
1711 arg);
1708 case AccessKind.DYNAMIC_PROPERTY: 1712 case AccessKind.DYNAMIC_PROPERTY:
1709 if (node.isConditional) {
1710 return visitor.visitIfNotNullDynamicPropertyPrefix(
1711 node,
1712 node.receiver,
1713 operator,
1714 getterSelector,
1715 setterSelector,
1716 arg);
1717 }
1718 return visitor.visitDynamicPropertyPrefix( 1713 return visitor.visitDynamicPropertyPrefix(
1719 node, 1714 node,
1720 node.receiver, 1715 node.receiver,
1721 operator, 1716 operator,
1722 getterSelector, 1717 getterSelector,
1723 setterSelector, 1718 setterSelector,
1724 arg); 1719 arg);
1725 case AccessKind.LOCAL_FUNCTION: 1720 case AccessKind.LOCAL_FUNCTION:
1726 return visitor.visitLocalFunctionPrefix( 1721 return visitor.visitLocalFunctionPrefix(
1727 node, 1722 node,
(...skipping 287 matching lines...) Expand 10 before | Expand all | Expand 10 after
2015 /// The [Selector] for the setter invocation. 2010 /// The [Selector] for the setter invocation.
2016 final Selector setterSelector; 2011 final Selector setterSelector;
2017 2012
2018 PostfixStructure(this.semantics, 2013 PostfixStructure(this.semantics,
2019 this.operator, 2014 this.operator,
2020 this.getterSelector, 2015 this.getterSelector,
2021 this.setterSelector); 2016 this.setterSelector);
2022 2017
2023 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) { 2018 R dispatch(SemanticSendVisitor<R, A> visitor, Send node, A arg) {
2024 switch (semantics.kind) { 2019 switch (semantics.kind) {
2020 case AccessKind.CONDITIONAL_DYNAMIC_PROPERTY:
2021 return visitor.visitIfNotNullDynamicPropertyPostfix(
2022 node,
2023 node.receiver,
2024 operator,
2025 getterSelector,
2026 setterSelector,
2027 arg);
2025 case AccessKind.DYNAMIC_PROPERTY: 2028 case AccessKind.DYNAMIC_PROPERTY:
2026 if (node.isConditional) {
2027 return visitor.visitIfNotNullDynamicPropertyPostfix(
2028 node,
2029 node.receiver,
2030 operator,
2031 getterSelector,
2032 setterSelector,
2033 arg);
2034 }
2035 return visitor.visitDynamicPropertyPostfix( 2029 return visitor.visitDynamicPropertyPostfix(
2036 node, 2030 node,
2037 node.receiver, 2031 node.receiver,
2038 operator, 2032 operator,
2039 getterSelector, 2033 getterSelector,
2040 setterSelector, 2034 setterSelector,
2041 arg); 2035 arg);
2042 case AccessKind.LOCAL_FUNCTION: 2036 case AccessKind.LOCAL_FUNCTION:
2043 return visitor.visitLocalFunctionPostfix( 2037 return visitor.visitLocalFunctionPostfix(
2044 node, 2038 node,
(...skipping 591 matching lines...) Expand 10 before | Expand all | Expand 10 after
2636 ThisConstructorInvokeStructure( 2630 ThisConstructorInvokeStructure(
2637 this.node, this.constructor, this.callStructure); 2631 this.node, this.constructor, this.callStructure);
2638 2632
2639 R dispatch(SemanticDeclarationVisitor<R, A> visitor, A arg) { 2633 R dispatch(SemanticDeclarationVisitor<R, A> visitor, A arg) {
2640 return visitor.visitThisConstructorInvoke( 2634 return visitor.visitThisConstructorInvoke(
2641 node, constructor, node.argumentsNode, callStructure, arg); 2635 node, constructor, node.argumentsNode, callStructure, arg);
2642 } 2636 }
2643 2637
2644 bool get isConstructorInvoke => true; 2638 bool get isConstructorInvoke => true;
2645 } 2639 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/resolution/send_resolver.dart ('k') | pkg/compiler/lib/src/warnings.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698