C#: Add a CFG test for switch fall-through

This commit is contained in:
Tom Hvitved
2025-04-25 10:32:48 +02:00
parent f9172ff493
commit a991ef0f87
9 changed files with 246 additions and 0 deletions

View File

@@ -1078,6 +1078,14 @@
| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:41:156:52 | ... => ... | 2 |
| Switch.cs:158:13:158:49 | ...; | Switch.cs:158:13:158:48 | call to method WriteLine | 6 |
| Switch.cs:160:13:160:49 | ...; | Switch.cs:160:13:160:48 | call to method WriteLine | 6 |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:167:18:167:18 | 1 | 6 |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | exit M16 | 2 |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:18:168:18 | 2 | 2 |
| Switch.cs:169:17:169:51 | ...; | Switch.cs:169:17:169:50 | call to method WriteLine | 3 |
| Switch.cs:170:17:170:22 | break; | Switch.cs:170:17:170:22 | break; | 1 |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:18:171:18 | 3 | 2 |
| Switch.cs:172:17:172:46 | ...; | Switch.cs:173:17:173:22 | break; | 4 |
| Switch.cs:174:13:174:20 | default: | Switch.cs:176:17:176:22 | break; | 5 |
| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | 5 |
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:18:7:22 | Int32 j | 13 |
| TypeAccesses.cs:7:13:7:22 | [false] ... is ... | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | 1 |

View File

@@ -2140,6 +2140,26 @@ conditionBlock
| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:158:13:158:49 | ...; | true |
| Switch.cs:156:17:156:54 | ... switch { ... } | Switch.cs:160:13:160:49 | ...; | false |
| Switch.cs:156:41:156:45 | false | Switch.cs:156:50:156:52 | "b" | true |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:163:10:163:12 | exit M16 (normal) | false |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:163:10:163:12 | exit M16 (normal) | true |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:168:13:168:19 | case ...: | false |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:168:13:168:19 | case ...: | true |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:169:17:169:51 | ...; | false |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:169:17:169:51 | ...; | true |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:170:17:170:22 | break; | false |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:170:17:170:22 | break; | true |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:171:13:171:19 | case ...: | false |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:171:13:171:19 | case ...: | true |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:172:17:172:46 | ...; | false |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:172:17:172:46 | ...; | true |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:174:13:174:20 | default: | false |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:174:13:174:20 | default: | true |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:169:17:169:51 | ...; | true |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:171:13:171:19 | case ...: | false |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:172:17:172:46 | ...; | false |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:174:13:174:20 | default: | false |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:172:17:172:46 | ...; | true |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:174:13:174:20 | default: | false |
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:13:7:22 | [false] ... is ... | false |
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:13:7:22 | [true] ... is ... | true |
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:25:7:25 | ; | true |

View File

