Skip to content

Commit 9b9659f

Browse files
committed
FIXUP of the extractor implementation.
1 parent 5021ea9 commit 9b9659f

File tree

1 file changed

+7
-60
lines changed
  • csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions

1 file changed

+7
-60
lines changed

csharp/extractor/Semmle.Extraction.CSharp/Entities/Expressions/Assignment.cs

Lines changed: 7 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)