C#: Additional CFG tests

This commit is contained in:
Tom Hvitved
2018-08-03 10:35:57 +02:00
parent 797fc0784b
commit b161ff195b
14 changed files with 1254 additions and 162 deletions

View File

@@ -70,7 +70,14 @@
| ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | 2 |
| ConditionalAccess.cs:19:12:19:13 | exit M6 | ConditionalAccess.cs:19:12:19:13 | exit M6 | 1 |
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | 2 |
| ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith | ConditionalAccess.cs:24:26:24:38 | exit CommaJoinWith | 7 |
| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:23:18:23:29 | (...) ... | 6 |
| ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:24:18:24:24 | (...) ... | 5 |
| ConditionalAccess.cs:23:32:23:38 | access to property Length | ConditionalAccess.cs:23:32:23:38 | access to property Length | 1 |
| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:25:13:25:14 | "" | 4 |
| ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:27:24:37 | call to method ToString | 1 |
| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:21:10:21:11 | exit M7 | 2 |
| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | 2 |
| ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith | ConditionalAccess.cs:31:26:31:38 | exit CommaJoinWith | 7 |
| ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:6:10:6:11 | exit M1 | 7 |
| ExitMethods.cs:12:10:12:11 | enter M2 | ExitMethods.cs:12:10:12:11 | exit M2 | 7 |
| ExitMethods.cs:18:10:18:11 | enter M3 | ExitMethods.cs:18:10:18:11 | exit M3 | 6 |
@@ -102,14 +109,20 @@
| Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | exit ToBool | 7 |
| Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | exit CallToInt32 | 4 |
| Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | exit Main | 19 |
| Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:5:29:5:32 | access to parameter args | 3 |
| Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:3:10:3:11 | exit M1 | 1 |
| Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | 1 |
| Foreach.cs:5:22:5:24 | String arg | Foreach.cs:6:13:6:13 | ; | 2 |
| Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:11:27:11:30 | access to parameter args | 3 |
| Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:9:10:9:11 | exit M2 | 1 |
| Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | 1 |
| Foreach.cs:12:13:12:13 | ; | Foreach.cs:12:13:12:13 | ; | 1 |
| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:8:29:8:32 | access to parameter args | 3 |
| Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:6:10:6:11 | exit M1 | 1 |
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | 1 |
| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:9:13:9:13 | ; | 2 |
| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:14:27:14:30 | access to parameter args | 3 |
| Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:12:10:12:11 | exit M2 | 1 |
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | 1 |
| Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; | 1 |
| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:27:20:27 | access to parameter e | 4 |
| Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:18:10:18:11 | exit M3 | 1 |
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | 1 |
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:21:11:21:11 | ; | 2 |
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:29:20:38 | call to method ToArray | 1 |
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty | 1 |
| Initializers.cs:6:5:6:16 | enter Initializers | Initializers.cs:6:5:6:16 | exit Initializers | 3 |
| Initializers.cs:8:10:8:10 | enter M | Initializers.cs:8:10:8:10 | exit M | 23 |
| NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:23:3:23 | access to parameter i | 3 |
@@ -136,6 +149,13 @@
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | 1 |
| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 | 1 |
| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 | 1 |
| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:15:17:15:26 | (...) ... | 7 |
| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:16:17:16:18 | "" | 5 |
| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:31:15:31 | 0 | 1 |
| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:17:13:17:19 | (...) ... | 6 |
| NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:23:16:25 | "a" | 1 |
| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:13:10:13:11 | exit M6 | 2 |
| NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:24:17:24 | 1 | 1 |
| Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:8:13:8:23 | ... is ... | 10 |
| Patterns.cs:9:9:11:9 | {...} | Patterns.cs:10:13:10:42 | call to method WriteLine | 6 |
| Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:18:12:31 | ... is ... | 4 |
@@ -184,7 +204,33 @@
| Switch.cs:50:13:50:39 | case Boolean: | Switch.cs:50:18:50:21 | access to type Boolean | 2 |
| Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:30:50:38 | ... != ... | 3 |
| Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; | 1 |
| Switch.cs:55:17:55:21 | enter Throw | Switch.cs:55:17:55:21 | exit Throw | 4 |
| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:59:18:59:18 | 2 | 8 |
| Switch.cs:55:10:55:11 | exit M5 | Switch.cs:55:10:55:11 | exit M5 | 1 |
| Switch.cs:60:15:60:20 | break; | Switch.cs:60:15:60:20 | break; | 1 |
| Switch.cs:61:13:61:20 | case ...: | Switch.cs:61:18:61:18 | 3 | 2 |
| Switch.cs:62:15:62:20 | break; | Switch.cs:62:15:62:20 | break; | 1 |
| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:70:18:70:20 | access to type Int32 | 7 |
| Switch.cs:66:10:66:11 | exit M6 | Switch.cs:66:10:66:11 | exit M6 | 1 |
| Switch.cs:71:15:71:20 | break; | Switch.cs:71:15:71:20 | break; | 1 |
| Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:18:72:19 | "" | 2 |
| Switch.cs:73:15:73:20 | break; | Switch.cs:73:15:73:20 | break; | 1 |
| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:81:18:81:18 | 1 | 6 |
| Switch.cs:77:10:77:11 | exit M7 | Switch.cs:77:10:77:11 | exit M7 | 1 |
| Switch.cs:82:22:82:25 | true | Switch.cs:82:15:82:26 | return ...; | 2 |
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:84:19:84:23 | ... > ... | 6 |
| Switch.cs:85:17:85:22 | break; | Switch.cs:88:9:88:21 | return ...; | 3 |
| Switch.cs:86:22:86:25 | true | Switch.cs:86:15:86:26 | return ...; | 2 |
| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:95:18:95:20 | access to type Int32 | 6 |
| Switch.cs:91:10:91:11 | exit M8 | Switch.cs:91:10:91:11 | exit M8 | 1 |
| Switch.cs:96:22:96:25 | true | Switch.cs:96:15:96:26 | return ...; | 2 |
| Switch.cs:98:16:98:20 | false | Switch.cs:98:9:98:21 | return ...; | 2 |
| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:105:18:105:18 | 0 | 7 |
| Switch.cs:101:9:101:10 | exit M9 | Switch.cs:101:9:101:10 | exit M9 | 1 |
| Switch.cs:105:29:105:29 | 0 | Switch.cs:105:22:105:30 | return ...; | 2 |
| Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:18:106:18 | 1 | 2 |
| Switch.cs:106:29:106:29 | 1 | Switch.cs:106:22:106:30 | return ...; | 2 |
| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:9:108:18 | return ...; | 3 |
| Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:17:111:21 | exit Throw | 4 |
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:13:7:22 | ... is ... | 16 |
| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:25:7:25 | ; | 1 |
| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | exit M | 5 |

View File