@@ -3678,6 +3678,29 @@ dominance
| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:45:160:45 | access to local variable s |
| Switch.cs:160:44:160:46 | {...} | Switch.cs:160:38:160:47 | $"..." |
| Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:160:44:160:46 | {...} |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:164:5:178:5 | {...} |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | exit M16 |
| Switch.cs:164:5:178:5 | {...} | Switch.cs:165:9:177:9 | switch (...) {...} |
| Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:165:17:165:17 | access to parameter i |
| Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:167:13:167:19 | case ...: |
| Switch.cs:167:13:167:19 | case ...: | Switch.cs:167:18:167:18 | 1 |
| Switch.cs:167:18:167:18 | 1 | Switch.cs:168:13:168:19 | case ...: |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:18:168:18 | 2 |
| Switch.cs:168:18:168:18 | 2 | Switch.cs:169:17:169:51 | ...; |
| Switch.cs:168:18:168:18 | 2 | Switch.cs:170:17:170:22 | break; |
| Switch.cs:168:18:168:18 | 2 | Switch.cs:171:13:171:19 | case ...: |
| Switch.cs:169:17:169:51 | ...; | Switch.cs:169:42:169:49 | "1 or 2" |
| Switch.cs:169:42:169:49 | "1 or 2" | Switch.cs:169:17:169:50 | call to method WriteLine |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:18:171:18 | 3 |
| Switch.cs:171:18:171:18 | 3 | Switch.cs:172:17:172:46 | ...; |
| Switch.cs:171:18:171:18 | 3 | Switch.cs:174:13:174:20 | default: |
| Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:173:17:173:22 | break; |
| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:42:172:44 | "3" |
| Switch.cs:172:42:172:44 | "3" | Switch.cs:172:17:172:45 | call to method WriteLine |
| Switch.cs:174:13:174:20 | default: | Switch.cs:175:17:175:48 | ...; |
| Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:176:17:176:22 | break; |
| Switch.cs:175:17:175:48 | ...; | Switch.cs:175:42:175:46 | "def" |
| Switch.cs:175:42:175:46 | "def" | Switch.cs:175:17:175:47 | call to method WriteLine |
| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | {...} |
| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | call to constructor Object |
| TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses |
@@ -7854,6 +7877,28 @@ postDominance
| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:13:160:49 | ...; |
| Switch.cs:160:44:160:46 | {...} | Switch.cs:160:45:160:45 | access to local variable s |
| Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:160:40:160:43 | "b = " |
| Switch.cs:163:10:163:12 | exit M16 | Switch.cs:163:10:163:12 | exit M16 (normal) |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:170:17:170:22 | break; |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:173:17:173:22 | break; |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:176:17:176:22 | break; |
| Switch.cs:164:5:178:5 | {...} | Switch.cs:163:10:163:12 | enter M16 |
| Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:164:5:178:5 | {...} |
| Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:165:9:177:9 | switch (...) {...} |
| Switch.cs:167:13:167:19 | case ...: | Switch.cs:165:17:165:17 | access to parameter i |
| Switch.cs:167:18:167:18 | 1 | Switch.cs:167:13:167:19 | case ...: |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:167:18:167:18 | 1 |
| Switch.cs:168:18:168:18 | 2 | Switch.cs:168:13:168:19 | case ...: |
| Switch.cs:169:17:169:50 | call to method WriteLine | Switch.cs:169:42:169:49 | "1 or 2" |
| Switch.cs:169:42:169:49 | "1 or 2" | Switch.cs:169:17:169:51 | ...; |
| Switch.cs:170:17:170:22 | break; | Switch.cs:169:17:169:50 | call to method WriteLine |
| Switch.cs:171:18:171:18 | 3 | Switch.cs:171:13:171:19 | case ...: |
| Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:172:42:172:44 | "3" |
| Switch.cs:172:42:172:44 | "3" | Switch.cs:172:17:172:46 | ...; |
| Switch.cs:173:17:173:22 | break; | Switch.cs:172:17:172:45 | call to method WriteLine |
| Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:175:42:175:46 | "def" |
| Switch.cs:175:17:175:48 | ...; | Switch.cs:174:13:174:20 | default: |
| Switch.cs:175:42:175:46 | "def" | Switch.cs:175:17:175:48 | ...; |
| Switch.cs:176:17:176:22 | break; | Switch.cs:175:17:175:47 | call to method WriteLine |
| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | enter TypeAccesses |
| TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) |
| TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | TypeAccesses.cs:1:7:1:18 | {...} |
@@ -12467,6 +12512,29 @@ blockDominance
| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:50:156:52 | "b" |
| Switch.cs:158:13:158:49 | ...; | Switch.cs:158:13:158:49 | ...; |
| Switch.cs:160:13:160:49 | ...; | Switch.cs:160:13:160:49 | ...; |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:163:10:163:12 | enter M16 |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:163:10:163:12 | exit M16 (normal) |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:168:13:168:19 | case ...: |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:169:17:169:51 | ...; |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:170:17:170:22 | break; |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:171:13:171:19 | case ...: |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:172:17:172:46 | ...; |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:174:13:174:20 | default: |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | exit M16 (normal) |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:163:10:163:12 | exit M16 (normal) |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:13:168:19 | case ...: |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:169:17:169:51 | ...; |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:170:17:170:22 | break; |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:171:13:171:19 | case ...: |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:172:17:172:46 | ...; |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:174:13:174:20 | default: |
| Switch.cs:169:17:169:51 | ...; | Switch.cs:169:17:169:51 | ...; |
| Switch.cs:170:17:170:22 | break; | Switch.cs:170:17:170:22 | break; |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:13:171:19 | case ...: |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:172:17:172:46 | ...; |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:174:13:174:20 | default: |
| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:17:172:46 | ...; |
| Switch.cs:174:13:174:20 | default: | Switch.cs:174:13:174:20 | default: |
| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | enter TypeAccesses |
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | enter M |
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:13:7:22 | [false] ... is ... |
@@ -15794,6 +15862,23 @@ postBlockDominance
| Switch.cs:156:50:156:52 | "b" | Switch.cs:156:50:156:52 | "b" |
| Switch.cs:158:13:158:49 | ...; | Switch.cs:158:13:158:49 | ...; |
| Switch.cs:160:13:160:49 | ...; | Switch.cs:160:13:160:49 | ...; |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:163:10:163:12 | enter M16 |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | enter M16 |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | exit M16 (normal) |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:168:13:168:19 | case ...: |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:169:17:169:51 | ...; |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:170:17:170:22 | break; |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:171:13:171:19 | case ...: |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:172:17:172:46 | ...; |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:174:13:174:20 | default: |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:163:10:163:12 | enter M16 |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:13:168:19 | case ...: |
| Switch.cs:169:17:169:51 | ...; | Switch.cs:169:17:169:51 | ...; |
| Switch.cs:170:17:170:22 | break; | Switch.cs:169:17:169:51 | ...; |
| Switch.cs:170:17:170:22 | break; | Switch.cs:170:17:170:22 | break; |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:13:171:19 | case ...: |
| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:17:172:46 | ...; |
| Switch.cs:174:13:174:20 | default: | Switch.cs:174:13:174:20 | default: |
| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | enter TypeAccesses |
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | enter M |
| TypeAccesses.cs:7:13:7:22 | [false] ... is ... | TypeAccesses.cs:7:13:7:22 | [false] ... is ... |

