Skip to content

Commit d696235

Browse files
committed
C#: Updated CFG for switch statements - note that the last() predicate is incorrect.
1 parent 81110dc commit d696235

File tree

6 files changed

+123
-9
lines changed

6 files changed

+123
-9
lines changed

csharp/ql/src/semmle/code/csharp/Stmt.qll

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,16 @@ private module SwithStmtInternal {
215215
cached
216216
CaseStmt getCase(SwitchStmt ss, int i) {
217217
exists(int index, int rankIndex |
218-
result = ss.getChildStmt(index) and
218+
caseIndex(ss, result, index) and
219219
rankIndex = i + 1 and
220-
index = rank[rankIndex](int j, CaseStmt cs | cs = ss.getChildStmt(j) | j)
220+
index = rank[rankIndex](int j, CaseStmt cs | caseIndex(ss, cs, j) | j)
221+
)
222+
}
223+
224+
/** Implicitly reorder case statements to put the default case last if needed. */
225+
private predicate caseIndex(SwitchStmt ss, CaseStmt case, int index) {
226+
exists(int i | case = ss.getChildStmt(i) |
227+
if case instanceof DefaultCase then index = 1000000 else index = i
221228
)
222229
}
223230

csharp/ql/test/library-tests/controlflow/graph/BasicBlock.expected

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -555,11 +555,18 @@
555555
| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:40:131:40 | access to local variable s | 1 |
556556
| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:48:131:51 | null | 3 |
557557
| Switch.cs:131:56:131:66 | call to method ToString | Switch.cs:131:56:131:66 | call to method ToString | 1 |
558-
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:134:9:134:11 | exit M13 | 9 |
558+
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:139:18:139:18 | 1 | 6 |
559+
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:134:9:134:11 | exit M13 | 1 |
560+
| Switch.cs:138:13:138:20 | default: | Switch.cs:138:22:138:31 | return ...; | 4 |
561+
| Switch.cs:139:28:139:28 | 1 | Switch.cs:139:21:139:29 | return ...; | 2 |
562+
| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:18:140:18 | 2 | 2 |
563+
| Switch.cs:140:28:140:28 | 2 | Switch.cs:140:21:140:29 | return ...; | 2 |
559564
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:148:18:148:18 | 1 | 6 |
560565
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:144:9:144:11 | exit M14 | 1 |
561566
| Switch.cs:148:28:148:28 | 1 | Switch.cs:148:21:148:29 | return ...; | 2 |
562567
| Switch.cs:149:13:149:20 | default: | Switch.cs:149:22:149:31 | return ...; | 4 |
568+
| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:18:150:18 | 2 | 2 |
569+
| Switch.cs:150:28:150:28 | 2 | Switch.cs:150:21:150:29 | return ...; | 2 |
563570
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:13:7:22 | ... is ... | 14 |
564571
| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:25:7:25 | ; | 1 |
565572
| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | exit M | 4 |

csharp/ql/test/library-tests/controlflow/graph/Condition.expected

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -603,8 +603,18 @@ conditionBlock
603603
| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:43:131:51 | ... => ... | false |
604604
| Switch.cs:129:12:129:14 | enter M12 | Switch.cs:131:56:131:66 | call to method ToString | true |
605605
| Switch.cs:131:40:131:40 | access to local variable s | Switch.cs:131:56:131:66 | call to method ToString | false |
606+
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:138:13:138:20 | default: | false |
607+
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:139:28:139:28 | 1 | true |
608+
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:140:13:140:19 | case ...: | false |
609+
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:140:28:140:28 | 2 | false |
610+
| Switch.cs:140:13:140:19 | case ...: | Switch.cs:138:13:138:20 | default: | false |
611+
| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:28:140:28 | 2 | true |
606612
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:148:28:148:28 | 1 | true |
607613
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:149:13:149:20 | default: | false |
614+
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:150:13:150:19 | case ...: | false |
615+
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:150:28:150:28 | 2 | false |
616+
| Switch.cs:150:13:150:19 | case ...: | Switch.cs:149:13:149:20 | default: | false |
617+
| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:28:150:28 | 2 | true |
608618
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:25:7:25 | ; | true |
609619
| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:25:24:25:24 | access to local variable x | true |
610620
| VarDecls.cs:19:7:19:8 | enter M3 | VarDecls.cs:25:28:25:28 | access to local variable y | false |

csharp/ql/test/library-tests/controlflow/graph/Dominance.expected

Lines changed: 58 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2252,22 +2252,33 @@ dominance
22522252
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:135:5:142:5 | {...} |
22532253
| Switch.cs:135:5:142:5 | {...} | Switch.cs:136:9:141:9 | switch (...) {...} |
22542254
| Switch.cs:136:9:141:9 | switch (...) {...} | Switch.cs:136:17:136:17 | access to parameter i |
2255-
| Switch.cs:136:17:136:17 | access to parameter i | Switch.cs:138:13:138:20 | default: |
2255+
| Switch.cs:136:17:136:17 | access to parameter i | Switch.cs:139:13:139:19 | case ...: |
22562256
| Switch.cs:138:13:138:20 | default: | Switch.cs:138:30:138:30 | 1 |
2257-
| Switch.cs:138:22:138:31 | return ...; | Switch.cs:134:9:134:11 | exit M13 |
22582257
| Switch.cs:138:29:138:30 | -... | Switch.cs:138:22:138:31 | return ...; |
22592258
| Switch.cs:138:30:138:30 | 1 | Switch.cs:138:29:138:30 | -... |
2259+
| Switch.cs:139:13:139:19 | case ...: | Switch.cs:139:18:139:18 | 1 |
2260+
| Switch.cs:139:18:139:18 | 1 | Switch.cs:139:28:139:28 | 1 |
2261+
| Switch.cs:139:18:139:18 | 1 | Switch.cs:140:13:140:19 | case ...: |
2262+
| Switch.cs:139:28:139:28 | 1 | Switch.cs:139:21:139:29 | return ...; |
2263+
| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:18:140:18 | 2 |
2264+
| Switch.cs:140:18:140:18 | 2 | Switch.cs:138:13:138:20 | default: |
2265+
| Switch.cs:140:18:140:18 | 2 | Switch.cs:140:28:140:28 | 2 |
2266+
| Switch.cs:140:28:140:28 | 2 | Switch.cs:140:21:140:29 | return ...; |
22602267
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:145:5:152:5 | {...} |
22612268
| Switch.cs:145:5:152:5 | {...} | Switch.cs:146:9:151:9 | switch (...) {...} |
22622269
| Switch.cs:146:9:151:9 | switch (...) {...} | Switch.cs:146:17:146:17 | access to parameter i |
22632270
| Switch.cs:146:17:146:17 | access to parameter i | Switch.cs:148:13:148:19 | case ...: |
22642271
| Switch.cs:148:13:148:19 | case ...: | Switch.cs:148:18:148:18 | 1 |
22652272
| Switch.cs:148:18:148:18 | 1 | Switch.cs:148:28:148:28 | 1 |
2266-
| Switch.cs:148:18:148:18 | 1 | Switch.cs:149:13:149:20 | default: |
2273+
| Switch.cs:148:18:148:18 | 1 | Switch.cs:150:13:150:19 | case ...: |
22672274
| Switch.cs:148:28:148:28 | 1 | Switch.cs:148:21:148:29 | return ...; |
22682275
| Switch.cs:149:13:149:20 | default: | Switch.cs:149:30:149:30 | 1 |
22692276
| Switch.cs:149:29:149:30 | -... | Switch.cs:149:22:149:31 | return ...; |
22702277
| Switch.cs:149:30:149:30 | 1 | Switch.cs:149:29:149:30 | -... |
2278+
| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:18:150:18 | 2 |
2279+
| Switch.cs:150:18:150:18 | 2 | Switch.cs:149:13:149:20 | default: |
2280+
| Switch.cs:150:18:150:18 | 2 | Switch.cs:150:28:150:28 | 2 |
2281+
| Switch.cs:150:28:150:28 | 2 | Switch.cs:150:21:150:29 | return ...; |
22712282
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:4:5:9:5 | {...} |
22722283
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:5:9:5:26 | ... ...; |
22732284
| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:5:25:5:25 | access to parameter o |
@@ -5112,15 +5123,24 @@ postDominance
51125123
| Switch.cs:131:43:131:43 | _ | Switch.cs:131:43:131:51 | ... => ... |
51135124
| Switch.cs:131:48:131:51 | null | Switch.cs:131:43:131:43 | _ |
51145125
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:138:22:138:31 | return ...; |
5126+
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:139:21:139:29 | return ...; |
5127+
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:140:18:140:18 | 2 |
5128+
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:140:21:140:29 | return ...; |
51155129
| Switch.cs:135:5:142:5 | {...} | Switch.cs:134:9:134:11 | enter M13 |
51165130
| Switch.cs:136:9:141:9 | switch (...) {...} | Switch.cs:135:5:142:5 | {...} |
51175131
| Switch.cs:136:17:136:17 | access to parameter i | Switch.cs:136:9:141:9 | switch (...) {...} |
5118-
| Switch.cs:138:13:138:20 | default: | Switch.cs:136:17:136:17 | access to parameter i |
51195132
| Switch.cs:138:22:138:31 | return ...; | Switch.cs:138:29:138:30 | -... |
51205133
| Switch.cs:138:29:138:30 | -... | Switch.cs:138:30:138:30 | 1 |
51215134
| Switch.cs:138:30:138:30 | 1 | Switch.cs:138:13:138:20 | default: |
5135+
| Switch.cs:139:13:139:19 | case ...: | Switch.cs:136:17:136:17 | access to parameter i |
5136+
| Switch.cs:139:18:139:18 | 1 | Switch.cs:139:13:139:19 | case ...: |
5137+
| Switch.cs:139:21:139:29 | return ...; | Switch.cs:139:28:139:28 | 1 |
5138+
| Switch.cs:140:18:140:18 | 2 | Switch.cs:140:13:140:19 | case ...: |
5139+
| Switch.cs:140:21:140:29 | return ...; | Switch.cs:140:28:140:28 | 2 |
51225140
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:148:21:148:29 | return ...; |
51235141
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:149:22:149:31 | return ...; |
5142+
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:150:18:150:18 | 2 |
5143+
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:150:21:150:29 | return ...; |
51245144
| Switch.cs:145:5:152:5 | {...} | Switch.cs:144:9:144:11 | enter M14 |
51255145
| Switch.cs:146:9:151:9 | switch (...) {...} | Switch.cs:145:5:152:5 | {...} |
51265146
| Switch.cs:146:17:146:17 | access to parameter i | Switch.cs:146:9:151:9 | switch (...) {...} |
@@ -5130,6 +5150,8 @@ postDominance
51305150
| Switch.cs:149:22:149:31 | return ...; | Switch.cs:149:29:149:30 | -... |
51315151
| Switch.cs:149:29:149:30 | -... | Switch.cs:149:30:149:30 | 1 |
51325152
| Switch.cs:149:30:149:30 | 1 | Switch.cs:149:13:149:20 | default: |
5153+
| Switch.cs:150:18:150:18 | 2 | Switch.cs:150:13:150:19 | case ...: |
5154+
| Switch.cs:150:21:150:29 | return ...; | Switch.cs:150:28:150:28 | 2 |
51335155
| TypeAccesses.cs:3:10:3:10 | exit M | TypeAccesses.cs:8:13:8:27 | Type t = ... |
51345156
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:3:10:3:10 | enter M |
51355157
| TypeAccesses.cs:5:9:5:26 | ... ...; | TypeAccesses.cs:4:5:9:5 | {...} |
@@ -7389,13 +7411,31 @@ blockDominance
73897411
| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:43:131:51 | ... => ... |
73907412
| Switch.cs:131:56:131:66 | call to method ToString | Switch.cs:131:56:131:66 | call to method ToString |
73917413
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:134:9:134:11 | enter M13 |
7414+
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:134:9:134:11 | exit M13 |
7415+
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:138:13:138:20 | default: |
7416+
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:139:28:139:28 | 1 |
7417+
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:140:13:140:19 | case ...: |
7418+
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:140:28:140:28 | 2 |
7419+
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:134:9:134:11 | exit M13 |
7420+
| Switch.cs:138:13:138:20 | default: | Switch.cs:138:13:138:20 | default: |
7421+
| Switch.cs:139:28:139:28 | 1 | Switch.cs:139:28:139:28 | 1 |
7422+
| Switch.cs:140:13:140:19 | case ...: | Switch.cs:138:13:138:20 | default: |
7423+
| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:13:140:19 | case ...: |
7424+
| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:28:140:28 | 2 |
7425+
| Switch.cs:140:28:140:28 | 2 | Switch.cs:140:28:140:28 | 2 |
73927426
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:144:9:144:11 | enter M14 |
73937427
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:144:9:144:11 | exit M14 |
73947428
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:148:28:148:28 | 1 |
73957429
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:149:13:149:20 | default: |
7430+
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:150:13:150:19 | case ...: |
7431+
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:150:28:150:28 | 2 |
73967432
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:144:9:144:11 | exit M14 |
73977433
| Switch.cs:148:28:148:28 | 1 | Switch.cs:148:28:148:28 | 1 |
73987434
| Switch.cs:149:13:149:20 | default: | Switch.cs:149:13:149:20 | default: |
7435+
| Switch.cs:150:13:150:19 | case ...: | Switch.cs:149:13:149:20 | default: |
7436+
| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:13:150:19 | case ...: |
7437+
| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:28:150:28 | 2 |
7438+
| Switch.cs:150:28:150:28 | 2 | Switch.cs:150:28:150:28 | 2 |
73997439
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | enter M |
74007440
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:7:25:7:25 | ; |
74017441
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:8:9:8:28 | ... ...; |
@@ -9078,13 +9118,27 @@ postBlockDominance
90789118
| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:131:43:131:51 | ... => ... |
90799119
| Switch.cs:131:56:131:66 | call to method ToString | Switch.cs:131:56:131:66 | call to method ToString |
90809120
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:134:9:134:11 | enter M13 |
9121+
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:134:9:134:11 | enter M13 |
9122+
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:134:9:134:11 | exit M13 |
9123+
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:138:13:138:20 | default: |
9124+
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:139:28:139:28 | 1 |
9125+
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:140:13:140:19 | case ...: |
9126+
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:140:28:140:28 | 2 |
9127+
| Switch.cs:138:13:138:20 | default: | Switch.cs:138:13:138:20 | default: |
9128+
| Switch.cs:139:28:139:28 | 1 | Switch.cs:139:28:139:28 | 1 |
9129+
| Switch.cs:140:13:140:19 | case ...: | Switch.cs:140:13:140:19 | case ...: |
9130+
| Switch.cs:140:28:140:28 | 2 | Switch.cs:140:28:140:28 | 2 |
90819131
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:144:9:144:11 | enter M14 |
90829132
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:144:9:144:11 | enter M14 |
90839133
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:144:9:144:11 | exit M14 |
90849134
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:148:28:148:28 | 1 |
90859135
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:149:13:149:20 | default: |
9136+
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:150:13:150:19 | case ...: |
9137+
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:150:28:150:28 | 2 |
90869138
| Switch.cs:148:28:148:28 | 1 | Switch.cs:148:28:148:28 | 1 |
90879139
| Switch.cs:149:13:149:20 | default: | Switch.cs:149:13:149:20 | default: |
9140+
| Switch.cs:150:13:150:19 | case ...: | Switch.cs:150:13:150:19 | case ...: |
9141+
| Switch.cs:150:28:150:28 | 2 | Switch.cs:150:28:150:28 | 2 |
90889142
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | enter M |
90899143
| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:7:25:7:25 | ; |
90909144
| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | enter M |

csharp/ql/test/library-tests/controlflow/graph/EnclosingCallable.expected

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2441,6 +2441,14 @@ nodeEnclosing
24412441
| Switch.cs:138:22:138:31 | return ...; | Switch.cs:134:9:134:11 | M13 |
24422442
| Switch.cs:138:29:138:30 | -... | Switch.cs:134:9:134:11 | M13 |
24432443
| Switch.cs:138:30:138:30 | 1 | Switch.cs:134:9:134:11 | M13 |
2444+
| Switch.cs:139:13:139:19 | case ...: | Switch.cs:134:9:134:11 | M13 |
2445+
| Switch.cs:139:18:139:18 | 1 | Switch.cs:134:9:134:11 | M13 |
2446+
| Switch.cs:139:21:139:29 | return ...; | Switch.cs:134:9:134:11 | M13 |
2447+
| Switch.cs:139:28:139:28 | 1 | Switch.cs:134:9:134:11 | M13 |
2448+
| Switch.cs:140:13:140:19 | case ...: | Switch.cs:134:9:134:11 | M13 |
2449+
| Switch.cs:140:18:140:18 | 2 | Switch.cs:134:9:134:11 | M13 |
2450+
| Switch.cs:140:21:140:29 | return ...; | Switch.cs:134:9:134:11 | M13 |
2451+
| Switch.cs:140:28:140:28 | 2 | Switch.cs:134:9:134:11 | M13 |
24442452
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:144:9:144:11 | M14 |
24452453
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:144:9:144:11 | M14 |
24462454
| Switch.cs:145:5:152:5 | {...} | Switch.cs:144:9:144:11 | M14 |
@@ -2454,6 +2462,10 @@ nodeEnclosing
24542462
| Switch.cs:149:22:149:31 | return ...; | Switch.cs:144:9:144:11 | M14 |
24552463
| Switch.cs:149:29:149:30 | -... | Switch.cs:144:9:144:11 | M14 |
24562464
| Switch.cs:149:30:149:30 | 1 | Switch.cs:144:9:144:11 | M14 |
2465+
| Switch.cs:150:13:150:19 | case ...: | Switch.cs:144:9:144:11 | M14 |
2466+
| Switch.cs:150:18:150:18 | 2 | Switch.cs:144:9:144:11 | M14 |
2467+
| Switch.cs:150:21:150:29 | return ...; | Switch.cs:144:9:144:11 | M14 |
2468+
| Switch.cs:150:28:150:28 | 2 | Switch.cs:144:9:144:11 | M14 |
24572469
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | M |
24582470
| TypeAccesses.cs:3:10:3:10 | exit M | TypeAccesses.cs:3:10:3:10 | M |
24592471
| TypeAccesses.cs:4:5:9:5 | {...} | TypeAccesses.cs:3:10:3:10 | M |
@@ -3721,10 +3733,17 @@ blockEnclosing
37213733
| Switch.cs:131:43:131:51 | ... => ... | Switch.cs:129:12:129:14 | M12 |
37223734
| Switch.cs:131:56:131:66 | call to method ToString | Switch.cs:129:12:129:14 | M12 |
37233735
| Switch.cs:134:9:134:11 | enter M13 | Switch.cs:134:9:134:11 | M13 |
3736+
| Switch.cs:134:9:134:11 | exit M13 | Switch.cs:134:9:134:11 | M13 |
3737+
| Switch.cs:138:13:138:20 | default: | Switch.cs:134:9:134:11 | M13 |
3738+
| Switch.cs:139:28:139:28 | 1 | Switch.cs:134:9:134:11 | M13 |
3739+
| Switch.cs:140:13:140:19 | case ...: | Switch.cs:134:9:134:11 | M13 |
3740+
| Switch.cs:140:28:140:28 | 2 | Switch.cs:134:9:134:11 | M13 |
37243741
| Switch.cs:144:9:144:11 | enter M14 | Switch.cs:144:9:144:11 | M14 |
37253742
| Switch.cs:144:9:144:11 | exit M14 | Switch.cs:144:9:144:11 | M14 |
37263743
| Switch.cs:148:28:148:28 | 1 | Switch.cs:144:9:144:11 | M14 |
37273744
| Switch.cs:149:13:149:20 | default: | Switch.cs:144:9:144:11 | M14 |
3745+
| Switch.cs:150:13:150:19 | case ...: | Switch.cs:144:9:144:11 | M14 |
3746+
| Switch.cs:150:28:150:28 | 2 | Switch.cs:144:9:144:11 | M14 |
37283747
| TypeAccesses.cs:3:10:3:10 | enter M | TypeAccesses.cs:3:10:3:10 | M |
37293748
| TypeAccesses.cs:7:25:7:25 | ; | TypeAccesses.cs:3:10:3:10 | M |
37303749
| TypeAccesses.cs:8:9:8:28 | ... ...; | TypeAccesses.cs:3:10:3:10 | M |

0 commit comments

Comments
 (0)