@@ -138,7 +138,26 @@
| post | ConditionalAccess.cs:19:12:19:13 | exit M6 | ConditionalAccess.cs:19:12:19:13 | exit M6 |
| post | ConditionalAccess.cs:19:12:19:13 | exit M6 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
| post | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
| post | ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith | ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith |
| post | ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:21:10:21:11 | enter M7 |
| post | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:21:10:21:11 | enter M7 |
| post | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... |
| post | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:23:32:23:38 | access to property Length |
| post | ConditionalAccess.cs:23:32:23:38 | access to property Length | ConditionalAccess.cs:23:32:23:38 | access to property Length |
| post | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:21:10:21:11 | enter M7 |
| post | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... |
| post | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:23:32:23:38 | access to property Length |
| post | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:13:24:37 | String s = ... |
| post | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:27:24:37 | call to method ToString |
| post | ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:27:24:37 | call to method ToString |
| post | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:21:10:21:11 | enter M7 |
| post | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... |
| post | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:23:32:23:38 | access to property Length |
| post | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:24:13:24:37 | String s = ... |
| post | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:24:27:24:37 | call to method ToString |
| post | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:9:25:32 | ... = ... |
| post | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
| post | ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
| post | ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith | ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith |
| post | ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:6:10:6:11 | enter M1 |
| post | ExitMethods.cs:12:10:12:11 | enter M2 | ExitMethods.cs:12:10:12:11 | enter M2 |
| post | ExitMethods.cs:18:10:18:11 | enter M3 | ExitMethods.cs:18:10:18:11 | enter M3 |
@@ -184,24 +203,41 @@
| post | Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | enter ToBool |
| post | Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | enter CallToInt32 |
| post | Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | enter Main |
| post | Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:3:10:3:11 | enter M1 |
| post | Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:3:10:3:11 | enter M1 |
| post | Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:3:10:3:11 | exit M1 |
| post | Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... |
| post | Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:5:22:5:24 | String arg |
| post | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:3:10:3:11 | enter M1 |
| post | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... |
| post | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:22:5:24 | String arg |
| post | Foreach.cs:5:22:5:24 | String arg | Foreach.cs:5:22:5:24 | String arg |
| post | Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:9:10:9:11 | enter M2 |
| post | Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:9:10:9:11 | enter M2 |
| post | Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:9:10:9:11 | exit M2 |
| post | Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... |
| post | Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:12:13:12:13 | ; |
| post | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:9:10:9:11 | enter M2 |
| post | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... |
| post | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:12:13:12:13 | ; |
| post | Foreach.cs:12:13:12:13 | ; | Foreach.cs:12:13:12:13 | ; |
| post | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | enter M1 |
| post | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:6:10:6:11 | enter M1 |
| post | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:6:10:6:11 | exit M1 |
| post | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
| post | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:8:22:8:24 | String arg |
| post | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | enter M1 |
| post | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
| post | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg |
| post | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg |
| post | Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:12:10:12:11 | enter M2 |
| post | Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:12:10:12:11 | enter M2 |
| post | Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:12:10:12:11 | exit M2 |
| post | Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
| post | Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:15:13:15:13 | ; |
| post | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | enter M2 |
| post | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
| post | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; |
| post | Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; |
| post | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:18:10:18:11 | enter M3 |
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:18:10:18:11 | enter M3 |
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:18:10:18:11 | exit M3 |
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:20:22:20:22 | String x |
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:20:29:20:38 | call to method ToArray |
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:20:43:20:68 | call to method Empty |
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | enter M3 |
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x |
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:29:20:38 | call to method ToArray |
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:43:20:68 | call to method Empty |
| post | Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x |
| post | Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:29:20:38 | call to method ToArray |
| post | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:18:10:18:11 | enter M3 |
| post | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:29:20:38 | call to method ToArray |
| post | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty |
| post | Initializers.cs:6:5:6:16 | enter Initializers | Initializers.cs:6:5:6:16 | enter Initializers |
| post | Initializers.cs:8:10:8:10 | enter M | Initializers.cs:8:10:8:10 | enter M |
| post | NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:9:3:10 | enter M1 |
@@ -248,6 +284,25 @@
| post | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 |
| post | NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 |
| post | NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 |
| post | NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:13:10:13:11 | enter M6 |
| post | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:13:10:13:11 | enter M6 |
| post | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... |
| post | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:31:15:31 | 0 |
| post | NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:31:15:31 | 0 |
| post | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:13:10:13:11 | enter M6 |
| post | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... |
| post | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:15:31:15:31 | 0 |
| post | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:13:16:25 | String s = ... |
| post | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:23:16:25 | "a" |
| post | NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:23:16:25 | "a" |
| post | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:13:10:13:11 | enter M6 |
| post | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... |
| post | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:15:31:15:31 | 0 |
| post | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:16:13:16:25 | String s = ... |
| post | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:16:23:16:25 | "a" |
| post | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:9:17:24 | ... = ... |
| post | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:24:17:24 | 1 |
| post | NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:24:17:24 | 1 |
| post | Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:5:10:5:13 | enter Test |
| post | Patterns.cs:9:9:11:9 | {...} | Patterns.cs:9:9:11:9 | {...} |
| post | Patterns.cs:12:14:18:9 | if (...) ... | Patterns.cs:12:14:18:9 | if (...) ... |
@@ -344,7 +399,54 @@
| post | Switch.cs:50:13:50:39 | case Boolean: | Switch.cs:50:13:50:39 | case Boolean: |
| post | Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:30:50:30 | access to parameter o |
| post | Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; |
| post | Switch.cs:55:17:55:21 | enter Throw | Switch.cs:55:17:55:21 | enter Throw |
| post | Switch.cs:55:10:55:11 | enter M5 | Switch.cs:55:10:55:11 | enter M5 |
| post | Switch.cs:55:10:55:11 | exit M5 | Switch.cs:55:10:55:11 | enter M5 |
| post | Switch.cs:55:10:55:11 | exit M5 | Switch.cs:55:10:55:11 | exit M5 |
| post | Switch.cs:55:10:55:11 | exit M5 | Switch.cs:60:15:60:20 | break; |
| post | Switch.cs:55:10:55:11 | exit M5 | Switch.cs:61:13:61:20 | case ...: |
| post | Switch.cs:55:10:55:11 | exit M5 | Switch.cs:62:15:62:20 | break; |
| post | Switch.cs:60:15:60:20 | break; | Switch.cs:60:15:60:20 | break; |
| post | Switch.cs:61:13:61:20 | case ...: | Switch.cs:61:13:61:20 | case ...: |
| post | Switch.cs:62:15:62:20 | break; | Switch.cs:62:15:62:20 | break; |
| post | Switch.cs:66:10:66:11 | enter M6 | Switch.cs:66:10:66:11 | enter M6 |
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:66:10:66:11 | enter M6 |
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:66:10:66:11 | exit M6 |
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:71:15:71:20 | break; |
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:72:13:72:21 | case ...: |
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:73:15:73:20 | break; |
| post | Switch.cs:71:15:71:20 | break; | Switch.cs:71:15:71:20 | break; |
| post | Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:13:72:21 | case ...: |
| post | Switch.cs:73:15:73:20 | break; | Switch.cs:73:15:73:20 | break; |
| post | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:77:10:77:11 | enter M7 |
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:77:10:77:11 | enter M7 |
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:77:10:77:11 | exit M7 |
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:82:22:82:25 | true |
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:83:13:83:20 | case ...: |
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:85:17:85:22 | break; |
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:86:22:86:25 | true |
| post | Switch.cs:82:22:82:25 | true | Switch.cs:82:22:82:25 | true |
| post | Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:13:83:20 | case ...: |
| post | Switch.cs:85:17:85:22 | break; | Switch.cs:85:17:85:22 | break; |
| post | Switch.cs:86:22:86:25 | true | Switch.cs:86:22:86:25 | true |
| post | Switch.cs:91:10:91:11 | enter M8 | Switch.cs:91:10:91:11 | enter M8 |
| post | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:91:10:91:11 | enter M8 |
| post | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:91:10:91:11 | exit M8 |
| post | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:96:22:96:25 | true |
| post | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:98:16:98:20 | false |
| post | Switch.cs:96:22:96:25 | true | Switch.cs:96:22:96:25 | true |
| post | Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false |
| post | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:101:9:101:10 | enter M9 |
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:101:9:101:10 | enter M9 |
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:101:9:101:10 | exit M9 |
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:105:29:105:29 | 0 |
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:106:13:106:20 | case ...: |
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:106:29:106:29 | 1 |
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:108:17:108:17 | 1 |
| post | Switch.cs:105:29:105:29 | 0 | Switch.cs:105:29:105:29 | 0 |
| post | Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:13:106:20 | case ...: |
| post | Switch.cs:106:29:106:29 | 1 | Switch.cs:106:29:106:29 | 1 |
| post | Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 |
| post | Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:17:111:21 | enter Throw |
| post | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | enter M |
| post | TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:25:7:25 | ; |
| post | TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | enter M |
@@ -1093,7 +1195,26 @@
| pre | ConditionalAccess.cs:19:12:19:13 | enter M6 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
| pre | ConditionalAccess.cs:19:12:19:13 | exit M6 | ConditionalAccess.cs:19:12:19:13 | exit M6 |
| pre | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
| pre | ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith | ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith |
| pre | ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:21:10:21:11 | enter M7 |
| pre | ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... |
| pre | ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:23:32:23:38 | access to property Length |
| pre | ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:24:13:24:37 | String s = ... |
| pre | ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:24:27:24:37 | call to method ToString |
| pre | ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:25:9:25:32 | ... = ... |
| pre | ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
| pre | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... |
| pre | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:24:13:24:37 | String s = ... |
| pre | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:24:27:24:37 | call to method ToString |
| pre | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:25:9:25:32 | ... = ... |
| pre | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
| pre | ConditionalAccess.cs:23:32:23:38 | access to property Length | ConditionalAccess.cs:23:32:23:38 | access to property Length |
| pre | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:13:24:37 | String s = ... |
| pre | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:25:9:25:32 | ... = ... |
| pre | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
| pre | ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:27:24:37 | call to method ToString |
| pre | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:9:25:32 | ... = ... |
| pre | ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
| pre | ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith | ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith |
| pre | ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:6:10:6:11 | enter M1 |
| pre | ExitMethods.cs:12:10:12:11 | enter M2 | ExitMethods.cs:12:10:12:11 | enter M2 |
| pre | ExitMethods.cs:18:10:18:11 | enter M3 | ExitMethods.cs:18:10:18:11 | enter M3 |
@@ -1139,24 +1260,40 @@
| pre | Extensions.cs:10:24:10:29 | enter ToBool | Extensions.cs:10:24:10:29 | enter ToBool |
| pre | Extensions.cs:15:23:15:33 | enter CallToInt32 | Extensions.cs:15:23:15:33 | enter CallToInt32 |
| pre | Extensions.cs:20:17:20:20 | enter Main | Extensions.cs:20:17:20:20 | enter Main |
| pre | Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:3:10:3:11 | enter M1 |
| pre | Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:3:10:3:11 | exit M1 |
| pre | Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... |
| pre | Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:5:22:5:24 | String arg |
| pre | Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:3:10:3:11 | exit M1 |
| pre | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:3:10:3:11 | exit M1 |
| pre | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... |
| pre | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:22:5:24 | String arg |
| pre | Foreach.cs:5:22:5:24 | String arg | Foreach.cs:5:22:5:24 | String arg |
| pre | Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:9:10:9:11 | enter M2 |
| pre | Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:9:10:9:11 | exit M2 |
| pre | Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... |
| pre | Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:12:13:12:13 | ; |
| pre | Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:9:10:9:11 | exit M2 |
| pre | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:9:10:9:11 | exit M2 |
| pre | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... |
| pre | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:12:13:12:13 | ; |
| pre | Foreach.cs:12:13:12:13 | ; | Foreach.cs:12:13:12:13 | ; |
| pre | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | enter M1 |
| pre | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:6:10:6:11 | exit M1 |
| pre | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
| pre | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:8:22:8:24 | String arg |
| pre | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:6:10:6:11 | exit M1 |
| pre | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | exit M1 |
| pre | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
| pre | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg |
| pre | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg |
| pre | Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:12:10:12:11 | enter M2 |
| pre | Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:12:10:12:11 | exit M2 |
| pre | Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
| pre | Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:15:13:15:13 | ; |
| pre | Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:12:10:12:11 | exit M2 |
| pre | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | exit M2 |
| pre | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
| pre | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; |
| pre | Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; |
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:18:10:18:11 | enter M3 |
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:18:10:18:11 | exit M3 |
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:22:20:22 | String x |
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:29:20:38 | call to method ToArray |
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:20:43:20:68 | call to method Empty |
| pre | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:18:10:18:11 | exit M3 |
| pre | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | exit M3 |
| pre | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
| pre | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x |
| pre | Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x |
| pre | Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:29:20:38 | call to method ToArray |
| pre | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:18:10:18:11 | exit M3 |
| pre | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
| pre | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:22:20:22 | String x |
| pre | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty |
| pre | Initializers.cs:6:5:6:16 | enter Initializers | Initializers.cs:6:5:6:16 | enter Initializers |
| pre | Initializers.cs:8:10:8:10 | enter M | Initializers.cs:8:10:8:10 | enter M |
| pre | NullCoalescing.cs:3:9:3:10 | enter M1 | NullCoalescing.cs:3:9:3:10 | enter M1 |
@@ -1205,6 +1342,25 @@
| pre | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 |
| pre | NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 |
| pre | NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 |
| pre | NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:13:10:13:11 | enter M6 |
| pre | NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:15:13:15:31 | Int32 j = ... |
| pre | NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:15:31:15:31 | 0 |
| pre | NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:16:13:16:25 | String s = ... |
| pre | NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:16:23:16:25 | "a" |
| pre | NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:17:9:17:24 | ... = ... |
| pre | NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:17:24:17:24 | 1 |
| pre | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... |
| pre | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:16:13:16:25 | String s = ... |
| pre | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:16:23:16:25 | "a" |
| pre | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:17:9:17:24 | ... = ... |
| pre | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:17:24:17:24 | 1 |
| pre | NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:31:15:31 | 0 |
| pre | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:13:16:25 | String s = ... |
| pre | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:17:9:17:24 | ... = ... |
| pre | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:17:24:17:24 | 1 |
| pre | NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:23:16:25 | "a" |
| pre | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:9:17:24 | ... = ... |
| pre | NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:24:17:24 | 1 |
| pre | Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:5:10:5:13 | enter Test |
| pre | Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:9:9:11:9 | {...} |
| pre | Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:12:14:18:9 | if (...) ... |
@@ -1380,7 +1536,60 @@
| pre | Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:30:50:30 | access to parameter o |
| pre | Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:51:17:51:22 | break; |
| pre | Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; |
| pre | Switch.cs:55:17:55:21 | enter Throw | Switch.cs:55:17:55:21 | enter Throw |
| pre | Switch.cs:55:10:55:11 | enter M5 | Switch.cs:55:10:55:11 | enter M5 |
| pre | Switch.cs:55:10:55:11 | enter M5 | Switch.cs:55:10:55:11 | exit M5 |
| pre | Switch.cs:55:10:55:11 | enter M5 | Switch.cs:60:15:60:20 | break; |
| pre | Switch.cs:55:10:55:11 | enter M5 | Switch.cs:61:13:61:20 | case ...: |
| pre | Switch.cs:55:10:55:11 | enter M5 | Switch.cs:62:15:62:20 | break; |
| pre | Switch.cs:55:10:55:11 | exit M5 | Switch.cs:55:10:55:11 | exit M5 |
| pre | Switch.cs:60:15:60:20 | break; | Switch.cs:60:15:60:20 | break; |
| pre | Switch.cs:61:13:61:20 | case ...: | Switch.cs:61:13:61:20 | case ...: |
| pre | Switch.cs:61:13:61:20 | case ...: | Switch.cs:62:15:62:20 | break; |
| pre | Switch.cs:62:15:62:20 | break; | Switch.cs:62:15:62:20 | break; |
| pre | Switch.cs:66:10:66:11 | enter M6 | Switch.cs:66:10:66:11 | enter M6 |
| pre | Switch.cs:66:10:66:11 | enter M6 | Switch.cs:66:10:66:11 | exit M6 |
| pre | Switch.cs:66:10:66:11 | enter M6 | Switch.cs:71:15:71:20 | break; |
| pre | Switch.cs:66:10:66:11 | enter M6 | Switch.cs:72:13:72:21 | case ...: |
| pre | Switch.cs:66:10:66:11 | enter M6 | Switch.cs:73:15:73:20 | break; |
| pre | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:66:10:66:11 | exit M6 |
| pre | Switch.cs:71:15:71:20 | break; | Switch.cs:71:15:71:20 | break; |
| pre | Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:13:72:21 | case ...: |
| pre | Switch.cs:72:13:72:21 | case ...: | Switch.cs:73:15:73:20 | break; |
| pre | Switch.cs:73:15:73:20 | break; | Switch.cs:73:15:73:20 | break; |
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:77:10:77:11 | enter M7 |
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:77:10:77:11 | exit M7 |
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:82:22:82:25 | true |
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:83:13:83:20 | case ...: |
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:85:17:85:22 | break; |
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:86:22:86:25 | true |
| pre | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:77:10:77:11 | exit M7 |
| pre | Switch.cs:82:22:82:25 | true | Switch.cs:82:22:82:25 | true |
| pre | Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:13:83:20 | case ...: |
| pre | Switch.cs:83:13:83:20 | case ...: | Switch.cs:85:17:85:22 | break; |
| pre | Switch.cs:83:13:83:20 | case ...: | Switch.cs:86:22:86:25 | true |
| pre | Switch.cs:85:17:85:22 | break; | Switch.cs:85:17:85:22 | break; |
| pre | Switch.cs:86:22:86:25 | true | Switch.cs:86:22:86:25 | true |
| pre | Switch.cs:91:10:91:11 | enter M8 | Switch.cs:91:10:91:11 | enter M8 |
| pre | Switch.cs:91:10:91:11 | enter M8 | Switch.cs:91:10:91:11 | exit M8 |
| pre | Switch.cs:91:10:91:11 | enter M8 | Switch.cs:96:22:96:25 | true |
| pre | Switch.cs:91:10:91:11 | enter M8 | Switch.cs:98:16:98:20 | false |
| pre | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:91:10:91:11 | exit M8 |
| pre | Switch.cs:96:22:96:25 | true | Switch.cs:96:22:96:25 | true |
| pre | Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false |
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:101:9:101:10 | enter M9 |
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:101:9:101:10 | exit M9 |
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:105:29:105:29 | 0 |
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:106:13:106:20 | case ...: |
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:106:29:106:29 | 1 |
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:108:17:108:17 | 1 |
| pre | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:101:9:101:10 | exit M9 |
| pre | Switch.cs:105:29:105:29 | 0 | Switch.cs:105:29:105:29 | 0 |
| pre | Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:13:106:20 | case ...: |
| pre | Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:29:106:29 | 1 |
| pre | Switch.cs:106:13:106:20 | case ...: | Switch.cs:108:17:108:17 | 1 |
| pre | Switch.cs:106:29:106:29 | 1 | Switch.cs:106:29:106:29 | 1 |
| pre | Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 |
| pre | Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:17:111:21 | enter Throw |
| pre | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | enter M |
| pre | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:25:7:25 | ; |
| pre | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:8:9:8:28 | ... ...; |

View File

@@ -56,6 +56,8 @@
| Switch.cs:24:32:24:43 | ... > ... | Switch.cs:25:17:25:37 | ...; | true |
| Switch.cs:24:48:24:55 | ... != ... | Switch.cs:25:17:25:37 | ...; | true |
| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:51:17:51:22 | break; | true |
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:85:17:85:22 | break; | true |
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:86:22:86:25 | true | false |
| TypeAccesses.cs:7:13:7:22 | ... is ... | TypeAccesses.cs:7:25:7:25 | ; | true |
| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:24:25:24 | access to local variable x | true |
| VarDecls.cs:25:20:25:20 | access to parameter b | VarDecls.cs:25:28:25:28 | access to local variable y | false |

View File

@@ -17,6 +17,13 @@ class ConditionalAccess
}
string M6(string s1, string s2) => s1?.CommaJoinWith(s2);
void M7(int i)
{
var j = ((string)null)?.Length;
var s = ((int?)i)?.ToString();
s = ""?.CommaJoinWith(s);
}
}
static class Ext

View File

@@ -82,6 +82,8 @@
| 78 | 16 | ExitMethods.cs:78:16:78:25 | ... != ... | true | 78 | 29 | ExitMethods.cs:78:29:78:29 | 1 |
| 83 | 16 | ExitMethods.cs:83:16:83:30 | call to method Contains | false | 83 | 38 | ExitMethods.cs:83:38:83:38 | 1 |
| 83 | 16 | ExitMethods.cs:83:16:83:30 | call to method Contains | true | 83 | 34 | ExitMethods.cs:83:34:83:34 | 0 |
| 84 | 19 | Switch.cs:84:19:84:23 | ... > ... | false | 86 | 22 | Switch.cs:86:22:86:25 | true |
| 84 | 19 | Switch.cs:84:19:84:23 | ... > ... | true | 85 | 17 | Switch.cs:85:17:85:22 | break; |
| 86 | 13 | cflow.cs:86:13:86:21 | ... != ... | false | 84 | 18 | cflow.cs:84:18:84:19 | exit M2 |
| 86 | 13 | cflow.cs:86:13:86:21 | ... != ... | true | 86 | 26 | cflow.cs:86:26:86:26 | access to parameter s |
| 86 | 26 | cflow.cs:86:26:86:37 | ... > ... | false | 84 | 18 | cflow.cs:84:18:84:19 | exit M2 |

View File

