Skip to content

Commit a0f5e45

Browse files
committed
C#: Fix special case of default argument value extraction
1 parent 7080b25 commit a0f5e45

File tree

2 files changed

+11
-0
lines changed

2 files changed

+11
-0
lines changed

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

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,16 @@ private static bool ContainsPattern(SyntaxNode node) =>
193193
return Default.CreateGenerated(cx, parent, childIndex, location, parameter.Type.IsReferenceType ? ValueAsString(null) : null);
194194
}
195195

196+
if (parameter.Type.SpecialType == SpecialType.System_Object)
197+
{
198+
// this can happen in VB.NET
199+
cx.ExtractionError($"Extracting default argument value 'object {parameter.Name} = default' instead of 'object {parameter.Name} = {defaultValue}'. The latter is not supported in C#.",
200+
null, null, severity: Util.Logging.Severity.Warning);
201+
202+
// we're generating a default expression:
203+
return Default.CreateGenerated(cx, parent, childIndex, location, ValueAsString(null));
204+
}
205+
196206
// const literal:
197207
return Literal.CreateGenerated(cx, parent, childIndex, parameter.Type, defaultValue, location);
198208
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,3 @@
11
compilationMessages
22
extractorMessages
3+
| file://:0:0:0:0 | Extracting default argument value 'object RecordNumber = default' instead of 'object RecordNumber = -1'. The latter is not supported in C#. |

0 commit comments

Comments
 (0)