diff --git a/csharp/ql/test/library-tests/controlflow/graph/Assignments.cs b/csharp/ql/test/library-tests/controlflow/graph/Assignments.cs index bb8a645427e..e967904c80c 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Assignments.cs +++ b/csharp/ql/test/library-tests/controlflow/graph/Assignments.cs @@ -21,4 +21,26 @@ class Assignments delegate void EventHandler(object sender, object e); event EventHandler Event; + int IntField; + string StringField; + + void SetParamSingle(out int x) + { + x = 42; + } + + void SetParamMulti(out int x, object o, out string y) + { + x = 42; + y = "Hello"; + } + + void M2() + { + int x1; + SetParamSingle(out x1); + SetParamSingle(out IntField); + SetParamMulti(out var y, null, out StringField); + SetParamMulti(out IntField, null, out StringField); + } } diff --git a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected index c8603d390c3..30f2b105155 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected @@ -167,6 +167,9 @@ | Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | exit M | 34 | | Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | exit (...) => ... | 4 | | Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | exit + | 6 | +| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | exit SetParamSingle | 7 | +| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | exit SetParamMulti | 10 | +| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | exit M2 | 28 | | BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | exit BreakInTry | 7 | | BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:7:33:7:36 | access to parameter args | 5 | | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | exit M1 | 2 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected index db226bef539..4fdf1eef866 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Dominance.expected @@ -766,6 +766,48 @@ dominance | Assignments.cs:18:5:20:5 | {...} | Assignments.cs:19:16:19:16 | access to parameter x | | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | exit + (normal) | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:9:19:17 | return ...; | +| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:28:5:30:5 | {...} | +| Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | Assignments.cs:27:10:27:23 | exit SetParamSingle | +| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:29:9:29:15 | ...; | +| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | +| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:13:29:14 | 42 | +| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:9:29:14 | ... = ... | +| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:33:5:36:5 | {...} | +| Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | Assignments.cs:32:10:32:22 | exit SetParamMulti | +| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:34:9:34:15 | ...; | +| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:35:9:35:20 | ...; | +| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:13:34:14 | 42 | +| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:9:34:14 | ... = ... | +| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | +| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:13:35:19 | "Hello" | +| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:9:35:19 | ... = ... | +| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:39:5:45:5 | {...} | +| Assignments.cs:38:10:38:11 | exit M2 (normal) | Assignments.cs:38:10:38:11 | exit M2 | +| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:40:9:40:15 | ... ...; | +| Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:40:13:40:14 | Int32 x1 | +| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:41:9:41:31 | ...; | +| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:42:9:42:37 | ...; | +| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:30 | call to method SetParamSingle | +| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:30 | this access | +| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:28:42:35 | access to field IntField | +| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:28:42:35 | this access | +| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:9:42:36 | this access | +| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:43:9:43:56 | ...; | +| Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:9:42:36 | call to method SetParamSingle | +| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:44:43:54 | access to field StringField | +| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:34:43:37 | null | +| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:9:43:55 | this access | +| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:44:43:54 | this access | +| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:44:9:44:59 | ...; | +| Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:9:43:55 | call to method SetParamMulti | +| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:44:27:44:34 | access to field IntField | +| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:27:44:34 | this access | +| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:44:9:44:58 | this access | +| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:47:44:57 | access to field StringField | +| Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:37:44:40 | null | +| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:47:44:57 | this access | +| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:38:10:38:11 | exit M2 (normal) | +| Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:9:44:58 | call to method SetParamMulti | | BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | {...} | | BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | call to constructor Object | | BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | this access | @@ -4722,6 +4764,48 @@ postDominance | Assignments.cs:18:5:20:5 | {...} | Assignments.cs:17:40:17:40 | enter + | | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:19:16:19:16 | access to parameter x | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:18:5:20:5 | {...} | +| Assignments.cs:27:10:27:23 | exit SetParamSingle | Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | +| Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | Assignments.cs:29:9:29:14 | ... = ... | +| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:27:10:27:23 | enter SetParamSingle | +| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:29:13:29:14 | 42 | +| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:28:5:30:5 | {...} | +| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:9:29:15 | ...; | +| Assignments.cs:32:10:32:22 | exit SetParamMulti | Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | +| Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | Assignments.cs:35:9:35:19 | ... = ... | +| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:32:10:32:22 | enter SetParamMulti | +| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:34:13:34:14 | 42 | +| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:33:5:36:5 | {...} | +| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:9:34:15 | ...; | +| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:35:13:35:19 | "Hello" | +| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:34:9:34:14 | ... = ... | +| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:9:35:20 | ...; | +| Assignments.cs:38:10:38:11 | exit M2 | Assignments.cs:38:10:38:11 | exit M2 (normal) | +| Assignments.cs:38:10:38:11 | exit M2 (normal) | Assignments.cs:44:47:44:57 | access to field StringField | +| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:38:10:38:11 | enter M2 | +| Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:39:5:45:5 | {...} | +| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:40:9:40:15 | ... ...; | +| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:41:9:41:30 | this access | +| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:31 | ...; | +| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:40:13:40:14 | Int32 x1 | +| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:28:42:35 | this access | +| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:9:42:37 | ...; | +| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:41:9:41:30 | call to method SetParamSingle | +| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:42:9:42:36 | call to method SetParamSingle | +| Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:9:42:36 | this access | +| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:44:43:54 | this access | +| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:9:43:56 | ...; | +| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:42:28:42:35 | access to field IntField | +| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:9:43:55 | this access | +| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:9:43:55 | call to method SetParamMulti | +| Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:34:43:37 | null | +| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:44:47:44:57 | this access | +| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:9:44:59 | ...; | +| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:43:44:43:54 | access to field StringField | +| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:9:44:58 | call to method SetParamMulti | +| Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:9:44:58 | this access | +| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:27:44:34 | this access | +| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:44:27:44:34 | access to field IntField | +| Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:37:44:40 | null | | BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | call to method | | BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | this access | | BreakInTry.cs:1:7:1:16 | exit BreakInTry | BreakInTry.cs:1:7:1:16 | exit BreakInTry (normal) | @@ -8811,6 +8895,9 @@ blockDominance | Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | enter M | | Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | enter (...) => ... | | Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | enter + | +| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | enter SetParamSingle | +| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | enter SetParamMulti | +| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | enter M2 | | BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | enter BreakInTry | | BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:3:10:3:11 | enter M1 | | BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | @@ -12758,6 +12845,9 @@ postBlockDominance | Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | enter M | | Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | enter (...) => ... | | Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | enter + | +| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | enter SetParamSingle | +| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | enter SetParamMulti | +| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | enter M2 | | BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | enter BreakInTry | | BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:3:10:3:11 | enter M1 | | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | enter M1 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected index 5c182890e05..8f48cd46fc3 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected @@ -839,6 +839,51 @@ nodeEnclosing | Assignments.cs:18:5:20:5 | {...} | Assignments.cs:17:40:17:40 | + | | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | + | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:17:40:17:40 | + | +| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:27:10:27:23 | exit SetParamSingle | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:32:10:32:22 | exit SetParamMulti | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:38:10:38:11 | exit M2 | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:38:10:38:11 | exit M2 (normal) | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:41:9:41:30 | this access | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:42:9:42:36 | this access | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:42:28:42:35 | this access | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:43:9:43:55 | this access | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:43:34:43:37 | null | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:43:44:43:54 | this access | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:9:44:58 | this access | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:27:44:34 | this access | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:37:44:40 | null | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:38:10:38:11 | M2 | +| Assignments.cs:44:47:44:57 | this access | Assignments.cs:38:10:38:11 | M2 | | BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | BreakInTry | | BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | BreakInTry | | BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | BreakInTry | @@ -4538,6 +4583,9 @@ blockEnclosing | Assignments.cs:3:10:3:10 | enter M | Assignments.cs:3:10:3:10 | M | | Assignments.cs:14:18:14:35 | enter (...) => ... | Assignments.cs:14:18:14:35 | (...) => ... | | Assignments.cs:17:40:17:40 | enter + | Assignments.cs:17:40:17:40 | + | +| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:27:10:27:23 | SetParamSingle | +| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:32:10:32:22 | SetParamMulti | +| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:38:10:38:11 | M2 | | BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | BreakInTry | | BreakInTry.cs:3:10:3:11 | enter M1 | BreakInTry.cs:3:10:3:11 | M1 | | BreakInTry.cs:3:10:3:11 | exit M1 (normal) | BreakInTry.cs:3:10:3:11 | M1 | diff --git a/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected b/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected index 6074e670aac..410916afabd 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/EntryElement.expected @@ -722,6 +722,42 @@ | Assignments.cs:18:5:20:5 | {...} | Assignments.cs:18:5:20:5 | {...} | | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:19:16:19:16 | access to parameter x | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:16:19:16 | access to parameter x | +| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:28:5:30:5 | {...} | +| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:29:13:29:14 | 42 | +| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:9:29:15 | ...; | +| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:13:29:14 | 42 | +| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:33:5:36:5 | {...} | +| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:34:13:34:14 | 42 | +| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:9:34:15 | ...; | +| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:13:34:14 | 42 | +| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:35:13:35:19 | "Hello" | +| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:9:35:20 | ...; | +| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:13:35:19 | "Hello" | +| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:39:5:45:5 | {...} | +| Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:40:9:40:15 | ... ...; | +| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:40:13:40:14 | Int32 x1 | +| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:41:9:41:30 | this access | +| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:30 | this access | +| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:31 | ...; | +| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:9:42:36 | this access | +| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:9:42:36 | this access | +| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:9:42:37 | ...; | +| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:42:28:42:35 | this access | +| Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:28:42:35 | this access | +| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:9:43:55 | this access | +| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:9:43:55 | this access | +| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:9:43:56 | ...; | +| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:34:43:37 | null | +| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:44:43:54 | this access | +| Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:44:43:54 | this access | +| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:44:9:44:58 | this access | +| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:9:44:58 | this access | +| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:44:9:44:59 | ...; | +| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:27:44:34 | this access | +| Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:27:44:34 | this access | +| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:37:44:40 | null | +| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:44:47:44:57 | this access | +| Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:47:44:57 | this access | | BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | call to constructor Object | | BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | this access | | BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | this access | diff --git a/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected b/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected index 9e57759b274..decfe3f3cfe 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/ExitElement.expected @@ -821,6 +821,42 @@ | Assignments.cs:18:5:20:5 | {...} | Assignments.cs:19:9:19:17 | return ...; | return | | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:19:9:19:17 | return ...; | return | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:16:19:16 | access to parameter x | normal | +| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:29:9:29:14 | ... = ... | normal | +| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:29:9:29:14 | ... = ... | normal | +| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:9:29:14 | ... = ... | normal | +| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:13:29:14 | 42 | normal | +| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:35:9:35:19 | ... = ... | normal | +| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:34:9:34:14 | ... = ... | normal | +| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:9:34:14 | ... = ... | normal | +| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:13:34:14 | 42 | normal | +| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:35:9:35:19 | ... = ... | normal | +| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:9:35:19 | ... = ... | normal | +| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:13:35:19 | "Hello" | normal | +| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:44:47:44:57 | access to field StringField | normal | +| Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:40:13:40:14 | Int32 x1 | normal | +| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:40:13:40:14 | Int32 x1 | normal | +| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:41:9:41:30 | call to method SetParamSingle | normal | +| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:30 | this access | normal | +| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:30 | call to method SetParamSingle | normal | +| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:28:42:35 | access to field IntField | normal | +| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:9:42:36 | this access | normal | +| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:28:42:35 | access to field IntField | normal | +| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:42:28:42:35 | this access | normal | +| Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:28:42:35 | this access | normal | +| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:44:43:54 | access to field StringField | normal | +| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:9:43:55 | this access | normal | +| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:44:43:54 | access to field StringField | normal | +| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:34:43:37 | null | normal | +| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:43:44:43:54 | this access | normal | +| Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:44:43:54 | this access | normal | +| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:44:47:44:57 | access to field StringField | normal | +| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:9:44:58 | this access | normal | +| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:44:47:44:57 | access to field StringField | normal | +| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:27:44:34 | this access | normal | +| Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:27:44:34 | this access | normal | +| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:37:44:40 | null | normal | +| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:44:47:44:57 | this access | normal | +| Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:47:44:57 | this access | normal | | BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | call to constructor Object | normal | | BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | call to method | normal | | BreakInTry.cs:1:7:1:16 | this access | BreakInTry.cs:1:7:1:16 | this access | normal | diff --git a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected index e119b928136..b8ccee34f7e 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/NodeGraph.expected @@ -853,6 +853,48 @@ | Assignments.cs:18:5:20:5 | {...} | Assignments.cs:19:16:19:16 | access to parameter x | | | Assignments.cs:19:9:19:17 | return ...; | Assignments.cs:17:40:17:40 | exit + (normal) | return | | Assignments.cs:19:16:19:16 | access to parameter x | Assignments.cs:19:9:19:17 | return ...; | | +| Assignments.cs:27:10:27:23 | enter SetParamSingle | Assignments.cs:28:5:30:5 | {...} | | +| Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | Assignments.cs:27:10:27:23 | exit SetParamSingle | | +| Assignments.cs:28:5:30:5 | {...} | Assignments.cs:29:9:29:15 | ...; | | +| Assignments.cs:29:9:29:14 | ... = ... | Assignments.cs:27:10:27:23 | exit SetParamSingle (normal) | | +| Assignments.cs:29:9:29:15 | ...; | Assignments.cs:29:13:29:14 | 42 | | +| Assignments.cs:29:13:29:14 | 42 | Assignments.cs:29:9:29:14 | ... = ... | | +| Assignments.cs:32:10:32:22 | enter SetParamMulti | Assignments.cs:33:5:36:5 | {...} | | +| Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | Assignments.cs:32:10:32:22 | exit SetParamMulti | | +| Assignments.cs:33:5:36:5 | {...} | Assignments.cs:34:9:34:15 | ...; | | +| Assignments.cs:34:9:34:14 | ... = ... | Assignments.cs:35:9:35:20 | ...; | | +| Assignments.cs:34:9:34:15 | ...; | Assignments.cs:34:13:34:14 | 42 | | +| Assignments.cs:34:13:34:14 | 42 | Assignments.cs:34:9:34:14 | ... = ... | | +| Assignments.cs:35:9:35:19 | ... = ... | Assignments.cs:32:10:32:22 | exit SetParamMulti (normal) | | +| Assignments.cs:35:9:35:20 | ...; | Assignments.cs:35:13:35:19 | "Hello" | | +| Assignments.cs:35:13:35:19 | "Hello" | Assignments.cs:35:9:35:19 | ... = ... | | +| Assignments.cs:38:10:38:11 | enter M2 | Assignments.cs:39:5:45:5 | {...} | | +| Assignments.cs:38:10:38:11 | exit M2 (normal) | Assignments.cs:38:10:38:11 | exit M2 | | +| Assignments.cs:39:5:45:5 | {...} | Assignments.cs:40:9:40:15 | ... ...; | | +| Assignments.cs:40:9:40:15 | ... ...; | Assignments.cs:40:13:40:14 | Int32 x1 | | +| Assignments.cs:40:13:40:14 | Int32 x1 | Assignments.cs:41:9:41:31 | ...; | | +| Assignments.cs:41:9:41:30 | call to method SetParamSingle | Assignments.cs:42:9:42:37 | ...; | | +| Assignments.cs:41:9:41:30 | this access | Assignments.cs:41:9:41:30 | call to method SetParamSingle | | +| Assignments.cs:41:9:41:31 | ...; | Assignments.cs:41:9:41:30 | this access | | +| Assignments.cs:42:9:42:36 | call to method SetParamSingle | Assignments.cs:42:28:42:35 | access to field IntField | | +| Assignments.cs:42:9:42:36 | this access | Assignments.cs:42:28:42:35 | this access | | +| Assignments.cs:42:9:42:37 | ...; | Assignments.cs:42:9:42:36 | this access | | +| Assignments.cs:42:28:42:35 | access to field IntField | Assignments.cs:43:9:43:56 | ...; | | +| Assignments.cs:42:28:42:35 | this access | Assignments.cs:42:9:42:36 | call to method SetParamSingle | | +| Assignments.cs:43:9:43:55 | call to method SetParamMulti | Assignments.cs:43:44:43:54 | access to field StringField | | +| Assignments.cs:43:9:43:55 | this access | Assignments.cs:43:34:43:37 | null | | +| Assignments.cs:43:9:43:56 | ...; | Assignments.cs:43:9:43:55 | this access | | +| Assignments.cs:43:34:43:37 | null | Assignments.cs:43:44:43:54 | this access | | +| Assignments.cs:43:44:43:54 | access to field StringField | Assignments.cs:44:9:44:59 | ...; | | +| Assignments.cs:43:44:43:54 | this access | Assignments.cs:43:9:43:55 | call to method SetParamMulti | | +| Assignments.cs:44:9:44:58 | call to method SetParamMulti | Assignments.cs:44:27:44:34 | access to field IntField | | +| Assignments.cs:44:9:44:58 | this access | Assignments.cs:44:27:44:34 | this access | | +| Assignments.cs:44:9:44:59 | ...; | Assignments.cs:44:9:44:58 | this access | | +| Assignments.cs:44:27:44:34 | access to field IntField | Assignments.cs:44:47:44:57 | access to field StringField | | +| Assignments.cs:44:27:44:34 | this access | Assignments.cs:44:37:44:40 | null | | +| Assignments.cs:44:37:44:40 | null | Assignments.cs:44:47:44:57 | this access | | +| Assignments.cs:44:47:44:57 | access to field StringField | Assignments.cs:38:10:38:11 | exit M2 (normal) | | +| Assignments.cs:44:47:44:57 | this access | Assignments.cs:44:9:44:58 | call to method SetParamMulti | | | BreakInTry.cs:1:7:1:16 | call to constructor Object | BreakInTry.cs:1:7:1:16 | {...} | | | BreakInTry.cs:1:7:1:16 | call to method | BreakInTry.cs:1:7:1:16 | call to constructor Object | | | BreakInTry.cs:1:7:1:16 | enter BreakInTry | BreakInTry.cs:1:7:1:16 | this access | | diff --git a/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected b/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected index 460d4d09054..d76f989e5cf 100644 --- a/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected +++ b/csharp/ql/test/library-tests/controlflow/graph/Nodes.expected @@ -36,6 +36,9 @@ | Assignments.cs:3:10:3:10 | M | Assignments.cs:4:5:15:5 | {...} | | Assignments.cs:14:18:14:35 | (...) => ... | Assignments.cs:14:33:14:35 | {...} | | Assignments.cs:17:40:17:40 | + | Assignments.cs:18:5:20:5 | {...} | +| Assignments.cs:27:10:27:23 | SetParamSingle | Assignments.cs:28:5:30:5 | {...} | +| Assignments.cs:32:10:32:22 | SetParamMulti | Assignments.cs:33:5:36:5 | {...} | +| Assignments.cs:38:10:38:11 | M2 | Assignments.cs:39:5:45:5 | {...} | | BreakInTry.cs:1:7:1:16 | BreakInTry | BreakInTry.cs:1:7:1:16 | this access | | BreakInTry.cs:3:10:3:11 | M1 | BreakInTry.cs:4:5:18:5 | {...} | | BreakInTry.cs:20:10:20:11 | M2 | BreakInTry.cs:21:5:36:5 | {...} |