@@ -60,10 +60,11 @@ class AssignExpr extends Assignment, @simple_assign_expr {
6060
6161/**
6262 * An assignment operation. Either an arithmetic assignment operation
63- * (`AssignArithmeticOperation`), a bitwise assignment operation or
64- * (`AssignBitwiseOperation`).
63+ * (`AssignArithmeticOperation`), a bitwise assignment operation
64+ * (`AssignBitwiseOperation`), an event assignment (`AddOrRemoveEventExpr`)
65+ * or a null-coalescing assignment (`AssignCoalesceExpr`).
6566 */
66- class AssignOperation extends Assignment , @assign_op_expr {
67+ class AssignOperation extends Assignment , LateBindableExpr , @assign_op_expr {
6768 override string getOperator ( ) { none ( ) }
6869
6970 /**
@@ -79,11 +80,9 @@ class AssignOperation extends Assignment, @assign_op_expr {
7980 override string toString ( ) { result = "... " + this .getOperator ( ) + " ..." }
8081}
8182
82- /**
83- * An assignment operation that corresponds to an operator call, for example `x += y` corresponds to `x = x + y`.
84- */
85- class AssignCompoundOperation extends AssignOperation , OperatorCall , @assign_op_call_expr {
86- override string toString ( ) { result = "... " + this .getOperator ( ) + " ..." }
83+ /** An assignment operation involving a dynamic operator call. */
84+ class DynamicAssignOperation extends DynamicExpr , AssignOperation {
85+ override string toString ( ) { result = "... dynamic " + this .getOperator ( ) + " ..." }
8786}
8887
8988/**
@@ -93,7 +92,7 @@ class AssignCompoundOperation extends AssignOperation, OperatorCall, @assign_op_
9392 * operation (`AssignDivExpr`), or a remainder assignment operation
9493 * (`AssignRemExpr`).
9594 */
96- class AssignArithmeticOperation extends AssignCompoundOperation , @assign_arith_expr { }
95+ class AssignArithmeticOperation extends AssignOperation , @assign_arith_expr { }
9796
9897/**
9998 * An addition assignment operation, for example `x += y`.
@@ -149,7 +148,7 @@ class AssignRemExpr extends AssignArithmeticOperation, @assign_rem_expr {
149148 * operation (`AssignRightShiftExpr`), or an unsigned right-shift assignment
150149 * operation (`AssignUnsignedRightShiftExpr`).
151150 */
152- class AssignBitwiseOperation extends AssignCompoundOperation , @assign_bitwise_expr { }
151+ class AssignBitwiseOperation extends AssignOperation , @assign_bitwise_expr { }
153152
154153/**
155154 * A bitwise-and assignment operation, for example `x &= y`.
0 commit comments