Skip to content

Commit 2eb2922

Browse files
committed
C#: Update guards tests.
1 parent ecb22f1 commit 2eb2922

10 files changed

Lines changed: 81 additions & 78 deletions
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
// semmle-extractor-options: /langversion:8.0
2+
#nullable enable

csharp/ql/test/library-tests/controlflow/guards/AbstractValue.expected

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ abstractValue
7373
| empty | Collections.cs:87:30:87:31 | { ..., ... } |
7474
| empty | Collections.cs:88:22:88:23 | { ..., ... } |
7575
| false | Guards.cs:178:16:178:20 | false |
76-
| false | Guards.cs:181:52:181:56 | false |
76+
| false | Guards.cs:181:53:181:57 | false |
7777
| false | Guards.cs:217:18:217:22 | false |
7878
| false | Guards.cs:228:18:228:22 | false |
7979
| false | Guards.cs:295:18:295:22 | false |
@@ -153,7 +153,7 @@ abstractValue
153153
| non-null | Guards.cs:92:30:92:30 | (...) ... |
154154
| non-null | Guards.cs:96:18:96:19 | "" |
155155
| non-null | Guards.cs:105:19:105:33 | object creation of type Exception |
156-
| non-null | Guards.cs:183:37:183:48 | this access |
156+
| non-null | Guards.cs:183:38:183:49 | this access |
157157
| non-null | Guards.cs:189:14:189:25 | this access |
158158
| non-null | Guards.cs:191:14:191:25 | this access |
159159
| non-null | Guards.cs:193:14:193:25 | this access |
@@ -206,9 +206,9 @@ abstractValue
206206
| null | Guards.cs:115:52:115:55 | null |
207207
| null | Guards.cs:117:9:117:25 | ... = ... |
208208
| null | Guards.cs:117:22:117:25 | null |
209-
| null | Guards.cs:172:38:172:41 | null |
210-
| null | Guards.cs:181:38:181:41 | null |
211-
| null | Guards.cs:185:42:185:45 | null |
209+
| null | Guards.cs:172:39:172:42 | null |
210+
| null | Guards.cs:181:39:181:42 | null |
211+
| null | Guards.cs:185:43:185:46 | null |
212212
| null | Guards.cs:203:18:203:21 | null |
213213
| null | Splitting.cs:12:22:12:25 | null |
214214
| null | Splitting.cs:22:22:22:25 | null |
@@ -221,12 +221,12 @@ abstractValue
221221
| null | Splitting.cs:97:31:97:34 | null |
222222
| null | Splitting.cs:105:27:105:30 | null |
223223
| null | Splitting.cs:116:27:116:30 | null |
224-
| null | Splitting.cs:125:20:125:23 | null |
224+
| null | Splitting.cs:125:21:125:24 | null |
225225
| null | Splitting.cs:128:22:128:25 | null |
226226
| true | Guards.cs:177:20:177:23 | true |
227-
| true | Guards.cs:181:45:181:48 | true |
228-
| true | Guards.cs:185:49:185:52 | true |
229-
| true | Guards.cs:185:56:185:59 | true |
227+
| true | Guards.cs:181:46:181:49 | true |
228+
| true | Guards.cs:185:50:185:53 | true |
229+
| true | Guards.cs:185:57:185:60 | true |
230230
| true | Guards.cs:215:18:215:21 | true |
231231
| true | Guards.cs:220:18:220:21 | true |
232232
| true | Guards.cs:230:18:230:21 | true |

