@@ -22,15 +22,7 @@ public static Assignment Create(ExpressionNodeInfo info)
2222
2323 protected override void PopulateExpression ( TextWriter trapFile )
2424 {
25- var operatorKind = OperatorKind ;
26- // TODO: THIS CHECK CAN BE SIMPLIFIED - As we now always consider this to be an operator invocation.
27- if ( operatorKind . HasValue )
28- {
29- Create ( Context , Syntax . Left , this , 0 ) ;
30- Create ( Context , Syntax . Right , this , 1 ) ;
31- OperatorCall ( trapFile , Syntax ) ;
32- }
33- else
25+ if ( Kind == ExprKind . SIMPLE_ASSIGN || Kind == ExprKind . REMOVE_EVENT || Kind == ExprKind . ADD_EVENT )
3426 {
3527 Create ( Context , Syntax . Left , this , 1 ) ;
3628 Create ( Context , Syntax . Right , this , 0 ) ;
@@ -40,6 +32,12 @@ protected override void PopulateExpression(TextWriter trapFile)
4032 OperatorCall ( trapFile , Syntax ) ;
4133 }
4234 }
35+ else
36+ {
37+ Create ( Context , Syntax . Left , this , 0 ) ;
38+ Create ( Context , Syntax . Right , this , 1 ) ;
39+ OperatorCall ( trapFile , Syntax ) ;
40+ }
4341 }
4442
4543 private static ExprKind GetAssignmentOperation ( Context cx , AssignmentExpressionSyntax syntax )
@@ -105,56 +103,5 @@ private static ExprKind GetKind(Context cx, AssignmentExpressionSyntax syntax)
105103
106104 return kind ;
107105 }
108-
109- /// <summary>
110- /// Gets the kind of this assignment operator (<code>null</code> if the
111- /// assignment is not an assignment operator). For example, the operator
112- /// kind of `*=` is `*`.
113- /// </summary>
114- private ExprKind ? OperatorKind
115- {
116- get
117- {
118- var kind = Kind ;
119- if ( kind == ExprKind . REMOVE_EVENT || kind == ExprKind . ADD_EVENT || kind == ExprKind . SIMPLE_ASSIGN )
120- return null ;
121-
122- if ( CallType . AdjustKind ( kind ) == ExprKind . OPERATOR_INVOCATION )
123- return ExprKind . OPERATOR_INVOCATION ;
124-
125- switch ( kind )
126- {
127- case ExprKind . ASSIGN_ADD :
128- return ExprKind . ADD ;
129- case ExprKind . ASSIGN_AND :
130- return ExprKind . BIT_AND ;
131- case ExprKind . ASSIGN_DIV :
132- return ExprKind . DIV ;
133- case ExprKind . ASSIGN_LSHIFT :
134- return ExprKind . LSHIFT ;
135- case ExprKind . ASSIGN_MUL :
136- return ExprKind . MUL ;
137- case ExprKind . ASSIGN_OR :
138- return ExprKind . BIT_OR ;
139- case ExprKind . ASSIGN_REM :
140- return ExprKind . REM ;
141- case ExprKind . ASSIGN_RSHIFT :
142- return ExprKind . RSHIFT ;
143- case ExprKind . ASSIGN_URSHIFT :
144- return ExprKind . URSHIFT ;
145- case ExprKind . ASSIGN_SUB :
146- return ExprKind . SUB ;
147- case ExprKind . ASSIGN_XOR :
148- return ExprKind . BIT_XOR ;
149- case ExprKind . ASSIGN_COALESCE :
150- return ExprKind . NULL_COALESCING ;
151- default :
152- Context . ModelError ( Syntax , $ "Couldn't unfold assignment of type { kind } ") ;
153- return ExprKind . UNKNOWN ;
154- }
155- }
156- }
157-
158- public new CallType CallType => GetCallType ( Context , Syntax ) ;
159106 }
160107}
0 commit comments