Skip to content

Commit 51dc151

Browse files
committed
C#: Address review comments
1 parent 92bf830 commit 51dc151

6 files changed

Lines changed: 80 additions & 185 deletions

File tree

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

Lines changed: 4 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -171,15 +171,11 @@ protected static void AddParametersToId(Context cx, TextWriter trapFile, IMethod
171171
trapFile.Write('(');
172172
int index = 0;
173173

174-
if (method.MethodKind == MethodKind.ReducedExtension)
175-
{
176-
trapFile.WriteSeparator(",", ref index);
177-
method.ReceiverType.BuildOrWriteId(cx, trapFile, method);
178-
trapFile.Write(" ");
179-
trapFile.Write(method.ReducedFrom.Parameters.First().Name);
180-
}
174+
var @params = method.MethodKind == MethodKind.ReducedExtension
175+
? method.ReducedFrom.Parameters
176+
: method.Parameters;
181177

182-
foreach (var param in method.Parameters)
178+
foreach (var param in @params)
183179
{
184180
trapFile.WriteSeparator(",", ref index);
185181
param.Type.BuildOrWriteId(cx, trapFile, method);

csharp/extractor/Semmle.Extraction.CSharp/SymbolExtensions.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -288,7 +288,7 @@ void AddContaining()
288288
}
289289
else if (named.ContainingNamespace != null)
290290
{
291-
if (cx.AddAssemblyTrapPrefix && !(named.ContainingAssembly is null))
291+
if (cx.ShouldAddAssemblyTrapPrefix && named.ContainingAssembly is object)
292292
BuildAssembly(named.ContainingAssembly, trapFile);
293293
named.ContainingNamespace.BuildNamespace(cx, trapFile);
294294
}
@@ -354,7 +354,7 @@ void AddContaining()
354354
// a base class, which in turn has `C1<C3<C4>>` as a base class. The latter has the original
355355
// base class `C3<C4>` as a type argument, which would lead to infinite unfolding.
356356
trapFile.Write(" : ");
357-
@base.BuildOrWriteId(cx, trapFile, symbolBeingDefined, false);
357+
@base.BuildOrWriteId(cx, trapFile, symbolBeingDefined, addBaseClass: false);
358358
}
359359
}
360360

csharp/extractor/Semmle.Extraction/Context.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public SemanticModel GetModel(SyntaxNode node)
4444
/// <summary>
4545
/// Holds if assembly information should be prefixed to TRAP labels.
4646
/// </summary>
47-
public readonly bool AddAssemblyTrapPrefix;
47+
public readonly bool ShouldAddAssemblyTrapPrefix;
4848

4949
int GetNewId() => TrapWriter.IdCounter++;
5050

@@ -241,7 +241,7 @@ public Context(IExtractor e, Compilation c, TrapWriter trapWriter, IExtractionSc
241241
Compilation = c;
242242
Scope = scope;
243243
TrapWriter = trapWriter;
244-
AddAssemblyTrapPrefix = addAssemblyTrapPrefix;
244+
ShouldAddAssemblyTrapPrefix = addAssemblyTrapPrefix;
245245
}
246246

247247
public bool FromSource => Scope.FromSource;

csharp/ql/test/library-tests/csharp8/PrintAst.expected

