Skip to content

Commit 04db1bf

Browse files
committed
C#: Add data flow test for methods with multiple out/ref parameters
1 parent a1b4d09 commit 04db1bf

File tree

8 files changed

+5514
-5226
lines changed

8 files changed

+5514
-5226
lines changed

csharp/ql/test/library-tests/dataflow/global/DataFlow.expected

Lines changed: 21 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,27 @@
1717
| GlobalDataFlow.cs:73:15:73:19 | access to local variable sink1 |
1818
| GlobalDataFlow.cs:76:15:76:19 | access to local variable sink2 |
1919
| GlobalDataFlow.cs:79:15:79:19 | access to local variable sink3 |
20-
| GlobalDataFlow.cs:132:15:132:19 | access to local variable sink4 |
21-
| GlobalDataFlow.cs:140:15:140:19 | access to local variable sink5 |
22-
| GlobalDataFlow.cs:150:15:150:19 | access to local variable sink6 |
23-
| GlobalDataFlow.cs:153:15:153:19 | access to local variable sink7 |
24-
| GlobalDataFlow.cs:156:15:156:19 | access to local variable sink8 |
25-
| GlobalDataFlow.cs:160:15:160:20 | access to local variable sink23 |
26-
| GlobalDataFlow.cs:177:15:177:19 | access to local variable sink9 |
27-
| GlobalDataFlow.cs:186:15:186:20 | access to local variable sink10 |
28-
| GlobalDataFlow.cs:194:15:194:20 | access to local variable sink19 |
29-
| GlobalDataFlow.cs:233:15:233:24 | access to parameter sinkParam0 |
30-
| GlobalDataFlow.cs:238:15:238:24 | access to parameter sinkParam1 |
31-
| GlobalDataFlow.cs:243:15:243:24 | access to parameter sinkParam3 |
32-
| GlobalDataFlow.cs:248:15:248:24 | access to parameter sinkParam4 |
33-
| GlobalDataFlow.cs:253:15:253:24 | access to parameter sinkParam5 |
34-
| GlobalDataFlow.cs:258:15:258:24 | access to parameter sinkParam6 |
35-
| GlobalDataFlow.cs:263:15:263:24 | access to parameter sinkParam7 |
36-
| GlobalDataFlow.cs:376:15:376:20 | access to local variable sink11 |
37-
| GlobalDataFlow.cs:399:41:399:46 | access to local variable sink20 |
20+
| GlobalDataFlow.cs:107:15:107:22 | access to local variable nonSink0 |
21+
| GlobalDataFlow.cs:109:15:109:22 | access to local variable nonSink0 |
22+
| GlobalDataFlow.cs:111:15:111:22 | access to local variable nonSink0 |
23+
| GlobalDataFlow.cs:136:15:136:19 | access to local variable sink4 |
24+
| GlobalDataFlow.cs:144:15:144:19 | access to local variable sink5 |
25+
| GlobalDataFlow.cs:154:15:154:19 | access to local variable sink6 |
26+
| GlobalDataFlow.cs:157:15:157:19 | access to local variable sink7 |
27+
| GlobalDataFlow.cs:160:15:160:19 | access to local variable sink8 |
28+
| GlobalDataFlow.cs:164:15:164:20 | access to local variable sink23 |
29+
| GlobalDataFlow.cs:181:15:181:19 | access to local variable sink9 |
30+
| GlobalDataFlow.cs:190:15:190:20 | access to local variable sink10 |
31+
| GlobalDataFlow.cs:198:15:198:20 | access to local variable sink19 |
32+
| GlobalDataFlow.cs:237:15:237:24 | access to parameter sinkParam0 |
33+
| GlobalDataFlow.cs:242:15:242:24 | access to parameter sinkParam1 |
34+
| GlobalDataFlow.cs:247:15:247:24 | access to parameter sinkParam3 |
35+
| GlobalDataFlow.cs:252:15:252:24 | access to parameter sinkParam4 |
36+
| GlobalDataFlow.cs:257:15:257:24 | access to parameter sinkParam5 |
37+
| GlobalDataFlow.cs:262:15:262:24 | access to parameter sinkParam6 |
38+
| GlobalDataFlow.cs:267:15:267:24 | access to parameter sinkParam7 |
39+
| GlobalDataFlow.cs:381:15:381:20 | access to local variable sink11 |
40+
| GlobalDataFlow.cs:404:41:404:46 | access to local variable sink20 |
3841
| Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x |
3942
| Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x |
4043
| Splitting.cs:11:19:11:19 | access to local variable x |

