321 references to ControlFlowRegionKind
ILLink.RoslynAnalyzer (26)
DataFlow\ControlFlowGraphProxy.cs (26)
39
ControlFlowRegionKind
.Try => RegionKind.Try,
40
ControlFlowRegionKind
.Catch => RegionKind.Catch,
41
ControlFlowRegionKind
.Filter => RegionKind.Filter,
42
ControlFlowRegionKind
.Finally => RegionKind.Finally,
125
while (region != null && region.Kind !=
ControlFlowRegionKind
.Root) {
126
if (region.Kind is
ControlFlowRegionKind
.Try or
ControlFlowRegionKind
.Catch or
ControlFlowRegionKind
.Filter) {
141
while (region != null && region.Kind !=
ControlFlowRegionKind
.Root) {
142
if (region.Kind ==
ControlFlowRegionKind
.Finally) {
153
if (catchOrFilterOrFinallyRegion.Region.Kind is not (
ControlFlowRegionKind
.Catch or
ControlFlowRegionKind
.Filter or
ControlFlowRegionKind
.Finally))
161
if (enclosingRegion.Kind ==
ControlFlowRegionKind
.FilterAndHandler) {
163
Debug.Assert (enclosingRegion.Kind ==
ControlFlowRegionKind
.TryAndCatch);
171
if (nested.Kind ==
ControlFlowRegionKind
.Try)
180
if (region.Kind is not (
ControlFlowRegionKind
.Catch or
ControlFlowRegionKind
.Filter))
184
if (region.Kind is
ControlFlowRegionKind
.Catch && region.EnclosingRegion!.Kind is
ControlFlowRegionKind
.FilterAndHandler)
193
case
ControlFlowRegionKind
.Catch:
196
case
ControlFlowRegionKind
.FilterAndHandler:
199
if (filter.Kind ==
ControlFlowRegionKind
.Filter) {
217
if (catchOrFilter.Kind ==
ControlFlowRegionKind
.Filter)
225
if (catchRegion.Region.Kind is not
ControlFlowRegionKind
.Catch)
228
return catchRegion.Region.EnclosingRegion!.Kind ==
ControlFlowRegionKind
.FilterAndHandler;
Microsoft.CodeAnalysis (152)
Operations\ControlFlowBranch.cs (4)
88
Debug.Assert(source.Kind !=
ControlFlowRegionKind
.Root);
142
if (leavingRegions[i].Kind ==
ControlFlowRegionKind
.Try && leavingRegions[i + 1].Kind ==
ControlFlowRegionKind
.TryAndFinally)
150
Debug.Assert(builder.Last().Kind ==
ControlFlowRegionKind
.Finally);
Operations\ControlFlowGraph.cs (2)
46
Debug.Assert(root.Kind ==
ControlFlowRegionKind
.Root);
215
/// Root (<see cref="
ControlFlowRegionKind
.Root"/>) region for the graph.
Operations\ControlFlowGraphBuilder.cs (94)
23
/// There are different kinds of regions, <see cref="
ControlFlowRegionKind
"/>.
116
var root = new RegionBuilder(
ControlFlowRegionKind
.Root);
122
builder.EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime));
349
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
352
if (region.Kind ==
ControlFlowRegionKind
.Try && enclosing.Kind ==
ControlFlowRegionKind
.TryAndFinally)
355
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
372
Debug.Assert(@finally.Kind ==
ControlFlowRegionKind
.Finally);
407
ControlFlowRegion? enclosing = fromRegion.Kind ==
ControlFlowRegionKind
.Root ? null : fromRegion.EnclosingRegion;
408
if (fromRegion.Kind ==
ControlFlowRegionKind
.Try)
412
case
ControlFlowRegionKind
.TryAndFinally:
414
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
422
case
ControlFlowRegionKind
.TryAndCatch:
431
else if (fromRegion.Kind ==
ControlFlowRegionKind
.Filter)
434
Debug.Assert(enclosing!.Kind ==
ControlFlowRegionKind
.FilterAndHandler);
437
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
461
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
471
case
ControlFlowRegionKind
.Catch:
475
case
ControlFlowRegionKind
.FilterAndHandler:
477
Debug.Assert(@catch.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Filter);
530
if (r.Kind ==
ControlFlowRegionKind
.LocalLifetime &&
541
case
ControlFlowRegionKind
.Root:
542
case
ControlFlowRegionKind
.Filter:
543
case
ControlFlowRegionKind
.Try:
544
case
ControlFlowRegionKind
.Catch:
545
case
ControlFlowRegionKind
.Finally:
546
case
ControlFlowRegionKind
.LocalLifetime:
547
case
ControlFlowRegionKind
.StaticLocalInitializer:
548
case
ControlFlowRegionKind
.ErroneousBody:
553
if (subRegion.Kind ==
ControlFlowRegionKind
.LocalLifetime && subRegion.FirstBlock == region.FirstBlock && subRegion.LastBlock == region.LastBlock)
555
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
573
if (subRegion.Kind ==
ControlFlowRegionKind
.LocalLifetime && !subRegion.HasLocalFunctions &&
599
case
ControlFlowRegionKind
.TryAndCatch:
600
case
ControlFlowRegionKind
.TryAndFinally:
601
case
ControlFlowRegionKind
.FilterAndHandler:
616
Debug.Assert(subRegion.Kind !=
ControlFlowRegionKind
.Root);
730
Debug.Assert(currentRegion.Kind ==
ControlFlowRegionKind
.Filter ||
731
currentRegion.Kind ==
ControlFlowRegionKind
.Finally);
752
if (currentRegion.Kind ==
ControlFlowRegionKind
.Finally &&
759
Debug.Assert(tryAndFinally.Kind ==
ControlFlowRegionKind
.TryAndFinally);
763
Debug.Assert(@try.Kind ==
ControlFlowRegionKind
.Try);
775
@try.Kind =
ControlFlowRegionKind
.LocalLifetime;
1025
case
ControlFlowRegionKind
.Filter:
1026
case
ControlFlowRegionKind
.Catch:
1027
case
ControlFlowRegionKind
.Finally:
1386
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.Locals));
1484
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.Locals));
1524
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.ErroneousBody));
1645
var resultCaptureRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, isStackSpillRegion: true);
1841
frameOpt.RegionBuilderOpt = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, isStackSpillRegion: true);
3576
var locals = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.Locals);
3666
tryAndFinallyRegion = new RegionBuilder(
ControlFlowRegionKind
.TryAndFinally);
3668
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.Try));
3674
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.TryAndCatch));
3675
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.Try));
3678
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.Try);
3697
filterAndHandlerRegion = new RegionBuilder(
ControlFlowRegionKind
.FilterAndHandler, catchClause.ExceptionType, catchClause.Locals);
3700
var filterRegion = new RegionBuilder(
ControlFlowRegionKind
.Filter, catchClause.ExceptionType);
3716
var handlerRegion = new RegionBuilder(
ControlFlowRegionKind
.Catch, catchClause.ExceptionType,
3755
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.TryAndCatch);
3761
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.Try);
3764
var finallyRegion = new RegionBuilder(
ControlFlowRegionKind
.Finally);
3958
var usingRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: locals);
4077
resourceRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime);
4087
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.TryAndFinally));
4088
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.Try));
4092
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.Try);
4099
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.TryAndFinally);
4114
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.TryAndFinally);
4120
var finallyRegion = new RegionBuilder(
ControlFlowRegionKind
.Finally);
4308
var lockRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime,
4359
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.TryAndFinally));
4360
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.Try));
4394
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.Try);
4402
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.Finally));
4442
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.TryAndFinally);
4457
var enumeratorCaptureRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime);
4482
regionForCollection = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: ImmutableArray.Create(local));
4499
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.TryAndFinally));
4500
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.Try));
4513
var localsRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.Locals);
4531
Debug.Assert(_currentRegion.Kind ==
ControlFlowRegionKind
.Try);
4548
Debug.Assert(_currentRegion.Kind ==
ControlFlowRegionKind
.TryAndFinally);
4748
var loopRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: locals);
5470
var switchRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: locals);
5735
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.Locals));
5751
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.ConditionLocals));
5779
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.Locals));
5837
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.StaticLocalInitializer));
6795
var constructorRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime);
6855
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime));
7276
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: initializer.Locals));
7750
var armScopeRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: arm.Locals);
7951
var innerCaptureRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime);
Operations\ControlFlowGraphBuilder.RegionBuilder.cs (25)
17
public
ControlFlowRegionKind
Kind;
31
public RegionBuilder(
ControlFlowRegionKind
kind, ITypeSymbol? exceptionType = null, ImmutableArray<ILocalSymbol> locals = default, bool isStackSpillRegion = false)
33
Debug.Assert(!isStackSpillRegion || (kind ==
ControlFlowRegionKind
.LocalLifetime && locals.IsDefaultOrEmpty));
66
Debug.Assert(Kind !=
ControlFlowRegionKind
.Root);
78
Debug.Assert(Kind !=
ControlFlowRegionKind
.Root);
97
Debug.Assert(Kind !=
ControlFlowRegionKind
.Root);
110
Debug.Assert(Kind !=
ControlFlowRegionKind
.Root);
142
ControlFlowRegionKind
lastKind = Regions.Last().Kind;
145
case
ControlFlowRegionKind
.FilterAndHandler:
147
Debug.Assert(lastKind == (Regions.Count < 2 ?
ControlFlowRegionKind
.Filter :
ControlFlowRegionKind
.Catch));
150
case
ControlFlowRegionKind
.TryAndCatch:
153
Debug.Assert(lastKind ==
ControlFlowRegionKind
.Try);
157
Debug.Assert(lastKind ==
ControlFlowRegionKind
.Catch || lastKind ==
ControlFlowRegionKind
.FilterAndHandler);
161
case
ControlFlowRegionKind
.TryAndFinally:
165
Debug.Assert(lastKind ==
ControlFlowRegionKind
.Try);
169
Debug.Assert(lastKind ==
ControlFlowRegionKind
.Finally);
174
Debug.Assert(lastKind !=
ControlFlowRegionKind
.Filter);
175
Debug.Assert(lastKind !=
ControlFlowRegionKind
.Catch);
176
Debug.Assert(lastKind !=
ControlFlowRegionKind
.Finally);
177
Debug.Assert(lastKind !=
ControlFlowRegionKind
.Try);
251
Debug.Assert((Kind !=
ControlFlowRegionKind
.FilterAndHandler &&
252
Kind !=
ControlFlowRegionKind
.TryAndCatch &&
253
Kind !=
ControlFlowRegionKind
.TryAndFinally) ||
Operations\ControlFlowRegion.cs (27)
20
public
ControlFlowRegionKind
Kind { get; }
23
/// Enclosing region. Null for <see cref="
ControlFlowRegionKind
.Root"/>
28
/// Target exception type for <see cref="
ControlFlowRegionKind
.Filter"/>, <see cref="
ControlFlowRegionKind
.Catch"/>,
29
/// <see cref="
ControlFlowRegionKind
.FilterAndHandler "/>
63
internal ControlFlowRegion(
ControlFlowRegionKind
kind, int firstBlockOrdinal, int lastBlockOrdinal,
86
Debug.Assert(r.EnclosingRegion == null && r.Kind !=
ControlFlowRegionKind
.Root);
94
case
ControlFlowRegionKind
.TryAndFinally:
95
case
ControlFlowRegionKind
.FilterAndHandler:
97
Debug.Assert(NestedRegions[0].Kind == (kind ==
ControlFlowRegionKind
.TryAndFinally ?
ControlFlowRegionKind
.Try :
ControlFlowRegionKind
.Filter));
98
Debug.Assert(NestedRegions[1].Kind == (kind ==
ControlFlowRegionKind
.TryAndFinally ?
ControlFlowRegionKind
.Finally :
ControlFlowRegionKind
.Catch));
104
case
ControlFlowRegionKind
.TryAndCatch:
106
Debug.Assert(NestedRegions[0].Kind ==
ControlFlowRegionKind
.Try);
116
Debug.Assert(r.Kind ==
ControlFlowRegionKind
.FilterAndHandler || r.Kind ==
ControlFlowRegionKind
.Catch);
122
case
ControlFlowRegionKind
.Root:
123
case
ControlFlowRegionKind
.LocalLifetime:
124
case
ControlFlowRegionKind
.Try:
125
case
ControlFlowRegionKind
.Filter:
126
case
ControlFlowRegionKind
.Catch:
127
case
ControlFlowRegionKind
.Finally:
128
case
ControlFlowRegionKind
.StaticLocalInitializer:
129
case
ControlFlowRegionKind
.ErroneousBody:
Microsoft.CodeAnalysis.AnalyzerUtilities (39)
src\RoslynAnalyzers\Utilities\FlowAnalysis\Extensions\BasicBlockExtensions.cs (9)
71
public static bool IsContainedInRegionOfKind(this BasicBlock basicBlock,
ControlFlowRegionKind
regionKind)
77
public static ControlFlowRegion? GetContainingRegionOfKind(this BasicBlock basicBlock,
ControlFlowRegionKind
regionKind)
97
=> basicBlock.IsFirstBlockOfRegionKind(
ControlFlowRegionKind
.Finally, out finallyRegion);
103
=> basicBlock.IsLastBlockOfRegionKind(
ControlFlowRegionKind
.Finally, out finallyRegion);
108
public static bool IsFirstBlockOfRegionKind(this BasicBlock basicBlock,
ControlFlowRegionKind
regionKind, [NotNullWhen(returnValue: true)] out ControlFlowRegion? region)
114
public static bool IsLastBlockOfRegionKind(this BasicBlock basicBlock,
ControlFlowRegionKind
regionKind, [NotNullWhen(returnValue: true)] out ControlFlowRegion? region)
117
private static bool IsFirstOrLastBlockOfRegionKind(this BasicBlock basicBlock,
ControlFlowRegionKind
regionKind, bool first, [NotNullWhen(returnValue: true)] out ControlFlowRegion? foundRegion)
147
if (!basicBlock.IsFirstBlockOfRegionKind(
ControlFlowRegionKind
.Finally, out var finallyRegion))
163
internal static ControlFlowRegion? GetInnermostRegionStartedByBlock(this BasicBlock basicBlock,
ControlFlowRegionKind
regionKind)
src\RoslynAnalyzers\Utilities\FlowAnalysis\Extensions\IOperationExtensions_FlowAnalysis.cs (1)
29
case
ControlFlowRegionKind
.Catch:
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowAnalysis.cs (23)
227
var finallyRegion = block.GetInnermostRegionStartedByBlock(
ControlFlowRegionKind
.Finally);
228
if (finallyRegion?.EnclosingRegion!.Kind ==
ControlFlowRegionKind
.TryAndFinally)
232
Debug.Assert(tryRegion.Kind ==
ControlFlowRegionKind
.Try);
237
cfg.Blocks[p].GetInnermostRegionStartedByBlock(
ControlFlowRegionKind
.Catch) != null);
277
Debug.Assert(enclosingTryAndCatchRegion.Kind ==
ControlFlowRegionKind
.TryAndCatch);
278
Debug.Assert(block.EnclosingRegion.Kind is
ControlFlowRegionKind
.Catch or
ControlFlowRegionKind
.Filter);
297
if (block.EnclosingRegion?.Kind ==
ControlFlowRegionKind
.Try &&
298
block.EnclosingRegion.EnclosingRegion?.Kind ==
ControlFlowRegionKind
.TryAndCatch &&
348
if (successorBlock.IsFirstBlockOfRegionKind(
ControlFlowRegionKind
.TryAndFinally, out var tryAndFinally))
351
Debug.Assert(finallyRegion.Kind ==
ControlFlowRegionKind
.Finally);
491
Debug.Assert(tryAndCatchRegion.Kind ==
ControlFlowRegionKind
.TryAndCatch);
496
var catchRegion = tryAndCatchRegion.NestedRegions.FirstOrDefault(region => region.Kind is
ControlFlowRegionKind
.Catch or
ControlFlowRegionKind
.FilterAndHandler);
597
case
ControlFlowRegionKind
.Catch:
598
if (block.EnclosingRegion!.EnclosingRegion!.Kind ==
ControlFlowRegionKind
.TryAndCatch)
605
case
ControlFlowRegionKind
.Filter:
606
if (block.EnclosingRegion!.EnclosingRegion!.Kind ==
ControlFlowRegionKind
.FilterAndHandler &&
607
block.EnclosingRegion.EnclosingRegion.EnclosingRegion?.Kind ==
ControlFlowRegionKind
.TryAndCatch)
626
Debug.Assert(basicBlock.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally);
688
if (region.Kind ==
ControlFlowRegionKind
.TryAndCatch)
728
Debug.Assert(finallyRegion.Kind ==
ControlFlowRegionKind
.Finally);
809
hasAnyTryBlock |= block.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Try;
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (2)
917
CurrentBasicBlock.IsContainedInRegionOfKind(
ControlFlowRegionKind
.Finally))
3793
var tryFinallyRegion = CurrentBasicBlock.GetContainingRegionOfKind(
ControlFlowRegionKind
.TryAndFinally)!;
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\ThrownExceptionInfo.cs (4)
24
ContainingFinallyRegion = block.GetContainingRegionOfKind(
ControlFlowRegionKind
.Finally);
47
if (enclosingRegion.Kind ==
ControlFlowRegionKind
.TryAndCatch)
49
Debug.Assert(enclosingRegion.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Try);
52
if (nestedRegion.Kind ==
ControlFlowRegionKind
.Catch &&
Microsoft.CodeAnalysis.CodeStyle (27)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
318
case
ControlFlowRegionKind
.Catch:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (18)
175
if (current.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally &&
257
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
259
if (region.Kind ==
ControlFlowRegionKind
.Try && enclosing.Kind ==
ControlFlowRegionKind
.TryAndFinally)
262
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
279
Debug.Assert(@finally.Kind ==
ControlFlowRegionKind
.Finally);
318
var enclosing = fromRegion.Kind ==
ControlFlowRegionKind
.Root ? null : fromRegion.EnclosingRegion;
319
if (fromRegion.Kind ==
ControlFlowRegionKind
.Try)
323
case
ControlFlowRegionKind
.TryAndFinally:
325
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
335
case
ControlFlowRegionKind
.TryAndCatch:
344
else if (fromRegion.Kind ==
ControlFlowRegionKind
.Filter)
347
Debug.Assert(enclosing.Kind ==
ControlFlowRegionKind
.FilterAndHandler);
349
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
373
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
383
case
ControlFlowRegionKind
.Catch:
387
case
ControlFlowRegionKind
.FilterAndHandler:
389
Debug.Assert(@catch.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Filter);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.cs (2)
169
if (basicBlock.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Catch &&
189
if (region.Kind ==
ControlFlowRegionKind
.TryAndFinally)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (6)
369
case
ControlFlowRegionKind
.Catch:
370
case
ControlFlowRegionKind
.Filter:
371
case
ControlFlowRegionKind
.FilterAndHandler:
372
case
ControlFlowRegionKind
.Finally:
386
case
ControlFlowRegionKind
.TryAndCatch:
387
case
ControlFlowRegionKind
.TryAndFinally:
Microsoft.CodeAnalysis.Test.Utilities (50)
Compilation\ControlFlowGraphVerifier.cs (32)
151
Assert.Equal(
ControlFlowRegionKind
.Root, currentRegion.Kind);
297
Assert.True(block.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Filter || block.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally);
734
while (region.Kind !=
ControlFlowRegionKind
.Root)
736
if (region.Kind ==
ControlFlowRegionKind
.Try && region.EnclosingRegion.Kind ==
ControlFlowRegionKind
.TryAndFinally)
738
Debug.Assert(region.EnclosingRegion.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
1433
case
ControlFlowRegionKind
.Filter:
1440
case
ControlFlowRegionKind
.Try:
1445
case
ControlFlowRegionKind
.FilterAndHandler:
1448
case
ControlFlowRegionKind
.Finally:
1452
case
ControlFlowRegionKind
.Catch:
1455
case
ControlFlowRegionKind
.FilterAndHandler:
1459
case
ControlFlowRegionKind
.TryAndCatch:
1467
case
ControlFlowRegionKind
.LocalLifetime:
1473
case
ControlFlowRegionKind
.TryAndCatch:
1474
case
ControlFlowRegionKind
.TryAndFinally:
1481
case
ControlFlowRegionKind
.StaticLocalInitializer:
1487
case
ControlFlowRegionKind
.ErroneousBody:
1531
case
ControlFlowRegionKind
.LocalLifetime:
1532
case
ControlFlowRegionKind
.Filter:
1533
case
ControlFlowRegionKind
.Try:
1534
case
ControlFlowRegionKind
.Finally:
1535
case
ControlFlowRegionKind
.FilterAndHandler:
1536
case
ControlFlowRegionKind
.StaticLocalInitializer:
1537
case
ControlFlowRegionKind
.ErroneousBody:
1541
case
ControlFlowRegionKind
.Catch:
1544
case
ControlFlowRegionKind
.FilterAndHandler:
1545
case
ControlFlowRegionKind
.TryAndCatch:
1556
goto case
ControlFlowRegionKind
.Filter;
1558
case
ControlFlowRegionKind
.TryAndCatch:
1559
case
ControlFlowRegionKind
.TryAndFinally:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (18)
175
if (current.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally &&
257
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
259
if (region.Kind ==
ControlFlowRegionKind
.Try && enclosing.Kind ==
ControlFlowRegionKind
.TryAndFinally)
262
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
279
Debug.Assert(@finally.Kind ==
ControlFlowRegionKind
.Finally);
318
var enclosing = fromRegion.Kind ==
ControlFlowRegionKind
.Root ? null : fromRegion.EnclosingRegion;
319
if (fromRegion.Kind ==
ControlFlowRegionKind
.Try)
323
case
ControlFlowRegionKind
.TryAndFinally:
325
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
335
case
ControlFlowRegionKind
.TryAndCatch:
344
else if (fromRegion.Kind ==
ControlFlowRegionKind
.Filter)
347
Debug.Assert(enclosing.Kind ==
ControlFlowRegionKind
.FilterAndHandler);
349
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
373
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
383
case
ControlFlowRegionKind
.Catch:
387
case
ControlFlowRegionKind
.FilterAndHandler:
389
Debug.Assert(@catch.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Filter);
Microsoft.CodeAnalysis.Workspaces (27)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
318
case
ControlFlowRegionKind
.Catch:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (18)
175
if (current.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally &&
257
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
259
if (region.Kind ==
ControlFlowRegionKind
.Try && enclosing.Kind ==
ControlFlowRegionKind
.TryAndFinally)
262
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
279
Debug.Assert(@finally.Kind ==
ControlFlowRegionKind
.Finally);
318
var enclosing = fromRegion.Kind ==
ControlFlowRegionKind
.Root ? null : fromRegion.EnclosingRegion;
319
if (fromRegion.Kind ==
ControlFlowRegionKind
.Try)
323
case
ControlFlowRegionKind
.TryAndFinally:
325
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
335
case
ControlFlowRegionKind
.TryAndCatch:
344
else if (fromRegion.Kind ==
ControlFlowRegionKind
.Filter)
347
Debug.Assert(enclosing.Kind ==
ControlFlowRegionKind
.FilterAndHandler);
349
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
373
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
383
case
ControlFlowRegionKind
.Catch:
387
case
ControlFlowRegionKind
.FilterAndHandler:
389
Debug.Assert(@catch.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Filter);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.cs (2)
169
if (basicBlock.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Catch &&
189
if (region.Kind ==
ControlFlowRegionKind
.TryAndFinally)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (6)
369
case
ControlFlowRegionKind
.Catch:
370
case
ControlFlowRegionKind
.Filter:
371
case
ControlFlowRegionKind
.FilterAndHandler:
372
case
ControlFlowRegionKind
.Finally:
386
case
ControlFlowRegionKind
.TryAndCatch:
387
case
ControlFlowRegionKind
.TryAndFinally: