Skip to content

Commit 551a7ce

Browse files
committed
Fix expression value of struct default argument values
1 parent c069c33 commit 551a7ce

File tree

3 files changed

+5
-5
lines changed

3 files changed

+5
-5
lines changed

csharp/extractor/Semmle.Extraction.CSharp/Entities/Expression.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -190,7 +190,7 @@ private static bool ContainsPattern(SyntaxNode node) =>
190190
{
191191
// = null, = default, = default(T), = new MyStruct()
192192
// we're generating a default expression:
193-
return Default.CreateGenerated(cx, parent, childIndex, location);
193+
return Default.CreateGenerated(cx, parent, childIndex, location, parameter.Type.IsValueType ? null : ValueAsString(null));
194194
}
195195

196196
// const literal:

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ protected override void PopulateExpression(TextWriter trapFile)
1515
TypeAccess.Create(Context, Syntax.Type, this, 0);
1616
}
1717

18-
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, Extraction.Entities.Location location)
18+
public static Expression CreateGenerated(Context cx, IExpressionParentEntity parent, int childIndex, Extraction.Entities.Location location, string? value)
1919
{
2020
var info = new ExpressionInfo(
2121
cx,
@@ -25,7 +25,7 @@ public static Expression CreateGenerated(Context cx, IExpressionParentEntity par
2525
parent,
2626
childIndex,
2727
true,
28-
ValueAsString(null));
28+
value);
2929

3030
return new Expression(info);
3131
}

csharp/ql/test/library-tests/parameters/Parameters.expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ withDefaultValue
3636
| Parameters.dll:0:0:0:0 | M4 | Parameters.dll:0:0:0:0 | b | 1 | Parameters.dll:0:0:0:0 | default | null |
3737
| Parameters.dll:0:0:0:0 | M5 | Parameters.dll:0:0:0:0 | a | 0 | Parameters.dll:0:0:0:0 | 0 | 0 |
3838
| Parameters.dll:0:0:0:0 | M5 | Parameters.dll:0:0:0:0 | b | 1 | Parameters.dll:0:0:0:0 | default | null |
39-
| Parameters.dll:0:0:0:0 | M6 | Parameters.dll:0:0:0:0 | s2 | 1 | Parameters.dll:0:0:0:0 | default | null |
40-
| Parameters.dll:0:0:0:0 | M6 | Parameters.dll:0:0:0:0 | s3 | 2 | Parameters.dll:0:0:0:0 | default | null |
39+
| Parameters.dll:0:0:0:0 | M6 | Parameters.dll:0:0:0:0 | s2 | 1 | Parameters.dll:0:0:0:0 | default | - |
40+
| Parameters.dll:0:0:0:0 | M6 | Parameters.dll:0:0:0:0 | s3 | 2 | Parameters.dll:0:0:0:0 | default | - |
4141
| Parameters.dll:0:0:0:0 | M7 | Parameters.dll:0:0:0:0 | e2 | 1 | Parameters.dll:0:0:0:0 | (...) ... | 0 |
4242
| Parameters.dll:0:0:0:0 | M7 | Parameters.dll:0:0:0:0 | e3 | 2 | Parameters.dll:0:0:0:0 | (...) ... | 0 |
4343
| Parameters.dll:0:0:0:0 | M7 | Parameters.dll:0:0:0:0 | e4 | 3 | Parameters.dll:0:0:0:0 | (...) ... | 1 |

0 commit comments

Comments
 (0)