@@ -218,12 +218,32 @@
| post | ConditionalAccess.cs:19:12:19:13 | exit M6 | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith |
| post | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:12:19:13 | enter M6 |
| post | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
| post | ConditionalAccess.cs:24:26:24:38 | exit CommaJoinWith | ConditionalAccess.cs:24:70:24:83 | ... + ... |
| post | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith |
| post | ConditionalAccess.cs:24:70:24:78 | ... + ... | ConditionalAccess.cs:24:75:24:78 | ", " |
| post | ConditionalAccess.cs:24:70:24:83 | ... + ... | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 |
| post | ConditionalAccess.cs:24:75:24:78 | ", " | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 |
| post | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | ConditionalAccess.cs:24:70:24:78 | ... + ... |
| post | ConditionalAccess.cs:21:10:21:11 | exit M7 | ConditionalAccess.cs:25:9:25:32 | ... = ... |
| post | ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:21:10:21:11 | enter M7 |
| post | ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:22:5:26:5 | {...} |
| post | ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:9:23:39 | ... ...; |
| post | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:23:18:23:29 | (...) ... |
| post | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:23:32:23:38 | access to property Length |
| post | ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:26:23:29 | null |
| post | ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:13:23:13 | access to local variable j |
| post | ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... |
| post | ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:9:24:38 | ... ...; |
| post | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:18:24:24 | (...) ... |
| post | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:27:24:37 | call to method ToString |
| post | ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:24:24:24 | access to parameter i |
| post | ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:13:24:13 | access to local variable s |
| post | ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:9:25:33 | ...; |
| post | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:13:25:14 | "" |
| post | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith |
| post | ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:24:13:24:37 | String s = ... |
| post | ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:9:25:9 | access to local variable s |
| post | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
| post | ConditionalAccess.cs:31:26:31:38 | exit CommaJoinWith | ConditionalAccess.cs:31:70:31:83 | ... + ... |
| post | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith |
| post | ConditionalAccess.cs:31:70:31:78 | ... + ... | ConditionalAccess.cs:31:75:31:78 | ", " |
| post | ConditionalAccess.cs:31:70:31:83 | ... + ... | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 |
| post | ConditionalAccess.cs:31:75:31:78 | ", " | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 |
| post | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | ConditionalAccess.cs:31:70:31:78 | ... + ... |
| post | ExitMethods.cs:6:10:6:11 | exit M1 | ExitMethods.cs:9:9:9:15 | return ...; |
| post | ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:6:10:6:11 | enter M1 |
| post | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:8:20:8:23 | true |
@@ -342,17 +362,26 @@
| post | Extensions.cs:25:9:25:34 | ...; | Extensions.cs:24:9:24:45 | call to method ToBool |
| post | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:9:25:14 | "true" |
| post | Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | Extensions.cs:25:23:25:32 | access to method Parse |
| post | Foreach.cs:3:10:3:11 | exit M1 | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... |
| post | Foreach.cs:4:5:7:5 | {...} | Foreach.cs:3:10:3:11 | enter M1 |
| post | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:29:5:32 | access to parameter args |
| post | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:6:13:6:13 | ; |
| post | Foreach.cs:5:29:5:32 | access to parameter args | Foreach.cs:4:5:7:5 | {...} |
| post | Foreach.cs:6:13:6:13 | ; | Foreach.cs:5:22:5:24 | String arg |
| post | Foreach.cs:9:10:9:11 | exit M2 | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... |
| post | Foreach.cs:10:5:13:5 | {...} | Foreach.cs:9:10:9:11 | enter M2 |
| post | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:11:27:11:30 | access to parameter args |
| post | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:12:13:12:13 | ; |
| post | Foreach.cs:11:27:11:30 | access to parameter args | Foreach.cs:10:5:13:5 | {...} |
| post | Foreach.cs:6:10:6:11 | exit M1 | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
| post | Foreach.cs:7:5:10:5 | {...} | Foreach.cs:6:10:6:11 | enter M1 |
| post | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:29:8:32 | access to parameter args |
| post | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:9:13:9:13 | ; |
| post | Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:7:5:10:5 | {...} |
| post | Foreach.cs:9:13:9:13 | ; | Foreach.cs:8:22:8:24 | String arg |
| post | Foreach.cs:12:10:12:11 | exit M2 | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
| post | Foreach.cs:13:5:16:5 | {...} | Foreach.cs:12:10:12:11 | enter M2 |
| post | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:27:14:30 | access to parameter args |
| post | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; |
| post | Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:13:5:16:5 | {...} |
| post | Foreach.cs:18:10:18:11 | exit M3 | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
| post | Foreach.cs:19:5:22:5 | {...} | Foreach.cs:18:10:18:11 | enter M3 |
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:43:20:68 | call to method Empty |
| post | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:21:11:21:11 | ; |
| post | Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:68 | ... ?? ... |
| post | Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:19:5:22:5 | {...} |
| post | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:27:20:27 | access to parameter e |
| post | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:29:20:38 | call to method ToArray |
| post | Foreach.cs:21:11:21:11 | ; | Foreach.cs:20:22:20:22 | String x |
| post | Initializers.cs:6:5:6:16 | exit Initializers | Initializers.cs:6:28:6:30 | {...} |
| post | Initializers.cs:6:28:6:30 | {...} | Initializers.cs:6:5:6:16 | enter Initializers |
| post | Initializers.cs:8:10:8:10 | exit M | Initializers.cs:11:13:11:63 | Initializers[] iz = ... |
@@ -407,6 +436,28 @@
| post | NullCoalescing.cs:11:44:11:45 | access to parameter b1 | NullCoalescing.cs:11:44:11:59 | ... ?? ... |
| post | NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... |
| post | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:51:11:58 | ... && ... |
| post | NullCoalescing.cs:13:10:13:11 | exit M6 | NullCoalescing.cs:17:9:17:24 | ... = ... |
| post | NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:13:10:13:11 | enter M6 |
| post | NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:14:5:18:5 | {...} |
| post | NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:9:15:32 | ... ...; |
| post | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:17:15:26 | (...) ... |
| post | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:31:15:31 | 0 |
| post | NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:23:15:26 | null |
| post | NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:13:15:13 | access to local variable j |
| post | NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:17:15:31 | ... ?? ... |
| post | NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:15:13:15:31 | Int32 j = ... |
| post | NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:9:16:26 | ... ...; |
| post | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:17:16:18 | "" |
| post | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:23:16:25 | "a" |
| post | NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:25 | ... ?? ... |
| post | NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:13:16:13 | access to local variable s |
| post | NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:9:17:25 | ...; |
| post | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:13:17:19 | (...) ... |
| post | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:24:17:24 | 1 |
| post | NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:16:13:16:25 | String s = ... |
| post | NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:19:17:19 | access to parameter i |
| post | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:9:17:9 | access to local variable j |
| post | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:24 | ... ?? ... |
| post | Patterns.cs:5:10:5:13 | exit Test | Patterns.cs:40:17:40:17 | access to local variable o |
| post | Patterns.cs:6:5:43:5 | {...} | Patterns.cs:5:10:5:13 | enter Test |
| post | Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:6:5:43:5 | {...} |
@@ -609,9 +660,70 @@
| post | Switch.cs:50:18:50:21 | access to type Boolean | Switch.cs:50:13:50:39 | case Boolean: |
| post | Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:35:50:38 | null |
| post | Switch.cs:50:35:50:38 | null | Switch.cs:50:30:50:30 | access to parameter o |
| post | Switch.cs:55:17:55:21 | exit Throw | Switch.cs:55:28:55:48 | throw ... |
| post | Switch.cs:55:28:55:48 | throw ... | Switch.cs:55:34:55:48 | object creation of type Exception |
| post | Switch.cs:55:34:55:48 | object creation of type Exception | Switch.cs:55:17:55:21 | enter Throw |
| post | Switch.cs:55:10:55:11 | exit M5 | Switch.cs:60:15:60:20 | break; |
| post | Switch.cs:55:10:55:11 | exit M5 | Switch.cs:61:18:61:18 | 3 |
| post | Switch.cs:55:10:55:11 | exit M5 | Switch.cs:62:15:62:20 | break; |
| post | Switch.cs:56:5:64:5 | {...} | Switch.cs:55:10:55:11 | enter M5 |
| post | Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:56:5:64:5 | {...} |
| post | Switch.cs:57:17:57:17 | 1 | Switch.cs:57:9:63:9 | switch (...) {...} |
| post | Switch.cs:57:17:57:21 | ... + ... | Switch.cs:57:21:57:21 | 2 |
| post | Switch.cs:57:21:57:21 | 2 | Switch.cs:57:17:57:17 | 1 |
| post | Switch.cs:59:13:59:20 | case ...: | Switch.cs:57:17:57:21 | ... + ... |
| post | Switch.cs:59:18:59:18 | 2 | Switch.cs:59:13:59:20 | case ...: |
| post | Switch.cs:61:18:61:18 | 3 | Switch.cs:61:13:61:20 | case ...: |
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:71:15:71:20 | break; |
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:72:18:72:19 | "" |
| post | Switch.cs:66:10:66:11 | exit M6 | Switch.cs:73:15:73:20 | break; |
| post | Switch.cs:67:5:75:5 | {...} | Switch.cs:66:10:66:11 | enter M6 |
| post | Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:67:5:75:5 | {...} |
| post | Switch.cs:68:17:68:25 | (...) ... | Switch.cs:68:25:68:25 | access to parameter s |
| post | Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:9:74:9 | switch (...) {...} |
| post | Switch.cs:70:13:70:24 | case Int32: | Switch.cs:68:17:68:25 | (...) ... |
| post | Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:70:13:70:24 | case Int32: |
| post | Switch.cs:72:18:72:19 | "" | Switch.cs:72:13:72:21 | case ...: |
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:82:15:82:26 | return ...; |
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:86:15:86:26 | return ...; |
| post | Switch.cs:77:10:77:11 | exit M7 | Switch.cs:88:9:88:21 | return ...; |
| post | Switch.cs:78:5:89:5 | {...} | Switch.cs:77:10:77:11 | enter M7 |
| post | Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:78:5:89:5 | {...} |
| post | Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:79:9:87:9 | switch (...) {...} |
| post | Switch.cs:81:13:81:20 | case ...: | Switch.cs:79:17:79:17 | access to parameter i |
| post | Switch.cs:81:18:81:18 | 1 | Switch.cs:81:13:81:20 | case ...: |
| post | Switch.cs:82:15:82:26 | return ...; | Switch.cs:82:22:82:25 | true |
| post | Switch.cs:83:18:83:18 | 2 | Switch.cs:83:13:83:20 | case ...: |
| post | Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:83:18:83:18 | 2 |
| post | Switch.cs:84:19:84:19 | access to parameter j | Switch.cs:84:15:85:22 | if (...) ... |
| post | Switch.cs:84:19:84:23 | ... > ... | Switch.cs:84:23:84:23 | 2 |
| post | Switch.cs:84:23:84:23 | 2 | Switch.cs:84:19:84:19 | access to parameter j |
| post | Switch.cs:86:15:86:26 | return ...; | Switch.cs:86:22:86:25 | true |
| post | Switch.cs:88:9:88:21 | return ...; | Switch.cs:88:16:88:20 | false |
| post | Switch.cs:88:16:88:20 | false | Switch.cs:85:17:85:22 | break; |
| post | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:96:15:96:26 | return ...; |
| post | Switch.cs:91:10:91:11 | exit M8 | Switch.cs:98:9:98:21 | return ...; |
| post | Switch.cs:92:5:99:5 | {...} | Switch.cs:91:10:91:11 | enter M8 |
| post | Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:92:5:99:5 | {...} |
| post | Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:93:9:97:9 | switch (...) {...} |
| post | Switch.cs:95:13:95:24 | case Int32: | Switch.cs:93:17:93:17 | access to parameter o |
| post | Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:95:13:95:24 | case Int32: |
| post | Switch.cs:96:15:96:26 | return ...; | Switch.cs:96:22:96:25 | true |
| post | Switch.cs:98:9:98:21 | return ...; | Switch.cs:98:16:98:20 | false |
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:105:22:105:30 | return ...; |
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:106:22:106:30 | return ...; |
| post | Switch.cs:101:9:101:10 | exit M9 | Switch.cs:108:9:108:18 | return ...; |
| post | Switch.cs:102:5:109:5 | {...} | Switch.cs:101:9:101:10 | enter M9 |
| post | Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:102:5:109:5 | {...} |
| post | Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:9:107:9 | switch (...) {...} |
| post | Switch.cs:103:19:103:25 | access to property Length | Switch.cs:103:17:103:17 | access to parameter s |
| post | Switch.cs:105:13:105:20 | case ...: | Switch.cs:103:19:103:25 | access to property Length |
| post | Switch.cs:105:18:105:18 | 0 | Switch.cs:105:13:105:20 | case ...: |
| post | Switch.cs:105:22:105:30 | return ...; | Switch.cs:105:29:105:29 | 0 |
| post | Switch.cs:106:18:106:18 | 1 | Switch.cs:106:13:106:20 | case ...: |
| post | Switch.cs:106:22:106:30 | return ...; | Switch.cs:106:29:106:29 | 1 |
| post | Switch.cs:108:9:108:18 | return ...; | Switch.cs:108:16:108:17 | -... |
| post | Switch.cs:108:16:108:17 | -... | Switch.cs:108:17:108:17 | 1 |
| post | Switch.cs:111:17:111:21 | exit Throw | Switch.cs:111:28:111:48 | throw ... |
| post | Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:34:111:48 | object creation of type Exception |
| post | Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:17:111:21 | enter Throw |
| post | TypeAccesses.cs:3:10:3:10 | exit M | TypeAccesses.cs:8:13:8:27 | Type t = ... |
| post | TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:3:10:3:10 | enter M |
| post | TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:4:5:9:5 | {...} |
@@ -1806,12 +1918,32 @@
| pre | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:12:19:13 | exit M6 |
| pre | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
| pre | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith |
| pre | ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 |
| pre | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | ConditionalAccess.cs:24:75:24:78 | ", " |
| pre | ConditionalAccess.cs:24:70:24:78 | ... + ... | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 |
| pre | ConditionalAccess.cs:24:70:24:83 | ... + ... | ConditionalAccess.cs:24:26:24:38 | exit CommaJoinWith |
| pre | ConditionalAccess.cs:24:75:24:78 | ", " | ConditionalAccess.cs:24:70:24:78 | ... + ... |
| pre | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | ConditionalAccess.cs:24:70:24:83 | ... + ... |
| pre | ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:22:5:26:5 | {...} |
| pre | ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:23:9:23:39 | ... ...; |
| pre | ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:13:23:13 | access to local variable j |
| pre | ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:26:23:29 | null |
| pre | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:24:9:24:38 | ... ...; |
| pre | ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... |
| pre | ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:32:23:38 | access to property Length |
| pre | ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:18:23:29 | (...) ... |
| pre | ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:13:24:13 | access to local variable s |
| pre | ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:24:24:24 | access to parameter i |
| pre | ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:25:9:25:33 | ...; |
| pre | ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:13:24:37 | String s = ... |
| pre | ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:27:24:37 | call to method ToString |
| pre | ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:18:24:24 | (...) ... |
| pre | ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:13:25:14 | "" |
| pre | ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:21:10:21:11 | exit M7 |
| pre | ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:9 | access to local variable s |
| pre | ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:9:25:32 | ... = ... |
| pre | ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
| pre | ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith |
| pre | ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 |
| pre | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | ConditionalAccess.cs:31:75:31:78 | ", " |
| pre | ConditionalAccess.cs:31:70:31:78 | ... + ... | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 |
| pre | ConditionalAccess.cs:31:70:31:83 | ... + ... | ConditionalAccess.cs:31:26:31:38 | exit CommaJoinWith |
| pre | ConditionalAccess.cs:31:75:31:78 | ", " | ConditionalAccess.cs:31:70:31:78 | ... + ... |
| pre | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | ConditionalAccess.cs:31:70:31:83 | ... + ... |
| pre | ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:7:5:10:5 | {...} |
| pre | ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:8:9:8:25 | ...; |
| pre | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:9:9:9:15 | return ...; |
@@ -1930,17 +2062,26 @@
| pre | Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:14 | "true" |
| pre | Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> |
| pre | Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | Extensions.cs:25:9:25:33 | call to method ToBool |
| pre | Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:4:5:7:5 | {...} |
| pre | Foreach.cs:4:5:7:5 | {...} | Foreach.cs:5:29:5:32 | access to parameter args |
| pre | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:3:10:3:11 | exit M1 |
| pre | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:22:5:24 | String arg |
| pre | Foreach.cs:5:22:5:24 | String arg | Foreach.cs:6:13:6:13 | ; |
| pre | Foreach.cs:5:29:5:32 | access to parameter args | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... |
| pre | Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:10:5:13:5 | {...} |
| pre | Foreach.cs:10:5:13:5 | {...} | Foreach.cs:11:27:11:30 | access to parameter args |
| pre | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:9:10:9:11 | exit M2 |
| pre | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:12:13:12:13 | ; |
| pre | Foreach.cs:11:27:11:30 | access to parameter args | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... |
| pre | Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:7:5:10:5 | {...} |
| pre | Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:29:8:32 | access to parameter args |
| pre | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | exit M1 |
| pre | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg |
| pre | Foreach.cs:8:22:8:24 | String arg | Foreach.cs:9:13:9:13 | ; |
| pre | Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... |
| pre | Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:13:5:16:5 | {...} |
| pre | Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:27:14:30 | access to parameter args |
| pre | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | exit M2 |
| pre | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; |
| pre | Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... |
| pre | Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:19:5:22:5 | {...} |
| pre | Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:27:20:68 | ... ?? ... |
| pre | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | exit M3 |
| pre | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x |
| pre | Foreach.cs:20:22:20:22 | String x | Foreach.cs:21:11:21:11 | ; |
| pre | Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:29:20:38 | call to method ToArray |
| pre | Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:43:20:68 | call to method Empty |
| pre | Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:27 | access to parameter e |
| pre | Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... |
| pre | Initializers.cs:6:5:6:16 | enter Initializers | Initializers.cs:6:28:6:30 | {...} |
| pre | Initializers.cs:6:28:6:30 | {...} | Initializers.cs:6:5:6:16 | exit Initializers |
| pre | Initializers.cs:8:10:8:10 | enter M | Initializers.cs:9:5:12:5 | {...} |
@@ -1996,6 +2137,28 @@
| pre | NullCoalescing.cs:11:44:11:59 | ... ?? ... | NullCoalescing.cs:11:44:11:45 | access to parameter b1 |
| pre | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 |
| pre | NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:52 | access to parameter b2 |
| pre | NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:14:5:18:5 | {...} |
| pre | NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:15:9:15:32 | ... ...; |
| pre | NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:13:15:13 | access to local variable j |
| pre | NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:17:15:31 | ... ?? ... |
| pre | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:16:9:16:26 | ... ...; |
| pre | NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... |
| pre | NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:31:15:31 | 0 |
| pre | NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:23:15:26 | null |
| pre | NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:17:15:26 | (...) ... |
| pre | NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:13:16:13 | access to local variable s |
| pre | NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:17:16:25 | ... ?? ... |
| pre | NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:17:9:17:25 | ...; |
| pre | NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:13:16:25 | String s = ... |
| pre | NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:23:16:25 | "a" |
| pre | NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" |
| pre | NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:13:17:24 | ... ?? ... |
| pre | NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:13:10:13:11 | exit M6 |
| pre | NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:9 | access to local variable j |
| pre | NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:9:17:24 | ... = ... |
| pre | NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:24:17:24 | 1 |
| pre | NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:19:17:19 | access to parameter i |
| pre | NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:19 | (...) ... |
| pre | Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:6:5:43:5 | {...} |
| pre | Patterns.cs:6:5:43:5 | {...} | Patterns.cs:7:9:7:24 | ... ...; |
| pre | Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:16:7:16 | access to local variable o |
@@ -2211,9 +2374,72 @@
| pre | Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:35:50:38 | null |
| pre | Switch.cs:50:30:50:38 | ... != ... | Switch.cs:51:17:51:22 | break; |
| pre | Switch.cs:50:35:50:38 | null | Switch.cs:50:30:50:38 | ... != ... |
| pre | Switch.cs:55:17:55:21 | enter Throw | Switch.cs:55:34:55:48 | object creation of type Exception |
| pre | Switch.cs:55:28:55:48 | throw ... | Switch.cs:55:17:55:21 | exit Throw |
| pre | Switch.cs:55:34:55:48 | object creation of type Exception | Switch.cs:55:28:55:48 | throw ... |
| pre | Switch.cs:55:10:55:11 | enter M5 | Switch.cs:56:5:64:5 | {...} |
| pre | Switch.cs:56:5:64:5 | {...} | Switch.cs:57:9:63:9 | switch (...) {...} |
| pre | Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:57:17:57:17 | 1 |
| pre | Switch.cs:57:17:57:17 | 1 | Switch.cs:57:21:57:21 | 2 |
| pre | Switch.cs:57:17:57:21 | ... + ... | Switch.cs:59:13:59:20 | case ...: |
| pre | Switch.cs:57:21:57:21 | 2 | Switch.cs:57:17:57:21 | ... + ... |
| pre | Switch.cs:59:13:59:20 | case ...: | Switch.cs:59:18:59:18 | 2 |
| pre | Switch.cs:59:18:59:18 | 2 | Switch.cs:60:15:60:20 | break; |
| pre | Switch.cs:59:18:59:18 | 2 | Switch.cs:61:13:61:20 | case ...: |
| pre | Switch.cs:61:13:61:20 | case ...: | Switch.cs:61:18:61:18 | 3 |
| pre | Switch.cs:61:18:61:18 | 3 | Switch.cs:62:15:62:20 | break; |
| pre | Switch.cs:66:10:66:11 | enter M6 | Switch.cs:67:5:75:5 | {...} |
| pre | Switch.cs:67:5:75:5 | {...} | Switch.cs:68:9:74:9 | switch (...) {...} |
| pre | Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:25:68:25 | access to parameter s |
| pre | Switch.cs:68:17:68:25 | (...) ... | Switch.cs:70:13:70:24 | case Int32: |
| pre | Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:17:68:25 | (...) ... |
| pre | Switch.cs:70:13:70:24 | case Int32: | Switch.cs:70:18:70:20 | access to type Int32 |
| pre | Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:71:15:71:20 | break; |
| pre | Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:72:13:72:21 | case ...: |
| pre | Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:18:72:19 | "" |
| pre | Switch.cs:72:18:72:19 | "" | Switch.cs:73:15:73:20 | break; |
| pre | Switch.cs:77:10:77:11 | enter M7 | Switch.cs:78:5:89:5 | {...} |
| pre | Switch.cs:78:5:89:5 | {...} | Switch.cs:79:9:87:9 | switch (...) {...} |
| pre | Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:79:17:79:17 | access to parameter i |
| pre | Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:81:13:81:20 | case ...: |
| pre | Switch.cs:81:13:81:20 | case ...: | Switch.cs:81:18:81:18 | 1 |
| pre | Switch.cs:81:18:81:18 | 1 | Switch.cs:82:22:82:25 | true |
| pre | Switch.cs:81:18:81:18 | 1 | Switch.cs:83:13:83:20 | case ...: |
| pre | Switch.cs:82:22:82:25 | true | Switch.cs:82:15:82:26 | return ...; |
| pre | Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:18:83:18 | 2 |
| pre | Switch.cs:83:18:83:18 | 2 | Switch.cs:84:15:85:22 | if (...) ... |
| pre | Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:19:84:19 | access to parameter j |
| pre | Switch.cs:84:19:84:19 | access to parameter j | Switch.cs:84:23:84:23 | 2 |
| pre | Switch.cs:84:19:84:23 | ... > ... | Switch.cs:85:17:85:22 | break; |
| pre | Switch.cs:84:19:84:23 | ... > ... | Switch.cs:86:22:86:25 | true |
| pre | Switch.cs:84:23:84:23 | 2 | Switch.cs:84:19:84:23 | ... > ... |
| pre | Switch.cs:85:17:85:22 | break; | Switch.cs:88:16:88:20 | false |
| pre | Switch.cs:86:22:86:25 | true | Switch.cs:86:15:86:26 | return ...; |
| pre | Switch.cs:88:16:88:20 | false | Switch.cs:88:9:88:21 | return ...; |
| pre | Switch.cs:91:10:91:11 | enter M8 | Switch.cs:92:5:99:5 | {...} |
| pre | Switch.cs:92:5:99:5 | {...} | Switch.cs:93:9:97:9 | switch (...) {...} |
| pre | Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:93:17:93:17 | access to parameter o |
| pre | Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:95:13:95:24 | case Int32: |
| pre | Switch.cs:95:13:95:24 | case Int32: | Switch.cs:95:18:95:20 | access to type Int32 |
| pre | Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:96:22:96:25 | true |
| pre | Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:98:16:98:20 | false |
| pre | Switch.cs:96:22:96:25 | true | Switch.cs:96:15:96:26 | return ...; |
| pre | Switch.cs:98:16:98:20 | false | Switch.cs:98:9:98:21 | return ...; |
| pre | Switch.cs:101:9:101:10 | enter M9 | Switch.cs:102:5:109:5 | {...} |
| pre | Switch.cs:102:5:109:5 | {...} | Switch.cs:103:9:107:9 | switch (...) {...} |
| pre | Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:17:103:17 | access to parameter s |
| pre | Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:19:103:25 | access to property Length |
| pre | Switch.cs:103:19:103:25 | access to property Length | Switch.cs:105:13:105:20 | case ...: |
| pre | Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:18:105:18 | 0 |
| pre | Switch.cs:105:18:105:18 | 0 | Switch.cs:105:29:105:29 | 0 |
| pre | Switch.cs:105:18:105:18 | 0 | Switch.cs:106:13:106:20 | case ...: |
| pre | Switch.cs:105:29:105:29 | 0 | Switch.cs:105:22:105:30 | return ...; |
| pre | Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:18:106:18 | 1 |
| pre | Switch.cs:106:18:106:18 | 1 | Switch.cs:106:29:106:29 | 1 |
| pre | Switch.cs:106:18:106:18 | 1 | Switch.cs:108:17:108:17 | 1 |
| pre | Switch.cs:106:29:106:29 | 1 | Switch.cs:106:22:106:30 | return ...; |
| pre | Switch.cs:108:16:108:17 | -... | Switch.cs:108:9:108:18 | return ...; |
| pre | Switch.cs:108:17:108:17 | 1 | Switch.cs:108:16:108:17 | -... |
| pre | Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:34:111:48 | object creation of type Exception |
| pre | Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:17:111:21 | exit Throw |
| pre | Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:28:111:48 | throw ... |
| pre | TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:4:5:9:5 | {...} |
| pre | TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:5:9:5:26 | ... ...; |
| pre | TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:13:5:13 | access to local variable s |