csharp/ql/test/library-tests/controlflow/guards/BooleanGuardedExpr.expected

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,8 @@
7373
| Guards.cs:198:31:198:31 | access to parameter s | Guards.cs:197:14:197:29 | call to method NullTestWrong | Guards.cs:197:28:197:28 | access to parameter s | false |
7474
| Guards.cs:205:13:205:13 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true |
7575
| Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true |
76-
| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:13:268:41 | call to operator == | Guards.cs:268:13:268:14 | access to parameter o1 | true |
77-
| Guards.cs:271:11:271:12 | access to parameter o1 | Guards.cs:270:13:270:42 | call to operator == | Guards.cs:270:13:270:14 | access to parameter o1 | true |
76+
| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:41 | call to operator == | Guards.cs:268:13:268:14 | access to parameter o1 | true |
77+
| Guards.cs:271:13:271:14 | access to parameter o1 | Guards.cs:270:13:270:42 | call to operator == | Guards.cs:270:13:270:14 | access to parameter o1 | true |
7878
| Splitting.cs:13:17:13:17 | access to parameter o | Splitting.cs:12:17:12:25 | ... != ... | Splitting.cs:12:17:12:17 | access to parameter o | true |
7979
| Splitting.cs:23:24:23:24 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | true |
8080
| Splitting.cs:25:13:25:13 | access to parameter o | Splitting.cs:22:17:22:25 | ... != ... | Splitting.cs:22:17:22:17 | access to parameter o | false |
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,2 @@
11
// semmle-extractor-options: --cil /langversion:8.0
2+
#nullable enable

csharp/ql/test/library-tests/controlflow/guards/GuardedControlFlowNode.expected

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,10 @@
171171
| Guards.cs:205:13:205:13 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true |
172172
| Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | non-null |
173173
| Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true |
174-
| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | non-null |
175-
| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:13:268:41 | call to operator == | Guards.cs:268:13:268:14 | access to parameter o1 | true |
176-
| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:16:268:25 | call to method GetType | Guards.cs:268:13:268:14 | access to parameter o1 | non-null |
177-
| Guards.cs:271:11:271:12 | access to parameter o1 | Guards.cs:270:13:270:42 | call to operator == | Guards.cs:270:13:270:14 | access to parameter o1 | true |
174+
| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | non-null |
175+
| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:41 | call to operator == | Guards.cs:268:13:268:14 | access to parameter o1 | true |
176+
| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:16:268:25 | call to method GetType | Guards.cs:268:13:268:14 | access to parameter o1 | non-null |
177+
| Guards.cs:271:13:271:14 | access to parameter o1 | Guards.cs:270:13:270:42 | call to operator == | Guards.cs:270:13:270:14 | access to parameter o1 | true |
178178
| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | match access to type Action<Object> |
179179
| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-null |
180180
| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | match "" |

csharp/ql/test/library-tests/controlflow/guards/GuardedExpr.expected

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -171,10 +171,10 @@
171171
| Guards.cs:205:13:205:13 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true |
172172
| Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | Guards.cs:203:13:203:13 | access to parameter o | non-null |
173173
| Guards.cs:208:17:208:17 | access to parameter o | Guards.cs:203:13:203:21 | ... != ... | Guards.cs:203:13:203:13 | access to parameter o | true |
174-
| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | non-null |
175-
| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:13:268:41 | call to operator == | Guards.cs:268:13:268:14 | access to parameter o1 | true |
176-
| Guards.cs:269:11:269:12 | access to parameter o1 | Guards.cs:268:16:268:25 | call to method GetType | Guards.cs:268:13:268:14 | access to parameter o1 | non-null |
177-
| Guards.cs:271:11:271:12 | access to parameter o1 | Guards.cs:270:13:270:42 | call to operator == | Guards.cs:270:13:270:14 | access to parameter o1 | true |
174+
| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | Guards.cs:268:13:268:14 | access to parameter o1 | non-null |
175+
| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:13:268:41 | call to operator == | Guards.cs:268:13:268:14 | access to parameter o1 | true |
176+
| Guards.cs:269:13:269:14 | access to parameter o1 | Guards.cs:268:16:268:25 | call to method GetType | Guards.cs:268:13:268:14 | access to parameter o1 | non-null |
177+
| Guards.cs:271:13:271:14 | access to parameter o1 | Guards.cs:270:13:270:42 | call to operator == | Guards.cs:270:13:270:14 | access to parameter o1 | true |
178178
| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | match access to type Action<Object> |
179179
| Guards.cs:279:17:279:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | non-null |
180180
| Guards.cs:283:17:283:17 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | Guards.cs:276:16:276:16 | access to parameter o | match "" |

