Skip to content

Commit 7dbe7b6

Browse files
committed
C#: Add data flow test for properties using the field keyword.
1 parent 607a0ec commit 7dbe7b6

File tree

2 files changed

+301
-0
lines changed

2 files changed

+301
-0
lines changed

csharp/ql/test/library-tests/dataflow/fields/D.cs

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,3 +89,68 @@ public static void Sink(object o) { }
8989

9090
static T Source<T>(object source) => throw null;
9191
}
92+
93+
public class DFieldProps
94+
{
95+
object FieldProp0
96+
{
97+
get { return field; }
98+
set { field = value; }
99+
} = Source<object>(0);
100+
101+
object FieldProp1
102+
{
103+
get { return field; }
104+
set { field = value; }
105+
}
106+
107+
object FieldProp2
108+
{
109+
get { return field; }
110+
set
111+
{
112+
var x = value;
113+
field = x;
114+
}
115+
}
116+
117+
static object StaticFieldProp
118+
{
119+
get { return field; }
120+
set { field = value; }
121+
}
122+
123+
private void M()
124+
{
125+
var d0 = new DFieldProps();
126+
Sink(d0.FieldProp0); // $ hasValueFlow=0
127+
Sink(d0.FieldProp1); // no flow
128+
Sink(d0.FieldProp2); // no flow
129+
Sink(DFieldProps.StaticFieldProp); // no flow
130+
131+
var d1 = new DFieldProps();
132+
var o1 = Source<object>(1);
133+
d1.FieldProp1 = o1;
134+
Sink(d1.FieldProp0); // $ hasValueFlow=0
135+
Sink(d1.FieldProp1); // $ hasValueFlow=1
136+
Sink(d1.FieldProp2); // no flow
137+
Sink(DFieldProps.StaticFieldProp); // no flow
138+
139+
var d2 = new DFieldProps();
140+
var o2 = Source<object>(2);
141+
d2.FieldProp2 = o2;
142+
Sink(d2.FieldProp0); // $ hasValueFlow=0
143+
Sink(d2.FieldProp1); // no flow
144+
Sink(d2.FieldProp2); // $ hasValueFlow=2
145+
Sink(DFieldProps.StaticFieldProp); // no flow
146+
147+
var o3 = Source<object>(3);
148+
DFieldProps.StaticFieldProp = o3;
149+
Sink(DFieldProps.StaticFieldProp); // $ hasValueFlow=3
150+
}
151+
152+
public static void Sink(object o) { }
153+
154+
static T Source<T>(object source) => throw null;
155+
156+
}

0 commit comments

Comments
 (0)