csharp/ql/test/library-tests/dataflow/global/DataFlowEdges.expected

Lines changed: 2172 additions & 2059 deletions
Large diffs are not rendered by default.

csharp/ql/test/library-tests/dataflow/global/DataFlowPath.expected

Lines changed: 81 additions & 71 deletions
Large diffs are not rendered by default.

csharp/ql/test/library-tests/dataflow/global/GetAnOutNode.expected

Lines changed: 97 additions & 94 deletions
Large diffs are not rendered by default.

csharp/ql/test/library-tests/dataflow/global/GlobalDataFlow.cs

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -72,10 +72,10 @@ public void M()
7272
var sink1 = (string)typeof(DataFlow).GetMethod("Return").Invoke(null, new object[] { sink0 });
7373
Check(sink1);
7474
string sink2;
75-
ReturnOut(sink1, out sink2);
75+
ReturnOut(sink1, out sink2, out var _);
7676
Check(sink2);
7777
var sink3 = "";
78-
ReturnRef(sink2, ref sink3);
78+
ReturnRef(sink2, ref sink3, ref sink3);
7979
Check(sink3);
8080
var sink13 = ((IEnumerable<string>)new string[] { sink3 }).SelectEven(x => x);
8181
Check(sink13);
@@ -101,9 +101,13 @@ public void M()
101101
Check(nonSink0);
102102
nonSink0 = (string)typeof(DataFlow).GetMethod("Return").Invoke(null, new object[] { nonSink0 });
103103
Check(nonSink0);
104-
ReturnOut("", out nonSink0);
104+
ReturnOut("", out nonSink0, out var _);
105105
Check(nonSink0);
106-
ReturnRef("", ref nonSink0);
106+
ReturnOut(sink1, out var _, out nonSink0);
107+
Check(nonSink0);
108+
ReturnRef("", ref nonSink0, ref nonSink0);
109+
Check(nonSink0);
110+
ReturnRef(sink1, ref sink1, ref nonSink0);
107111
Check(nonSink0);
108112
var nonSink1 = ((IEnumerable<string>)new string[] { nonSink0 }).SelectEven(x => x);
109113
Check(nonSink1);
@@ -274,12 +278,13 @@ static T Return<T>(T x)
274278
return y == null ? default(T) : y;
275279
}
276280

277-
static void ReturnOut<T>(T x, out T y)
281+
static void ReturnOut<T>(T x, out T y, out T z)
278282
{
279283
y = x;
284+
z = default(T);
280285
}
281286

282-
static void ReturnRef<T>(T x, ref T y)
287+
static void ReturnRef<T>(T x, ref T y, ref T z)
283288
{
284289
y = x;
285290
}

csharp/ql/test/library-tests/dataflow/global/TaintTracking.expected