csharp/ql/test/library-tests/controlflow/guards/Guards.cs

Lines changed: 33 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@
22

33
public class Guards
44
{
5-
public string Field;
6-
public Guards Property { get; set; }
5+
public string? Field;
6+
public Guards? Property { get; set; }
77

8-
void M1(string s)
8+
void M1(string? s)
99
{
1010
if (!!(s == null))
1111
return;
@@ -19,15 +19,15 @@ void M1(string s)
1919
}
2020
}
2121

22-
void M2(string s)
22+
void M2(string? s)
2323
{
2424
if (s != null)
2525
{
2626
Console.WriteLine(s); // null guarded
2727
}
2828
}
2929

30-
void M3(string x, string y)
30+
void M3(string? x, string? y)
3131
{
3232
if (!string.IsNullOrEmpty(x) & !(y == null))
3333
Console.WriteLine(x + y); // null guarded
@@ -63,7 +63,7 @@ void M5(Guards g)
6363
Console.WriteLine(g.Property.Field); // not null guarded
6464
}
6565

66-
void M6(string s)
66+
void M6(string? s)
6767
{
6868
while (s != null)
6969
{
@@ -73,7 +73,7 @@ void M6(string s)
7373
}
7474
}
7575

76-
void M7(string s)
76+
void M7(string? s)
7777
{
7878
if (s?.Length == 0)
7979
Console.WriteLine(s); // null guarded
@@ -119,34 +119,34 @@ void M9(Guards g)
119119
Console.WriteLine(g.Property.Field); // not null guarded
120120
}
121121

122-
void M10(string s1, string s2)
122+
void M10(string? s1, string? s2)
123123
{
124124
var b1 = s1.Equals(s2); // not null guarded
125125
var b2 = s1?.Equals(s1); // null guarded
126126
}
127127

128-
int M11(string s)
128+
int M11(string? s)
129129
{
130130
if (s is null)
131131
return s.Length; // not null guarded
132132
return s.Length; // null guarded
133133
}
134134

135-
int M12(string s)
135+
int M12(string? s)
136136
{
137137
if (s is string _)
138138
return s.Length; // null guarded
139139
return s.Length; // not null guarded
140140
}
141141

142-
string M13(object o)
142+
string M13(object? o)
143143
{
144144
if (o is string s)
145145
return s; // not null (but not a guard)
146146
return o.ToString(); // not null guarded
147147
}
148148

149-
string M14(object o)
149+
string M14(object? o)
150150
{
151151
switch (o)
152152
{
@@ -163,28 +163,28 @@ string M14(object o)
163163
}
164164
}
165165

166-
void M15(string x)
166+
void M15(string? x)
167167
{
168168
if (!string.IsNullOrWhiteSpace(x))
169169
Console.WriteLine(x); // null guarded
170170
}
171171

172-
bool NullTest1(object o) => o == null;
172+
bool NullTest1(object? o) => o == null;
173173

174-
bool NullTest2(object o)
174+
bool NullTest2(object? o)
175175
{
176176
if (o is null)
177177
return true;
178178
return false;
179179
}
180180

181-
bool NullTest3(object o) => o == null ? true : false;
181+
bool NullTest3(object? o) => o == null ? true : false;
182182

183-
bool NotNullTest4(object o) => !NullTest3(o);
183+
bool NotNullTest4(object? o) => !NullTest3(o);
184184

185-
bool NullTestWrong(object o) => o == null ? true : true;
185+
bool NullTestWrong(object? o) => o == null ? true : true;
186186

