| 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,
|
|
|