Lines changed: 31 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -25,32 +25,37 @@
2525
| GlobalDataFlow.cs:91:15:91:20 | access to local variable sink18 |
2626
| GlobalDataFlow.cs:94:15:94:20 | access to local variable sink21 |
2727
| GlobalDataFlow.cs:97:15:97:20 | access to local variable sink22 |
28-
| GlobalDataFlow.cs:132:15:132:19 | access to local variable sink4 |
29-
| GlobalDataFlow.cs:140:15:140:19 | access to local variable sink5 |
30-
| GlobalDataFlow.cs:150:15:150:19 | access to local variable sink6 |
31-
| GlobalDataFlow.cs:153:15:153:19 | access to local variable sink7 |
32-
| GlobalDataFlow.cs:156:15:156:19 | access to local variable sink8 |
33-
| GlobalDataFlow.cs:158:15:158:20 | access to local variable sink12 |
34-
| GlobalDataFlow.cs:160:15:160:20 | access to local variable sink23 |
35-
| GlobalDataFlow.cs:177:15:177:19 | access to local variable sink9 |
36-
| GlobalDataFlow.cs:186:15:186:20 | access to local variable sink10 |
37-
| GlobalDataFlow.cs:194:15:194:20 | access to local variable sink19 |
38-
| GlobalDataFlow.cs:204:58:204:68 | access to parameter sinkParam10 |
39-
| GlobalDataFlow.cs:207:15:207:20 | access to local variable sink24 |
40-
| GlobalDataFlow.cs:209:15:209:20 | access to local variable sink25 |
41-
| GlobalDataFlow.cs:211:15:211:20 | access to local variable sink26 |
42-
| GlobalDataFlow.cs:233:15:233:24 | access to parameter sinkParam0 |
43-
| GlobalDataFlow.cs:238:15:238:24 | access to parameter sinkParam1 |
44-
| GlobalDataFlow.cs:243:15:243:24 | access to parameter sinkParam3 |
45-
| GlobalDataFlow.cs:248:15:248:24 | access to parameter sinkParam4 |
46-
| GlobalDataFlow.cs:253:15:253:24 | access to parameter sinkParam5 |
47-
| GlobalDataFlow.cs:258:15:258:24 | access to parameter sinkParam6 |
48-
| GlobalDataFlow.cs:263:15:263:24 | access to parameter sinkParam7 |
49-
| GlobalDataFlow.cs:289:15:289:24 | access to parameter sinkParam8 |
50-
| GlobalDataFlow.cs:295:15:295:24 | access to parameter sinkParam9 |
51-
| GlobalDataFlow.cs:301:15:301:25 | access to parameter sinkParam11 |
52-
| GlobalDataFlow.cs:376:15:376:20 | access to local variable sink11 |
53-
| GlobalDataFlow.cs:399:41:399:46 | access to local variable sink20 |
28+
| GlobalDataFlow.cs:107:15:107:22 | access to local variable nonSink0 |
29+
| GlobalDataFlow.cs:109:15:109:22 | access to local variable nonSink0 |
30+
| GlobalDataFlow.cs:111:15:111:22 | access to local variable nonSink0 |
31+
| GlobalDataFlow.cs:113:15:113:22 | access to local variable nonSink1 |
32+
| GlobalDataFlow.cs:115:15:115:22 | access to local variable nonSink1 |
33+
| GlobalDataFlow.cs:136:15:136:19 | access to local variable sink4 |
34+
| GlobalDataFlow.cs:144:15:144:19 | access to local variable sink5 |
35+
| GlobalDataFlow.cs:154:15:154:19 | access to local variable sink6 |
36+
| GlobalDataFlow.cs:157:15:157:19 | access to local variable sink7 |
37+
| GlobalDataFlow.cs:160:15:160:19 | access to local variable sink8 |
38+
| GlobalDataFlow.cs:162:15:162:20 | access to local variable sink12 |
39+
| GlobalDataFlow.cs:164:15:164:20 | access to local variable sink23 |
40+
| GlobalDataFlow.cs:181:15:181:19 | access to local variable sink9 |
41+
| GlobalDataFlow.cs:190:15:190:20 | access to local variable sink10 |
42+
| GlobalDataFlow.cs:198:15:198:20 | access to local variable sink19 |
43+
| GlobalDataFlow.cs:208:58:208:68 | access to parameter sinkParam10 |
44+
| GlobalDataFlow.cs:211:15:211:20 | access to local variable sink24 |
45+
| GlobalDataFlow.cs:213:15:213:20 | access to local variable sink25 |
46+
| GlobalDataFlow.cs:215:15:215:20 | access to local variable sink26 |
47+
| GlobalDataFlow.cs:237:15:237:24 | access to parameter sinkParam0 |
48+
| GlobalDataFlow.cs:242:15:242:24 | access to parameter sinkParam1 |
49+
| GlobalDataFlow.cs:247:15:247:24 | access to parameter sinkParam3 |
50+
| GlobalDataFlow.cs:252:15:252:24 | access to parameter sinkParam4 |
51+
| GlobalDataFlow.cs:257:15:257:24 | access to parameter sinkParam5 |
52+
| GlobalDataFlow.cs:262:15:262:24 | access to parameter sinkParam6 |
53+
| GlobalDataFlow.cs:267:15:267:24 | access to parameter sinkParam7 |
54+
| GlobalDataFlow.cs:294:15:294:24 | access to parameter sinkParam8 |
55+
| GlobalDataFlow.cs:300:15:300:24 | access to parameter sinkParam9 |
56+
| GlobalDataFlow.cs:306:15:306:25 | access to parameter sinkParam11 |
57+
| GlobalDataFlow.cs:381:15:381:20 | access to local variable sink11 |
58+
| GlobalDataFlow.cs:404:41:404:46 | access to local variable sink20 |
5459
| Splitting.cs:9:15:9:15 | [b (line 3): false] access to local variable x |
5560
| Splitting.cs:9:15:9:15 | [b (line 3): true] access to local variable x |
5661
| Splitting.cs:11:19:11:19 | access to local variable x |

0 commit comments

Comments
 (0)