187-
void M16(string s)
187+
void M16(string? s)
188188
{
189189
if (!NullTest1(s))
190190
Console.WriteLine(s); // null guarded
@@ -198,7 +198,7 @@ void M16(string s)
198198
Console.WriteLine(s); // not null guarded
199199
}
200200

201-
void M17(object o, string[] args)
201+
void M17(object? o, string[] args)
202202
{
203203
if (o != null)
204204
{
@@ -217,9 +217,9 @@ void M18(bool b1)
217217
b2 = false;
218218
switch (b2)
219219
{
220-
case true :
220+
case true:
221+
return;
221222
return;
222-
return;
223223
}
224224
}
225225

@@ -230,9 +230,9 @@ void M19(bool b1)
230230
b2 = true;
231231
switch (b2)
232232
{
233-
case true :
233+
case true:
234+
return;
234235
return;
235-
return;
236236
}
237237
}
238238

@@ -243,9 +243,9 @@ void M20(bool b)
243243
i = 1;
244244
switch (i)
245245
{
246-
case 1 :
246+
case 1:
247+
return;
247248
return;
248-
return;
249249
}
250250
}
251251

@@ -257,21 +257,21 @@ void M21(bool b)
257257
e = E.B;
258258
switch (e)
259259
{
260-
case E.B :
260+
case E.B:
261+
return;
261262
return;
262-
return;
263263
}
264264
}
265265

266-
void M22(object o1, object o2)
266+
void M22(object? o1, object? o2)
267267
{
268268
if (o1?.GetType() == o2.GetType())
269-
o1.ToString(); // null guarded
269+
o1.ToString(); // null guarded
270270
if (o1?.GetType() == o2?.GetType())
271-
o1.ToString(); // not null guarded
271+
o1.ToString(); // not null guarded
272272
}
273273

274-
string M23(object o)
274+
string M23(object? o)
275275
{
276276
return o switch
277277
{
@@ -336,3 +336,4 @@ int M27(bool b)
336336
};
337337
}
338338
}
339+

