Skip to content

Commit 5c13391

Browse files
committed
C#: Add test cases for operators.
1 parent 04960fc commit 5c13391

File tree

2 files changed

+37
-0
lines changed

2 files changed

+37
-0
lines changed

csharp/ql/test/utils/model-generator/CaptureSummaryModels.expected

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,3 +28,5 @@
2828
| Summaries;IEnumerableFlow;false;ReturnFieldInIEnumerable;();Argument[Qualifier];ReturnValue;taint |
2929
| Summaries;IEnumerableFlow;false;ReturnIEnumerable;(System.Collections.Generic.IEnumerable<System.String>);Argument[0].Element;ReturnValue;taint |
3030
| Summaries;IEnumerableFlow;false;ReturnIEnumerableElement;(System.Collections.Generic.IEnumerable<System.Object>);Argument[0].Element;ReturnValue;taint |
31+
| Summaries;OperatorFlow;false;OperatorFlow;(System.Object);Argument[0];Argument[Qualifier];taint |
32+
| Summaries;OperatorFlow;false;op_Addition;(Summaries.OperatorFlow,Summaries.OperatorFlow);Argument[0];ReturnValue;taint |

csharp/ql/test/utils/model-generator/Summaries.cs

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,4 +171,39 @@ public int ReturnParam0(int input0, int input1)
171171
{
172172
return input0;
173173
}
174+
}
175+
176+
public class OperatorFlow
177+
{
178+
public readonly object Field;
179+
180+
public OperatorFlow(object o)
181+
{
182+
Field = o;
183+
}
184+
185+
// Flow Summary.
186+
public static OperatorFlow operator +(OperatorFlow a, OperatorFlow b)
187+
{
188+
return a;
189+
}
190+
191+
// No flow summary.
192+
public static OperatorFlow operator ++(OperatorFlow a)
193+
{
194+
return new OperatorFlow(new object());
195+
}
196+
197+
// No flow summary as this is an implicit conversion operator.
198+
public static implicit operator OperatorFlow(int i)
199+
{
200+
return new OperatorFlow(i);
201+
}
202+
203+
// No flow summary as this is an explicit conversion operator.
204+
public static explicit operator OperatorFlow(byte b)
205+
{
206+
return new OperatorFlow(b);
207+
}
208+
174209
}

0 commit comments

Comments
 (0)