| Index: pkg/compiler/lib/src/resolution/semantic_visitor.dart
|
| diff --git a/pkg/compiler/lib/src/resolution/semantic_visitor.dart b/pkg/compiler/lib/src/resolution/semantic_visitor.dart
|
| index e28d3e1fda697bd0de62e3779686d8c12ea63590..4aaba706fa385fc75180b9c96a3ac916ef861830 100644
|
| --- a/pkg/compiler/lib/src/resolution/semantic_visitor.dart
|
| +++ b/pkg/compiler/lib/src/resolution/semantic_visitor.dart
|
| @@ -3181,8 +3181,7 @@ abstract class SemanticSendVisitor<R, A> {
|
| A arg);
|
|
|
| /// Compound index assignment of [rhs] with [operator] to [index] on the
|
| - /// index operators of [receiver] whose getter and setter are defined by
|
| - /// [getterSelector] and [setterSelector], respectively.
|
| + /// index operators of [receiver].
|
| ///
|
| /// For instance:
|
| ///
|
| @@ -3219,8 +3218,8 @@ abstract class SemanticSendVisitor<R, A> {
|
| A arg);
|
|
|
| /// Compound index assignment of [rhs] with [operator] to [index] on a super
|
| - /// super class where the index getter is undefined and the index setter is
|
| - /// defined by [setter].
|
| + /// class where the index getter is undefined and the index setter is defined
|
| + /// by [setter].
|
| ///
|
| /// For instance:
|
| ///
|
| @@ -3240,8 +3239,8 @@ abstract class SemanticSendVisitor<R, A> {
|
| A arg);
|
|
|
| /// Compound index assignment of [rhs] with [operator] to [index] on a super
|
| - /// super class where the index getter is defined by [getter] but the index
|
| - /// setter is undefined.
|
| + /// class where the index getter is defined by [getter] but the index setter
|
| + /// is undefined.
|
| ///
|
| /// For instance:
|
| ///
|
| @@ -3262,7 +3261,7 @@ abstract class SemanticSendVisitor<R, A> {
|
| A arg);
|
|
|
| /// Compound index assignment of [rhs] with [operator] to [index] on a super
|
| - /// super class where the index getter and setter are undefined.
|
| + /// class where the index getter and setter are undefined.
|
| ///
|
| /// For instance:
|
| ///
|
| @@ -3280,6 +3279,99 @@ abstract class SemanticSendVisitor<R, A> {
|
| Node rhs,
|
| A arg);
|
|
|
| + /// If-null assignment expression of [rhs] to [index] on the index operators
|
| + /// of [receiver].
|
| + ///
|
| + /// For instance:
|
| + ///
|
| + /// m(receiver, index, rhs) => receiver[index] ??= rhs;
|
| + ///
|
| + R visitIndexSetIfNull(
|
| + SendSet node,
|
| + Node receiver,
|
| + Node index,
|
| + Node rhs,
|
| + A arg);
|
| +
|
| + /// If-null assignment expression of [rhs] to [index] on the index operators
|
| + /// of a super class defined by [getter] and [setter].
|
| + ///
|
| + /// For instance:
|
| + ///
|
| + /// class B {
|
| + /// operator [](index) {}
|
| + /// operator [](index, value) {}
|
| + /// }
|
| + /// class C extends B {
|
| + /// m(index, rhs) => super[index] ??= rhs;
|
| + /// }
|
| + ///
|
| + R visitSuperIndexSetIfNull(
|
| + SendSet node,
|
| + MethodElement getter,
|
| + MethodElement setter,
|
| + Node index,
|
| + Node rhs,
|
| + A arg);
|
| +
|
| + /// If-null assignment expression of [rhs] to [index] on a super class where
|
| + /// the index getter is undefined and the index setter is defined by [setter].
|
| + ///
|
| + /// For instance:
|
| + ///
|
| + /// class B {
|
| + /// operator [](index, value) {}
|
| + /// }
|
| + /// class C extends B {
|
| + /// m() => super[1] ??= 42;
|
| + /// }
|
| + ///
|
| + R visitUnresolvedSuperGetterIndexSetIfNull(
|
| + Send node,
|
| + Element element,
|
| + MethodElement setter,
|
| + Node index,
|
| + Node rhs,
|
| + A arg);
|
| +
|
| + /// If-null assignment expression of [rhs] to [index] on a super class where
|
| + /// the index getter is defined by [getter] but the index setter is undefined.
|
| + ///
|
| + /// For instance:
|
| + ///
|
| + /// class B {
|
| + /// operator [](index) => 42;
|
| + /// }
|
| + /// class C extends B {
|
| + /// m() => super[1] ??= 42;
|
| + /// }
|
| + ///
|
| + R visitUnresolvedSuperSetterIndexSetIfNull(
|
| + Send node,
|
| + MethodElement getter,
|
| + Element element,
|
| + Node index,
|
| + Node rhs,
|
| + A arg);
|
| +
|
| + /// If-null assignment expression of [rhs] to [index] on a super class where
|
| + /// the index getter and setter are undefined.
|
| + ///
|
| + /// For instance:
|
| + ///
|
| + /// class B {
|
| + /// }
|
| + /// class C extends B {
|
| + /// m() => super[1] ??= 42;
|
| + /// }
|
| + ///
|
| + R visitUnresolvedSuperIndexSetIfNull(
|
| + Send node,
|
| + Element element,
|
| + Node index,
|
| + Node rhs,
|
| + A arg);
|
| +
|
| /// Prefix expression with [operator] of the property on [receiver] whose
|
| /// getter and setter are defined by [getterSelector] and [setterSelector],
|
| /// respectively.
|
| @@ -5087,6 +5179,22 @@ abstract class SemanticSendVisitor<R, A> {
|
| Node rhs,
|
| A arg);
|
|
|
| + /// If-null assignment expression of [rhs] to [index] on the index operators
|
| + /// of an invalid expression.
|
| + ///
|
| + /// For instance:
|
| + ///
|
| + /// import 'foo.dart' as p;
|
| + ///
|
| + /// m(index, rhs) => p[index] ??= rhs;
|
| + ///
|
| + R errorInvalidIndexSetIfNull(
|
| + SendSet node,
|
| + ErroneousElement error,
|
| + Node index,
|
| + Node rhs,
|
| + A arg);
|
| +
|
| /// Unary operation with [operator] on an invalid expression.
|
| ///
|
| /// For instance:
|
|
|