csharp/ql/test/library-tests/controlflow/guards/Implications.expected

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -334,22 +334,22 @@
334334
| Guards.cs:168:13:168:41 | !... | false | Guards.cs:168:14:168:41 | call to method IsNullOrWhiteSpace | true |
335335
| Guards.cs:168:13:168:41 | !... | true | Guards.cs:168:14:168:41 | call to method IsNullOrWhiteSpace | false |
336336
| Guards.cs:168:14:168:41 | call to method IsNullOrWhiteSpace | false | Guards.cs:168:40:168:40 | access to parameter x | non-null |
337-
| Guards.cs:172:33:172:41 | ... == ... | false | Guards.cs:172:33:172:33 | access to parameter o | non-null |
338-
| Guards.cs:172:33:172:41 | ... == ... | true | Guards.cs:172:33:172:33 | access to parameter o | null |
337+
| Guards.cs:172:34:172:42 | ... == ... | false | Guards.cs:172:34:172:34 | access to parameter o | non-null |
338+
| Guards.cs:172:34:172:42 | ... == ... | true | Guards.cs:172:34:172:34 | access to parameter o | null |
339339
| Guards.cs:176:13:176:21 | ... is ... | false | Guards.cs:176:13:176:13 | access to parameter o | non-null |
340340
| Guards.cs:176:13:176:21 | ... is ... | true | Guards.cs:176:13:176:13 | access to parameter o | null |
341-
| Guards.cs:181:33:181:41 | ... == ... | false | Guards.cs:181:33:181:33 | access to parameter o | non-null |
342-
| Guards.cs:181:33:181:41 | ... == ... | true | Guards.cs:181:33:181:33 | access to parameter o | null |
343-
| Guards.cs:181:33:181:56 | ... ? ... : ... | false | Guards.cs:181:33:181:41 | ... == ... | false |
344-
| Guards.cs:181:33:181:56 | ... ? ... : ... | true | Guards.cs:181:33:181:41 | ... == ... | true |
345-
| Guards.cs:183:36:183:48 | !... | false | Guards.cs:183:37:183:48 | call to method NullTest3 | true |
346-
| Guards.cs:183:36:183:48 | !... | true | Guards.cs:183:37:183:48 | call to method NullTest3 | false |
347-
| Guards.cs:183:37:183:48 | call to method NullTest3 | false | Guards.cs:183:47:183:47 | access to parameter o | non-null |
348-
| Guards.cs:183:37:183:48 | call to method NullTest3 | true | Guards.cs:183:47:183:47 | access to parameter o | null |
349-
| Guards.cs:185:37:185:45 | ... == ... | false | Guards.cs:185:37:185:37 | access to parameter o | non-null |
350-
| Guards.cs:185:37:185:45 | ... == ... | true | Guards.cs:185:37:185:37 | access to parameter o | null |
351-
| Guards.cs:185:37:185:59 | ... ? ... : ... | false | Guards.cs:185:37:185:45 | ... == ... | false |
352-
| Guards.cs:185:37:185:59 | ... ? ... : ... | false | Guards.cs:185:37:185:45 | ... == ... | true |
341+
| Guards.cs:181:34:181:42 | ... == ... | false | Guards.cs:181:34:181:34 | access to parameter o | non-null |
342+
| Guards.cs:181:34:181:42 | ... == ... | true | Guards.cs:181:34:181:34 | access to parameter o | null |
343+
| Guards.cs:181:34:181:57 | ... ? ... : ... | false | Guards.cs:181:34:181:42 | ... == ... | false |
344+
| Guards.cs:181:34:181:57 | ... ? ... : ... | true | Guards.cs:181:34:181:42 | ... == ... | true |
345+
| Guards.cs:183:37:183:49 | !... | false | Guards.cs:183:38:183:49 | call to method NullTest3 | true |
346+
| Guards.cs:183:37:183:49 | !... | true | Guards.cs:183:38:183:49 | call to method NullTest3 | false |
347+
| Guards.cs:183:38:183:49 | call to method NullTest3 | false | Guards.cs:183:48:183:48 | access to parameter o | non-null |
348+
| Guards.cs:183:38:183:49 | call to method NullTest3 | true | Guards.cs:183:48:183:48 | access to parameter o | null |
349+
| Guards.cs:185:38:185:46 | ... == ... | false | Guards.cs:185:38:185:38 | access to parameter o | non-null |
350+
| Guards.cs:185:38:185:46 | ... == ... | true | Guards.cs:185:38:185:38 | access to parameter o | null |
351+
| Guards.cs:185:38:185:60 | ... ? ... : ... | false | Guards.cs:185:38:185:46 | ... == ... | false |
352+
| Guards.cs:185:38:185:60 | ... ? ... : ... | false | Guards.cs:185:38:185:46 | ... == ... | true |
353353
| Guards.cs:189:13:189:25 | !... | false | Guards.cs:189:14:189:25 | call to method NullTest1 | true |
354354
| Guards.cs:189:13:189:25 | !... | true | Guards.cs:189:14:189:25 | call to method NullTest1 | false |
355355
| Guards.cs:189:14:189:25 | call to method NullTest1 | false | Guards.cs:189:24:189:24 | access to parameter s | non-null |

csharp/ql/test/library-tests/controlflow/guards/NullGuardedExpr.expected

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@
4141
| Guards.cs:196:31:196:31 | access to parameter s |
4242
| Guards.cs:205:13:205:13 | access to parameter o |
4343
| Guards.cs:208:17:208:17 | access to parameter o |
44-
| Guards.cs:269:11:269:12 | access to parameter o1 |
44+
| Guards.cs:269:13:269:14 | access to parameter o1 |
4545
| Guards.cs:279:17:279:17 | access to parameter o |
4646
| Guards.cs:283:17:283:17 | access to parameter o |
4747
| Guards.cs:287:17:287:17 | access to parameter o |

0 commit comments

Comments
 (0)