Skip to content

Commit 57f0a87

Browse files
committed
C#: Add a test case for pattern expression types.
1 parent 730d04c commit 57f0a87

6 files changed

Lines changed: 269 additions & 14 deletions

File tree

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
| ListPattern.cs:7:18:7:19 | [ ... ] | null |
2+
| ListPattern.cs:8:18:8:20 | [ ... ] | null |
3+
| ListPattern.cs:8:19:8:19 | 1 | Int32 |
4+
| ListPattern.cs:9:18:9:23 | [ ... ] | null |
5+
| ListPattern.cs:9:19:9:19 | _ | Int32 |
6+
| ListPattern.cs:9:22:9:22 | 2 | Int32 |
7+
| ListPattern.cs:10:18:10:30 | [ ... ] | null |
8+
| ListPattern.cs:10:19:10:23 | Int32 y | Int32 |
9+
| ListPattern.cs:10:26:10:26 | 3 | Int32 |
10+
| ListPattern.cs:10:29:10:29 | 4 | Int32 |
11+
| ListPattern.cs:11:18:11:31 | [ ... ] | null |
12+
| ListPattern.cs:11:19:11:19 | 5 | Int32 |
13+
| ListPattern.cs:11:19:11:24 | ... or ... | null |
14+
| ListPattern.cs:11:24:11:24 | 6 | Int32 |
15+
| ListPattern.cs:11:27:11:27 | _ | Int32 |
16+
| ListPattern.cs:11:30:11:30 | 7 | Int32 |
17+
| ListPattern.cs:12:18:12:31 | [ ... ] | null |
18+
| ListPattern.cs:12:19:12:23 | Int32 a | Int32 |
19+
| ListPattern.cs:12:26:12:27 | .. | null |
20+
| ListPattern.cs:12:30:12:30 | 2 | Int32 |
21+
| ListPattern.cs:13:18:13:50 | [ ... ] | null |
22+
| ListPattern.cs:13:19:13:23 | Int32 b | Int32 |
23+
| ListPattern.cs:13:26:13:46 | .. | null |
24+
| ListPattern.cs:13:29:13:46 | { ... } | null |
25+
| ListPattern.cs:13:29:13:46 | { ... } | null |
26+
| ListPattern.cs:13:39:13:39 | 2 | Int32 |
27+
| ListPattern.cs:13:39:13:44 | ... or ... | null |
28+
| ListPattern.cs:13:44:13:44 | 5 | Int32 |
29+
| ListPattern.cs:13:49:13:49 | 2 | Int32 |
30+
| ListPattern.cs:20:18:20:19 | [ ... ] | null |
31+
| ListPattern.cs:22:18:22:22 | [ ... ] | null |
32+
| ListPattern.cs:22:19:22:21 | "A" | String |
33+
| ListPattern.cs:24:18:24:25 | [ ... ] | null |
34+
| ListPattern.cs:24:19:24:19 | _ | String |
35+
| ListPattern.cs:24:22:24:24 | "B" | String |
36+
| ListPattern.cs:26:18:26:34 | [ ... ] | null |
37+
| ListPattern.cs:26:19:26:23 | String y | String |
38+
| ListPattern.cs:26:26:26:28 | "C" | String |
39+
| ListPattern.cs:26:31:26:33 | "D" | String |
40+
| ListPattern.cs:28:18:28:37 | [ ... ] | null |
41+
| ListPattern.cs:28:19:28:21 | "E" | String |
42+
| ListPattern.cs:28:19:28:28 | ... or ... | null |
43+
| ListPattern.cs:28:26:28:28 | "F" | String |
44+
| ListPattern.cs:28:31:28:31 | _ | String |
45+
| ListPattern.cs:28:34:28:36 | "G" | String |
46+
| ListPattern.cs:30:18:30:33 | [ ... ] | null |
47+
| ListPattern.cs:30:19:30:23 | String a | String |
48+
| ListPattern.cs:30:26:30:27 | .. | null |
49+
| ListPattern.cs:30:30:30:32 | "H" | String |
50+
| ListPattern.cs:32:18:32:39 | [ ... ] | null |
51+
| ListPattern.cs:32:19:32:23 | String b | String |
52+
| ListPattern.cs:32:26:32:33 | .. | null |
53+
| ListPattern.cs:32:29:32:33 | String[] c | String[] |
54+
| ListPattern.cs:32:36:32:38 | "I" | String |
55+
| PatternMatchSpan.cs:8:19:8:23 | "ABC" | String |
56+
| PatternMatchSpan.cs:15:18:15:22 | "DEF" | String |
57+
| Strings.cs:10:13:10:14 | 42 | Int32 |
58+
| Strings.cs:11:13:11:13 | _ | Int32 |
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import csharp
2+
3+
from PatternExpr pattern
4+
select pattern, pattern.getType().toString()