View File

@@ -174,10 +174,31 @@
| ConditionalAccess.cs:16:20:16:20 | 1 | ConditionalAccess.cs:16:13:16:21 | return ...; | semmle.label | successor |
| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | semmle.label | non-null |
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | semmle.label | successor |
| ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | ConditionalAccess.cs:24:75:24:78 | ", " | semmle.label | successor |
| ConditionalAccess.cs:24:70:24:78 | ... + ... | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | semmle.label | successor |
| ConditionalAccess.cs:24:75:24:78 | ", " | ConditionalAccess.cs:24:70:24:78 | ... + ... | semmle.label | successor |
| ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | ConditionalAccess.cs:24:70:24:83 | ... + ... | semmle.label | successor |
| ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:23:9:23:39 | ... ...; | semmle.label | successor |
| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:13:23:13 | access to local variable j | semmle.label | successor |
| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:26:23:29 | null | semmle.label | successor |
| ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:24:9:24:38 | ... ...; | semmle.label | successor |
| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | semmle.label | null |
| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:32:23:38 | access to property Length | semmle.label | non-null |
| ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:18:23:29 | (...) ... | semmle.label | successor |
| ConditionalAccess.cs:23:32:23:38 | access to property Length | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | semmle.label | successor |
| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:13:24:13 | access to local variable s | semmle.label | successor |
| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:24:24:24 | access to parameter i | semmle.label | successor |
| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:25:9:25:33 | ...; | semmle.label | successor |
| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:13:24:37 | String s = ... | semmle.label | null |
| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:27:24:37 | call to method ToString | semmle.label | non-null |
| ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:18:24:24 | (...) ... | semmle.label | successor |
| ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:13:24:37 | String s = ... | semmle.label | successor |
| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:13:25:14 | "" | semmle.label | successor |
| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:9 | access to local variable s | semmle.label | successor |
| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:9:25:32 | ... = ... | semmle.label | null |
| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:31:25:31 | access to local variable s | semmle.label | non-null |
| ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:9:25:32 | ... = ... | semmle.label | successor |
| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | semmle.label | successor |
| ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | ConditionalAccess.cs:31:75:31:78 | ", " | semmle.label | successor |
| ConditionalAccess.cs:31:70:31:78 | ... + ... | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | semmle.label | successor |
| ConditionalAccess.cs:31:75:31:78 | ", " | ConditionalAccess.cs:31:70:31:78 | ... + ... | semmle.label | successor |
| ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | ConditionalAccess.cs:31:70:31:83 | ... + ... | semmle.label | successor |
| ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:8:9:8:25 | ...; | semmle.label | successor |
| ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:9:9:9:15 | return ...; | semmle.label | successor |
| ExitMethods.cs:8:9:8:25 | ...; | ExitMethods.cs:8:20:8:23 | true | semmle.label | successor |
@@ -268,15 +289,24 @@
| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:14 | "true" | semmle.label | successor |
| Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | semmle.label | successor |
| Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | Extensions.cs:25:9:25:33 | call to method ToBool | semmle.label | successor |
| Foreach.cs:4:5:7:5 | {...} | Foreach.cs:5:29:5:32 | access to parameter args | semmle.label | successor |
| Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:22:5:24 | String arg | semmle.label | non-empty |
| Foreach.cs:5:22:5:24 | String arg | Foreach.cs:6:13:6:13 | ; | semmle.label | successor |
| Foreach.cs:5:29:5:32 | access to parameter args | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:6:13:6:13 | ; | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:10:5:13:5 | {...} | Foreach.cs:11:27:11:30 | access to parameter args | semmle.label | successor |
| Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:12:13:12:13 | ; | semmle.label | non-empty |
| Foreach.cs:11:27:11:30 | access to parameter args | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:12:13:12:13 | ; | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:29:8:32 | access to parameter args | semmle.label | successor |
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | semmle.label | non-empty |
| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:9:13:9:13 | ; | semmle.label | successor |
| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:9:13:9:13 | ; | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:27:14:30 | access to parameter args | semmle.label | successor |
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; | semmle.label | non-empty |
| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:15:13:15:13 | ; | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:27:20:68 | ... ?? ... | semmle.label | successor |
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x | semmle.label | non-empty |
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:21:11:21:11 | ; | semmle.label | successor |
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:29:20:38 | call to method ToArray | semmle.label | non-null |
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:43:20:68 | call to method Empty | semmle.label | null |
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:27 | access to parameter e | semmle.label | successor |
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:43:20:68 | call to method Empty | semmle.label | null |
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:21:11:21:11 | ; | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | semmle.label | successor |
| Initializers.cs:9:5:12:5 | {...} | Initializers.cs:10:9:10:54 | ... ...; | semmle.label | successor |
| Initializers.cs:10:9:10:54 | ... ...; | Initializers.cs:10:13:10:13 | access to local variable i | semmle.label | successor |
| Initializers.cs:10:13:10:13 | access to local variable i | Initializers.cs:10:34:10:35 | "" | semmle.label | successor |
@@ -327,6 +357,29 @@
| NullCoalescing.cs:11:51:11:58 | ... && ... | NullCoalescing.cs:11:51:11:52 | access to parameter b2 | semmle.label | successor |
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:64:11:64 | 0 | semmle.label | true |
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:68:11:68 | 1 | semmle.label | false |
| NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:15:9:15:32 | ... ...; | semmle.label | successor |
| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:13:15:13 | access to local variable j | semmle.label | successor |
| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:17:15:31 | ... ?? ... | semmle.label | successor |
| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:16:9:16:26 | ... ...; | semmle.label | successor |
| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | semmle.label | non-null |
| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:31:15:31 | 0 | semmle.label | null |
| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:23:15:26 | null | semmle.label | successor |
| NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:17:15:26 | (...) ... | semmle.label | successor |
| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | semmle.label | successor |
| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:13:16:13 | access to local variable s | semmle.label | successor |
| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:17:16:25 | ... ?? ... | semmle.label | successor |
| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:17:9:17:25 | ...; | semmle.label | successor |
| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:13:16:25 | String s = ... | semmle.label | non-null |
| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:23:16:25 | "a" | semmle.label | null |
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" | semmle.label | successor |
| NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:13:16:25 | String s = ... | semmle.label | successor |
| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:13:17:24 | ... ?? ... | semmle.label | successor |
| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:9 | access to local variable j | semmle.label | successor |
| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:9:17:24 | ... = ... | semmle.label | non-null |
| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:24:17:24 | 1 | semmle.label | null |
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:19:17:19 | access to parameter i | semmle.label | successor |
| NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:19 | (...) ... | semmle.label | successor |
| NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:9:17:24 | ... = ... | semmle.label | successor |
| Patterns.cs:6:5:43:5 | {...} | Patterns.cs:7:9:7:24 | ... ...; | semmle.label | successor |
| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:16:7:16 | access to local variable o | semmle.label | successor |
| Patterns.cs:7:16:7:16 | access to local variable o | Patterns.cs:7:20:7:23 | null | semmle.label | successor |
@@ -544,7 +597,65 @@
| Switch.cs:50:30:50:30 | access to parameter o | Switch.cs:50:35:50:38 | null | semmle.label | successor |
| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:51:17:51:22 | break; | semmle.label | true |
| Switch.cs:50:35:50:38 | null | Switch.cs:50:30:50:38 | ... != ... | semmle.label | successor |
| Switch.cs:55:34:55:48 | object creation of type Exception | Switch.cs:55:28:55:48 | throw ... | semmle.label | successor |
| Switch.cs:56:5:64:5 | {...} | Switch.cs:57:9:63:9 | switch (...) {...} | semmle.label | successor |
| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:57:17:57:17 | 1 | semmle.label | successor |
| Switch.cs:57:17:57:17 | 1 | Switch.cs:57:21:57:21 | 2 | semmle.label | successor |
| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:59:13:59:20 | case ...: | semmle.label | successor |
| Switch.cs:57:21:57:21 | 2 | Switch.cs:57:17:57:21 | ... + ... | semmle.label | successor |
| Switch.cs:59:13:59:20 | case ...: | Switch.cs:59:18:59:18 | 2 | semmle.label | successor |
| Switch.cs:59:18:59:18 | 2 | Switch.cs:60:15:60:20 | break; | semmle.label | match |
| Switch.cs:59:18:59:18 | 2 | Switch.cs:61:13:61:20 | case ...: | semmle.label | no-match |
| Switch.cs:61:13:61:20 | case ...: | Switch.cs:61:18:61:18 | 3 | semmle.label | successor |
| Switch.cs:61:18:61:18 | 3 | Switch.cs:62:15:62:20 | break; | semmle.label | match |
| Switch.cs:67:5:75:5 | {...} | Switch.cs:68:9:74:9 | switch (...) {...} | semmle.label | successor |
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:25:68:25 | access to parameter s | semmle.label | successor |
| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:70:13:70:24 | case Int32: | semmle.label | successor |
| Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:17:68:25 | (...) ... | semmle.label | successor |
| Switch.cs:70:13:70:24 | case Int32: | Switch.cs:70:18:70:20 | access to type Int32 | semmle.label | successor |
| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:71:15:71:20 | break; | semmle.label | match |
| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:72:13:72:21 | case ...: | semmle.label | no-match |
| Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:18:72:19 | "" | semmle.label | successor |
| Switch.cs:72:18:72:19 | "" | Switch.cs:73:15:73:20 | break; | semmle.label | match |
| Switch.cs:78:5:89:5 | {...} | Switch.cs:79:9:87:9 | switch (...) {...} | semmle.label | successor |
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:79:17:79:17 | access to parameter i | semmle.label | successor |
| Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:81:13:81:20 | case ...: | semmle.label | successor |
| Switch.cs:81:13:81:20 | case ...: | Switch.cs:81:18:81:18 | 1 | semmle.label | successor |
| Switch.cs:81:18:81:18 | 1 | Switch.cs:82:22:82:25 | true | semmle.label | match |
| Switch.cs:81:18:81:18 | 1 | Switch.cs:83:13:83:20 | case ...: | semmle.label | no-match |
| Switch.cs:82:22:82:25 | true | Switch.cs:82:15:82:26 | return ...; | semmle.label | successor |
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:18:83:18 | 2 | semmle.label | successor |
| Switch.cs:83:18:83:18 | 2 | Switch.cs:84:15:85:22 | if (...) ... | semmle.label | match |
| Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:19:84:19 | access to parameter j | semmle.label | successor |
| Switch.cs:84:19:84:19 | access to parameter j | Switch.cs:84:23:84:23 | 2 | semmle.label | successor |
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:85:17:85:22 | break; | semmle.label | true |
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:86:22:86:25 | true | semmle.label | false |
| Switch.cs:84:23:84:23 | 2 | Switch.cs:84:19:84:23 | ... > ... | semmle.label | successor |
| Switch.cs:85:17:85:22 | break; | Switch.cs:88:16:88:20 | false | semmle.label | break |
| Switch.cs:86:22:86:25 | true | Switch.cs:86:15:86:26 | return ...; | semmle.label | successor |
| Switch.cs:88:16:88:20 | false | Switch.cs:88:9:88:21 | return ...; | semmle.label | successor |
| Switch.cs:92:5:99:5 | {...} | Switch.cs:93:9:97:9 | switch (...) {...} | semmle.label | successor |
| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:93:17:93:17 | access to parameter o | semmle.label | successor |
| Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:95:13:95:24 | case Int32: | semmle.label | successor |
| Switch.cs:95:13:95:24 | case Int32: | Switch.cs:95:18:95:20 | access to type Int32 | semmle.label | successor |
| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:96:22:96:25 | true | semmle.label | match |
| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:98:16:98:20 | false | semmle.label | no-match |
| Switch.cs:96:22:96:25 | true | Switch.cs:96:15:96:26 | return ...; | semmle.label | successor |
| Switch.cs:98:16:98:20 | false | Switch.cs:98:9:98:21 | return ...; | semmle.label | successor |
| Switch.cs:102:5:109:5 | {...} | Switch.cs:103:9:107:9 | switch (...) {...} | semmle.label | successor |
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:17:103:17 | access to parameter s | semmle.label | successor |
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:19:103:25 | access to property Length | semmle.label | non-null |
| Switch.cs:103:19:103:25 | access to property Length | Switch.cs:105:13:105:20 | case ...: | semmle.label | successor |
| Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:18:105:18 | 0 | semmle.label | successor |
| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:29:105:29 | 0 | semmle.label | match |
| Switch.cs:105:18:105:18 | 0 | Switch.cs:106:13:106:20 | case ...: | semmle.label | no-match |
| Switch.cs:105:29:105:29 | 0 | Switch.cs:105:22:105:30 | return ...; | semmle.label | successor |
| Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:18:106:18 | 1 | semmle.label | successor |
| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:29:106:29 | 1 | semmle.label | match |
| Switch.cs:106:18:106:18 | 1 | Switch.cs:108:17:108:17 | 1 | semmle.label | no-match |
| Switch.cs:106:29:106:29 | 1 | Switch.cs:106:22:106:30 | return ...; | semmle.label | successor |
| Switch.cs:108:16:108:17 | -... | Switch.cs:108:9:108:18 | return ...; | semmle.label | successor |
| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:16:108:17 | -... | semmle.label | successor |
| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:28:111:48 | throw ... | semmle.label | successor |
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:5:9:5:26 | ... ...; | semmle.label | successor |
| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:13:5:13 | access to local variable s | semmle.label | successor |
| TypeAccesses.cs:5:13:5:13 | access to local variable s | TypeAccesses.cs:5:25:5:25 | access to parameter o | semmle.label | successor |

