From fc5076b466a12feae9b51ac34fc1200540222564 Mon Sep 17 00:00:00 2001 From: Tom Hvitved Date: Wed, 16 Jan 2019 15:16:44 +0100 Subject: [PATCH] C#: Add test for assignment through delegate `ref` argument --- .../assignables/AssignableAccess.expected | 4 ++++ .../assignables/AssignableDefinition.expected | 4 ++++ .../assignables/AssignableDefinitionNode.expected | 4 ++++ .../ql/test/library-tests/assignables/Assignables.cs | 7 +++++++ .../library-tests/assignables/Assignables.expected | 11 +++++++++++ .../assignables/GetAnAssignedValue.expected | 1 + 6 files changed, 31 insertions(+) diff --git a/csharp/ql/test/library-tests/assignables/AssignableAccess.expected b/csharp/ql/test/library-tests/assignables/AssignableAccess.expected index 5bff5c7d555..618433af5c2 100644 --- a/csharp/ql/test/library-tests/assignables/AssignableAccess.expected +++ b/csharp/ql/test/library-tests/assignables/AssignableAccess.expected @@ -89,6 +89,10 @@ | Assignables.cs:110:36:110:36 | access to local variable s | Assignables.cs:109:16:109:16 | s | write | | Assignables.cs:116:13:116:13 | access to local variable s | Assignables.cs:116:13:116:13 | s | write | | Assignables.cs:117:9:117:9 | access to local variable s | Assignables.cs:116:13:116:13 | s | write | +| Assignables.cs:123:13:123:13 | access to local variable x | Assignables.cs:123:13:123:13 | x | write | +| Assignables.cs:124:9:124:9 | access to parameter d | Assignables.cs:121:31:121:31 | d | read | +| Assignables.cs:124:15:124:15 | access to local variable x | Assignables.cs:123:13:123:13 | x | read | +| Assignables.cs:124:29:124:29 | String s | Assignables.cs:124:29:124:29 | s | write | | Discards.cs:7:9:7:9 | access to parameter x | Discards.cs:5:30:5:30 | x | write | | Discards.cs:20:32:20:32 | Boolean z | Discards.cs:20:32:20:32 | z | write | | Discards.cs:25:27:25:30 | access to parameter args | Discards.cs:23:27:23:30 | args | read | diff --git a/csharp/ql/test/library-tests/assignables/AssignableDefinition.expected b/csharp/ql/test/library-tests/assignables/AssignableDefinition.expected index d5a383e33f3..c765d536efe 100644 --- a/csharp/ql/test/library-tests/assignables/AssignableDefinition.expected +++ b/csharp/ql/test/library-tests/assignables/AssignableDefinition.expected @@ -78,6 +78,10 @@ | Assignables.cs:115:13:115:13 | i | Assignables.cs:115:13:115:13 | Int32 i | Assignables.cs:115:13:115:13 | | Assignables.cs:115:13:115:13 | | certain | | Assignables.cs:116:13:116:13 | s | Assignables.cs:116:13:116:25 | String s = ... | Assignables.cs:116:13:116:13 | access to local variable s | Assignables.cs:116:17:116:25 | nameof(...) | certain | | Assignables.cs:116:13:116:13 | s | Assignables.cs:117:9:117:30 | ... = ... | Assignables.cs:117:9:117:9 | access to local variable s | Assignables.cs:117:13:117:30 | nameof(...) | certain | +| Assignables.cs:121:31:121:31 | d | Assignables.cs:121:31:121:31 | d | Assignables.cs:121:31:121:31 | | Assignables.cs:121:31:121:31 | | certain | +| Assignables.cs:123:13:123:13 | x | Assignables.cs:123:13:123:17 | Int32 x = ... | Assignables.cs:123:13:123:13 | access to local variable x | Assignables.cs:123:17:123:17 | 0 | certain | +| Assignables.cs:124:29:124:29 | s | Assignables.cs:124:29:124:29 | String s | Assignables.cs:124:29:124:29 | | Assignables.cs:124:29:124:29 | | certain | +| Assignables.cs:124:29:124:29 | s | Assignables.cs:124:29:124:29 | String s | Assignables.cs:124:29:124:29 | String s | Assignables.cs:124:29:124:29 | | certain | | Discards.cs:5:30:5:30 | x | Discards.cs:5:30:5:30 | x | Discards.cs:5:30:5:30 | | Discards.cs:5:30:5:30 | | certain | | Discards.cs:5:30:5:30 | x | Discards.cs:7:9:7:17 | ... = ... | Discards.cs:7:9:7:9 | access to parameter x | Discards.cs:7:13:7:17 | false | certain | | Discards.cs:19:14:19:14 | x | Discards.cs:19:9:19:29 | ... = ... | Discards.cs:19:9:19:29 | | Discards.cs:19:9:19:29 | | certain | diff --git a/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.expected b/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.expected index df501571c36..6b84a718925 100644 --- a/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.expected +++ b/csharp/ql/test/library-tests/assignables/AssignableDefinitionNode.expected @@ -77,6 +77,10 @@ | Assignables.cs:115:13:115:13 | Int32 i | Assignables.cs:115:13:115:13 | Int32 i | | Assignables.cs:116:13:116:25 | String s = ... | Assignables.cs:116:13:116:25 | String s = ... | | Assignables.cs:117:9:117:30 | ... = ... | Assignables.cs:117:9:117:30 | ... = ... | +| Assignables.cs:121:31:121:31 | d | Assignables.cs:121:10:121:20 | enter DelegateRef | +| Assignables.cs:123:13:123:17 | Int32 x = ... | Assignables.cs:123:13:123:17 | Int32 x = ... | +| Assignables.cs:124:29:124:29 | String s | Assignables.cs:124:9:124:30 | delegate call | +| Assignables.cs:124:29:124:29 | String s | Assignables.cs:124:29:124:29 | String s | | Discards.cs:5:30:5:30 | x | Discards.cs:5:19:5:19 | enter f | | Discards.cs:7:9:7:17 | ... = ... | Discards.cs:7:9:7:17 | ... = ... | | Discards.cs:13:9:13:20 | ... = ... | Discards.cs:13:9:13:20 | ... = ... | diff --git a/csharp/ql/test/library-tests/assignables/Assignables.cs b/csharp/ql/test/library-tests/assignables/Assignables.cs index 78c44252f76..aa1a04f85fd 100644 --- a/csharp/ql/test/library-tests/assignables/Assignables.cs +++ b/csharp/ql/test/library-tests/assignables/Assignables.cs @@ -116,4 +116,11 @@ class Assignables var s = nameof(i); // not a read of `i` s = nameof(this.Field); // not a read of `this.Field` } + + delegate void Delegate(ref int i, out string s); + void DelegateRef(Delegate d) + { + var x = 0; + d(ref x, out string s); + } } diff --git a/csharp/ql/test/library-tests/assignables/Assignables.expected b/csharp/ql/test/library-tests/assignables/Assignables.expected index d8e9e838473..a5065aed510 100644 --- a/csharp/ql/test/library-tests/assignables/Assignables.expected +++ b/csharp/ql/test/library-tests/assignables/Assignables.expected @@ -82,6 +82,17 @@ | Assignables.cs:109:16:109:16 | s | | Assignables.cs:115:13:115:13 | i | | Assignables.cs:116:13:116:13 | s | +| Assignables.cs:120:36:120:36 | i | +| Assignables.cs:120:36:120:36 | i | +| Assignables.cs:120:36:120:36 | i | +| Assignables.cs:120:36:120:36 | i | +| Assignables.cs:120:50:120:50 | s | +| Assignables.cs:120:50:120:50 | s | +| Assignables.cs:120:50:120:50 | s | +| Assignables.cs:120:50:120:50 | s | +| Assignables.cs:121:31:121:31 | d | +| Assignables.cs:123:13:123:13 | x | +| Assignables.cs:124:29:124:29 | s | | Discards.cs:5:6:5:8 | Item1 | | Discards.cs:5:11:5:16 | Item2 | | Discards.cs:5:30:5:30 | x | diff --git a/csharp/ql/test/library-tests/assignables/GetAnAssignedValue.expected b/csharp/ql/test/library-tests/assignables/GetAnAssignedValue.expected index 640500a0fe4..ed3fbf5c78a 100644 --- a/csharp/ql/test/library-tests/assignables/GetAnAssignedValue.expected +++ b/csharp/ql/test/library-tests/assignables/GetAnAssignedValue.expected @@ -35,6 +35,7 @@ | Assignables.cs:109:16:109:16 | s | Assignables.cs:109:20:109:21 | "" | | Assignables.cs:116:13:116:13 | s | Assignables.cs:116:17:116:25 | nameof(...) | | Assignables.cs:116:13:116:13 | s | Assignables.cs:117:13:117:30 | nameof(...) | +| Assignables.cs:123:13:123:13 | x | Assignables.cs:123:17:123:17 | 0 | | Discards.cs:5:30:5:30 | x | Discards.cs:7:13:7:17 | false | | Finally.cs:7:13:7:13 | i | Finally.cs:7:17:7:17 | 0 | | Finally.cs:7:13:7:13 | i | Finally.cs:15:17:15:17 | 1 |