‎csharp/ql/test/library-tests/csharp8/patterns.expected‎

Lines changed: 137 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -188,16 +188,140 @@ labeledPatternExpr
188188
| patterns.cs:129:27:129:28 | 10 | X |
189189
| patterns.cs:142:31:142:32 | 10 | X |
190190
tupleTypes
191-
| patterns.cs:59:18:59:27 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) |
192-
| patterns.cs:86:15:86:19 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) |
193-
| patterns.cs:91:16:91:20 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) |
194-
| patterns.cs:108:9:108:20 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) |
195-
| patterns.cs:108:24:108:31 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) |
196-
| patterns.cs:110:22:110:26 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) |
197-
| patterns.cs:111:22:111:26 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) |
198-
| patterns.cs:115:9:115:16 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) |
199-
| patterns.cs:115:20:115:27 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) |
200-
| patterns.cs:117:27:117:33 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) |
201-
| patterns.cs:118:28:118:34 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) |
202-
| patterns.cs:119:33:119:38 | (..., ...) | file://:0:0:0:0 | (Int32,Int32) |
203-
| patterns.cs:131:13:131:22 | (..., ...) | file://:0:0:0:0 | (Int32,Object) |
191+
| patterns.cs:59:18:59:27 | (..., ...) | (Int32,Int32) |
192+
| patterns.cs:86:15:86:19 | (..., ...) | (Int32,Int32) |
193+
| patterns.cs:91:16:91:20 | (..., ...) | (Int32,Int32) |
194+
| patterns.cs:108:9:108:20 | (..., ...) | (Int32,Int32) |
195+
| patterns.cs:108:24:108:31 | (..., ...) | (Int32,Int32) |
196+
| patterns.cs:110:22:110:26 | (..., ...) | (Int32,Int32) |
197+
| patterns.cs:111:22:111:26 | (..., ...) | (Int32,Int32) |
198+
| patterns.cs:115:9:115:16 | (..., ...) | (Int32,Int32) |
199+
| patterns.cs:115:20:115:27 | (..., ...) | (Int32,Int32) |
200+
| patterns.cs:117:27:117:33 | (..., ...) | (Int32,Int32) |
201+
| patterns.cs:118:28:118:34 | (..., ...) | (Int32,Int32) |
202+
| patterns.cs:119:33:119:38 | (..., ...) | (Int32,Int32) |
203+
| patterns.cs:131:13:131:22 | (..., ...) | (Int32,Object) |
204+
patternExprTypes
205+
| patterns.cs:9:18:9:29 | MyStruct ms1 | MyStruct |
206+
| patterns.cs:13:18:13:25 | access to type MyStruct | MyStruct |
207+
| patterns.cs:13:18:13:40 | MyStruct s | MyStruct |
208+
| patterns.cs:13:18:13:40 | { ... } | null |
209+
| patterns.cs:13:27:13:38 | { ... } | null |
210+
| patterns.cs:13:32:13:36 | Int32 x | Int32 |
211+
| patterns.cs:17:18:17:19 | { ... } | null |
212+
| patterns.cs:17:18:17:21 | Object p | Object |
213+
| patterns.cs:17:18:17:21 | { ... } | null |
214+
| patterns.cs:22:18:22:25 | access to type MyStruct | MyStruct |
215+
| patterns.cs:22:18:22:53 | { ... } | null |
216+
| patterns.cs:22:27:22:53 | { ... } | null |
217+
| patterns.cs:22:31:22:32 | 12 | Int32 |
218+
| patterns.cs:22:38:22:51 | { ... } | null |
219+
| patterns.cs:22:38:22:51 | { ... } | null |
220+
| patterns.cs:22:42:22:49 | Int32 subX | Int32 |
221+
| patterns.cs:27:18:27:25 | access to type MyStruct | MyStruct |
222+
| patterns.cs:27:18:27:58 | { ... } | null |
223+
| patterns.cs:27:27:27:58 | { ... } | null |
224+
| patterns.cs:27:31:27:32 | 12 | Int32 |
225+
| patterns.cs:27:38:27:45 | access to type MyStruct | MyStruct |
226+
| patterns.cs:27:38:27:56 | MyStruct ms | MyStruct |
227+
| patterns.cs:27:38:27:56 | { ... } | null |
228+
| patterns.cs:27:47:27:53 | { ... } | null |
229+
| patterns.cs:27:51:27:51 | _ | Int32 |
230+
| patterns.cs:38:18:38:29 | MyStruct ms1 | MyStruct |
231+
| patterns.cs:41:18:41:29 | MyStruct ms2 | MyStruct |
232+
| patterns.cs:48:18:48:25 | access to type MyStruct | MyStruct |
233+
| patterns.cs:48:18:48:38 | { ... } | null |
234+
| patterns.cs:48:27:48:38 | { ... } | null |
235+
| patterns.cs:48:32:48:36 | Int32 x | Int32 |
236+
| patterns.cs:51:18:51:25 | access to type MyStruct | MyStruct |
237+
| patterns.cs:51:18:51:38 | MyStruct ms | MyStruct |
238+
| patterns.cs:51:18:51:38 | { ... } | null |
239+
| patterns.cs:51:27:51:35 | { ... } | null |
240+
| patterns.cs:51:32:51:33 | 10 | Int32 |
241+
| patterns.cs:54:18:54:30 | { ... } | null |
242+
| patterns.cs:54:18:54:30 | { ... } | null |
243+
| patterns.cs:54:23:54:28 | Int32 x2 | Int32 |
244+
| patterns.cs:57:18:57:23 | ( ... ) | null |
245+
| patterns.cs:57:18:57:23 | { ... } | null |
246+
| patterns.cs:57:19:57:19 | 1 | Int32 |
247+
| patterns.cs:57:22:57:22 | 2 | Int32 |
248+
| patterns.cs:59:18:59:27 | (..., ...) | (Int32,Int32) |
249+
| patterns.cs:59:23:59:23 | Int32 x | Int32 |
250+
| patterns.cs:59:26:59:26 | Int32 y | Int32 |
251+
| patterns.cs:67:18:67:25 | access to type MyStruct | MyStruct |
252+
| patterns.cs:67:18:67:38 | { ... } | null |
253+
| patterns.cs:67:27:67:38 | { ... } | null |
254+
| patterns.cs:67:32:67:36 | Int32 x | Int32 |
255+
| patterns.cs:70:18:70:25 | access to type MyStruct | MyStruct |
256+
| patterns.cs:70:18:70:38 | MyStruct ms | MyStruct |
257+
| patterns.cs:70:18:70:38 | { ... } | null |
258+
| patterns.cs:70:27:70:35 | { ... } | null |
259+
| patterns.cs:70:32:70:33 | 10 | Int32 |
260+
| patterns.cs:78:18:78:33 | ( ... ) | null |
261+
| patterns.cs:78:18:78:33 | { ... } | null |
262+
| patterns.cs:78:19:78:23 | Int32 x | Int32 |
263+
| patterns.cs:78:26:78:32 | Single y | Single |
264+
| patterns.cs:80:18:80:19 | ( ... ) | null |
265+
| patterns.cs:80:18:80:19 | { ... } | null |
266+
| patterns.cs:82:18:82:19 | { ... } | null |
267+
| patterns.cs:82:18:82:19 | { ... } | null |
268+
| patterns.cs:88:18:88:23 | ( ... ) | null |
269+
| patterns.cs:88:18:88:23 | { ... } | null |
270+
| patterns.cs:88:19:88:19 | 1 | Int32 |
271+
| patterns.cs:88:22:88:22 | 2 | Int32 |
272+
| patterns.cs:93:18:93:27 | ( ... ) | null |
273+
| patterns.cs:93:18:93:27 | { ... } | null |
274+
| patterns.cs:93:19:93:19 | 1 | Int32 |
275+
| patterns.cs:93:22:93:26 | Int32 x | Int32 |
276+
| patterns.cs:94:18:94:23 | ( ... ) | null |
277+
| patterns.cs:94:18:94:23 | { ... } | null |
278+
| patterns.cs:94:19:94:19 | 2 | Int32 |
279+
| patterns.cs:94:22:94:22 | _ | Int32 |
280+
| patterns.cs:101:13:101:17 | Int32 y | Int32 |
281+
| patterns.cs:102:13:102:13 | _ | Int32 |
282+
| patterns.cs:110:13:110:17 | ( ... ) | null |
283+
| patterns.cs:110:13:110:17 | { ... } | null |
284+
| patterns.cs:110:14:110:14 | 0 | Int32 |
285+
| patterns.cs:110:16:110:16 | 1 | Int32 |
286+
| patterns.cs:111:13:111:17 | ( ... ) | null |
287+
| patterns.cs:111:13:111:17 | { ... } | null |
288+
| patterns.cs:111:14:111:14 | 1 | Int32 |
289+
| patterns.cs:111:16:111:16 | 0 | Int32 |
290+
| patterns.cs:117:13:117:22 | ( ... ) | null |
291+
| patterns.cs:117:13:117:22 | { ... } | null |
292+
| patterns.cs:117:14:117:14 | 0 | Int32 |
293+
| patterns.cs:117:16:117:21 | Int32 y2 | Int32 |
294+
| patterns.cs:118:13:118:23 | ( ... ) | null |
295+
| patterns.cs:118:13:118:23 | { ... } | null |
296+
| patterns.cs:118:14:118:19 | Int32 x2 | Int32 |
297+
| patterns.cs:118:22:118:22 | 0 | Int32 |
298+
| patterns.cs:119:13:119:28 | ( ... ) | null |
299+
| patterns.cs:119:13:119:28 | { ... } | null |
300+
| patterns.cs:119:14:119:19 | Int32 x2 | Int32 |
301+
| patterns.cs:119:22:119:27 | Int32 y2 | Int32 |
302+
| patterns.cs:128:13:128:20 | access to type MyStruct | MyStruct |
303+
| patterns.cs:128:13:128:33 | { ... } | null |
304+
| patterns.cs:128:22:128:33 | { ... } | null |
305+
| patterns.cs:128:27:128:31 | Int32 x | Int32 |
306+
| patterns.cs:129:13:129:20 | access to type MyStruct | MyStruct |
307+
| patterns.cs:129:13:129:33 | MyStruct ms | MyStruct |
308+
| patterns.cs:129:13:129:33 | { ... } | null |
309+
| patterns.cs:129:22:129:30 | { ... } | null |
310+
| patterns.cs:129:27:129:28 | 10 | Int32 |
311+
| patterns.cs:130:13:130:18 | ( ... ) | null |
312+
| patterns.cs:130:13:130:18 | { ... } | null |
313+
| patterns.cs:130:14:130:14 | 1 | Int32 |
314+
| patterns.cs:130:17:130:17 | 2 | Int32 |
315+
| patterns.cs:131:13:131:22 | (..., ...) | (Int32,Object) |
316+
| patterns.cs:131:18:131:18 | Int32 x | Int32 |
317+
| patterns.cs:131:21:131:21 | _ | null |
318+
| patterns.cs:138:17:138:17 | 1 | Int32 |
319+
| patterns.cs:139:17:139:17 | 2 | Int32 |
320+
| patterns.cs:140:17:140:24 | Object y | Object |
321+
| patterns.cs:140:36:140:37 | { ... } | null |
322+
| patterns.cs:140:36:140:37 | { ... } | null |
323+
| patterns.cs:141:17:141:22 | access to type String | String |
324+
| patterns.cs:142:17:142:24 | access to type MyStruct | MyStruct |
325+
| patterns.cs:142:17:142:36 | { ... } | null |
326+
| patterns.cs:142:26:142:34 | { ... } | null |
327+
| patterns.cs:142:31:142:32 | 10 | Int32 |