View File

@@ -4029,6 +4029,31 @@ nodeEnclosing
| Switch.cs:160:40:160:43 | "b = " | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:160:44:160:46 | {...} | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:163:10:163:12 | exit M16 | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:164:5:178:5 | {...} | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:167:13:167:19 | case ...: | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:167:18:167:18 | 1 | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:168:18:168:18 | 2 | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:169:17:169:50 | call to method WriteLine | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:169:17:169:51 | ...; | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:169:42:169:49 | "1 or 2" | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:170:17:170:22 | break; | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:171:18:171:18 | 3 | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:172:17:172:46 | ...; | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:172:42:172:44 | "3" | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:173:17:173:22 | break; | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:174:13:174:20 | default: | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:175:17:175:48 | ...; | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:175:42:175:46 | "def" | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:176:17:176:22 | break; | Switch.cs:163:10:163:12 | M16 |
| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | TypeAccesses |
| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | TypeAccesses |
| TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | TypeAccesses.cs:1:7:1:18 | TypeAccesses |
@@ -5913,6 +5938,14 @@ blockEnclosing
| Switch.cs:156:50:156:52 | "b" | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:158:13:158:49 | ...; | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:160:13:160:49 | ...; | Switch.cs:154:10:154:12 | M15 |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:169:17:169:51 | ...; | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:170:17:170:22 | break; | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:172:17:172:46 | ...; | Switch.cs:163:10:163:12 | M16 |
| Switch.cs:174:13:174:20 | default: | Switch.cs:163:10:163:12 | M16 |
| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | TypeAccesses |
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | M |
| TypeAccesses.cs:7:13:7:22 | [false] ... is ... | TypeAccesses.cs:3:10:3:10 | M |

