@@ -22,18 +22,7 @@ public static Assignment Create(ExpressionNodeInfo info)
2222
2323 protected override void PopulateExpression ( TextWriter trapFile )
2424 {
25- var operatorKind = OperatorKind ;
26- if ( operatorKind . HasValue )
27- {
28- // Convert assignment such as `a += b` into `a = a + b`.
29- var simpleAssignExpr = new Expression ( new ExpressionInfo ( Context , Type , Location , ExprKind . SIMPLE_ASSIGN , this , 2 , isCompilerGenerated : true , null ) ) ;
30- Create ( Context , Syntax . Left , simpleAssignExpr , 1 ) ;
31- var opexpr = new Expression ( new ExpressionInfo ( Context , Type , Location , operatorKind . Value , simpleAssignExpr , 0 , isCompilerGenerated : true , null ) ) ;
32- Create ( Context , Syntax . Left , opexpr , 0 , isCompilerGenerated : true ) ;
33- Create ( Context , Syntax . Right , opexpr , 1 ) ;
34- opexpr . OperatorCall ( trapFile , Syntax ) ;
35- }
36- else
25+ if ( Kind == ExprKind . SIMPLE_ASSIGN || Kind == ExprKind . REMOVE_EVENT || Kind == ExprKind . ADD_EVENT )
3726 {
3827 Create ( Context , Syntax . Left , this , 1 ) ;
3928 Create ( Context , Syntax . Right , this , 0 ) ;
@@ -43,6 +32,12 @@ protected override void PopulateExpression(TextWriter trapFile)
4332 OperatorCall ( trapFile , Syntax ) ;
4433 }
4534 }
35+ else
36+ {
37+ Create ( Context , Syntax . Left , this , 0 ) ;
38+ Create ( Context , Syntax . Right , this , 1 ) ;
39+ OperatorCall ( trapFile , Syntax ) ;
40+ }
4641 }
4742
4843 private static ExprKind GetAssignmentOperation ( Context cx , AssignmentExpressionSyntax syntax )
@@ -108,56 +103,5 @@ private static ExprKind GetKind(Context cx, AssignmentExpressionSyntax syntax)
108103
109104 return kind ;
110105 }
111-
112- /// <summary>
113- /// Gets the kind of this assignment operator (<code>null</code> if the
114- /// assignment is not an assignment operator). For example, the operator
115- /// kind of `*=` is `*`.
116- /// </summary>
117- private ExprKind ? OperatorKind
118- {
119- get
120- {
121- var kind = Kind ;
122- if ( kind == ExprKind . REMOVE_EVENT || kind == ExprKind . ADD_EVENT || kind == ExprKind . SIMPLE_ASSIGN )
123- return null ;
124-
125- if ( CallType . AdjustKind ( kind ) == ExprKind . OPERATOR_INVOCATION )
126- return ExprKind . OPERATOR_INVOCATION ;
127-
128- switch ( kind )
129- {
130- case ExprKind . ASSIGN_ADD :
131- return ExprKind . ADD ;
132- case ExprKind . ASSIGN_AND :
133- return ExprKind . BIT_AND ;
134- case ExprKind . ASSIGN_DIV :
135- return ExprKind . DIV ;
136- case ExprKind . ASSIGN_LSHIFT :
137- return ExprKind . LSHIFT ;
138- case ExprKind . ASSIGN_MUL :
139- return ExprKind . MUL ;
140- case ExprKind . ASSIGN_OR :
141- return ExprKind . BIT_OR ;
142- case ExprKind . ASSIGN_REM :
143- return ExprKind . REM ;
144- case ExprKind . ASSIGN_RSHIFT :
145- return ExprKind . RSHIFT ;
146- case ExprKind . ASSIGN_URSHIFT :
147- return ExprKind . URSHIFT ;
148- case ExprKind . ASSIGN_SUB :
149- return ExprKind . SUB ;
150- case ExprKind . ASSIGN_XOR :
151- return ExprKind . BIT_XOR ;
152- case ExprKind . ASSIGN_COALESCE :
153- return ExprKind . NULL_COALESCING ;
154- default :
155- Context . ModelError ( Syntax , $ "Couldn't unfold assignment of type { kind } ") ;
156- return ExprKind . UNKNOWN ;
157- }
158- }
159- }
160-
161- public new CallType CallType => GetCallType ( Context , Syntax ) ;
162106 }
163107}
0 commit comments