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

Unified Diff: pkg/compiler/lib/src/resolution/send_structure.dart

Issue 1126173002: Refactor handling of compounds. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Update status. 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « pkg/compiler/lib/src/resolution/send_resolver.dart ('k') | pkg/compiler/lib/src/resolved_visitor.dart » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: pkg/compiler/lib/src/resolution/send_structure.dart
diff --git a/pkg/compiler/lib/src/resolution/send_structure.dart b/pkg/compiler/lib/src/resolution/send_structure.dart
index c1a80aaaa795629eb6cf151811982085f49815f9..7517a964fcc39ceb126f18ec7b9899301955fc97 100644
--- a/pkg/compiler/lib/src/resolution/send_structure.dart
+++ b/pkg/compiler/lib/src/resolution/send_structure.dart
@@ -177,6 +177,7 @@ class InvokeStructure<R, A> implements SendStructure<R, A> {
callStructure,
arg);
case AccessKind.LOCAL_VARIABLE:
+ case AccessKind.FINAL_LOCAL_VARIABLE:
return visitor.visitLocalVariableInvoke(
node,
semantics.element,
@@ -186,6 +187,7 @@ class InvokeStructure<R, A> implements SendStructure<R, A> {
callStructure,
arg);
case AccessKind.PARAMETER:
+ case AccessKind.FINAL_PARAMETER:
return visitor.visitParameterInvoke(
node,
semantics.element,
@@ -195,6 +197,7 @@ class InvokeStructure<R, A> implements SendStructure<R, A> {
callStructure,
arg);
case AccessKind.STATIC_FIELD:
+ case AccessKind.FINAL_STATIC_FIELD:
return visitor.visitStaticFieldInvoke(
node,
semantics.element,
@@ -223,6 +226,7 @@ class InvokeStructure<R, A> implements SendStructure<R, A> {
callStructure,
arg);
case AccessKind.TOPLEVEL_FIELD:
+ case AccessKind.FINAL_TOPLEVEL_FIELD:
return visitor.visitTopLevelFieldInvoke(
node,
semantics.element,
@@ -298,6 +302,7 @@ class InvokeStructure<R, A> implements SendStructure<R, A> {
selector,
arg);
case AccessKind.SUPER_FIELD:
+ case AccessKind.SUPER_FINAL_FIELD:
return visitor.visitSuperFieldInvoke(
node,
semantics.element,
@@ -430,16 +435,19 @@ class GetStructure<R, A> implements SendStructure<R, A> {
semantics.element,
arg);
case AccessKind.LOCAL_VARIABLE:
+ case AccessKind.FINAL_LOCAL_VARIABLE:
return visitor.visitLocalVariableGet(
node,
semantics.element,
arg);
case AccessKind.PARAMETER:
+ case AccessKind.FINAL_PARAMETER:
return visitor.visitParameterGet(
node,
semantics.element,
arg);
case AccessKind.STATIC_FIELD:
+ case AccessKind.FINAL_STATIC_FIELD:
return visitor.visitStaticFieldGet(
node,
semantics.element,
@@ -460,6 +468,7 @@ class GetStructure<R, A> implements SendStructure<R, A> {
semantics.element,
arg);
case AccessKind.TOPLEVEL_FIELD:
+ case AccessKind.FINAL_TOPLEVEL_FIELD:
return visitor.visitTopLevelFieldGet(
node,
semantics.element,
@@ -511,6 +520,7 @@ class GetStructure<R, A> implements SendStructure<R, A> {
selector,
arg);
case AccessKind.SUPER_FIELD:
+ case AccessKind.SUPER_FINAL_FIELD:
return visitor.visitSuperFieldGet(
node,
semantics.element,
@@ -586,18 +596,36 @@ class SetStructure<R, A> implements SendStructure<R, A> {
semantics.element,
node.arguments.single,
arg);
+ case AccessKind.FINAL_LOCAL_VARIABLE:
+ return visitor.errorFinalLocalVariableSet(
+ node,
+ semantics.element,
+ node.arguments.single,
+ arg);
case AccessKind.PARAMETER:
return visitor.visitParameterSet(
node,
semantics.element,
node.arguments.single,
arg);
+ case AccessKind.FINAL_PARAMETER:
+ return visitor.errorFinalParameterSet(
+ node,
+ semantics.element,
+ node.arguments.single,
+ arg);
case AccessKind.STATIC_FIELD:
return visitor.visitStaticFieldSet(
node,
semantics.element,
node.arguments.single,
arg);
+ case AccessKind.FINAL_STATIC_FIELD:
+ return visitor.errorFinalStaticFieldSet(
+ node,
+ semantics.element,
+ node.arguments.single,
+ arg);
case AccessKind.STATIC_METHOD:
return visitor.errorStaticFunctionSet(
node,
@@ -622,6 +650,12 @@ class SetStructure<R, A> implements SendStructure<R, A> {
semantics.element,
node.arguments.single,
arg);
+ case AccessKind.FINAL_TOPLEVEL_FIELD:
+ return visitor.errorFinalTopLevelFieldSet(
+ node,
+ semantics.element,
+ node.arguments.single,
+ arg);
case AccessKind.TOPLEVEL_METHOD:
return visitor.errorTopLevelFunctionSet(
node,
@@ -682,6 +716,12 @@ class SetStructure<R, A> implements SendStructure<R, A> {
semantics.element,
node.arguments.single,
arg);
+ case AccessKind.SUPER_FINAL_FIELD:
+ return visitor.errorFinalSuperFieldSet(
+ node,
+ semantics.element,
+ node.arguments.single,
+ arg);
case AccessKind.SUPER_METHOD:
return visitor.errorSuperMethodSet(
node,
@@ -1067,6 +1107,13 @@ class IndexPrefixStructure<R, A> implements SendStructure<R, A> {
node.arguments.single,
operator,
arg);
+ case AccessKind.UNRESOLVED_SUPER:
+ return visitor.visitUnresolvedSuperIndexPrefix(
+ node,
+ semantics.element,
+ node.arguments.single,
+ operator,
+ arg);
case AccessKind.COMPOUND:
CompoundAccessSemantics compoundSemantics = semantics;
switch (compoundSemantics.compoundAccessKind) {
@@ -1082,6 +1129,7 @@ class IndexPrefixStructure<R, A> implements SendStructure<R, A> {
return visitor.visitUnresolvedSuperGetterIndexPrefix(
node,
compoundSemantics.getter,
+ compoundSemantics.setter,
node.arguments.single,
operator,
arg);
@@ -1138,6 +1186,13 @@ class IndexPostfixStructure<R, A> implements SendStructure<R, A> {
node.arguments.single,
operator,
arg);
+ case AccessKind.UNRESOLVED_SUPER:
+ return visitor.visitUnresolvedSuperIndexPostfix(
+ node,
+ semantics.element,
+ node.arguments.single,
+ operator,
+ arg);
case AccessKind.COMPOUND:
CompoundAccessSemantics compoundSemantics = semantics;
switch (compoundSemantics.compoundAccessKind) {
@@ -1153,6 +1208,7 @@ class IndexPostfixStructure<R, A> implements SendStructure<R, A> {
return visitor.visitUnresolvedSuperGetterIndexPostfix(
node,
compoundSemantics.getter,
+ compoundSemantics.setter,
node.arguments.single,
operator,
arg);
@@ -1210,7 +1266,7 @@ class CompoundStructure<R, A> implements SendStructure<R, A> {
setterSelector,
arg);
case AccessKind.LOCAL_FUNCTION:
- return visitor.errorLocalFunctionCompound(
+ return visitor.visitLocalFunctionCompound(
node,
semantics.element,
operator,
@@ -1223,6 +1279,13 @@ class CompoundStructure<R, A> implements SendStructure<R, A> {
operator,
node.arguments.single,
arg);
+ case AccessKind.FINAL_LOCAL_VARIABLE:
+ return visitor.visitFinalLocalVariableCompound(
+ node,
+ semantics.element,
+ operator,
+ node.arguments.single,
+ arg);
case AccessKind.PARAMETER:
return visitor.visitParameterCompound(
node,
@@ -1230,6 +1293,13 @@ class CompoundStructure<R, A> implements SendStructure<R, A> {
operator,
node.arguments.single,
arg);
+ case AccessKind.FINAL_PARAMETER:
+ return visitor.visitFinalParameterCompound(
+ node,
+ semantics.element,
+ operator,
+ node.arguments.single,
+ arg);
case AccessKind.STATIC_FIELD:
return visitor.visitStaticFieldCompound(
node,
@@ -1237,9 +1307,20 @@ class CompoundStructure<R, A> implements SendStructure<R, A> {
operator,
node.arguments.single,
arg);
+ case AccessKind.FINAL_STATIC_FIELD:
+ return visitor.visitFinalStaticFieldCompound(
+ node,
+ semantics.element,
+ operator,
+ node.arguments.single,
+ arg);
case AccessKind.STATIC_METHOD:
- // TODO(johnniwinther): Handle this.
- break;
+ return visitor.visitStaticMethodCompound(
+ node,
+ semantics.element,
+ operator,
+ node.arguments.single,
+ arg);
case AccessKind.STATIC_GETTER:
// This is not a valid case.
break;
@@ -1253,9 +1334,20 @@ class CompoundStructure<R, A> implements SendStructure<R, A> {
operator,
node.arguments.single,
arg);
+ case AccessKind.FINAL_TOPLEVEL_FIELD:
+ return visitor.visitFinalTopLevelFieldCompound(
+ node,
+ semantics.element,
+ operator,
+ node.arguments.single,
+ arg);
case AccessKind.TOPLEVEL_METHOD:
- // TODO(johnniwinther): Handle this.
- break;
+ return visitor.visitTopLevelMethodCompound(
+ node,
+ semantics.element,
+ operator,
+ node.arguments.single,
+ arg);
case AccessKind.TOPLEVEL_GETTER:
// This is not a valid case.
break;
@@ -1263,28 +1355,28 @@ class CompoundStructure<R, A> implements SendStructure<R, A> {
// This is not a valid case.
break;
case AccessKind.CLASS_TYPE_LITERAL:
- return visitor.errorClassTypeLiteralCompound(
+ return visitor.visitClassTypeLiteralCompound(
node,
semantics.constant,
operator,
node.arguments.single,
arg);
case AccessKind.TYPEDEF_TYPE_LITERAL:
- return visitor.errorTypedefTypeLiteralCompound(
+ return visitor.visitTypedefTypeLiteralCompound(
node,
semantics.constant,
operator,
node.arguments.single,
arg);
case AccessKind.DYNAMIC_TYPE_LITERAL:
- return visitor.errorDynamicTypeLiteralCompound(
+ return visitor.visitDynamicTypeLiteralCompound(
node,
semantics.constant,
operator,
node.arguments.single,
arg);
case AccessKind.TYPE_PARAMETER_TYPE_LITERAL:
- return visitor.errorTypeVariableTypeLiteralCompound(
+ return visitor.visitTypeVariableTypeLiteralCompound(
node,
semantics.element,
operator,
@@ -1311,9 +1403,20 @@ class CompoundStructure<R, A> implements SendStructure<R, A> {
operator,
node.arguments.single,
arg);
+ case AccessKind.SUPER_FINAL_FIELD:
+ return visitor.visitFinalSuperFieldCompound(
+ node,
+ semantics.element,
+ operator,
+ node.arguments.single,
+ arg);
case AccessKind.SUPER_METHOD:
- // TODO(johnniwinther): Handle this.
- break;
+ return visitor.visitSuperMethodCompound(
+ node,
+ semantics.element,
+ operator,
+ node.arguments.single,
+ arg);
case AccessKind.SUPER_GETTER:
// This is not a valid case.
break;
@@ -1324,9 +1427,14 @@ class CompoundStructure<R, A> implements SendStructure<R, A> {
// TODO(johnniwinther): Should this be a valid case?
break;
case AccessKind.UNRESOLVED_SUPER:
+ return visitor.visitUnresolvedSuperCompound(
+ node,
+ semantics.element,
+ operator,
+ node.arguments.single,
+ arg);
case AccessKind.UNRESOLVED:
- // TODO(johnniwinther): Support these through [AccessKind.COMPOUND].
- return visitor.errorUnresolvedCompound(
+ return visitor.visitUnresolvedCompound(
node,
semantics.element,
operator,
@@ -1351,6 +1459,22 @@ class CompoundStructure<R, A> implements SendStructure<R, A> {
operator,
node.arguments.single,
arg);
+ case CompoundAccessKind.UNRESOLVED_STATIC_GETTER:
+ return visitor.visitUnresolvedStaticGetterCompound(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ node.arguments.single,
+ arg);
+ case CompoundAccessKind.UNRESOLVED_STATIC_SETTER:
+ return visitor.visitUnresolvedStaticSetterCompound(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ node.arguments.single,
+ arg);
case CompoundAccessKind.TOPLEVEL_GETTER_SETTER:
return visitor.visitTopLevelGetterSetterCompound(
node,
@@ -1367,6 +1491,22 @@ class CompoundStructure<R, A> implements SendStructure<R, A> {
operator,
node.arguments.single,
arg);
+ case CompoundAccessKind.UNRESOLVED_TOPLEVEL_GETTER:
+ return visitor.visitUnresolvedTopLevelGetterCompound(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ node.arguments.single,
+ arg);
+ case CompoundAccessKind.UNRESOLVED_TOPLEVEL_SETTER:
+ return visitor.visitUnresolvedTopLevelSetterCompound(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ node.arguments.single,
+ arg);
case CompoundAccessKind.SUPER_FIELD_FIELD:
// TODO(johnniwinther): Handle this.
break;
@@ -1403,11 +1543,18 @@ class CompoundStructure<R, A> implements SendStructure<R, A> {
node.arguments.single,
arg);
case CompoundAccessKind.UNRESOLVED_SUPER_GETTER:
+ return visitor.visitUnresolvedSuperGetterCompound(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ node.arguments.single,
+ arg);
case CompoundAccessKind.UNRESOLVED_SUPER_SETTER:
- // TODO(johnniwinther): Handle these separately.
- return visitor.errorUnresolvedCompound(
+ return visitor.visitUnresolvedSuperSetterCompound(
node,
- semantics.element,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
operator,
node.arguments.single,
arg);
@@ -1450,6 +1597,14 @@ class CompoundIndexSetStructure<R, A> implements SendStructure<R, A> {
operator,
node.arguments.tail.head,
arg);
+ case AccessKind.UNRESOLVED_SUPER:
+ return visitor.visitUnresolvedSuperCompoundIndexSet(
+ node,
+ semantics.element,
+ node.arguments.first,
+ operator,
+ node.arguments.tail.head,
+ arg);
case AccessKind.COMPOUND:
CompoundAccessSemantics compoundSemantics = semantics;
switch (compoundSemantics.compoundAccessKind) {
@@ -1466,6 +1621,7 @@ class CompoundIndexSetStructure<R, A> implements SendStructure<R, A> {
return visitor.visitUnresolvedSuperGetterCompoundIndexSet(
node,
compoundSemantics.getter,
+ compoundSemantics.setter,
node.arguments.first,
operator,
node.arguments.tail.head,
@@ -1526,7 +1682,7 @@ class PrefixStructure<R, A> implements SendStructure<R, A> {
setterSelector,
arg);
case AccessKind.LOCAL_FUNCTION:
- return visitor.errorLocalFunctionPrefix(
+ return visitor.visitLocalFunctionPrefix(
node,
semantics.element,
operator,
@@ -1537,21 +1693,42 @@ class PrefixStructure<R, A> implements SendStructure<R, A> {
semantics.element,
operator,
arg);
+ case AccessKind.FINAL_LOCAL_VARIABLE:
+ return visitor.visitFinalLocalVariablePrefix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.PARAMETER:
return visitor.visitParameterPrefix(
node,
semantics.element,
operator,
arg);
+ case AccessKind.FINAL_PARAMETER:
+ return visitor.visitFinalParameterPrefix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.STATIC_FIELD:
return visitor.visitStaticFieldPrefix(
node,
semantics.element,
operator,
arg);
+ case AccessKind.FINAL_STATIC_FIELD:
+ return visitor.visitFinalStaticFieldPrefix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.STATIC_METHOD:
- // TODO(johnniwinther): Handle this.
- break;
+ return visitor.visitStaticMethodPrefix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.STATIC_GETTER:
// This is not a valid case.
break;
@@ -1564,9 +1741,18 @@ class PrefixStructure<R, A> implements SendStructure<R, A> {
semantics.element,
operator,
arg);
+ case AccessKind.FINAL_TOPLEVEL_FIELD:
+ return visitor.visitFinalTopLevelFieldPrefix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.TOPLEVEL_METHOD:
- // TODO(johnniwinther): Handle this.
- break;
+ return visitor.visitTopLevelMethodPrefix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.TOPLEVEL_GETTER:
// This is not a valid case.
break;
@@ -1574,25 +1760,25 @@ class PrefixStructure<R, A> implements SendStructure<R, A> {
// This is not a valid case.
break;
case AccessKind.CLASS_TYPE_LITERAL:
- return visitor.errorClassTypeLiteralPrefix(
+ return visitor.visitClassTypeLiteralPrefix(
node,
semantics.constant,
operator,
arg);
case AccessKind.TYPEDEF_TYPE_LITERAL:
- return visitor.errorTypedefTypeLiteralPrefix(
+ return visitor.visitTypedefTypeLiteralPrefix(
node,
semantics.constant,
operator,
arg);
case AccessKind.DYNAMIC_TYPE_LITERAL:
- return visitor.errorDynamicTypeLiteralPrefix(
+ return visitor.visitDynamicTypeLiteralPrefix(
node,
semantics.constant,
operator,
arg);
case AccessKind.TYPE_PARAMETER_TYPE_LITERAL:
- return visitor.errorTypeVariableTypeLiteralPrefix(
+ return visitor.visitTypeVariableTypeLiteralPrefix(
node,
semantics.element,
operator,
@@ -1616,9 +1802,18 @@ class PrefixStructure<R, A> implements SendStructure<R, A> {
semantics.element,
operator,
arg);
+ case AccessKind.SUPER_FINAL_FIELD:
+ return visitor.visitFinalSuperFieldPrefix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.SUPER_METHOD:
- // TODO(johnniwinther): Handle this.
- break;
+ return visitor.visitSuperMethodPrefix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.SUPER_GETTER:
// This is not a valid case.
break;
@@ -1629,9 +1824,13 @@ class PrefixStructure<R, A> implements SendStructure<R, A> {
// TODO(johnniwinther): Should this be a valid case?
break;
case AccessKind.UNRESOLVED_SUPER:
+ return visitor.visitUnresolvedSuperPrefix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.UNRESOLVED:
- // TODO(johnniwinther): Support these through [AccessKind.COMPOUND].
- return visitor.errorUnresolvedPrefix(
+ return visitor.visitUnresolvedPrefix(
node,
semantics.element,
operator,
@@ -1653,6 +1852,27 @@ class PrefixStructure<R, A> implements SendStructure<R, A> {
compoundSemantics.setter,
operator,
arg);
+ case CompoundAccessKind.UNRESOLVED_STATIC_GETTER:
+ return visitor.visitUnresolvedStaticGetterPrefix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ arg);
+ case CompoundAccessKind.UNRESOLVED_STATIC_SETTER:
+ return visitor.visitUnresolvedStaticSetterPrefix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ arg);
+ case CompoundAccessKind.STATIC_METHOD_SETTER:
+ return visitor.visitStaticMethodSetterPrefix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ arg);
case CompoundAccessKind.TOPLEVEL_GETTER_SETTER:
return visitor.visitTopLevelGetterSetterPrefix(
node,
@@ -1667,6 +1887,20 @@ class PrefixStructure<R, A> implements SendStructure<R, A> {
compoundSemantics.setter,
operator,
arg);
+ case CompoundAccessKind.UNRESOLVED_TOPLEVEL_GETTER:
+ return visitor.visitUnresolvedTopLevelGetterPrefix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ arg);
+ case CompoundAccessKind.UNRESOLVED_TOPLEVEL_SETTER:
+ return visitor.visitUnresolvedTopLevelSetterPrefix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ arg);
case CompoundAccessKind.SUPER_FIELD_FIELD:
return visitor.visitSuperFieldFieldPrefix(
node,
@@ -1703,11 +1937,17 @@ class PrefixStructure<R, A> implements SendStructure<R, A> {
operator,
arg);
case CompoundAccessKind.UNRESOLVED_SUPER_GETTER:
+ return visitor.visitUnresolvedSuperGetterPrefix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ arg);
case CompoundAccessKind.UNRESOLVED_SUPER_SETTER:
- // TODO(johnniwinther): Handle these directly.
- return visitor.errorUnresolvedPrefix(
+ return visitor.visitUnresolvedSuperSetterPrefix(
node,
- semantics.element,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
operator,
arg);
}
@@ -1750,7 +1990,7 @@ class PostfixStructure<R, A> implements SendStructure<R, A> {
setterSelector,
arg);
case AccessKind.LOCAL_FUNCTION:
- return visitor.errorLocalFunctionPostfix(
+ return visitor.visitLocalFunctionPostfix(
node,
semantics.element,
operator,
@@ -1761,21 +2001,42 @@ class PostfixStructure<R, A> implements SendStructure<R, A> {
semantics.element,
operator,
arg);
+ case AccessKind.FINAL_LOCAL_VARIABLE:
+ return visitor.visitFinalLocalVariablePostfix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.PARAMETER:
return visitor.visitParameterPostfix(
node,
semantics.element,
operator,
arg);
+ case AccessKind.FINAL_PARAMETER:
+ return visitor.visitFinalParameterPostfix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.STATIC_FIELD:
return visitor.visitStaticFieldPostfix(
node,
semantics.element,
operator,
arg);
+ case AccessKind.FINAL_STATIC_FIELD:
+ return visitor.visitFinalStaticFieldPostfix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.STATIC_METHOD:
- // TODO(johnniwinther): Handle this.
- break;
+ return visitor.visitStaticMethodPostfix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.STATIC_GETTER:
// This is not a valid case.
break;
@@ -1788,9 +2049,18 @@ class PostfixStructure<R, A> implements SendStructure<R, A> {
semantics.element,
operator,
arg);
+ case AccessKind.FINAL_TOPLEVEL_FIELD:
+ return visitor.visitFinalTopLevelFieldPostfix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.TOPLEVEL_METHOD:
- // TODO(johnniwinther): Handle this.
- break;
+ return visitor.visitTopLevelMethodPostfix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.TOPLEVEL_GETTER:
// This is not a valid case.
break;
@@ -1798,25 +2068,25 @@ class PostfixStructure<R, A> implements SendStructure<R, A> {
// This is not a valid case.
break;
case AccessKind.CLASS_TYPE_LITERAL:
- return visitor.errorClassTypeLiteralPostfix(
+ return visitor.visitClassTypeLiteralPostfix(
node,
semantics.constant,
operator,
arg);
case AccessKind.TYPEDEF_TYPE_LITERAL:
- return visitor.errorTypedefTypeLiteralPostfix(
+ return visitor.visitTypedefTypeLiteralPostfix(
node,
semantics.constant,
operator,
arg);
case AccessKind.DYNAMIC_TYPE_LITERAL:
- return visitor.errorDynamicTypeLiteralPostfix(
+ return visitor.visitDynamicTypeLiteralPostfix(
node,
semantics.constant,
operator,
arg);
case AccessKind.TYPE_PARAMETER_TYPE_LITERAL:
- return visitor.errorTypeVariableTypeLiteralPostfix(
+ return visitor.visitTypeVariableTypeLiteralPostfix(
node,
semantics.element,
operator,
@@ -1840,9 +2110,18 @@ class PostfixStructure<R, A> implements SendStructure<R, A> {
semantics.element,
operator,
arg);
+ case AccessKind.SUPER_FINAL_FIELD:
+ return visitor.visitFinalSuperFieldPostfix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.SUPER_METHOD:
- // TODO(johnniwinther): Handle this.
- break;
+ return visitor.visitSuperMethodPostfix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.SUPER_GETTER:
// This is not a valid case.
break;
@@ -1853,9 +2132,13 @@ class PostfixStructure<R, A> implements SendStructure<R, A> {
// TODO(johnniwinther): Should this be a valid case?
break;
case AccessKind.UNRESOLVED_SUPER:
+ return visitor.visitUnresolvedSuperPostfix(
+ node,
+ semantics.element,
+ operator,
+ arg);
case AccessKind.UNRESOLVED:
- // TODO(johnniwinther): Support these through [AccessKind.COMPOUND].
- return visitor.errorUnresolvedPostfix(
+ return visitor.visitUnresolvedPostfix(
node,
semantics.element,
operator,
@@ -1870,6 +2153,20 @@ class PostfixStructure<R, A> implements SendStructure<R, A> {
compoundSemantics.setter,
operator,
arg);
+ case CompoundAccessKind.UNRESOLVED_STATIC_GETTER:
+ return visitor.visitUnresolvedStaticGetterPostfix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ arg);
+ case CompoundAccessKind.UNRESOLVED_STATIC_SETTER:
+ return visitor.visitUnresolvedStaticSetterPostfix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ arg);
case CompoundAccessKind.STATIC_METHOD_SETTER:
return visitor.visitStaticMethodSetterPostfix(
node,
@@ -1891,6 +2188,20 @@ class PostfixStructure<R, A> implements SendStructure<R, A> {
compoundSemantics.setter,
operator,
arg);
+ case CompoundAccessKind.UNRESOLVED_TOPLEVEL_GETTER:
+ return visitor.visitUnresolvedTopLevelGetterPostfix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ arg);
+ case CompoundAccessKind.UNRESOLVED_TOPLEVEL_SETTER:
+ return visitor.visitUnresolvedTopLevelSetterPostfix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ arg);
case CompoundAccessKind.SUPER_FIELD_FIELD:
return visitor.visitSuperFieldFieldPostfix(
node,
@@ -1927,11 +2238,17 @@ class PostfixStructure<R, A> implements SendStructure<R, A> {
operator,
arg);
case CompoundAccessKind.UNRESOLVED_SUPER_GETTER:
+ return visitor.visitUnresolvedSuperGetterPostfix(
+ node,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
+ operator,
+ arg);
case CompoundAccessKind.UNRESOLVED_SUPER_SETTER:
- // TODO(johnniwinther): Handle these directly.
- return visitor.errorUnresolvedPostfix(
+ return visitor.visitUnresolvedSuperSetterPostfix(
node,
- semantics.element,
+ compoundSemantics.getter,
+ compoundSemantics.setter,
operator,
arg);
}
« no previous file with comments | « pkg/compiler/lib/src/resolution/send_resolver.dart ('k') | pkg/compiler/lib/src/resolved_visitor.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698