Skip to content

Commit 88466b7

Browse files
committed
C#: Do not change kind of increment/decrement expressions to operator invocations and cleanup the implementation.
1 parent 53c0880 commit 88466b7

3 files changed

Lines changed: 13 additions & 27 deletions

File tree

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,10 @@ internal static Expression Create(ExpressionNodeInfo info)
5858
return Invocation.Create(info);
5959

6060
case SyntaxKind.PostIncrementExpression:
61-
return PostfixUnary.Create(info.SetKind(ExprKind.POST_INCR), ((PostfixUnaryExpressionSyntax)info.Node).Operand);
61+
return PostfixUnary.Create(info.SetKind(ExprKind.POST_INCR));
6262

6363
case SyntaxKind.PostDecrementExpression:
64-
return PostfixUnary.Create(info.SetKind(ExprKind.POST_DECR), ((PostfixUnaryExpressionSyntax)info.Node).Operand);
64+
return PostfixUnary.Create(info.SetKind(ExprKind.POST_DECR));
6565

6666
case SyntaxKind.AwaitExpression:
6767
return Await.Create(info);
@@ -254,7 +254,7 @@ internal static Expression Create(ExpressionNodeInfo info)
254254
return Switch.Create(info);
255255

256256
case SyntaxKind.SuppressNullableWarningExpression:
257-
return PostfixUnary.Create(info.SetKind(ExprKind.SUPPRESS_NULLABLE_WARNING), ((PostfixUnaryExpressionSyntax)info.Node).Operand);
257+
return PostfixUnary.Create(info.SetKind(ExprKind.SUPPRESS_NULLABLE_WARNING));
258258

259259
case SyntaxKind.WithExpression:
260260
return WithExpression.Create(info);

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

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,27 +4,21 @@
44

55
namespace Semmle.Extraction.CSharp.Entities.Expressions
66
{
7-
internal class PostfixUnary : Expression<ExpressionSyntax>
7+
internal class PostfixUnary : Expression<PostfixUnaryExpressionSyntax>
88
{
9-
private PostfixUnary(ExpressionNodeInfo info, ExprKind kind, ExpressionSyntax operand)
10-
: base(info.SetKind(UnaryOperatorKind(info.Context, kind, info.Node)))
9+
private PostfixUnary(ExpressionNodeInfo info)
10+
: base(info)
1111
{
12-
this.operand = operand;
13-
operatorKind = kind;
1412
}
1513

16-
private readonly ExpressionSyntax operand;
17-
private readonly ExprKind operatorKind;
18-
19-
public static Expression Create(ExpressionNodeInfo info, ExpressionSyntax operand) => new PostfixUnary(info, info.Kind, operand).TryPopulate();
14+
public static Expression Create(ExpressionNodeInfo info) => new PostfixUnary(info).TryPopulate();
2015

2116
protected override void PopulateExpression(TextWriter trapFile)
2217
{
23-
Create(Context, operand, this, 0);
18+
Create(Context, Syntax.Operand, this, 0);
2419
AddOperatorCall(trapFile, Syntax);
2520

26-
if ((operatorKind == ExprKind.POST_INCR || operatorKind == ExprKind.POST_DECR) &&
27-
Kind == ExprKind.OPERATOR_INVOCATION)
21+
if (Kind == ExprKind.POST_INCR || Kind == ExprKind.POST_DECR)
2822
{
2923
trapFile.mutator_invocation_mode(this, 2);
3024
}

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

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -6,28 +6,20 @@ namespace Semmle.Extraction.CSharp.Entities.Expressions
66
{
77
internal class Unary : Expression<PrefixUnaryExpressionSyntax>
88
{
9-
private Unary(ExpressionNodeInfo info, ExprKind kind)
10-
: base(info.SetKind(UnaryOperatorKind(info.Context, info.Kind, info.Node)))
9+
private Unary(ExpressionNodeInfo info)
10+
: base(info)
1111
{
12-
operatorKind = kind;
1312
}
1413

15-
private readonly ExprKind operatorKind;
1614

17-
public static Unary Create(ExpressionNodeInfo info)
18-
{
19-
var ret = new Unary(info, info.Kind);
20-
ret.TryPopulate();
21-
return ret;
22-
}
15+
public static Expression Create(ExpressionNodeInfo info) => new Unary(info).TryPopulate();
2316

2417
protected override void PopulateExpression(TextWriter trapFile)
2518
{
2619
Create(Context, Syntax.Operand, this, 0);
2720
AddOperatorCall(trapFile, Syntax);
2821

29-
if ((operatorKind == ExprKind.PRE_INCR || operatorKind == ExprKind.PRE_DECR) &&
30-
Kind == ExprKind.OPERATOR_INVOCATION)
22+
if (Kind == ExprKind.PRE_INCR || Kind == ExprKind.PRE_DECR)
3123
{
3224
trapFile.mutator_invocation_mode(this, 1);
3325
}

0 commit comments

Comments
 (0)