Skip to content

Commit 5267b55

Browse files
committed
C#: Add test for missing reverse aliasing flow
1 parent 9f09454 commit 5267b55

File tree

3 files changed

+82
-0
lines changed

3 files changed

+82
-0
lines changed
Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
public class A
2+
{
3+
public string Field;
4+
5+
public A Nested;
6+
7+
public void M1()
8+
{
9+
var a = new A();
10+
M2(a);
11+
Sink(a.Nested.Field); // $ MISSING: hasValueFlow=1
12+
}
13+
14+
public void M2(A a)
15+
{
16+
var b = a.Nested;
17+
M3(b);
18+
}
19+
20+
public void M3(A a)
21+
{
22+
a.Field = Source<string>(1);
23+
}
24+
25+
public void M4()
26+
{
27+
this.M5();
28+
Sink(this.Nested.Field); // $ MISSING: hasValueFlow=1
29+
}
30+
31+
public void M5()
32+
{
33+
var b = this.Nested;
34+
b.M6();
35+
}
36+
37+
public void M6()
38+
{
39+
this.Field = Source<string>(2);
40+
}
41+
42+
public void M7()
43+
{
44+
var a = new A();
45+
M8(a);
46+
Sink(a.Field); // $ MISSING: hasValueFlow=3
47+
}
48+
49+
public void M8(A a)
50+
{
51+
var b = new A();
52+
b.Nested = a;
53+
M9(b);
54+
}
55+
56+
public void M9(A a)
57+
{
58+
a.Nested.Field = Source<string>(3);
59+
}
60+
61+
public static void Sink(object o) { }
62+
63+
static T Source<T>(object source) => throw null;
64+
}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
models
2+
edges
3+
nodes
4+
subpaths
5+
testFailures
6+
#select
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
/**
2+
* @kind path-problem
3+
*/
4+
5+
import csharp
6+
import TestUtilities.InlineFlowTest
7+
import DefaultFlowTest
8+
import PathGraph
9+
10+
from PathNode source, PathNode sink
11+
where flowPath(source, sink)
12+
select sink, source, sink, "$@", source, source.toString()

0 commit comments

Comments
 (0)