View File

@@ -194,11 +194,30 @@
| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 |
| ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 |
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 |
| ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 |
| ConditionalAccess.cs:24:70:24:78 | ... + ... | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 |
| ConditionalAccess.cs:24:70:24:83 | ... + ... | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 |
| ConditionalAccess.cs:24:75:24:78 | ", " | ConditionalAccess.cs:24:75:24:78 | ", " |
| ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 |
| ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:22:5:26:5 | {...} |
| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:9:23:39 | ... ...; |
| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:13:23:13 | access to local variable j |
| ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:23:13:23:13 | access to local variable j |
| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:26:23:29 | null |
| ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:26:23:29 | null |
| ConditionalAccess.cs:23:32:23:38 | access to property Length | ConditionalAccess.cs:23:26:23:29 | null |
| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:9:24:38 | ... ...; |
| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:13:24:13 | access to local variable s |
| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:13:24:13 | access to local variable s |
| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:24:24:24 | access to parameter i |
| ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:24:24:24 | access to parameter i |
| ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:24:24:24 | access to parameter i |
| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:9:25:9 | access to local variable s |
| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:9:25:9 | access to local variable s |
| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:33 | ...; |
| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:14 | "" |
| ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:14 | "" |
| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:31:25:31 | access to local variable s |
| ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 |
| ConditionalAccess.cs:31:70:31:78 | ... + ... | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 |
| ConditionalAccess.cs:31:70:31:83 | ... + ... | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 |
| ConditionalAccess.cs:31:75:31:78 | ", " | ConditionalAccess.cs:31:75:31:78 | ", " |
| ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 |
| ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:7:5:10:5 | {...} |
| ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:8:20:8:23 | true |
| ExitMethods.cs:8:9:8:25 | ...; | ExitMethods.cs:8:9:8:25 | ...; |
@@ -307,15 +326,23 @@
| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:34 | ...; |
| Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | access to method Parse |
| Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | Extensions.cs:25:23:25:32 | access to method Parse |
| Foreach.cs:4:5:7:5 | {...} | Foreach.cs:4:5:7:5 | {...} |
| Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:29:5:32 | access to parameter args |
| Foreach.cs:5:22:5:24 | String arg | Foreach.cs:5:22:5:24 | String arg |
| Foreach.cs:5:29:5:32 | access to parameter args | Foreach.cs:5:29:5:32 | access to parameter args |
| Foreach.cs:6:13:6:13 | ; | Foreach.cs:6:13:6:13 | ; |
| Foreach.cs:10:5:13:5 | {...} | Foreach.cs:10:5:13:5 | {...} |
| Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:11:27:11:30 | access to parameter args |
| Foreach.cs:11:27:11:30 | access to parameter args | Foreach.cs:11:27:11:30 | access to parameter args |
| Foreach.cs:12:13:12:13 | ; | Foreach.cs:12:13:12:13 | ; |
| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:7:5:10:5 | {...} |
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:29:8:32 | access to parameter args |
| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg |
| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:29:8:32 | access to parameter args |
| Foreach.cs:9:13:9:13 | ; | Foreach.cs:9:13:9:13 | ; |
| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:13:5:16:5 | {...} |
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:27:14:30 | access to parameter args |
| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:27:14:30 | access to parameter args |
| Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; |
| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:19:5:22:5 | {...} |
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:27:20:68 | ... ?? ... |
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x |
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | access to parameter e |
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:68 | ... ?? ... |
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:27:20:27 | access to parameter e |
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty |
| Foreach.cs:21:11:21:11 | ; | Foreach.cs:21:11:21:11 | ; |
| Initializers.cs:6:28:6:30 | {...} | Initializers.cs:6:28:6:30 | {...} |
| Initializers.cs:9:5:12:5 | {...} | Initializers.cs:9:5:12:5 | {...} |
| Initializers.cs:10:9:10:54 | ... ...; | Initializers.cs:10:9:10:54 | ... ...; |
@@ -369,6 +396,27 @@
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 |
| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 |
| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 |
| NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:14:5:18:5 | {...} |
| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:9:15:32 | ... ...; |
| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:13:15:13 | access to local variable j |
| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:13:15:13 | access to local variable j |
| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:23:15:26 | null |
| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:17:15:31 | ... ?? ... |
| NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:23:15:26 | null |
| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:31:15:31 | 0 |
| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:9:16:26 | ... ...; |
| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:13:16:13 | access to local variable s |
| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:13:16:13 | access to local variable s |
| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:18 | "" |
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:25 | ... ?? ... |
| NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:23:16:25 | "a" |
| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:9:17:9 | access to local variable j |
| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:9:17:9 | access to local variable j |
| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:25 | ...; |
| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:19:17:19 | access to parameter i |
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:24 | ... ?? ... |
| NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:19:17:19 | access to parameter i |
| NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:24:17:24 | 1 |
| Patterns.cs:6:5:43:5 | {...} | Patterns.cs:6:5:43:5 | {...} |
| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:9:7:24 | ... ...; |
| Patterns.cs:7:16:7:16 | access to local variable o | Patterns.cs:7:16:7:16 | access to local variable o |
@@ -574,8 +622,69 @@
| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:30:50:30 | access to parameter o |
| Switch.cs:50:35:50:38 | null | Switch.cs:50:35:50:38 | null |
| Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; |
| Switch.cs:55:28:55:48 | throw ... | Switch.cs:55:34:55:48 | object creation of type Exception |
| Switch.cs:55:34:55:48 | object creation of type Exception | Switch.cs:55:34:55:48 | object creation of type Exception |
| Switch.cs:56:5:64:5 | {...} | Switch.cs:56:5:64:5 | {...} |
| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:57:9:63:9 | switch (...) {...} |
| Switch.cs:57:17:57:17 | 1 | Switch.cs:57:17:57:17 | 1 |
| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:57:17:57:17 | 1 |
| Switch.cs:57:21:57:21 | 2 | Switch.cs:57:21:57:21 | 2 |
| Switch.cs:59:13:59:20 | case ...: | Switch.cs:59:13:59:20 | case ...: |
| Switch.cs:59:18:59:18 | 2 | Switch.cs:59:18:59:18 | 2 |
| Switch.cs:60:15:60:20 | break; | Switch.cs:60:15:60:20 | break; |
| Switch.cs:61:13:61:20 | case ...: | Switch.cs:61:13:61:20 | case ...: |
| Switch.cs:61:18:61:18 | 3 | Switch.cs:61:18:61:18 | 3 |
| Switch.cs:62:15:62:20 | break; | Switch.cs:62:15:62:20 | break; |
| Switch.cs:67:5:75:5 | {...} | Switch.cs:67:5:75:5 | {...} |
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:9:74:9 | switch (...) {...} |
| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:68:25:68:25 | access to parameter s |
| Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:25:68:25 | access to parameter s |
| Switch.cs:70:13:70:24 | case Int32: | Switch.cs:70:13:70:24 | case Int32: |
| Switch.cs:71:15:71:20 | break; | Switch.cs:71:15:71:20 | break; |
| Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:13:72:21 | case ...: |
| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | "" |
| Switch.cs:73:15:73:20 | break; | Switch.cs:73:15:73:20 | break; |
| Switch.cs:78:5:89:5 | {...} | Switch.cs:78:5:89:5 | {...} |
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:79:9:87:9 | switch (...) {...} |
| Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:79:17:79:17 | access to parameter i |
| Switch.cs:81:13:81:20 | case ...: | Switch.cs:81:13:81:20 | case ...: |
| Switch.cs:81:18:81:18 | 1 | Switch.cs:81:18:81:18 | 1 |
| Switch.cs:82:15:82:26 | return ...; | Switch.cs:82:22:82:25 | true |
| Switch.cs:82:22:82:25 | true | Switch.cs:82:22:82:25 | true |
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:13:83:20 | case ...: |
| Switch.cs:83:18:83:18 | 2 | Switch.cs:83:18:83:18 | 2 |
| Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:15:85:22 | if (...) ... |
| Switch.cs:84:19:84:19 | access to parameter j | Switch.cs:84:19:84:19 | access to parameter j |
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:84:19:84:19 | access to parameter j |
| Switch.cs:84:23:84:23 | 2 | Switch.cs:84:23:84:23 | 2 |
| Switch.cs:85:17:85:22 | break; | Switch.cs:85:17:85:22 | break; |
| Switch.cs:86:15:86:26 | return ...; | Switch.cs:86:22:86:25 | true |
| Switch.cs:86:22:86:25 | true | Switch.cs:86:22:86:25 | true |
| Switch.cs:88:9:88:21 | return ...; | Switch.cs:88:16:88:20 | false |
| Switch.cs:88:16:88:20 | false | Switch.cs:88:16:88:20 | false |
| Switch.cs:92:5:99:5 | {...} | Switch.cs:92:5:99:5 | {...} |
| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:93:9:97:9 | switch (...) {...} |
| Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:93:17:93:17 | access to parameter o |
| Switch.cs:95:13:95:24 | case Int32: | Switch.cs:95:13:95:24 | case Int32: |
| Switch.cs:96:15:96:26 | return ...; | Switch.cs:96:22:96:25 | true |
| Switch.cs:96:22:96:25 | true | Switch.cs:96:22:96:25 | true |
| Switch.cs:98:9:98:21 | return ...; | Switch.cs:98:16:98:20 | false |
| Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false |
| Switch.cs:102:5:109:5 | {...} | Switch.cs:102:5:109:5 | {...} |
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:9:107:9 | switch (...) {...} |
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | access to parameter s |
| Switch.cs:103:19:103:25 | access to property Length | Switch.cs:103:17:103:17 | access to parameter s |
| Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:13:105:20 | case ...: |
| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:18:105:18 | 0 |
| Switch.cs:105:22:105:30 | return ...; | Switch.cs:105:29:105:29 | 0 |
| Switch.cs:105:29:105:29 | 0 | Switch.cs:105:29:105:29 | 0 |
| Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:13:106:20 | case ...: |
| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:18:106:18 | 1 |
| Switch.cs:106:22:106:30 | return ...; | Switch.cs:106:29:106:29 | 1 |
| Switch.cs:106:29:106:29 | 1 | Switch.cs:106:29:106:29 | 1 |
| Switch.cs:108:9:108:18 | return ...; | Switch.cs:108:17:108:17 | 1 |
| Switch.cs:108:16:108:17 | -... | Switch.cs:108:17:108:17 | 1 |
| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 |
| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:34:111:48 | object creation of type Exception |
| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:34:111:48 | object creation of type Exception |
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:4:5:9:5 | {...} |
| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:9:5:26 | ... ...; |
| TypeAccesses.cs:5:13:5:13 | access to local variable s | TypeAccesses.cs:5:13:5:13 | access to local variable s |

View File