‎csharp/ql/test/library-tests/csharp8/patterns.ql‎

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,4 +68,8 @@ query predicate isRecursivePatternExprWithDecl(
6868

6969
query predicate labeledPatternExpr(LabeledPatternExpr e, string s) { s = e.getLabel() }
7070

71-
query predicate tupleTypes(TupleExpr te, Type t) { te.getType() = t }
71+
query predicate tupleTypes(TupleExpr te, string type) { te.getType().toString() = type }
72+
73+
query predicate patternExprTypes(PatternExpr pattern, string type) {
74+
pattern.getType().toString() = type
75+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
| BinaryPattern.cs:8:14:8:16 | a | Char |
2+
| BinaryPattern.cs:8:14:8:23 | ... or ... | null |
3+
| BinaryPattern.cs:8:21:8:23 | b | Char |
4+
| BinaryPattern.cs:10:14:10:21 | Object o | Object |
5+
| BinaryPattern.cs:10:14:10:51 | ... and ... | null |
6+
| BinaryPattern.cs:10:27:10:39 | access to type BinaryPattern | BinaryPattern |
7+
| BinaryPattern.cs:10:27:10:51 | BinaryPattern u | BinaryPattern |
8+
| BinaryPattern.cs:10:27:10:51 | { ... } | null |
9+
| BinaryPattern.cs:10:41:10:49 | { ... } | null |
10+
| BinaryPattern.cs:10:47:10:47 | 1 | Int32 |
11+
| BinaryPattern.cs:12:14:12:21 | Object o | Object |
12+
| BinaryPattern.cs:12:14:12:41 | ... and ... | null |
13+
| BinaryPattern.cs:12:27:12:41 | BinaryPattern u | BinaryPattern |
14+
| BinaryPattern.cs:18:13:18:13 | 1 | Int32 |
15+
| BinaryPattern.cs:18:13:18:18 | ... or ... | null |
16+
| BinaryPattern.cs:18:18:18:18 | 2 | Int32 |
17+
| BinaryPattern.cs:19:13:19:13 | _ | Int32 |
18+
| ParenthesizedPattern.cs:9:18:9:19 | { ... } | null |
19+
| ParenthesizedPattern.cs:9:18:9:22 | Object p1 | Object |
20+
| ParenthesizedPattern.cs:9:18:9:22 | { ... } | null |
21+
| ParenthesizedPattern.cs:13:19:13:20 | { ... } | null |
22+
| ParenthesizedPattern.cs:13:19:13:23 | Object p2 | Object |
23+
| ParenthesizedPattern.cs:13:19:13:23 | { ... } | null |
24+
| ParenthesizedPattern.cs:22:13:22:13 | 1 | Int32 |
25+
| ParenthesizedPattern.cs:23:14:23:14 | 2 | Int32 |
26+
| ParenthesizedPattern.cs:24:13:24:15 | T t | T |
27+
| ParenthesizedPattern.cs:24:27:24:28 | { ... } | null |
28+
| ParenthesizedPattern.cs:24:27:24:28 | { ... } | null |
29+
| ParenthesizedPattern.cs:25:14:25:22 | Object o1 | Object |
30+
| ParenthesizedPattern.cs:25:37:25:38 | { ... } | null |
31+
| ParenthesizedPattern.cs:25:37:25:38 | { ... } | null |
32+
| ParenthesizedPattern.cs:26:14:26:19 | access to type String | String |
33+
| RelationalPattern.cs:6:14:6:19 | >= ... | null |
34+
| RelationalPattern.cs:8:14:8:18 | > ... | null |
35+
| RelationalPattern.cs:10:14:10:19 | <= ... | null |
36+
| RelationalPattern.cs:12:14:12:18 | < ... | null |
37+
| RelationalPattern.cs:18:13:18:13 | 1 | Int32 |
38+
| RelationalPattern.cs:19:13:19:14 | > ... | null |
39+
| RelationalPattern.cs:20:13:20:13 | _ | Int32 |
40+
| TargetType.cs:31:38:31:41 | null | null |
41+
| TypePattern.cs:8:18:8:30 | ( ... ) | null |
42+
| TypePattern.cs:8:18:8:30 | { ... } | null |
43+
| TypePattern.cs:8:19:8:21 | access to type Int32 | Int32 |
44+
| TypePattern.cs:8:24:8:29 | access to type String | String |
45+
| TypePattern.cs:11:13:11:15 | access to type Int32 | Int32 |
46+
| TypePattern.cs:12:13:12:20 | Double d | Double |
47+
| TypePattern.cs:13:13:13:25 | access to type String | String |
48+
| TypePattern.cs:14:13:14:27 | Object o | Object |
49+
| UnaryPattern.cs:8:14:8:20 | not ... | null |
50+
| UnaryPattern.cs:8:18:8:20 | a | Char |
51+
| UnaryPattern.cs:10:14:10:21 | not ... | null |
52+
| UnaryPattern.cs:10:18:10:21 | null | null |
53+
| UnaryPattern.cs:12:14:12:41 | not ... | null |
54+
| UnaryPattern.cs:12:18:12:29 | access to type UnaryPattern | UnaryPattern |
55+
| UnaryPattern.cs:12:18:12:41 | UnaryPattern u | UnaryPattern |
56+
| UnaryPattern.cs:12:18:12:41 | { ... } | null |
57+
| UnaryPattern.cs:12:31:12:39 | { ... } | null |
58+
| UnaryPattern.cs:12:37:12:37 | 1 | Int32 |
59+
| UnaryPattern.cs:18:13:18:17 | not ... | null |
60+
| UnaryPattern.cs:18:17:18:17 | 1 | Int32 |
61+
| UnaryPattern.cs:19:13:19:13 | _ | Int32 |
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import csharp
2+
3+
from PatternExpr pattern
4+
select pattern, pattern.getType().toString()

0 commit comments

Comments
 (0)