Skip to content

Commit bcefdc8

Browse files
committed
C#: Add model generator test cases with in/out parameters.
1 parent df721f8 commit bcefdc8

File tree

4 files changed

+51
-0
lines changed

4 files changed

+51
-0
lines changed
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
11
unexpectedModel
2+
| Unexpected contentbased-summary found: Models;ParameterModifiers;false;Copy;(System.Object,System.Object);;Argument[0];ReturnValue;value;dfc-generated |
3+
| Unexpected contentbased-summary found: Models;ParameterModifiers;false;CopyToRef;(System.Object,System.Object);;Argument[0];ReturnValue;value;dfc-generated |
4+
| Unexpected contentbased-summary found: Models;ParameterModifiers;false;RefParamFlowToSelf;(System.Object,System.Boolean);;Argument[0];ReturnValue;value;dfc-generated |
5+
| Unexpected contentbased-summary found: Models;ParameterModifiers;false;RefParamUse;(System.Object);;Argument[0];ReturnValue;value;dfc-generated |
26
expectedModel
7+
| Expected contentbased-summary missing: Models;ParameterModifiers;false;Copy;(System.Object,System.Object);;Argument[0];Argument[1];value;dfc-generated |
8+
| Expected contentbased-summary missing: Models;ParameterModifiers;false;CopyToRef;(System.Object,System.Object);;Argument[0];Argument[1];value;dfc-generated |
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,4 @@
11
unexpectedModel
22
expectedModel
3+
| Expected neutral missing: Models;ParameterModifiers;RefParamFlowToSelf;(System.Object,System.Boolean);summary;df-generated |
4+
| Expected neutral missing: Models;ParameterModifiers;RefParamUse;(System.Object);summary;df-generated |
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,8 @@
11
unexpectedModel
2+
| Unexpected summary found: Models;ParameterModifiers;false;Copy;(System.Object,System.Object);;Argument[0];ReturnValue;taint;df-generated |
3+
| Unexpected summary found: Models;ParameterModifiers;false;CopyToRef;(System.Object,System.Object);;Argument[0];ReturnValue;taint;df-generated |
4+
| Unexpected summary found: Models;ParameterModifiers;false;RefParamFlowToSelf;(System.Object,System.Boolean);;Argument[0];ReturnValue;taint;df-generated |
5+
| Unexpected summary found: Models;ParameterModifiers;false;RefParamUse;(System.Object);;Argument[0];ReturnValue;taint;df-generated |
26
expectedModel
7+
| Expected summary missing: Models;ParameterModifiers;false;Copy;(System.Object,System.Object);;Argument[0];Argument[1];taint;df-generated |
8+
| Expected summary missing: Models;ParameterModifiers;false;CopyToRef;(System.Object,System.Object);;Argument[0];Argument[1];taint;df-generated |

csharp/ql/test/utils/modelgenerator/dataflow/Summaries.cs

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1034,3 +1034,40 @@ public override object GetValue()
10341034
}
10351035
}
10361036
}
1037+
1038+
public class ParameterModifiers
1039+
{
1040+
// contentbased-summary=Models;ParameterModifiers;false;Copy;(System.Object,System.Object);;Argument[0];Argument[1];value;dfc-generated
1041+
// summary=Models;ParameterModifiers;false;Copy;(System.Object,System.Object);;Argument[0];Argument[1];taint;df-generated
1042+
public void Copy(object key, out object value)
1043+
{
1044+
value = key;
1045+
}
1046+
1047+
// contentbased-summary=Models;ParameterModifiers;false;CopyToRef;(System.Object,System.Object);;Argument[0];Argument[1];value;dfc-generated
1048+
// summary=Models;ParameterModifiers;false;CopyToRef;(System.Object,System.Object);;Argument[0];Argument[1];taint;df-generated
1049+
public void CopyToRef(object key, ref object value)
1050+
{
1051+
value = key;
1052+
}
1053+
1054+
// No summaries as we disregard flow from a parameter to itself.
1055+
// neutral=Models;ParameterModifiers;RefParamFlowToSelf;(System.Object,System.Boolean);summary;df-generated
1056+
public void RefParamFlowToSelf(ref object value, bool b)
1057+
{
1058+
value = b ? value : null;
1059+
}
1060+
1061+
// neutral=Models;ParameterModifiers;RefParamUse;(System.Object);summary;df-generated
1062+
public void RefParamUse(ref object value)
1063+
{
1064+
var b = value is null;
1065+
}
1066+
1067+
// contentbased-summary=Models;ParameterModifiers;false;InReturn;(System.Object);;Argument[0];ReturnValue;value;dfc-generated
1068+
// summary=Models;ParameterModifiers;false;InReturn;(System.Object);;Argument[0];ReturnValue;taint;df-generated
1069+
public object InReturn(in object v)
1070+
{
1071+
return v;
1072+
}
1073+
}

0 commit comments

Comments
 (0)