@@ -20,7 +20,8 @@
| ConditionalAccess.cs:9:9:9:10 | M4 | ConditionalAccess.cs:9:25:9:38 | ... ?? ... |
| ConditionalAccess.cs:11:9:11:10 | M5 | ConditionalAccess.cs:12:5:17:5 | {...} |
| ConditionalAccess.cs:19:12:19:13 | M6 | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 |
| ConditionalAccess.cs:24:26:24:38 | CommaJoinWith | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 |
| ConditionalAccess.cs:21:10:21:11 | M7 | ConditionalAccess.cs:22:5:26:5 | {...} |
| ConditionalAccess.cs:31:26:31:38 | CommaJoinWith | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 |
| ExitMethods.cs:6:10:6:11 | M1 | ExitMethods.cs:7:5:10:5 | {...} |
| ExitMethods.cs:12:10:12:11 | M2 | ExitMethods.cs:13:5:16:5 | {...} |
| ExitMethods.cs:18:10:18:11 | M3 | ExitMethods.cs:19:5:22:5 | {...} |
@@ -38,8 +39,9 @@
| Extensions.cs:10:24:10:29 | ToBool | Extensions.cs:11:5:13:5 | {...} |
| Extensions.cs:15:23:15:33 | CallToInt32 | Extensions.cs:15:48:15:50 | "0" |
| Extensions.cs:20:17:20:20 | Main | Extensions.cs:21:5:26:5 | {...} |
| Foreach.cs:3:10:3:11 | M1 | Foreach.cs:4:5:7:5 | {...} |
| Foreach.cs:9:10:9:11 | M2 | Foreach.cs:10:5:13:5 | {...} |
| Foreach.cs:6:10:6:11 | M1 | Foreach.cs:7:5:10:5 | {...} |
| Foreach.cs:12:10:12:11 | M2 | Foreach.cs:13:5:16:5 | {...} |
| Foreach.cs:18:10:18:11 | M3 | Foreach.cs:19:5:22:5 | {...} |
| Initializers.cs:6:5:6:16 | Initializers | Initializers.cs:6:28:6:30 | {...} |
| Initializers.cs:8:10:8:10 | M | Initializers.cs:9:5:12:5 | {...} |
| NullCoalescing.cs:3:9:3:10 | M1 | NullCoalescing.cs:3:23:3:28 | ... ?? ... |
@@ -47,6 +49,7 @@
| NullCoalescing.cs:7:12:7:13 | M3 | NullCoalescing.cs:7:40:7:53 | ... ?? ... |
| NullCoalescing.cs:9:12:9:13 | M4 | NullCoalescing.cs:9:36:9:58 | ... ?? ... |
| NullCoalescing.cs:11:9:11:10 | M5 | NullCoalescing.cs:11:43:11:68 | ... ? ... : ... |
| NullCoalescing.cs:13:10:13:11 | M6 | NullCoalescing.cs:14:5:18:5 | {...} |
| Patterns.cs:5:10:5:13 | Test | Patterns.cs:6:5:43:5 | {...} |
| Qualifiers.cs:7:16:7:21 | Method | Qualifiers.cs:7:28:7:31 | null |
| Qualifiers.cs:8:23:8:34 | StaticMethod | Qualifiers.cs:8:41:8:44 | null |
@@ -55,7 +58,12 @@
| Switch.cs:10:10:10:11 | M2 | Switch.cs:11:5:33:5 | {...} |
| Switch.cs:35:10:35:11 | M3 | Switch.cs:36:5:42:5 | {...} |
| Switch.cs:44:10:44:11 | M4 | Switch.cs:45:5:53:5 | {...} |
| Switch.cs:55:17:55:21 | Throw | Switch.cs:55:34:55:48 | object creation of type Exception |
| Switch.cs:55:10:55:11 | M5 | Switch.cs:56:5:64:5 | {...} |
| Switch.cs:66:10:66:11 | M6 | Switch.cs:67:5:75:5 | {...} |
| Switch.cs:77:10:77:11 | M7 | Switch.cs:78:5:89:5 | {...} |
| Switch.cs:91:10:91:11 | M8 | Switch.cs:92:5:99:5 | {...} |
| Switch.cs:101:9:101:10 | M9 | Switch.cs:102:5:109:5 | {...} |
| Switch.cs:111:17:111:21 | Throw | Switch.cs:111:34:111:48 | object creation of type Exception |
| TypeAccesses.cs:3:10:3:10 | M | TypeAccesses.cs:4:5:9:5 | {...} |
| VarDecls.cs:5:18:5:19 | M1 | VarDecls.cs:6:5:11:5 | {...} |
| VarDecls.cs:13:12:13:13 | M2 | VarDecls.cs:14:5:17:5 | {...} |

View File

@@ -282,11 +282,36 @@
| ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | null |
| ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | normal |
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | normal |
| ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | normal |
| ConditionalAccess.cs:24:70:24:78 | ... + ... | ConditionalAccess.cs:24:70:24:78 | ... + ... | normal |
| ConditionalAccess.cs:24:70:24:83 | ... + ... | ConditionalAccess.cs:24:70:24:83 | ... + ... | normal |
| ConditionalAccess.cs:24:75:24:78 | ", " | ConditionalAccess.cs:24:75:24:78 | ", " | normal |
| ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | normal |
| ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:25:9:25:32 | ... = ... | normal |
| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | normal |
| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:13:23:13 | access to local variable j | normal |
| ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | normal |
| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:18:23:29 | (...) ... | non-null |
| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:18:23:29 | (...) ... | null |
| ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:26:23:29 | null | normal |
| ConditionalAccess.cs:23:32:23:38 | access to property Length | ConditionalAccess.cs:23:18:23:29 | (...) ... | null |
| ConditionalAccess.cs:23:32:23:38 | access to property Length | ConditionalAccess.cs:23:32:23:38 | access to property Length | normal |
| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:13:24:37 | String s = ... | normal |
| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:13:24:13 | access to local variable s | normal |
| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:24:13:24:37 | String s = ... | normal |
| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:18:24:24 | (...) ... | non-null |
| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:18:24:24 | (...) ... | null |
| ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:24:24:24 | access to parameter i | normal |
| ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:18:24:24 | (...) ... | null |
| ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:27:24:37 | call to method ToString | normal |
| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:9:25:9 | access to local variable s | normal |
| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:25:9:25:32 | ... = ... | normal |
| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:32 | ... = ... | normal |
| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:14 | "" | non-null |
| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:13:25:14 | "" | null |
| ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:13:25:14 | "" | null |
| ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | normal |
| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:31:25:31 | access to local variable s | normal |
| ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | normal |
| ConditionalAccess.cs:31:70:31:78 | ... + ... | ConditionalAccess.cs:31:70:31:78 | ... + ... | normal |
| ConditionalAccess.cs:31:70:31:83 | ... + ... | ConditionalAccess.cs:31:70:31:83 | ... + ... | normal |
| ConditionalAccess.cs:31:75:31:78 | ", " | ConditionalAccess.cs:31:75:31:78 | ", " | normal |
| ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | normal |
| ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:9:9:9:15 | return ...; | return |
| ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | normal |
| ExitMethods.cs:8:9:8:25 | ...; | ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | normal |
@@ -418,15 +443,27 @@
| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:33 | call to method ToBool | normal |
| Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | access to method Parse | normal |
| Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | normal |
| Foreach.cs:4:5:7:5 | {...} | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | empty |
| Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | empty |
| Foreach.cs:5:22:5:24 | String arg | Foreach.cs:5:22:5:24 | String arg | normal |
| Foreach.cs:5:29:5:32 | access to parameter args | Foreach.cs:5:29:5:32 | access to parameter args | normal |
| Foreach.cs:6:13:6:13 | ; | Foreach.cs:6:13:6:13 | ; | normal |
| Foreach.cs:10:5:13:5 | {...} | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | empty |
| Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | empty |
| Foreach.cs:11:27:11:30 | access to parameter args | Foreach.cs:11:27:11:30 | access to parameter args | normal |
| Foreach.cs:12:13:12:13 | ; | Foreach.cs:12:13:12:13 | ; | normal |
| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | empty |
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | empty |
| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:8:22:8:24 | String arg | normal |
| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:29:8:32 | access to parameter args | normal |
| Foreach.cs:9:13:9:13 | ; | Foreach.cs:9:13:9:13 | ; | normal |
| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | empty |
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | empty |
| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:27:14:30 | access to parameter args | normal |
| Foreach.cs:15:13:15:13 | ; | Foreach.cs:15:13:15:13 | ; | normal |
| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | empty |
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | empty |
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:20:22:20:22 | String x | normal |
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | access to parameter e | non-null |
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:27:20:27 | access to parameter e | null |
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:29:20:38 | call to method ToArray | non-null |
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:43:20:68 | call to method Empty | normal |
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:27:20:27 | access to parameter e | null |
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:29:20:38 | call to method ToArray | non-null |
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:29:20:38 | call to method ToArray | null |
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:43:20:68 | call to method Empty | normal |
| Foreach.cs:21:11:21:11 | ; | Foreach.cs:21:11:21:11 | ; | normal |
| Initializers.cs:6:28:6:30 | {...} | Initializers.cs:6:28:6:30 | {...} | normal |
| Initializers.cs:9:5:12:5 | {...} | Initializers.cs:11:13:11:63 | Initializers[] iz = ... | normal |
| Initializers.cs:10:9:10:54 | ... ...; | Initializers.cs:10:13:10:53 | Initializers i = ... | normal |
@@ -514,6 +551,33 @@
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:57:11:58 | access to parameter b3 | true/true |
| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:64:11:64 | 0 | normal |
| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:68:11:68 | 1 | normal |
| NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:17:9:17:24 | ... = ... | normal |
| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | normal |
| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:13:15:13 | access to local variable j | normal |
| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | normal |
| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:17:15:26 | (...) ... | non-null |
| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:17:15:26 | (...) ... | null |
| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:17:15:26 | (...) ... | non-null |
| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:31:15:31 | 0 | normal |
| NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:23:15:26 | null | normal |
| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:31:15:31 | 0 | normal |
| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:13:16:25 | String s = ... | normal |
| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:13:16:13 | access to local variable s | normal |
| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:16:13:16:25 | String s = ... | normal |
| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:18 | "" | non-null |
| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:17:16:18 | "" | null |
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" | non-null |
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:23:16:25 | "a" | normal |
| NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:23:16:25 | "a" | normal |
| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:9:17:9 | access to local variable j | normal |
| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:17:9:17:24 | ... = ... | normal |
| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:24 | ... = ... | normal |
| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:13:17:19 | (...) ... | non-null |
| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:13:17:19 | (...) ... | null |
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:13:17:19 | (...) ... | non-null |
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:24:17:24 | 1 | normal |
| NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:19:17:19 | access to parameter i | normal |
| NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:24:17:24 | 1 | normal |
| Patterns.cs:6:5:43:5 | {...} | Patterns.cs:40:17:40:17 | access to local variable o | normal |
| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:16:7:23 | Object o = ... | normal |
| Patterns.cs:7:16:7:16 | access to local variable o | Patterns.cs:7:16:7:16 | access to local variable o | normal |
@@ -784,8 +848,108 @@
| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:50:30:50:38 | ... != ... | true/true |
| Switch.cs:50:35:50:38 | null | Switch.cs:50:35:50:38 | null | normal |
| Switch.cs:51:17:51:22 | break; | Switch.cs:51:17:51:22 | break; | break |
| Switch.cs:55:28:55:48 | throw ... | Switch.cs:55:28:55:48 | throw ... | throw(Exception) |
| Switch.cs:55:34:55:48 | object creation of type Exception | Switch.cs:55:34:55:48 | object creation of type Exception | normal |
| Switch.cs:56:5:64:5 | {...} | Switch.cs:60:15:60:20 | break; | normal (break) |
| Switch.cs:56:5:64:5 | {...} | Switch.cs:61:18:61:18 | 3 | no-match |
| Switch.cs:56:5:64:5 | {...} | Switch.cs:62:15:62:20 | break; | normal (break) |
| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:60:15:60:20 | break; | normal (break) |
| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:61:18:61:18 | 3 | no-match |
| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:62:15:62:20 | break; | normal (break) |
| Switch.cs:57:17:57:17 | 1 | Switch.cs:57:17:57:17 | 1 | normal |
| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:57:17:57:21 | ... + ... | normal |
| Switch.cs:57:21:57:21 | 2 | Switch.cs:57:21:57:21 | 2 | normal |
| Switch.cs:59:13:59:20 | case ...: | Switch.cs:59:18:59:18 | 2 | no-match |
| Switch.cs:59:13:59:20 | case ...: | Switch.cs:60:15:60:20 | break; | break |
| Switch.cs:59:18:59:18 | 2 | Switch.cs:59:18:59:18 | 2 | match |
| Switch.cs:59:18:59:18 | 2 | Switch.cs:59:18:59:18 | 2 | no-match |
| Switch.cs:60:15:60:20 | break; | Switch.cs:60:15:60:20 | break; | break |
| Switch.cs:61:13:61:20 | case ...: | Switch.cs:61:18:61:18 | 3 | no-match |
| Switch.cs:61:13:61:20 | case ...: | Switch.cs:62:15:62:20 | break; | break |
| Switch.cs:61:18:61:18 | 3 | Switch.cs:61:18:61:18 | 3 | match |
| Switch.cs:61:18:61:18 | 3 | Switch.cs:61:18:61:18 | 3 | no-match |
| Switch.cs:62:15:62:20 | break; | Switch.cs:62:15:62:20 | break; | break |
| Switch.cs:67:5:75:5 | {...} | Switch.cs:71:15:71:20 | break; | normal (break) |
| Switch.cs:67:5:75:5 | {...} | Switch.cs:72:18:72:19 | "" | no-match |
| Switch.cs:67:5:75:5 | {...} | Switch.cs:73:15:73:20 | break; | normal (break) |
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:71:15:71:20 | break; | normal (break) |
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:72:18:72:19 | "" | no-match |
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:73:15:73:20 | break; | normal (break) |
| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:68:17:68:25 | (...) ... | normal |
| Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:25:68:25 | access to parameter s | normal |
| Switch.cs:70:13:70:24 | case Int32: | Switch.cs:70:18:70:20 | access to type Int32 | no-match |
| Switch.cs:70:13:70:24 | case Int32: | Switch.cs:71:15:71:20 | break; | break |
| Switch.cs:71:15:71:20 | break; | Switch.cs:71:15:71:20 | break; | break |
| Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:18:72:19 | "" | no-match |
| Switch.cs:72:13:72:21 | case ...: | Switch.cs:73:15:73:20 | break; | break |
| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | "" | match |
| Switch.cs:72:18:72:19 | "" | Switch.cs:72:18:72:19 | "" | no-match |
| Switch.cs:73:15:73:20 | break; | Switch.cs:73:15:73:20 | break; | break |
| Switch.cs:78:5:89:5 | {...} | Switch.cs:82:15:82:26 | return ...; | return |
| Switch.cs:78:5:89:5 | {...} | Switch.cs:86:15:86:26 | return ...; | return |
| Switch.cs:78:5:89:5 | {...} | Switch.cs:88:9:88:21 | return ...; | return |
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:82:15:82:26 | return ...; | return |
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:85:17:85:22 | break; | normal (break) |
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:86:15:86:26 | return ...; | return |
| Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:79:17:79:17 | access to parameter i | normal |
| Switch.cs:81:13:81:20 | case ...: | Switch.cs:81:18:81:18 | 1 | no-match |
| Switch.cs:81:13:81:20 | case ...: | Switch.cs:82:15:82:26 | return ...; | return |
| Switch.cs:81:18:81:18 | 1 | Switch.cs:81:18:81:18 | 1 | match |
| Switch.cs:81:18:81:18 | 1 | Switch.cs:81:18:81:18 | 1 | no-match |
| Switch.cs:82:15:82:26 | return ...; | Switch.cs:82:15:82:26 | return ...; | return |
| Switch.cs:82:22:82:25 | true | Switch.cs:82:22:82:25 | true | normal |
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:18:83:18 | 2 | no-match |
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:84:19:84:23 | ... > ... | false/false |
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:85:17:85:22 | break; | break |
| Switch.cs:83:18:83:18 | 2 | Switch.cs:83:18:83:18 | 2 | match |
| Switch.cs:83:18:83:18 | 2 | Switch.cs:83:18:83:18 | 2 | no-match |
| Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:19:84:23 | ... > ... | false/false |
| Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:85:17:85:22 | break; | break |
| Switch.cs:84:19:84:19 | access to parameter j | Switch.cs:84:19:84:19 | access to parameter j | normal |
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:84:19:84:23 | ... > ... | false/false |
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:84:19:84:23 | ... > ... | true/true |
| Switch.cs:84:23:84:23 | 2 | Switch.cs:84:23:84:23 | 2 | normal |
| Switch.cs:85:17:85:22 | break; | Switch.cs:85:17:85:22 | break; | break |
| Switch.cs:86:15:86:26 | return ...; | Switch.cs:86:15:86:26 | return ...; | return |
| Switch.cs:86:22:86:25 | true | Switch.cs:86:22:86:25 | true | normal |
| Switch.cs:88:9:88:21 | return ...; | Switch.cs:88:9:88:21 | return ...; | return |
| Switch.cs:88:16:88:20 | false | Switch.cs:88:16:88:20 | false | normal |
| Switch.cs:92:5:99:5 | {...} | Switch.cs:96:15:96:26 | return ...; | return |
| Switch.cs:92:5:99:5 | {...} | Switch.cs:98:9:98:21 | return ...; | return |
| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:95:18:95:20 | access to type Int32 | no-match |
| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:96:15:96:26 | return ...; | return |
| Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:93:17:93:17 | access to parameter o | normal |
| Switch.cs:95:13:95:24 | case Int32: | Switch.cs:95:18:95:20 | access to type Int32 | no-match |
| Switch.cs:95:13:95:24 | case Int32: | Switch.cs:96:15:96:26 | return ...; | return |
| Switch.cs:96:15:96:26 | return ...; | Switch.cs:96:15:96:26 | return ...; | return |
| Switch.cs:96:22:96:25 | true | Switch.cs:96:22:96:25 | true | normal |
| Switch.cs:98:9:98:21 | return ...; | Switch.cs:98:9:98:21 | return ...; | return |
| Switch.cs:98:16:98:20 | false | Switch.cs:98:16:98:20 | false | normal |
| Switch.cs:102:5:109:5 | {...} | Switch.cs:105:22:105:30 | return ...; | return |
| Switch.cs:102:5:109:5 | {...} | Switch.cs:106:22:106:30 | return ...; | return |
| Switch.cs:102:5:109:5 | {...} | Switch.cs:108:9:108:18 | return ...; | return |
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:105:22:105:30 | return ...; | return |
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:106:18:106:18 | 1 | no-match |
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:106:22:106:30 | return ...; | return |
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | access to parameter s | non-null |
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:17:103:17 | access to parameter s | null |
| Switch.cs:103:19:103:25 | access to property Length | Switch.cs:103:17:103:17 | access to parameter s | null |
| Switch.cs:103:19:103:25 | access to property Length | Switch.cs:103:19:103:25 | access to property Length | normal |
| Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:18:105:18 | 0 | no-match |
| Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:22:105:30 | return ...; | return |
| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:18:105:18 | 0 | match |
| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:18:105:18 | 0 | no-match |
| Switch.cs:105:22:105:30 | return ...; | Switch.cs:105:22:105:30 | return ...; | return |
| Switch.cs:105:29:105:29 | 0 | Switch.cs:105:29:105:29 | 0 | normal |
| Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:18:106:18 | 1 | no-match |
| Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:22:106:30 | return ...; | return |
| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:18:106:18 | 1 | match |
| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:18:106:18 | 1 | no-match |
| Switch.cs:106:22:106:30 | return ...; | Switch.cs:106:22:106:30 | return ...; | return |
| Switch.cs:106:29:106:29 | 1 | Switch.cs:106:29:106:29 | 1 | normal |
| Switch.cs:108:9:108:18 | return ...; | Switch.cs:108:9:108:18 | return ...; | return |
| Switch.cs:108:16:108:17 | -... | Switch.cs:108:16:108:17 | -... | normal |
| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:17:108:17 | 1 | normal |
| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:28:111:48 | throw ... | throw(Exception) |
| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:34:111:48 | object creation of type Exception | normal |
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:8:13:8:27 | Type t = ... | normal |
| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:13:5:25 | String s = ... | normal |
| TypeAccesses.cs:5:13:5:13 | access to local variable s | TypeAccesses.cs:5:13:5:13 | access to local variable s | normal |