View File

@@ -2711,6 +2711,28 @@
| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:40:160:43 | "b = " |
| Switch.cs:160:44:160:46 | {...} | Switch.cs:160:45:160:45 | access to local variable s |
| Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:160:45:160:45 | access to local variable s |
| Switch.cs:164:5:178:5 | {...} | Switch.cs:164:5:178:5 | {...} |
| Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:165:9:177:9 | switch (...) {...} |
| Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:165:17:165:17 | access to parameter i |
| Switch.cs:167:13:167:19 | case ...: | Switch.cs:167:13:167:19 | case ...: |
| Switch.cs:167:18:167:18 | 1 | Switch.cs:167:18:167:18 | 1 |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:13:168:19 | case ...: |
| Switch.cs:168:18:168:18 | 2 | Switch.cs:168:18:168:18 | 2 |
| Switch.cs:169:17:169:50 | call to method WriteLine | Switch.cs:169:42:169:49 | "1 or 2" |
| Switch.cs:169:17:169:51 | ...; | Switch.cs:169:17:169:51 | ...; |
| Switch.cs:169:42:169:49 | "1 or 2" | Switch.cs:169:42:169:49 | "1 or 2" |
| Switch.cs:170:17:170:22 | break; | Switch.cs:170:17:170:22 | break; |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:13:171:19 | case ...: |
| Switch.cs:171:18:171:18 | 3 | Switch.cs:171:18:171:18 | 3 |
| Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:172:42:172:44 | "3" |
| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:17:172:46 | ...; |
| Switch.cs:172:42:172:44 | "3" | Switch.cs:172:42:172:44 | "3" |
| Switch.cs:173:17:173:22 | break; | Switch.cs:173:17:173:22 | break; |
| Switch.cs:174:13:174:20 | default: | Switch.cs:174:13:174:20 | default: |
| Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:175:42:175:46 | "def" |
| Switch.cs:175:17:175:48 | ...; | Switch.cs:175:17:175:48 | ...; |
| Switch.cs:175:42:175:46 | "def" | Switch.cs:175:42:175:46 | "def" |
| Switch.cs:176:17:176:22 | break; | Switch.cs:176:17:176:22 | break; |
| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | call to constructor Object |
| TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | {...} |
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:4:5:9:5 | {...} |

View File

