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

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 25678e952d952848c5385271e58c1586d75f2dd7..b0f8ebcc9ba1e8f88e9394d41b2e9d23600f3023 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,
@@ -3897,6 +4027,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,
@@ -4089,6 +4230,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,
@@ -7497,6 +7649,15 @@ abstract class BaseImplementationOfDynamicsMixin<R, A>
}
@override
+ R visitIfNotNullDynamicPropertyGet(
+ Send node,
+ Node receiver,
+ Selector selector,
+ A arg) {
+ return handleDynamicGet(node, receiver, selector, arg);
Johnni Winther 2015/05/22 12:39:49 Add a TODO for me questioning whether these should
Siggi Cherem (dart-lang) 2015/05/22 19:49:54 Done.
+ }
+
+ @override
R visitDynamicPropertyInvoke(
Send node,
Node receiver,
@@ -7507,6 +7668,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,
@@ -7517,6 +7688,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,
@@ -7591,6 +7772,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,
@@ -7604,6 +7798,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,
@@ -7617,6 +7824,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,
@@ -7828,6 +8048,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,
@@ -8211,6 +8448,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,
@@ -8516,6 +8769,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,

Powered by Google App Engine
This is Rietveld 408576698