@@ -13,7 +13,8 @@ class Assignment extends Expr {
13
13
Assignment ( ) {
14
14
this instanceof AssignExpr or
15
15
this instanceof AssignArithmeticOperationEx or
16
- this instanceof AssignBitwiseOperationEx
16
+ this instanceof AssignBitwiseOperationEx or
17
+ this instanceof AssignPointwiseOperationEx
17
18
}
18
19
19
20
/**
@@ -71,7 +72,8 @@ class AssignExpr extends Generated::AssignExpr {
71
72
class AssignOperation extends Assignment , BinaryExpr {
72
73
AssignOperation ( ) {
73
74
this instanceof AssignArithmeticOperationEx or
74
- this instanceof AssignBitwiseOperationEx
75
+ this instanceof AssignBitwiseOperationEx or
76
+ this instanceof AssignPointwiseOperationEx
75
77
}
76
78
}
77
79
@@ -103,6 +105,19 @@ class AssignBitwiseOperation extends AssignOperation instanceof AssignBitwiseOpe
103
105
*/
104
106
abstract private class AssignBitwiseOperationEx extends BinaryExpr { }
105
107
108
+ /**
109
+ * A pointwise assignment expression. For example:
110
+ * ```
111
+ * x .&= y
112
+ * ```
113
+ */
114
+ class AssignPointwiseOperation extends AssignOperation instanceof AssignPointwiseOperationEx { }
115
+
116
+ /**
117
+ * Private abstract class, extended to define the scope of `AssignPointwiseOperation`.
118
+ */
119
+ abstract private class AssignPointwiseOperationEx extends BinaryExpr { }
120
+
106
121
/**
107
122
* An addition assignment expression:
108
123
* ```
@@ -227,3 +242,39 @@ class AssignXorExpr extends AssignBitwiseOperationEx {
227
242
228
243
override string toString ( ) { result = "... ^= ..." }
229
244
}
245
+
246
+ /**
247
+ * A pointwise bitwise-and assignment expression:
248
+ * ```
249
+ * a .&= b
250
+ * ```
251
+ */
252
+ class AssignPointwiseAndExpr extends AssignPointwiseOperationEx {
253
+ AssignPointwiseAndExpr ( ) { this .getOperator ( ) .getName ( ) = ".&=(_:_:)" }
254
+
255
+ override string toString ( ) { result = "... .&= ..." }
256
+ }
257
+
258
+ /**
259
+ * A pointwise bitwise-or assignment expression:
260
+ * ```
261
+ * a .|= b
262
+ * ```
263
+ */
264
+ class AssignPointwiseOrExpr extends AssignPointwiseOperationEx {
265
+ AssignPointwiseOrExpr ( ) { this .getOperator ( ) .getName ( ) = ".|=(_:_:)" }
266
+
267
+ override string toString ( ) { result = "... .|= ..." }
268
+ }
269
+
270
+ /**
271
+ * A pointwise bitwise exclusive-or assignment expression:
272
+ * ```
273
+ * a .^= b
274
+ * ```
275
+ */
276
+ class AssignPointwiseXorExpr extends AssignPointwiseOperationEx {
277
+ AssignPointwiseXorExpr ( ) { this .getOperator ( ) .getName ( ) = ".^=(_:_:)" }
278
+
279
+ override string toString ( ) { result = "... .^= ..." }
280
+ }
0 commit comments