@@ -3581,6 +3581,39 @@
| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:40:160:43 | "b = " | normal |
| Switch.cs:160:44:160:46 | {...} | Switch.cs:160:44:160:46 | {...} | normal |
| Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:160:45:160:45 | access to local variable s | normal |
| Switch.cs:164:5:178:5 | {...} | Switch.cs:170:17:170:22 | break; | normal [break] (0) |
| Switch.cs:164:5:178:5 | {...} | Switch.cs:173:17:173:22 | break; | normal [break] (0) |
| Switch.cs:164:5:178:5 | {...} | Switch.cs:176:17:176:22 | break; | normal [break] (0) |
| Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:170:17:170:22 | break; | normal [break] (0) |
| Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:173:17:173:22 | break; | normal [break] (0) |
| Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:176:17:176:22 | break; | normal [break] (0) |
| Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:165:17:165:17 | access to parameter i | normal |
| Switch.cs:167:13:167:19 | case ...: | Switch.cs:167:18:167:18 | 1 | no-match |
| Switch.cs:167:13:167:19 | case ...: | Switch.cs:168:18:168:18 | 2 | no-match |
| Switch.cs:167:13:167:19 | case ...: | Switch.cs:169:17:169:50 | call to method WriteLine | normal |
| Switch.cs:167:18:167:18 | 1 | Switch.cs:167:18:167:18 | 1 | match |
| Switch.cs:167:18:167:18 | 1 | Switch.cs:167:18:167:18 | 1 | no-match |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:18:168:18 | 2 | no-match |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:169:17:169:50 | call to method WriteLine | normal |
| Switch.cs:168:18:168:18 | 2 | Switch.cs:168:18:168:18 | 2 | match |
| Switch.cs:168:18:168:18 | 2 | Switch.cs:168:18:168:18 | 2 | no-match |
| Switch.cs:169:17:169:50 | call to method WriteLine | Switch.cs:169:17:169:50 | call to method WriteLine | normal |
| Switch.cs:169:17:169:51 | ...; | Switch.cs:169:17:169:50 | call to method WriteLine | normal |
| Switch.cs:169:42:169:49 | "1 or 2" | Switch.cs:169:42:169:49 | "1 or 2" | normal |
| Switch.cs:170:17:170:22 | break; | Switch.cs:170:17:170:22 | break; | break |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:18:171:18 | 3 | no-match |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:172:17:172:45 | call to method WriteLine | normal |
| Switch.cs:171:18:171:18 | 3 | Switch.cs:171:18:171:18 | 3 | match |
| Switch.cs:171:18:171:18 | 3 | Switch.cs:171:18:171:18 | 3 | no-match |
| Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:172:17:172:45 | call to method WriteLine | normal |
| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:17:172:45 | call to method WriteLine | normal |
| Switch.cs:172:42:172:44 | "3" | Switch.cs:172:42:172:44 | "3" | normal |
| Switch.cs:173:17:173:22 | break; | Switch.cs:173:17:173:22 | break; | break |
| Switch.cs:174:13:174:20 | default: | Switch.cs:175:17:175:47 | call to method WriteLine | normal |
| Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:175:17:175:47 | call to method WriteLine | normal |
| Switch.cs:175:17:175:48 | ...; | Switch.cs:175:17:175:47 | call to method WriteLine | normal |
| Switch.cs:175:42:175:46 | "def" | Switch.cs:175:42:175:46 | "def" | normal |
| Switch.cs:176:17:176:22 | break; | Switch.cs:176:17:176:22 | break; | break |
| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | call to constructor Object | normal |
| TypeAccesses.cs:1:7:1:18 | {...} | TypeAccesses.cs:1:7:1:18 | {...} | normal |
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:8:13:8:27 | Type t = ... | normal |

View File