Lines changed: 52 additions & 127 deletions
Original file line numberDiff line numberDiff line change
@@ -950,147 +950,72 @@ ranges.cs:
950950
# 9| 2: [IntLiteral] 3
951951
# 9| 3: [IntLiteral] 4
952952
# 9| 1: [LocalVariableAccess] access to local variable array
953-
# 10| 1: [LocalVariableDeclStmt] ... ...;
954-
# 10| 0: [LocalVariableDeclAndInitExpr] Int32[,] array2 = ...
955-
# 10| 0: [ArrayCreation] array creation of type Int32[,]
956-
# 10| 0: [IntLiteral] 2
957-
# 10| 1: [IntLiteral] 3
958-
# 10| 1: [LocalVariableAccess] access to local variable array2
953+
# 11| 1: [LocalVariableDeclStmt] ... ...;
954+
# 11| 0: [LocalVariableDeclAndInitExpr] Int32[] slice1 = ...
955+
# 11| 0: [ArrayAccess] access to array element
956+
# 11| -1: [LocalVariableAccess] access to local variable array
957+
# 11| 0: [RangeExpr] ... .. ...
958+
# 11| 0: [OperatorCall] call to operator implicit conversion
959+
# 11| 0: [IntLiteral] 1
960+
# 11| 1: [OperatorCall] call to operator implicit conversion
961+
# 11| 0: [IntLiteral] 3
962+
# 11| 1: [LocalVariableAccess] access to local variable slice1
959963
# 12| 2: [LocalVariableDeclStmt] ... ...;
960-
# 12| 0: [LocalVariableDeclAndInitExpr] Int32 slice1 = ...
964+
# 12| 0: [LocalVariableDeclAndInitExpr] Int32[] slice2 = ...
961965
# 12| 0: [ArrayAccess] access to array element
962966
# 12| -1: [LocalVariableAccess] access to local variable array
963-
# 12| 0: [OperatorCall] call to operator implicit conversion
964-
# 12| 0: [RangeExpr] ... .. ...
965-
# 12| 0: [OperatorCall] call to operator implicit conversion
966-
# 12| 0: [IntLiteral] 1
967-
# 12| 1: [OperatorCall] call to operator implicit conversion
968-
# 12| 0: [IntLiteral] 3
969-
# 12| 1: [LocalVariableAccess] access to local variable slice1
967+
# 12| 0: [RangeExpr] ... .. ...
968+
# 12| 0: [OperatorCall] call to operator implicit conversion
969+
# 12| 0: [IntLiteral] 0
970+
# 12| 1: [IndexExpr] ^...
971+
# 12| 0: [IntLiteral] 1
972+
# 12| 1: [LocalVariableAccess] access to local variable slice2
970973
# 13| 3: [LocalVariableDeclStmt] ... ...;
971-
# 13| 0: [LocalVariableDeclAndInitExpr] Int32 slice2 = ...
972-
# 13| 0: [ArrayAccess] access to array element
973-
# 13| -1: [LocalVariableAccess] access to local variable array
974-
# 13| 0: [OperatorCall] call to operator implicit conversion
975-
# 13| 0: [RangeExpr] ... .. ...
976-
# 13| 0: [OperatorCall] call to operator implicit conversion
977-
# 13| 0: [IntLiteral] 0
978-
# 13| 1: [IndexExpr] ^...
979-
# 13| 0: [IntLiteral] 1
980-
# 13| 1: [LocalVariableAccess] access to local variable slice2
974+
# 13| 0: [LocalVariableDeclAndInitExpr] Int32 x = ...
975+
# 13| 0: [IntLiteral] 2
976+
# 13| 1: [LocalVariableAccess] access to local variable x
977+
# 13| 1: [LocalVariableDeclAndInitExpr] Int32 y = ...
978+
# 13| 0: [IntLiteral] 3
979+
# 13| 1: [LocalVariableAccess] access to local variable y
981980
# 14| 4: [LocalVariableDeclStmt] ... ...;
982-
# 14| 0: [LocalVariableDeclAndInitExpr] Int32 x = ...
983-
# 14| 0: [IntLiteral] 2
984-
# 14| 1: [LocalVariableAccess] access to local variable x
985-
# 14| 1: [LocalVariableDeclAndInitExpr] Int32 y = ...
986-
# 14| 0: [IntLiteral] 3
987-
# 14| 1: [LocalVariableAccess] access to local variable y
981+
# 14| 0: [LocalVariableDeclAndInitExpr] Int32[] slice3 = ...
982+
# 14| 0: [ArrayAccess] access to array element
983+
# 14| -1: [LocalVariableAccess] access to local variable array
984+
# 14| 0: [RangeExpr] ... .. ...
985+
# 14| 0: [OperatorCall] call to operator implicit conversion
986+
# 14| 0: [LocalVariableAccess] access to local variable x
987+
# 14| 1: [OperatorCall] call to operator implicit conversion
988+
# 14| 0: [LocalVariableAccess] access to local variable y
989+
# 14| 1: [LocalVariableAccess] access to local variable slice3
988990
# 15| 5: [LocalVariableDeclStmt] ... ...;
989-
# 15| 0: [LocalVariableDeclAndInitExpr] Int32 slice3 = ...
991+
# 15| 0: [LocalVariableDeclAndInitExpr] Int32[] slice4 = ...
990992
# 15| 0: [ArrayAccess] access to array element
991993
# 15| -1: [LocalVariableAccess] access to local variable array
992-
# 15| 0: [OperatorCall] call to operator implicit conversion
993-
# 15| 0: [RangeExpr] ... .. ...
994-
# 15| 0: [OperatorCall] call to operator implicit conversion
995-
# 15| 0: [LocalVariableAccess] access to local variable x
996-
# 15| 1: [OperatorCall] call to operator implicit conversion
997-
# 15| 0: [LocalVariableAccess] access to local variable y
998-
# 15| 1: [LocalVariableAccess] access to local variable slice3
994+
# 15| 0: [RangeExpr] ... .. ...
995+
# 15| 1: [OperatorCall] call to operator implicit conversion
996+
# 15| 0: [LocalVariableAccess] access to local variable y
997+
# 15| 1: [LocalVariableAccess] access to local variable slice4
999998
# 16| 6: [LocalVariableDeclStmt] ... ...;
1000-
# 16| 0: [LocalVariableDeclAndInitExpr] Int32 slice4 = ...
999+
# 16| 0: [LocalVariableDeclAndInitExpr] Int32[] slice5 = ...
10011000
# 16| 0: [ArrayAccess] access to array element
10021001
# 16| -1: [LocalVariableAccess] access to local variable array
1003-
# 16| 0: [OperatorCall] call to operator implicit conversion
1004-
# 16| 0: [RangeExpr] ... .. ...
1005-
# 16| 1: [OperatorCall] call to operator implicit conversion
1006-
# 16| 0: [LocalVariableAccess] access to local variable y
1007-
# 16| 1: [LocalVariableAccess] access to local variable slice4
1002+
# 16| 0: [RangeExpr] ... .. ...
1003+
# 16| 0: [OperatorCall] call to operator implicit conversion
1004+
# 16| 0: [LocalVariableAccess] access to local variable x
1005+
# 16| 1: [LocalVariableAccess] access to local variable slice5
10081006
# 17| 7: [LocalVariableDeclStmt] ... ...;
1009-
# 17| 0: [LocalVariableDeclAndInitExpr] Int32 slice5 = ...
1007+
# 17| 0: [LocalVariableDeclAndInitExpr] Int32[] slice6 = ...
10101008
# 17| 0: [ArrayAccess] access to array element
10111009
# 17| -1: [LocalVariableAccess] access to local variable array
1012-
# 17| 0: [OperatorCall] call to operator implicit conversion
1013-
# 17| 0: [RangeExpr] ... .. ...
1014-
# 17| 0: [OperatorCall] call to operator implicit conversion
1015-
# 17| 0: [LocalVariableAccess] access to local variable x
1016-
# 17| 1: [LocalVariableAccess] access to local variable slice5
1010+
# 17| 0: [RangeExpr] ... .. ...
1011+
# 17| 1: [LocalVariableAccess] access to local variable slice6
10171012
# 18| 8: [LocalVariableDeclStmt] ... ...;
1018-
# 18| 0: [LocalVariableDeclAndInitExpr] Int32 slice6 = ...
1013+
# 18| 0: [LocalVariableDeclAndInitExpr] Int32[] slice7 = ...
10191014
# 18| 0: [ArrayAccess] access to array element
10201015
# 18| -1: [LocalVariableAccess] access to local variable array
1021-
# 18| 0: [OperatorCall] call to operator implicit conversion
1022-
# 18| 0: [RangeExpr] ... .. ...
1023-
# 18| 1: [LocalVariableAccess] access to local variable slice6
1024-
# 19| 9: [LocalVariableDeclStmt] ... ...;
1025-
# 19| 0: [LocalVariableDeclAndInitExpr] Int32 slice7 = ...
1026-
# 19| 0: [ArrayAccess] access to array element
1027-
# 19| -1: [LocalVariableAccess] access to local variable array
1028-
# 19| 0: [OperatorCall] call to operator implicit conversion
1029-
# 19| 0: [RangeExpr] ... .. ...
1030-
# 19| 0: [IndexExpr] ^...
1031-
# 19| 0: [IntLiteral] 10
1032-
# 19| 1: [IndexExpr] ^...
1033-
# 19| 0: [IntLiteral] 5
1034-
# 19| 1: [LocalVariableAccess] access to local variable slice7
1035-
# 20| 10: [LocalVariableDeclStmt] ... ...;
1036-
# 20| 0: [LocalVariableDeclAndInitExpr] Int32 slice8 = ...
1037-
# 20| 0: [ArrayAccess] access to array element
1038-
# 20| -1: [LocalVariableAccess] access to local variable array2
1039-
# 20| 0: [OperatorCall] call to operator implicit conversion
1040-
# 20| 0: [RangeExpr] ... .. ...
1041-
# 20| 0: [OperatorCall] call to operator implicit conversion
1042-
# 20| 0: [IntLiteral] 1
1043-
# 20| 1: [OperatorCall] call to operator implicit conversion
1044-
# 20| 0: [IntLiteral] 2
1045-
# 20| 1: [OperatorCall] call to operator implicit conversion
1046-
# 20| 0: [RangeExpr] ... .. ...
1047-
# 20| 1: [LocalVariableAccess] access to local variable slice8
1048-
# 25| [NamespaceDeclaration] namespace ... { ... }
1049-
# 27| 1: [Struct] Index
1050-
#-----| 3: (Base types)
1051-
# 27| 1: [Interface] IEquatable<Index>
1052-
# 29| 17: [InstanceConstructor] Index
1053-
#-----| 2: (Parameters)
1054-
# 29| 0: [Parameter] value
1055-
# 29| 1: [Parameter] fromEnd
1056-
# 29| 1: [BoolLiteral] false
1057-
# 29| 4: [BlockStmt] {...}
1058-
# 30| 18: [ImplicitConversionOperator] implicit conversion
1059-
#-----| 2: (Parameters)
1060-
# 30| 0: [Parameter] value
1061-
# 30| 4: [DefaultValueExpr] default(...)
1062-
# 30| 0: [TypeAccess] access to type Index
1063-
# 33| 2: [Struct] Range
1064-
#-----| 3: (Base types)
1065-
# 33| 1: [Interface] IEquatable<Range>
1066-
# 35| 14: [InstanceConstructor] Range
1067-
#-----| 2: (Parameters)
1068-
# 35| 0: [Parameter] start
1069-
# 35| 1: [Parameter] end
1070-
# 35| 4: [ThrowExpr] throw ...
1071-
# 35| 0: [NullLiteral] null
1072-
# 36| 15: [Method] StartAt
1073-
#-----| 2: (Parameters)
1074-
# 36| 0: [Parameter] start
1075-
# 36| 4: [ThrowExpr] throw ...
1076-
# 36| 0: [NullLiteral] null
1077-
# 37| 16: [Method] EndAt
1078-
#-----| 2: (Parameters)
1079-
# 37| 0: [Parameter] end
1080-
# 37| 4: [ThrowExpr] throw ...
1081-
# 37| 0: [NullLiteral] null
1082-
# 38| 17: [Property] All
1083-
# 38| 3: [Getter] get_All
1084-
# 38| 4: [ThrowExpr] throw ...
1085-
# 38| 0: [NullLiteral] null
1086-
# 39| 18: [Method] Create
1087-
#-----| 2: (Parameters)
1088-
# 39| 0: [Parameter] start
1089-
# 39| 1: [Parameter] end
1090-
# 39| 4: [ThrowExpr] throw ...
1091-
# 39| 0: [NullLiteral] null
1092-
# 40| 19: [ImplicitConversionOperator] implicit conversion
1093-
#-----| 2: (Parameters)
1094-
# 40| 0: [Parameter] r
1095-
# 40| 4: [ThrowExpr] throw ...
1096-
# 40| 0: [NullLiteral] null
1016+
# 18| 0: [RangeExpr] ... .. ...
1017+
# 18| 0: [IndexExpr] ^...
1018+
# 18| 0: [IntLiteral] 10
1019+
# 18| 1: [IndexExpr] ^...
1020+
# 18| 0: [IntLiteral] 5
1021+
# 18| 1: [LocalVariableAccess] access to local variable slice7

