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

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

Issue 1151163004: Implementation of null-aware operators. (Closed) Base URL: git@github.com:dart-lang/sdk.git@master
Patch Set: 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
Index: pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart
diff --git a/pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart b/pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart
index 3e10c20c9ac6b216b6f716d731b779eb57d4a20a..69665d7547c8f514159056c053cef01854170132 100644
--- a/pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart
+++ b/pkg/compiler/lib/src/resolution/semantic_visitor_mixins.dart
@@ -86,6 +86,16 @@ abstract class PrefixBulkMixin<R, A>
return bulkHandlePrefix(node, arg);
}
+ R visitIfNotNullDynamicPropertyPrefix(
+ Send node,
+ Node receiver,
+ IncDecOperator operator,
+ Selector getterSelector,
+ Selector setterSelector,
+ A arg) {
+ return bulkHandlePrefix(node, arg);
+ }
+
@override
R visitIndexPrefix(
Send node,
@@ -504,6 +514,16 @@ abstract class PostfixBulkMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertyPostfix(
+ Send node,
+ Node receiver,
+ IncDecOperator operator,
+ Selector getterSelector,
+ Selector setterSelector,
+ A arg) {
+ return bulkHandlePostfix(node, arg);
+ }
+
R visitIndexPostfix(
Send node,
Node receiver,
@@ -930,6 +950,18 @@ abstract class CompoundBulkMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertyCompound(
+ Send node,
+ Node receiver,
+ AssignmentOperator operator,
+ Node rhs,
+ Selector getterSelector,
+ Selector setterSelector,
+ A arg) {
+ return bulkHandleCompound(node, arg);
+ }
+
+ @override
R visitLocalVariableCompound(
Send node,
LocalVariableElement variable,
@@ -1337,6 +1369,16 @@ abstract class InvokeBulkMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertyInvoke(
+ Send node,
+ Node receiver,
+ NodeList arguments,
+ Selector selector,
+ A arg) {
+ return bulkHandleInvoke(node, arg);
+ }
+
+ @override
R visitDynamicTypeLiteralInvoke(
Send node,
ConstantExpression constant,
@@ -1635,6 +1677,15 @@ abstract class GetBulkMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertyGet(
+ Send node,
+ Node receiver,
+ Selector selector,
+ A arg) {
+ return bulkHandleGet(node, arg);
+ }
+
+ @override
R visitDynamicTypeLiteralGet(
Send node,
ConstantExpression constant,
@@ -1839,6 +1890,16 @@ abstract class SetBulkMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertySet(
+ SendSet node,
+ Node receiver,
+ Selector selector,
+ Node rhs,
+ A arg) {
+ return bulkHandleSet(node, arg);
+ }
+
+ @override
R visitLocalVariableSet(
SendSet node,
LocalVariableElement variable,
@@ -2382,6 +2443,15 @@ abstract class BaseBulkMixin<R, A>
}
@override
+ R visitIfNull(
+ Send node,
+ Node left,
+ Node right,
+ A arg) {
+ return bulkHandleNode(node, 'If-null (Lazy ?? `#`) unhandled.', arg);
+ }
+
+ @override
R visitLogicalAnd(
Send node,
Node left,
@@ -3840,6 +3910,20 @@ class TraversalSendMixin<R, A> implements SemanticSendVisitor<R, A> {
}
@override
+ R visitIfNotNullDynamicPropertyCompound(
+ Send node,
+ Node receiver,
+ AssignmentOperator operator,
+ Node rhs,
+ Selector getterSelector,
+ Selector setterSelector,
+ A arg) {
+ apply(receiver, arg);
+ apply(rhs, arg);
+ return null;
+ }
+
+ @override
R visitDynamicPropertyGet(
Send node,
Node receiver,
@@ -3850,6 +3934,16 @@ class TraversalSendMixin<R, A> implements SemanticSendVisitor<R, A> {
}
@override
+ R visitIfNotNullDynamicPropertyGet(
+ Send node,
+ Node receiver,
+ Selector selector,
+ A arg) {
+ apply(receiver, arg);
+ return null;
+ }
+
+ @override
R visitDynamicPropertyInvoke(
Send node,
Node receiver,
@@ -3862,6 +3956,18 @@ class TraversalSendMixin<R, A> implements SemanticSendVisitor<R, A> {
}
@override
+ R visitIfNotNullDynamicPropertyInvoke(
+ Send node,
+ Node receiver,
+ NodeList arguments,
+ Selector selector,
+ A arg) {
+ apply(receiver, arg);
+ apply(arguments, arg);
+ return null;
+ }
+
+ @override
R visitDynamicPropertyPostfix(
Send node,
Node receiver,
@@ -3874,6 +3980,18 @@ class TraversalSendMixin<R, A> implements SemanticSendVisitor<R, A> {
}
@override
+ R visitIfNotNullDynamicPropertyPostfix(
+ Send node,
+ Node receiver,
+ IncDecOperator operator,
+ Selector getterSelector,
+ Selector setterSelector,
+ A arg) {
+ apply(receiver, arg);
+ return null;
+ }
+
+ @override
R visitDynamicPropertyPrefix(
Send node,
Node receiver,
@@ -3886,6 +4004,18 @@ class TraversalSendMixin<R, A> implements SemanticSendVisitor<R, A> {
}
@override
+ R visitIfNotNullDynamicPropertyPrefix(
+ Send node,
+ Node receiver,
+ IncDecOperator operator,
+ Selector getterSelector,
+ Selector setterSelector,
+ A arg) {
+ apply(receiver, arg);
+ return null;
+ }
+
+ @override
R visitDynamicPropertySet(
SendSet node,
Node receiver,
@@ -3898,6 +4028,17 @@ class TraversalSendMixin<R, A> implements SemanticSendVisitor<R, A> {
}
@override
+ R visitIfNotNullDynamicPropertySet(
+ SendSet node,
+ Node receiver,
+ Selector selector,
+ Node rhs,
+ A arg) {
+ apply(rhs, arg);
+ return null;
+ }
+
+ @override
R visitDynamicTypeLiteralCompound(
Send node,
ConstantExpression constant,
@@ -4090,6 +4231,17 @@ class TraversalSendMixin<R, A> implements SemanticSendVisitor<R, A> {
}
@override
+ R visitIfNull(
+ Send node,
+ Node left,
+ Node right,
+ A arg) {
+ apply(left, arg);
+ apply(right, arg);
+ return null;
+ }
+
+ @override
R visitLogicalAnd(
Send node,
Node left,
@@ -7498,6 +7650,16 @@ abstract class BaseImplementationOfDynamicsMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertyGet(
+ Send node,
+ Node receiver,
+ Selector selector,
+ A arg) {
+ // TODO(johnniwinther): should these redirect to handleDynamicX?
+ return handleDynamicGet(node, receiver, selector, arg);
+ }
+
+ @override
R visitDynamicPropertyInvoke(
Send node,
Node receiver,
@@ -7508,6 +7670,16 @@ abstract class BaseImplementationOfDynamicsMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertyInvoke(
+ Send node,
+ Node receiver,
+ NodeList arguments,
+ Selector selector,
+ A arg) {
+ return handleDynamicInvoke(node, receiver, arguments, selector, arg);
+ }
+
+ @override
R visitDynamicPropertySet(
SendSet node,
Node receiver,
@@ -7518,6 +7690,16 @@ abstract class BaseImplementationOfDynamicsMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertySet(
+ SendSet node,
+ Node receiver,
+ Selector selector,
+ Node rhs,
+ A arg) {
+ return handleDynamicSet(node, receiver, selector, rhs, arg);
+ }
+
+ @override
R visitThisPropertyGet(
Send node,
Selector selector,
@@ -7592,6 +7774,19 @@ abstract class BaseImplementationOfDynamicCompoundsMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertyCompound(
+ Send node,
+ Node receiver,
+ AssignmentOperator operator,
+ Node rhs,
+ Selector getterSelector,
+ Selector setterSelector,
+ A arg) {
+ return handleDynamicCompound(
+ node, receiver, operator, rhs, getterSelector, setterSelector, arg);
+ }
+
+ @override
R visitDynamicPropertyPostfix(
Send node,
Node receiver,
@@ -7605,6 +7800,19 @@ abstract class BaseImplementationOfDynamicCompoundsMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertyPostfix(
+ Send node,
+ Node receiver,
+ IncDecOperator operator,
+ Selector getterSelector,
+ Selector setterSelector,
+ A arg) {
+ return handleDynamicPostfixPrefix(
+ node, receiver, operator,
+ getterSelector, setterSelector, arg, isPrefix: false);
+ }
+
+ @override
R visitDynamicPropertyPrefix(
Send node,
Node receiver,
@@ -7618,6 +7826,19 @@ abstract class BaseImplementationOfDynamicCompoundsMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertyPrefix(
+ Send node,
+ Node receiver,
+ IncDecOperator operator,
+ Selector getterSelector,
+ Selector setterSelector,
+ A arg) {
+ return handleDynamicPostfixPrefix(
+ node, receiver, operator,
+ getterSelector, setterSelector, arg, isPrefix: true);
+ }
+
+ @override
R visitThisPropertyCompound(
Send node,
AssignmentOperator operator,
@@ -7829,6 +8050,23 @@ abstract class BaseImplementationOfCompoundsMixin<R, A>
arg);
}
+ R visitIfNotNullDynamicPropertyCompound(
+ Send node,
+ Node receiver,
+ AssignmentOperator operator,
+ Node rhs,
+ Selector getterSelector,
+ Selector setterSelector,
+ A arg) {
+ return handleDynamicCompounds(
+ node,
+ receiver,
+ new AssignmentCompound(operator, rhs),
+ getterSelector,
+ setterSelector,
+ arg);
+ }
+
@override
R visitThisPropertyCompound(
Send node,
@@ -8212,6 +8450,22 @@ abstract class BaseImplementationOfCompoundsMixin<R, A>
arg);
}
+ R visitIfNotNullDynamicPropertyPrefix(
+ Send node,
+ Node receiver,
+ IncDecOperator operator,
+ Selector getterSelector,
+ Selector setterSelector,
+ A arg) {
+ return handleDynamicCompounds(
+ node,
+ receiver,
+ new IncDecCompound(CompoundKind.PREFIX, operator),
+ getterSelector,
+ setterSelector,
+ arg);
+ }
+
@override
R visitParameterPrefix(
Send node,
@@ -8517,6 +8771,23 @@ abstract class BaseImplementationOfCompoundsMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertyPostfix(
+ Send node,
+ Node receiver,
+ IncDecOperator operator,
+ Selector getterSelector,
+ Selector setterSelector,
+ A arg) {
+ return handleDynamicCompounds(
+ node,
+ receiver,
+ new IncDecCompound(CompoundKind.POSTFIX, operator),
+ getterSelector,
+ setterSelector,
+ arg);
+ }
+
+ @override
R visitParameterPostfix(
Send node,
ParameterElement parameter,
« 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