@@ -4145,6 +4145,33 @@
| Switch.cs:160:40:160:43 | "b = " | Switch.cs:160:45:160:45 | access to local variable s | |
| Switch.cs:160:44:160:46 | {...} | Switch.cs:160:38:160:47 | $"..." | |
| Switch.cs:160:45:160:45 | access to local variable s | Switch.cs:160:44:160:46 | {...} | |
| Switch.cs:163:10:163:12 | enter M16 | Switch.cs:164:5:178:5 | {...} | |
| Switch.cs:163:10:163:12 | exit M16 (normal) | Switch.cs:163:10:163:12 | exit M16 | |
| Switch.cs:164:5:178:5 | {...} | Switch.cs:165:9:177:9 | switch (...) {...} | |
| Switch.cs:165:9:177:9 | switch (...) {...} | Switch.cs:165:17:165:17 | access to parameter i | |
| Switch.cs:165:17:165:17 | access to parameter i | Switch.cs:167:13:167:19 | case ...: | |
| Switch.cs:167:13:167:19 | case ...: | Switch.cs:167:18:167:18 | 1 | |
| Switch.cs:167:18:167:18 | 1 | Switch.cs:168:13:168:19 | case ...: | match, no-match |
| Switch.cs:168:13:168:19 | case ...: | Switch.cs:168:18:168:18 | 2 | |
| Switch.cs:168:18:168:18 | 2 | Switch.cs:169:17:169:51 | ...; | match |
| Switch.cs:168:18:168:18 | 2 | Switch.cs:170:17:170:22 | break; | no-match |
| Switch.cs:168:18:168:18 | 2 | Switch.cs:171:13:171:19 | case ...: | no-match |
| Switch.cs:169:17:169:50 | call to method WriteLine | Switch.cs:170:17:170:22 | break; | |
| Switch.cs:169:17:169:51 | ...; | Switch.cs:169:42:169:49 | "1 or 2" | |
| Switch.cs:169:42:169:49 | "1 or 2" | Switch.cs:169:17:169:50 | call to method WriteLine | |
| Switch.cs:170:17:170:22 | break; | Switch.cs:163:10:163:12 | exit M16 (normal) | break |
| Switch.cs:171:13:171:19 | case ...: | Switch.cs:171:18:171:18 | 3 | |
| Switch.cs:171:18:171:18 | 3 | Switch.cs:172:17:172:46 | ...; | match |
| Switch.cs:171:18:171:18 | 3 | Switch.cs:174:13:174:20 | default: | no-match |
| Switch.cs:172:17:172:45 | call to method WriteLine | Switch.cs:173:17:173:22 | break; | |
| Switch.cs:172:17:172:46 | ...; | Switch.cs:172:42:172:44 | "3" | |
| Switch.cs:172:42:172:44 | "3" | Switch.cs:172:17:172:45 | call to method WriteLine | |
| Switch.cs:173:17:173:22 | break; | Switch.cs:163:10:163:12 | exit M16 (normal) | break |
| Switch.cs:174:13:174:20 | default: | Switch.cs:175:17:175:48 | ...; | |
| Switch.cs:175:17:175:47 | call to method WriteLine | Switch.cs:176:17:176:22 | break; | |
| Switch.cs:175:17:175:48 | ...; | Switch.cs:175:42:175:46 | "def" | |
| Switch.cs:175:42:175:46 | "def" | Switch.cs:175:17:175:47 | call to method WriteLine | |
| Switch.cs:176:17:176:22 | break; | Switch.cs:163:10:163:12 | exit M16 (normal) | break |
| TypeAccesses.cs:1:7:1:18 | call to constructor Object | TypeAccesses.cs:1:7:1:18 | {...} | |
| TypeAccesses.cs:1:7:1:18 | enter TypeAccesses | TypeAccesses.cs:1:7:1:18 | call to constructor Object | |
| TypeAccesses.cs:1:7:1:18 | exit TypeAccesses (normal) | TypeAccesses.cs:1:7:1:18 | exit TypeAccesses | |

View File

@@ -1256,6 +1256,7 @@ entryPoint
| Switch.cs:134:9:134:11 | M13 | Switch.cs:135:5:142:5 | {...} |
| Switch.cs:144:9:144:11 | M14 | Switch.cs:145:5:152:5 | {...} |
| Switch.cs:154:10:154:12 | M15 | Switch.cs:155:5:161:5 | {...} |
| Switch.cs:163:10:163:12 | M16 | Switch.cs:164:5:178:5 | {...} |
| TypeAccesses.cs:1:7:1:18 | TypeAccesses | TypeAccesses.cs:1:7:1:18 | call to constructor Object |
| TypeAccesses.cs:3:10:3:10 | M | TypeAccesses.cs:4:5:9:5 | {...} |
| VarDecls.cs:3:7:3:14 | VarDecls | VarDecls.cs:3:7:3:14 | call to constructor Object |

View File

@@ -159,4 +159,21 @@ class Switch
else
System.Console.WriteLine($"b = {s}");
}
void M16(int i)
{
switch (i)
{
case 1:
case 2:
System.Console.WriteLine("1 or 2");
break;
case 3:
System.Console.WriteLine("3");
break;
default:
System.Console.WriteLine("def");
break;
}
}
}