csharp/ql/test/library-tests/csharp8/ranges.cs

Lines changed: 1 addition & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -7,36 +7,14 @@ class Ranges
77
void F()
88
{
99
var array = new int[] { 1, 2, 3, 4 };
10-
var array2 = new int[2, 3];
1110

1211
var slice1 = array[1..3];
1312
var slice2 = array[0..^1];
14-
int x=2, y=3;
13+
int x = 2, y = 3;
1514
var slice3 = array[x..y];
1615
var slice4 = array[..y];
1716
var slice5 = array[x..];
1817
var slice6 = array[..];
1918
var slice7 = array[^10..^5];
20-
var slice8 = array2[1..2, ..];
21-
}
22-
}
23-
24-
// These are temporary until qltest uses .NET Core 3.0.
25-
namespace System
26-
{
27-
public readonly struct Index
28-
{
29-
public Index(int value, bool fromEnd = false) { }
30-
public static implicit operator Index(int value) => default(Index);
31-
}
32-
33-
public readonly struct Range
34-
{
35-
public Range(Index start, Index end) => throw null;
36-
public static Range StartAt(System.Index start) => throw null;
37-
public static Range EndAt(System.Index end) => throw null;
38-
public static Range All => throw null;
39-
public static Range Create(Index start, Index end) => throw null;
40-
public static implicit operator int(Range r) => throw null;
4119
}
4220
}
Lines changed: 19 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,24 @@
11
indexes
2-
| ranges.cs:13:31:13:32 | ^... | ranges.cs:13:32:13:32 | 1 |
3-
| ranges.cs:19:28:19:30 | ^... | ranges.cs:19:29:19:30 | 10 |
4-
| ranges.cs:19:33:19:34 | ^... | ranges.cs:19:34:19:34 | 5 |
2+
| ranges.cs:12:31:12:32 | ^... | ranges.cs:12:32:12:32 | 1 |
3+
| ranges.cs:18:28:18:30 | ^... | ranges.cs:18:29:18:30 | 10 |
4+
| ranges.cs:18:33:18:34 | ^... | ranges.cs:18:34:18:34 | 5 |
55
ranges
6-
| ranges.cs:12:28:12:31 | ... .. ... |
7-
| ranges.cs:13:28:13:32 | ... .. ... |
8-
| ranges.cs:15:28:15:31 | ... .. ... |
6+
| ranges.cs:11:28:11:31 | ... .. ... |
7+
| ranges.cs:12:28:12:32 | ... .. ... |
8+
| ranges.cs:14:28:14:31 | ... .. ... |
9+
| ranges.cs:15:28:15:30 | ... .. ... |
910
| ranges.cs:16:28:16:30 | ... .. ... |
10-
| ranges.cs:17:28:17:30 | ... .. ... |
11-
| ranges.cs:18:28:18:29 | ... .. ... |
12-
| ranges.cs:19:28:19:34 | ... .. ... |
13-
| ranges.cs:20:29:20:32 | ... .. ... |
14-
| ranges.cs:20:35:20:36 | ... .. ... |
11+
| ranges.cs:17:28:17:29 | ... .. ... |
12+
| ranges.cs:18:28:18:34 | ... .. ... |
1513
rangeStart
16-
| ranges.cs:12:28:12:31 | ... .. ... | ranges.cs:12:28:12:28 | 1 |
17-
| ranges.cs:13:28:13:32 | ... .. ... | ranges.cs:13:28:13:28 | 0 |
18-
| ranges.cs:15:28:15:31 | ... .. ... | ranges.cs:15:28:15:28 | access to local variable x |
19-
| ranges.cs:17:28:17:30 | ... .. ... | ranges.cs:17:28:17:28 | access to local variable x |
20-
| ranges.cs:19:28:19:34 | ... .. ... | ranges.cs:19:28:19:30 | ^... |
21-
| ranges.cs:20:29:20:32 | ... .. ... | ranges.cs:20:29:20:29 | 1 |
14+
| ranges.cs:11:28:11:31 | ... .. ... | ranges.cs:11:28:11:28 | 1 |
15+
| ranges.cs:12:28:12:32 | ... .. ... | ranges.cs:12:28:12:28 | 0 |
16+
| ranges.cs:14:28:14:31 | ... .. ... | ranges.cs:14:28:14:28 | access to local variable x |
17+
| ranges.cs:16:28:16:30 | ... .. ... | ranges.cs:16:28:16:28 | access to local variable x |
18+
| ranges.cs:18:28:18:34 | ... .. ... | ranges.cs:18:28:18:30 | ^... |
2219
rangeEnd
23-
| ranges.cs:12:28:12:31 | ... .. ... | ranges.cs:12:31:12:31 | 3 |
24-
| ranges.cs:13:28:13:32 | ... .. ... | ranges.cs:13:31:13:32 | ^... |
25-
| ranges.cs:15:28:15:31 | ... .. ... | ranges.cs:15:31:15:31 | access to local variable y |
26-
| ranges.cs:16:28:16:30 | ... .. ... | ranges.cs:16:30:16:30 | access to local variable y |
27-
| ranges.cs:19:28:19:34 | ... .. ... | ranges.cs:19:33:19:34 | ^... |
28-
| ranges.cs:20:29:20:32 | ... .. ... | ranges.cs:20:32:20:32 | 2 |
20+
| ranges.cs:11:28:11:31 | ... .. ... | ranges.cs:11:31:11:31 | 3 |
21+
| ranges.cs:12:28:12:32 | ... .. ... | ranges.cs:12:31:12:32 | ^... |
22+
| ranges.cs:14:28:14:31 | ... .. ... | ranges.cs:14:31:14:31 | access to local variable y |
23+
| ranges.cs:15:28:15:30 | ... .. ... | ranges.cs:15:30:15:30 | access to local variable y |
24+
| ranges.cs:18:28:18:34 | ... .. ... | ranges.cs:18:33:18:34 | ^... |

0 commit comments

Comments
 (0)