File tree Expand file tree Collapse file tree 2 files changed +316
-0
lines changed
csharp/ql/test/library-tests/dataflow/fields Expand file tree Collapse file tree 2 files changed +316
-0
lines changed Original file line number Diff line number Diff line change @@ -89,3 +89,65 @@ 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+
130+ var d1 = new DFieldProps ( ) ;
131+ var o1 = Source < object > ( 1 ) ;
132+ d1 . FieldProp1 = o1 ;
133+ Sink ( d1 . FieldProp0 ) ; // $ hasValueFlow=0
134+ Sink ( d1 . FieldProp1 ) ; // $ hasValueFlow=1
135+ Sink ( d1 . FieldProp2 ) ; // no flow
136+
137+ var d2 = new DFieldProps ( ) ;
138+ var o2 = Source < object > ( 2 ) ;
139+ d2 . FieldProp2 = o2 ;
140+ Sink ( d2 . FieldProp0 ) ; // $ hasValueFlow=0
141+ Sink ( d2 . FieldProp1 ) ; // no flow
142+ Sink ( d2 . FieldProp2 ) ; // $ hasValueFlow=2
143+
144+ var o3 = Source < object > ( 3 ) ;
145+ DFieldProps . StaticFieldProp = o3 ;
146+ Sink ( DFieldProps . StaticFieldProp ) ; // $ hasValueFlow=3
147+ }
148+
149+ public static void Sink ( object o ) { }
150+
151+ static T Source < T > ( object source ) => throw null ;
152+
153+ }
You can’t perform that action at this time.
0 commit comments