View File

@@ -1,3 +1,6 @@
using System.Collections.Generic;
using System.Linq;
class Foreach
{
void M1(string[] args)
@@ -11,4 +14,10 @@ class Foreach
foreach (var _ in args)
;
}
void M3(IEnumerable<string> e)
{
foreach (var x in e?.ToArray() ?? Enumerable.Empty<string>())
;
}
}

View File

@@ -256,12 +256,35 @@
| ConditionalAccess.cs:19:40:19:41 | access to parameter s1 | ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | semmle.label | non-null |
| ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | ConditionalAccess.cs:19:12:19:13 | exit M6 | semmle.label | successor |
| ConditionalAccess.cs:19:58:19:59 | access to parameter s2 | ConditionalAccess.cs:19:43:19:60 | call to method CommaJoinWith | semmle.label | successor |
| ConditionalAccess.cs:24:26:24:38 | enter CommaJoinWith | ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | semmle.label | successor |
| ConditionalAccess.cs:24:70:24:71 | access to parameter s1 | ConditionalAccess.cs:24:75:24:78 | ", " | semmle.label | successor |
| ConditionalAccess.cs:24:70:24:78 | ... + ... | ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | semmle.label | successor |
| ConditionalAccess.cs:24:70:24:83 | ... + ... | ConditionalAccess.cs:24:26:24:38 | exit CommaJoinWith | semmle.label | successor |
| ConditionalAccess.cs:24:75:24:78 | ", " | ConditionalAccess.cs:24:70:24:78 | ... + ... | semmle.label | successor |
| ConditionalAccess.cs:24:82:24:83 | access to parameter s2 | ConditionalAccess.cs:24:70:24:83 | ... + ... | semmle.label | successor |
| ConditionalAccess.cs:21:10:21:11 | enter M7 | ConditionalAccess.cs:22:5:26:5 | {...} | semmle.label | successor |
| ConditionalAccess.cs:22:5:26:5 | {...} | ConditionalAccess.cs:23:9:23:39 | ... ...; | semmle.label | successor |
| ConditionalAccess.cs:23:9:23:39 | ... ...; | ConditionalAccess.cs:23:13:23:13 | access to local variable j | semmle.label | successor |
| ConditionalAccess.cs:23:13:23:13 | access to local variable j | ConditionalAccess.cs:23:26:23:29 | null | semmle.label | successor |
| ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | ConditionalAccess.cs:24:9:24:38 | ... ...; | semmle.label | successor |
| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | semmle.label | null |
| ConditionalAccess.cs:23:18:23:29 | (...) ... | ConditionalAccess.cs:23:32:23:38 | access to property Length | semmle.label | non-null |
| ConditionalAccess.cs:23:26:23:29 | null | ConditionalAccess.cs:23:18:23:29 | (...) ... | semmle.label | successor |
| ConditionalAccess.cs:23:32:23:38 | access to property Length | ConditionalAccess.cs:23:13:23:38 | Nullable<Int32> j = ... | semmle.label | successor |
| ConditionalAccess.cs:24:9:24:38 | ... ...; | ConditionalAccess.cs:24:13:24:13 | access to local variable s | semmle.label | successor |
| ConditionalAccess.cs:24:13:24:13 | access to local variable s | ConditionalAccess.cs:24:24:24:24 | access to parameter i | semmle.label | successor |
| ConditionalAccess.cs:24:13:24:37 | String s = ... | ConditionalAccess.cs:25:9:25:33 | ...; | semmle.label | successor |
| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:13:24:37 | String s = ... | semmle.label | null |
| ConditionalAccess.cs:24:18:24:24 | (...) ... | ConditionalAccess.cs:24:27:24:37 | call to method ToString | semmle.label | non-null |
| ConditionalAccess.cs:24:24:24:24 | access to parameter i | ConditionalAccess.cs:24:18:24:24 | (...) ... | semmle.label | successor |
| ConditionalAccess.cs:24:27:24:37 | call to method ToString | ConditionalAccess.cs:24:13:24:37 | String s = ... | semmle.label | successor |
| ConditionalAccess.cs:25:9:25:9 | access to local variable s | ConditionalAccess.cs:25:13:25:14 | "" | semmle.label | successor |
| ConditionalAccess.cs:25:9:25:32 | ... = ... | ConditionalAccess.cs:21:10:21:11 | exit M7 | semmle.label | successor |
| ConditionalAccess.cs:25:9:25:33 | ...; | ConditionalAccess.cs:25:9:25:9 | access to local variable s | semmle.label | successor |
| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:9:25:32 | ... = ... | semmle.label | null |
| ConditionalAccess.cs:25:13:25:14 | "" | ConditionalAccess.cs:25:31:25:31 | access to local variable s | semmle.label | non-null |
| ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | ConditionalAccess.cs:25:9:25:32 | ... = ... | semmle.label | successor |
| ConditionalAccess.cs:25:31:25:31 | access to local variable s | ConditionalAccess.cs:25:16:25:32 | call to method CommaJoinWith | semmle.label | successor |
| ConditionalAccess.cs:31:26:31:38 | enter CommaJoinWith | ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | semmle.label | successor |
| ConditionalAccess.cs:31:70:31:71 | access to parameter s1 | ConditionalAccess.cs:31:75:31:78 | ", " | semmle.label | successor |
| ConditionalAccess.cs:31:70:31:78 | ... + ... | ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | semmle.label | successor |
| ConditionalAccess.cs:31:70:31:83 | ... + ... | ConditionalAccess.cs:31:26:31:38 | exit CommaJoinWith | semmle.label | successor |
| ConditionalAccess.cs:31:75:31:78 | ", " | ConditionalAccess.cs:31:70:31:78 | ... + ... | semmle.label | successor |
| ConditionalAccess.cs:31:82:31:83 | access to parameter s2 | ConditionalAccess.cs:31:70:31:83 | ... + ... | semmle.label | successor |
| ExitMethods.cs:6:10:6:11 | enter M1 | ExitMethods.cs:7:5:10:5 | {...} | semmle.label | successor |
| ExitMethods.cs:7:5:10:5 | {...} | ExitMethods.cs:8:9:8:25 | ...; | semmle.label | successor |
| ExitMethods.cs:8:9:8:24 | call to method ErrorMaybe | ExitMethods.cs:9:9:9:15 | return ...; | semmle.label | successor |
@@ -391,19 +414,30 @@
| Extensions.cs:25:9:25:34 | ...; | Extensions.cs:25:9:25:14 | "true" | semmle.label | successor |
| Extensions.cs:25:23:25:32 | access to method Parse | Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | semmle.label | successor |
| Extensions.cs:25:23:25:32 | delegate creation of type Func<String,Boolean> | Extensions.cs:25:9:25:33 | call to method ToBool | semmle.label | successor |
| Foreach.cs:3:10:3:11 | enter M1 | Foreach.cs:4:5:7:5 | {...} | semmle.label | successor |
| Foreach.cs:4:5:7:5 | {...} | Foreach.cs:5:29:5:32 | access to parameter args | semmle.label | successor |
| Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:3:10:3:11 | exit M1 | semmle.label | empty |
| Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | Foreach.cs:5:22:5:24 | String arg | semmle.label | non-empty |
| Foreach.cs:5:22:5:24 | String arg | Foreach.cs:6:13:6:13 | ; | semmle.label | successor |
| Foreach.cs:5:29:5:32 | access to parameter args | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:6:13:6:13 | ; | Foreach.cs:5:9:6:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:9:10:9:11 | enter M2 | Foreach.cs:10:5:13:5 | {...} | semmle.label | successor |
| Foreach.cs:10:5:13:5 | {...} | Foreach.cs:11:27:11:30 | access to parameter args | semmle.label | successor |
| Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:9:10:9:11 | exit M2 | semmle.label | empty |
| Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | Foreach.cs:12:13:12:13 | ; | semmle.label | non-empty |
| Foreach.cs:11:27:11:30 | access to parameter args | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:12:13:12:13 | ; | Foreach.cs:11:9:12:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:6:10:6:11 | enter M1 | Foreach.cs:7:5:10:5 | {...} | semmle.label | successor |
| Foreach.cs:7:5:10:5 | {...} | Foreach.cs:8:29:8:32 | access to parameter args | semmle.label | successor |
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:6:10:6:11 | exit M1 | semmle.label | empty |
| Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | Foreach.cs:8:22:8:24 | String arg | semmle.label | non-empty |
| Foreach.cs:8:22:8:24 | String arg | Foreach.cs:9:13:9:13 | ; | semmle.label | successor |
| Foreach.cs:8:29:8:32 | access to parameter args | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:9:13:9:13 | ; | Foreach.cs:8:9:9:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:12:10:12:11 | enter M2 | Foreach.cs:13:5:16:5 | {...} | semmle.label | successor |
| Foreach.cs:13:5:16:5 | {...} | Foreach.cs:14:27:14:30 | access to parameter args | semmle.label | successor |
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:12:10:12:11 | exit M2 | semmle.label | empty |
| Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | Foreach.cs:15:13:15:13 | ; | semmle.label | non-empty |
| Foreach.cs:14:27:14:30 | access to parameter args | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:15:13:15:13 | ; | Foreach.cs:14:9:15:13 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:18:10:18:11 | enter M3 | Foreach.cs:19:5:22:5 | {...} | semmle.label | successor |
| Foreach.cs:19:5:22:5 | {...} | Foreach.cs:20:27:20:68 | ... ?? ... | semmle.label | successor |
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:18:10:18:11 | exit M3 | semmle.label | empty |
| Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | Foreach.cs:20:22:20:22 | String x | semmle.label | non-empty |
| Foreach.cs:20:22:20:22 | String x | Foreach.cs:21:11:21:11 | ; | semmle.label | successor |
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:29:20:38 | call to method ToArray | semmle.label | non-null |
| Foreach.cs:20:27:20:27 | access to parameter e | Foreach.cs:20:43:20:68 | call to method Empty | semmle.label | null |
| Foreach.cs:20:27:20:68 | ... ?? ... | Foreach.cs:20:27:20:27 | access to parameter e | semmle.label | successor |
| Foreach.cs:20:29:20:38 | call to method ToArray | Foreach.cs:20:43:20:68 | call to method Empty | semmle.label | null |
| Foreach.cs:20:43:20:68 | call to method Empty | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | semmle.label | successor |
| Foreach.cs:21:11:21:11 | ; | Foreach.cs:20:9:21:11 | foreach (... ... in ...) ... | semmle.label | successor |
| Initializers.cs:6:5:6:16 | enter Initializers | Initializers.cs:6:28:6:30 | {...} | semmle.label | successor |
| Initializers.cs:6:28:6:30 | {...} | Initializers.cs:6:5:6:16 | exit Initializers | semmle.label | successor |
| Initializers.cs:8:10:8:10 | enter M | Initializers.cs:9:5:12:5 | {...} | semmle.label | successor |
@@ -476,6 +510,31 @@
| NullCoalescing.cs:11:57:11:58 | access to parameter b3 | NullCoalescing.cs:11:68:11:68 | 1 | semmle.label | false |
| NullCoalescing.cs:11:64:11:64 | 0 | NullCoalescing.cs:11:9:11:10 | exit M5 | semmle.label | successor |
| NullCoalescing.cs:11:68:11:68 | 1 | NullCoalescing.cs:11:9:11:10 | exit M5 | semmle.label | successor |
| NullCoalescing.cs:13:10:13:11 | enter M6 | NullCoalescing.cs:14:5:18:5 | {...} | semmle.label | successor |
| NullCoalescing.cs:14:5:18:5 | {...} | NullCoalescing.cs:15:9:15:32 | ... ...; | semmle.label | successor |
| NullCoalescing.cs:15:9:15:32 | ... ...; | NullCoalescing.cs:15:13:15:13 | access to local variable j | semmle.label | successor |
| NullCoalescing.cs:15:13:15:13 | access to local variable j | NullCoalescing.cs:15:17:15:31 | ... ?? ... | semmle.label | successor |
| NullCoalescing.cs:15:13:15:31 | Int32 j = ... | NullCoalescing.cs:16:9:16:26 | ... ...; | semmle.label | successor |
| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | semmle.label | non-null |
| NullCoalescing.cs:15:17:15:26 | (...) ... | NullCoalescing.cs:15:31:15:31 | 0 | semmle.label | null |
| NullCoalescing.cs:15:17:15:31 | ... ?? ... | NullCoalescing.cs:15:23:15:26 | null | semmle.label | successor |
| NullCoalescing.cs:15:23:15:26 | null | NullCoalescing.cs:15:17:15:26 | (...) ... | semmle.label | successor |
| NullCoalescing.cs:15:31:15:31 | 0 | NullCoalescing.cs:15:13:15:31 | Int32 j = ... | semmle.label | successor |
| NullCoalescing.cs:16:9:16:26 | ... ...; | NullCoalescing.cs:16:13:16:13 | access to local variable s | semmle.label | successor |
| NullCoalescing.cs:16:13:16:13 | access to local variable s | NullCoalescing.cs:16:17:16:25 | ... ?? ... | semmle.label | successor |
| NullCoalescing.cs:16:13:16:25 | String s = ... | NullCoalescing.cs:17:9:17:25 | ...; | semmle.label | successor |
| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:13:16:25 | String s = ... | semmle.label | non-null |
| NullCoalescing.cs:16:17:16:18 | "" | NullCoalescing.cs:16:23:16:25 | "a" | semmle.label | null |
| NullCoalescing.cs:16:17:16:25 | ... ?? ... | NullCoalescing.cs:16:17:16:18 | "" | semmle.label | successor |
| NullCoalescing.cs:16:23:16:25 | "a" | NullCoalescing.cs:16:13:16:25 | String s = ... | semmle.label | successor |
| NullCoalescing.cs:17:9:17:9 | access to local variable j | NullCoalescing.cs:17:13:17:24 | ... ?? ... | semmle.label | successor |
| NullCoalescing.cs:17:9:17:24 | ... = ... | NullCoalescing.cs:13:10:13:11 | exit M6 | semmle.label | successor |
| NullCoalescing.cs:17:9:17:25 | ...; | NullCoalescing.cs:17:9:17:9 | access to local variable j | semmle.label | successor |
| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:9:17:24 | ... = ... | semmle.label | non-null |
| NullCoalescing.cs:17:13:17:19 | (...) ... | NullCoalescing.cs:17:24:17:24 | 1 | semmle.label | null |
| NullCoalescing.cs:17:13:17:24 | ... ?? ... | NullCoalescing.cs:17:19:17:19 | access to parameter i | semmle.label | successor |
| NullCoalescing.cs:17:19:17:19 | access to parameter i | NullCoalescing.cs:17:13:17:19 | (...) ... | semmle.label | successor |
| NullCoalescing.cs:17:24:17:24 | 1 | NullCoalescing.cs:17:9:17:24 | ... = ... | semmle.label | successor |
| Patterns.cs:5:10:5:13 | enter Test | Patterns.cs:6:5:43:5 | {...} | semmle.label | successor |
| Patterns.cs:6:5:43:5 | {...} | Patterns.cs:7:9:7:24 | ... ...; | semmle.label | successor |
| Patterns.cs:7:9:7:24 | ... ...; | Patterns.cs:7:16:7:16 | access to local variable o | semmle.label | successor |
@@ -717,9 +776,86 @@
| Switch.cs:50:30:50:38 | ... != ... | Switch.cs:51:17:51:22 | break; | semmle.label | true |
| Switch.cs:50:35:50:38 | null | Switch.cs:50:30:50:38 | ... != ... | semmle.label | successor |
| Switch.cs:51:17:51:22 | break; | Switch.cs:44:10:44:11 | exit M4 | semmle.label | break |
| Switch.cs:55:17:55:21 | enter Throw | Switch.cs:55:34:55:48 | object creation of type Exception | semmle.label | successor |
| Switch.cs:55:28:55:48 | throw ... | Switch.cs:55:17:55:21 | exit Throw | semmle.label | exception(Exception) |
| Switch.cs:55:34:55:48 | object creation of type Exception | Switch.cs:55:28:55:48 | throw ... | semmle.label | successor |
| Switch.cs:55:10:55:11 | enter M5 | Switch.cs:56:5:64:5 | {...} | semmle.label | successor |
| Switch.cs:56:5:64:5 | {...} | Switch.cs:57:9:63:9 | switch (...) {...} | semmle.label | successor |
| Switch.cs:57:9:63:9 | switch (...) {...} | Switch.cs:57:17:57:17 | 1 | semmle.label | successor |
| Switch.cs:57:17:57:17 | 1 | Switch.cs:57:21:57:21 | 2 | semmle.label | successor |
| Switch.cs:57:17:57:21 | ... + ... | Switch.cs:59:13:59:20 | case ...: | semmle.label | successor |
| Switch.cs:57:21:57:21 | 2 | Switch.cs:57:17:57:21 | ... + ... | semmle.label | successor |
| Switch.cs:59:13:59:20 | case ...: | Switch.cs:59:18:59:18 | 2 | semmle.label | successor |
| Switch.cs:59:18:59:18 | 2 | Switch.cs:60:15:60:20 | break; | semmle.label | match |
| Switch.cs:59:18:59:18 | 2 | Switch.cs:61:13:61:20 | case ...: | semmle.label | no-match |
| Switch.cs:60:15:60:20 | break; | Switch.cs:55:10:55:11 | exit M5 | semmle.label | break |
| Switch.cs:61:13:61:20 | case ...: | Switch.cs:61:18:61:18 | 3 | semmle.label | successor |
| Switch.cs:61:18:61:18 | 3 | Switch.cs:55:10:55:11 | exit M5 | semmle.label | no-match |
| Switch.cs:61:18:61:18 | 3 | Switch.cs:62:15:62:20 | break; | semmle.label | match |
| Switch.cs:62:15:62:20 | break; | Switch.cs:55:10:55:11 | exit M5 | semmle.label | break |
| Switch.cs:66:10:66:11 | enter M6 | Switch.cs:67:5:75:5 | {...} | semmle.label | successor |
| Switch.cs:67:5:75:5 | {...} | Switch.cs:68:9:74:9 | switch (...) {...} | semmle.label | successor |
| Switch.cs:68:9:74:9 | switch (...) {...} | Switch.cs:68:25:68:25 | access to parameter s | semmle.label | successor |
| Switch.cs:68:17:68:25 | (...) ... | Switch.cs:70:13:70:24 | case Int32: | semmle.label | successor |
| Switch.cs:68:25:68:25 | access to parameter s | Switch.cs:68:17:68:25 | (...) ... | semmle.label | successor |
| Switch.cs:70:13:70:24 | case Int32: | Switch.cs:70:18:70:20 | access to type Int32 | semmle.label | successor |
| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:71:15:71:20 | break; | semmle.label | match |
| Switch.cs:70:18:70:20 | access to type Int32 | Switch.cs:72:13:72:21 | case ...: | semmle.label | no-match |
| Switch.cs:71:15:71:20 | break; | Switch.cs:66:10:66:11 | exit M6 | semmle.label | break |
| Switch.cs:72:13:72:21 | case ...: | Switch.cs:72:18:72:19 | "" | semmle.label | successor |
| Switch.cs:72:18:72:19 | "" | Switch.cs:66:10:66:11 | exit M6 | semmle.label | no-match |
| Switch.cs:72:18:72:19 | "" | Switch.cs:73:15:73:20 | break; | semmle.label | match |
| Switch.cs:73:15:73:20 | break; | Switch.cs:66:10:66:11 | exit M6 | semmle.label | break |
| Switch.cs:77:10:77:11 | enter M7 | Switch.cs:78:5:89:5 | {...} | semmle.label | successor |
| Switch.cs:78:5:89:5 | {...} | Switch.cs:79:9:87:9 | switch (...) {...} | semmle.label | successor |
| Switch.cs:79:9:87:9 | switch (...) {...} | Switch.cs:79:17:79:17 | access to parameter i | semmle.label | successor |
| Switch.cs:79:17:79:17 | access to parameter i | Switch.cs:81:13:81:20 | case ...: | semmle.label | successor |
| Switch.cs:81:13:81:20 | case ...: | Switch.cs:81:18:81:18 | 1 | semmle.label | successor |
| Switch.cs:81:18:81:18 | 1 | Switch.cs:82:22:82:25 | true | semmle.label | match |
| Switch.cs:81:18:81:18 | 1 | Switch.cs:83:13:83:20 | case ...: | semmle.label | no-match |
| Switch.cs:82:15:82:26 | return ...; | Switch.cs:77:10:77:11 | exit M7 | semmle.label | return |
| Switch.cs:82:22:82:25 | true | Switch.cs:82:15:82:26 | return ...; | semmle.label | successor |
| Switch.cs:83:13:83:20 | case ...: | Switch.cs:83:18:83:18 | 2 | semmle.label | successor |
| Switch.cs:83:18:83:18 | 2 | Switch.cs:84:15:85:22 | if (...) ... | semmle.label | match |
| Switch.cs:84:15:85:22 | if (...) ... | Switch.cs:84:19:84:19 | access to parameter j | semmle.label | successor |
| Switch.cs:84:19:84:19 | access to parameter j | Switch.cs:84:23:84:23 | 2 | semmle.label | successor |
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:85:17:85:22 | break; | semmle.label | true |
| Switch.cs:84:19:84:23 | ... > ... | Switch.cs:86:22:86:25 | true | semmle.label | false |
| Switch.cs:84:23:84:23 | 2 | Switch.cs:84:19:84:23 | ... > ... | semmle.label | successor |
| Switch.cs:85:17:85:22 | break; | Switch.cs:88:16:88:20 | false | semmle.label | break |
| Switch.cs:86:15:86:26 | return ...; | Switch.cs:77:10:77:11 | exit M7 | semmle.label | return |
| Switch.cs:86:22:86:25 | true | Switch.cs:86:15:86:26 | return ...; | semmle.label | successor |
| Switch.cs:88:9:88:21 | return ...; | Switch.cs:77:10:77:11 | exit M7 | semmle.label | return |
| Switch.cs:88:16:88:20 | false | Switch.cs:88:9:88:21 | return ...; | semmle.label | successor |
| Switch.cs:91:10:91:11 | enter M8 | Switch.cs:92:5:99:5 | {...} | semmle.label | successor |
| Switch.cs:92:5:99:5 | {...} | Switch.cs:93:9:97:9 | switch (...) {...} | semmle.label | successor |
| Switch.cs:93:9:97:9 | switch (...) {...} | Switch.cs:93:17:93:17 | access to parameter o | semmle.label | successor |
| Switch.cs:93:17:93:17 | access to parameter o | Switch.cs:95:13:95:24 | case Int32: | semmle.label | successor |
| Switch.cs:95:13:95:24 | case Int32: | Switch.cs:95:18:95:20 | access to type Int32 | semmle.label | successor |
| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:96:22:96:25 | true | semmle.label | match |
| Switch.cs:95:18:95:20 | access to type Int32 | Switch.cs:98:16:98:20 | false | semmle.label | no-match |
| Switch.cs:96:15:96:26 | return ...; | Switch.cs:91:10:91:11 | exit M8 | semmle.label | return |
| Switch.cs:96:22:96:25 | true | Switch.cs:96:15:96:26 | return ...; | semmle.label | successor |
| Switch.cs:98:9:98:21 | return ...; | Switch.cs:91:10:91:11 | exit M8 | semmle.label | return |
| Switch.cs:98:16:98:20 | false | Switch.cs:98:9:98:21 | return ...; | semmle.label | successor |
| Switch.cs:101:9:101:10 | enter M9 | Switch.cs:102:5:109:5 | {...} | semmle.label | successor |
| Switch.cs:102:5:109:5 | {...} | Switch.cs:103:9:107:9 | switch (...) {...} | semmle.label | successor |
| Switch.cs:103:9:107:9 | switch (...) {...} | Switch.cs:103:17:103:17 | access to parameter s | semmle.label | successor |
| Switch.cs:103:17:103:17 | access to parameter s | Switch.cs:103:19:103:25 | access to property Length | semmle.label | non-null |
| Switch.cs:103:19:103:25 | access to property Length | Switch.cs:105:13:105:20 | case ...: | semmle.label | successor |
| Switch.cs:105:13:105:20 | case ...: | Switch.cs:105:18:105:18 | 0 | semmle.label | successor |
| Switch.cs:105:18:105:18 | 0 | Switch.cs:105:29:105:29 | 0 | semmle.label | match |
| Switch.cs:105:18:105:18 | 0 | Switch.cs:106:13:106:20 | case ...: | semmle.label | no-match |
| Switch.cs:105:22:105:30 | return ...; | Switch.cs:101:9:101:10 | exit M9 | semmle.label | return |
| Switch.cs:105:29:105:29 | 0 | Switch.cs:105:22:105:30 | return ...; | semmle.label | successor |
| Switch.cs:106:13:106:20 | case ...: | Switch.cs:106:18:106:18 | 1 | semmle.label | successor |
| Switch.cs:106:18:106:18 | 1 | Switch.cs:106:29:106:29 | 1 | semmle.label | match |
| Switch.cs:106:18:106:18 | 1 | Switch.cs:108:17:108:17 | 1 | semmle.label | no-match |
| Switch.cs:106:22:106:30 | return ...; | Switch.cs:101:9:101:10 | exit M9 | semmle.label | return |
| Switch.cs:106:29:106:29 | 1 | Switch.cs:106:22:106:30 | return ...; | semmle.label | successor |
| Switch.cs:108:9:108:18 | return ...; | Switch.cs:101:9:101:10 | exit M9 | semmle.label | return |
| Switch.cs:108:16:108:17 | -... | Switch.cs:108:9:108:18 | return ...; | semmle.label | successor |
| Switch.cs:108:17:108:17 | 1 | Switch.cs:108:16:108:17 | -... | semmle.label | successor |
| Switch.cs:111:17:111:21 | enter Throw | Switch.cs:111:34:111:48 | object creation of type Exception | semmle.label | successor |
| Switch.cs:111:28:111:48 | throw ... | Switch.cs:111:17:111:21 | exit Throw | semmle.label | exception(Exception) |
| Switch.cs:111:34:111:48 | object creation of type Exception | Switch.cs:111:28:111:48 | throw ... | semmle.label | successor |
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:4:5:9:5 | {...} | semmle.label | successor |
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:5:9:5:26 | ... ...; | semmle.label | successor |
| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:13:5:13 | access to local variable s | semmle.label | successor |

View File

@@ -9,4 +9,11 @@ class NullCoalescing
string M4(bool b, string s) => (b ? s : s) ?? "" ?? "";
int M5(bool? b1, bool b2, bool b3) => (b1 ?? (b2 && b3)) ? 0 : 1;
void M6(int i)
{
var j = (int?)null ?? 0;
var s = "" ?? "a";
j = (int?)i ?? 1;
}
}

View File

@@ -52,5 +52,61 @@ class Switch
}
}
void M5()
{
switch (1 + 2)
{
case 2 :
break;
case 3 :
break;
}
}
void M6(string s)
{
switch ((object)s)
{
case int _ :
break;
case "" :
break;
}
}
bool M7(int i, int j)
{
switch (i)
{
case 1 :
return true;
case 2 :
if (j > 2)
break;
return true;
}
return false;
}
bool M8(object o)
{
switch (o)
{
case int _ :
return true;
}
return false;
}
int M9(string s)
{
switch (s?.Length)
{
case 0 : return 0;
case 1 : return 1;
}
return -1;
}
static bool Throw() => throw new Exception();
}