406 references to ControlFlowRegionKind
GenerateDocumentationAndConfigFiles (27)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
318
case
ControlFlowRegionKind
.Catch:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (18)
175
if (current.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally &&
258
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
260
if (region.Kind ==
ControlFlowRegionKind
.Try && enclosing.Kind ==
ControlFlowRegionKind
.TryAndFinally)
263
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
280
Debug.Assert(@finally.Kind ==
ControlFlowRegionKind
.Finally);
319
var enclosing = fromRegion.Kind ==
ControlFlowRegionKind
.Root ? null : fromRegion.EnclosingRegion;
320
if (fromRegion.Kind ==
ControlFlowRegionKind
.Try)
324
case
ControlFlowRegionKind
.TryAndFinally:
326
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
336
case
ControlFlowRegionKind
.TryAndCatch:
345
else if (fromRegion.Kind ==
ControlFlowRegionKind
.Filter)
348
Debug.Assert(enclosing.Kind ==
ControlFlowRegionKind
.FilterAndHandler);
350
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
374
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
384
case
ControlFlowRegionKind
.Catch:
388
case
ControlFlowRegionKind
.FilterAndHandler:
390
Debug.Assert(@catch.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Filter);
src\roslyn\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\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (6)
385
case
ControlFlowRegionKind
.Catch:
386
case
ControlFlowRegionKind
.Filter:
387
case
ControlFlowRegionKind
.FilterAndHandler:
388
case
ControlFlowRegionKind
.Finally:
402
case
ControlFlowRegionKind
.TryAndCatch:
403
case
ControlFlowRegionKind
.TryAndFinally:
ILLink.RoslynAnalyzer (26)
DataFlow\ControlFlowGraphProxy.cs (26)
40
ControlFlowRegionKind
.Try => RegionKind.Try,
41
ControlFlowRegionKind
.Catch => RegionKind.Catch,
42
ControlFlowRegionKind
.Filter => RegionKind.Filter,
43
ControlFlowRegionKind
.Finally => RegionKind.Finally,
131
while (region != null && region.Kind !=
ControlFlowRegionKind
.Root)
133
if (region.Kind is
ControlFlowRegionKind
.Try or
ControlFlowRegionKind
.Catch or
ControlFlowRegionKind
.Filter)
149
while (region != null && region.Kind !=
ControlFlowRegionKind
.Root)
151
if (region.Kind ==
ControlFlowRegionKind
.Finally)
163
if (catchOrFilterOrFinallyRegion.Region.Kind is not (
ControlFlowRegionKind
.Catch or
ControlFlowRegionKind
.Filter or
ControlFlowRegionKind
.Finally))
171
if (enclosingRegion.Kind ==
ControlFlowRegionKind
.FilterAndHandler)
174
Debug.Assert(enclosingRegion.Kind ==
ControlFlowRegionKind
.TryAndCatch);
183
if (nested.Kind ==
ControlFlowRegionKind
.Try)
192
if (region.Kind is not (
ControlFlowRegionKind
.Catch or
ControlFlowRegionKind
.Filter))
196
if (region.Kind is
ControlFlowRegionKind
.Catch && region.EnclosingRegion!.Kind is
ControlFlowRegionKind
.FilterAndHandler)
207
case
ControlFlowRegionKind
.Catch:
210
case
ControlFlowRegionKind
.FilterAndHandler:
214
if (filter.Kind ==
ControlFlowRegionKind
.Filter)
233
if (catchOrFilter.Kind ==
ControlFlowRegionKind
.Filter)
241
if (catchRegion.Region.Kind is not
ControlFlowRegionKind
.Catch)
244
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));
357
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
360
if (region.Kind ==
ControlFlowRegionKind
.Try && enclosing.Kind ==
ControlFlowRegionKind
.TryAndFinally)
363
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
380
Debug.Assert(@finally.Kind ==
ControlFlowRegionKind
.Finally);
415
ControlFlowRegion? enclosing = fromRegion.Kind ==
ControlFlowRegionKind
.Root ? null : fromRegion.EnclosingRegion;
416
if (fromRegion.Kind ==
ControlFlowRegionKind
.Try)
420
case
ControlFlowRegionKind
.TryAndFinally:
422
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
430
case
ControlFlowRegionKind
.TryAndCatch:
439
else if (fromRegion.Kind ==
ControlFlowRegionKind
.Filter)
442
Debug.Assert(enclosing!.Kind ==
ControlFlowRegionKind
.FilterAndHandler);
445
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
469
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
479
case
ControlFlowRegionKind
.Catch:
483
case
ControlFlowRegionKind
.FilterAndHandler:
485
Debug.Assert(@catch.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Filter);
538
if (r.Kind ==
ControlFlowRegionKind
.LocalLifetime &&
549
case
ControlFlowRegionKind
.Root:
550
case
ControlFlowRegionKind
.Filter:
551
case
ControlFlowRegionKind
.Try:
552
case
ControlFlowRegionKind
.Catch:
553
case
ControlFlowRegionKind
.Finally:
554
case
ControlFlowRegionKind
.LocalLifetime:
555
case
ControlFlowRegionKind
.StaticLocalInitializer:
556
case
ControlFlowRegionKind
.ErroneousBody:
561
if (subRegion.Kind ==
ControlFlowRegionKind
.LocalLifetime && subRegion.FirstBlock == region.FirstBlock && subRegion.LastBlock == region.LastBlock)
563
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
581
if (subRegion.Kind ==
ControlFlowRegionKind
.LocalLifetime && !subRegion.HasLocalFunctions &&
607
case
ControlFlowRegionKind
.TryAndCatch:
608
case
ControlFlowRegionKind
.TryAndFinally:
609
case
ControlFlowRegionKind
.FilterAndHandler:
624
Debug.Assert(subRegion.Kind !=
ControlFlowRegionKind
.Root);
738
Debug.Assert(currentRegion.Kind ==
ControlFlowRegionKind
.Filter ||
739
currentRegion.Kind ==
ControlFlowRegionKind
.Finally);
760
if (currentRegion.Kind ==
ControlFlowRegionKind
.Finally &&
767
Debug.Assert(tryAndFinally.Kind ==
ControlFlowRegionKind
.TryAndFinally);
771
Debug.Assert(@try.Kind ==
ControlFlowRegionKind
.Try);
783
@try.Kind =
ControlFlowRegionKind
.LocalLifetime;
1033
case
ControlFlowRegionKind
.Filter:
1034
case
ControlFlowRegionKind
.Catch:
1035
case
ControlFlowRegionKind
.Finally:
1395
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.Locals));
1493
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.Locals));
1533
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.ErroneousBody));
1654
var resultCaptureRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, isStackSpillRegion: true);
1850
frameOpt.RegionBuilderOpt = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, isStackSpillRegion: true);
3586
var locals = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.Locals);
3676
tryAndFinallyRegion = new RegionBuilder(
ControlFlowRegionKind
.TryAndFinally);
3678
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.Try));
3684
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.TryAndCatch));
3685
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.Try));
3688
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.Try);
3707
filterAndHandlerRegion = new RegionBuilder(
ControlFlowRegionKind
.FilterAndHandler, catchClause.ExceptionType, catchClause.Locals);
3710
var filterRegion = new RegionBuilder(
ControlFlowRegionKind
.Filter, catchClause.ExceptionType);
3726
var handlerRegion = new RegionBuilder(
ControlFlowRegionKind
.Catch, catchClause.ExceptionType,
3765
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.TryAndCatch);
3771
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.Try);
3774
var finallyRegion = new RegionBuilder(
ControlFlowRegionKind
.Finally);
3968
var usingRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: locals);
4088
resourceRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime);
4098
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.TryAndFinally));
4099
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.Try));
4103
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.Try);
4110
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.TryAndFinally);
4125
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.TryAndFinally);
4131
var finallyRegion = new RegionBuilder(
ControlFlowRegionKind
.Finally);
4319
var lockRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime,
4370
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.TryAndFinally));
4371
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.Try));
4405
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.Try);
4413
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.Finally));
4453
Debug.Assert(CurrentRegionRequired.Kind ==
ControlFlowRegionKind
.TryAndFinally);
4468
var enumeratorCaptureRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime);
4493
regionForCollection = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: ImmutableArray.Create(local));
4510
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.TryAndFinally));
4511
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.Try));
4524
var localsRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.Locals);
4542
Debug.Assert(_currentRegion.Kind ==
ControlFlowRegionKind
.Try);
4559
Debug.Assert(_currentRegion.Kind ==
ControlFlowRegionKind
.TryAndFinally);
4759
var loopRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: locals);
5481
var switchRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: locals);
5746
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.Locals));
5762
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.ConditionLocals));
5790
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: operation.Locals));
5848
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.StaticLocalInitializer));
6828
var constructorRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime);
6888
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime));
7312
EnterRegion(new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: initializer.Locals));
7792
var armScopeRegion = new RegionBuilder(
ControlFlowRegionKind
.LocalLifetime, locals: arm.Locals);
7993
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.Analyzers (27)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
318
case
ControlFlowRegionKind
.Catch:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (18)
175
if (current.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally &&
258
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
260
if (region.Kind ==
ControlFlowRegionKind
.Try && enclosing.Kind ==
ControlFlowRegionKind
.TryAndFinally)
263
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
280
Debug.Assert(@finally.Kind ==
ControlFlowRegionKind
.Finally);
319
var enclosing = fromRegion.Kind ==
ControlFlowRegionKind
.Root ? null : fromRegion.EnclosingRegion;
320
if (fromRegion.Kind ==
ControlFlowRegionKind
.Try)
324
case
ControlFlowRegionKind
.TryAndFinally:
326
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
336
case
ControlFlowRegionKind
.TryAndCatch:
345
else if (fromRegion.Kind ==
ControlFlowRegionKind
.Filter)
348
Debug.Assert(enclosing.Kind ==
ControlFlowRegionKind
.FilterAndHandler);
350
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
374
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
384
case
ControlFlowRegionKind
.Catch:
388
case
ControlFlowRegionKind
.FilterAndHandler:
390
Debug.Assert(@catch.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Filter);
src\roslyn\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\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (6)
385
case
ControlFlowRegionKind
.Catch:
386
case
ControlFlowRegionKind
.Filter:
387
case
ControlFlowRegionKind
.FilterAndHandler:
388
case
ControlFlowRegionKind
.Finally:
402
case
ControlFlowRegionKind
.TryAndCatch:
403
case
ControlFlowRegionKind
.TryAndFinally:
Microsoft.CodeAnalysis.AnalyzerUtilities (66)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\Extensions\BasicBlockExtensions.cs (9)
52
public static bool IsContainedInRegionOfKind(this BasicBlock basicBlock,
ControlFlowRegionKind
regionKind)
58
public static ControlFlowRegion? GetContainingRegionOfKind(this BasicBlock basicBlock,
ControlFlowRegionKind
regionKind)
78
=> basicBlock.IsFirstBlockOfRegionKind(
ControlFlowRegionKind
.Finally, out finallyRegion);
84
=> basicBlock.IsLastBlockOfRegionKind(
ControlFlowRegionKind
.Finally, out finallyRegion);
89
public static bool IsFirstBlockOfRegionKind(this BasicBlock basicBlock,
ControlFlowRegionKind
regionKind, [NotNullWhen(returnValue: true)] out ControlFlowRegion? region)
95
public static bool IsLastBlockOfRegionKind(this BasicBlock basicBlock,
ControlFlowRegionKind
regionKind, [NotNullWhen(returnValue: true)] out ControlFlowRegion? region)
98
private static bool IsFirstOrLastBlockOfRegionKind(this BasicBlock basicBlock,
ControlFlowRegionKind
regionKind, bool first, [NotNullWhen(returnValue: true)] out ControlFlowRegion? foundRegion)
128
if (!basicBlock.IsFirstBlockOfRegionKind(
ControlFlowRegionKind
.Finally, out var finallyRegion))
144
internal static ControlFlowRegion? GetInnermostRegionStartedByBlock(this BasicBlock basicBlock,
ControlFlowRegionKind
regionKind)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\Extensions\IOperationExtensions_FlowAnalysis.cs (1)
29
case
ControlFlowRegionKind
.Catch:
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowAnalysis.cs (23)
228
var finallyRegion = block.GetInnermostRegionStartedByBlock(
ControlFlowRegionKind
.Finally);
229
if (finallyRegion?.EnclosingRegion!.Kind ==
ControlFlowRegionKind
.TryAndFinally)
233
Debug.Assert(tryRegion.Kind ==
ControlFlowRegionKind
.Try);
238
cfg.Blocks[p].GetInnermostRegionStartedByBlock(
ControlFlowRegionKind
.Catch) != null);
278
Debug.Assert(enclosingTryAndCatchRegion.Kind ==
ControlFlowRegionKind
.TryAndCatch);
279
Debug.Assert(block.EnclosingRegion.Kind is
ControlFlowRegionKind
.Catch or
ControlFlowRegionKind
.Filter);
298
if (block.EnclosingRegion?.Kind ==
ControlFlowRegionKind
.Try &&
299
block.EnclosingRegion.EnclosingRegion?.Kind ==
ControlFlowRegionKind
.TryAndCatch &&
349
if (successorBlock.IsFirstBlockOfRegionKind(
ControlFlowRegionKind
.TryAndFinally, out var tryAndFinally))
352
Debug.Assert(finallyRegion.Kind ==
ControlFlowRegionKind
.Finally);
492
Debug.Assert(tryAndCatchRegion.Kind ==
ControlFlowRegionKind
.TryAndCatch);
497
var catchRegion = tryAndCatchRegion.NestedRegions.FirstOrDefault(region => region.Kind is
ControlFlowRegionKind
.Catch or
ControlFlowRegionKind
.FilterAndHandler);
598
case
ControlFlowRegionKind
.Catch:
599
if (block.EnclosingRegion!.EnclosingRegion!.Kind ==
ControlFlowRegionKind
.TryAndCatch)
606
case
ControlFlowRegionKind
.Filter:
607
if (block.EnclosingRegion!.EnclosingRegion!.Kind ==
ControlFlowRegionKind
.FilterAndHandler &&
608
block.EnclosingRegion.EnclosingRegion.EnclosingRegion?.Kind ==
ControlFlowRegionKind
.TryAndCatch)
627
Debug.Assert(basicBlock.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally);
689
if (region.Kind ==
ControlFlowRegionKind
.TryAndCatch)
729
Debug.Assert(finallyRegion.Kind ==
ControlFlowRegionKind
.Finally);
810
hasAnyTryBlock |= block.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Try;
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (2)
919
CurrentBasicBlock.IsContainedInRegionOfKind(
ControlFlowRegionKind
.Finally))
3795
var tryFinallyRegion = CurrentBasicBlock.GetContainingRegionOfKind(
ControlFlowRegionKind
.TryAndFinally)!;
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\ThrownExceptionInfo.cs (4)
25
ContainingFinallyRegion = block.GetContainingRegionOfKind(
ControlFlowRegionKind
.Finally);
48
if (enclosingRegion.Kind ==
ControlFlowRegionKind
.TryAndCatch)
50
Debug.Assert(enclosingRegion.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Try);
53
if (nestedRegion.Kind ==
ControlFlowRegionKind
.Catch &&
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
318
case
ControlFlowRegionKind
.Catch:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (18)
175
if (current.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally &&
258
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
260
if (region.Kind ==
ControlFlowRegionKind
.Try && enclosing.Kind ==
ControlFlowRegionKind
.TryAndFinally)
263
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
280
Debug.Assert(@finally.Kind ==
ControlFlowRegionKind
.Finally);
319
var enclosing = fromRegion.Kind ==
ControlFlowRegionKind
.Root ? null : fromRegion.EnclosingRegion;
320
if (fromRegion.Kind ==
ControlFlowRegionKind
.Try)
324
case
ControlFlowRegionKind
.TryAndFinally:
326
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
336
case
ControlFlowRegionKind
.TryAndCatch:
345
else if (fromRegion.Kind ==
ControlFlowRegionKind
.Filter)
348
Debug.Assert(enclosing.Kind ==
ControlFlowRegionKind
.FilterAndHandler);
350
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
374
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
384
case
ControlFlowRegionKind
.Catch:
388
case
ControlFlowRegionKind
.FilterAndHandler:
390
Debug.Assert(@catch.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Filter);
src\roslyn\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\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (6)
385
case
ControlFlowRegionKind
.Catch:
386
case
ControlFlowRegionKind
.Filter:
387
case
ControlFlowRegionKind
.FilterAndHandler:
388
case
ControlFlowRegionKind
.Finally:
402
case
ControlFlowRegionKind
.TryAndCatch:
403
case
ControlFlowRegionKind
.TryAndFinally:
Microsoft.CodeAnalysis.CodeStyle (27)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
318
case
ControlFlowRegionKind
.Catch:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (18)
175
if (current.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally &&
258
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
260
if (region.Kind ==
ControlFlowRegionKind
.Try && enclosing.Kind ==
ControlFlowRegionKind
.TryAndFinally)
263
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
280
Debug.Assert(@finally.Kind ==
ControlFlowRegionKind
.Finally);
319
var enclosing = fromRegion.Kind ==
ControlFlowRegionKind
.Root ? null : fromRegion.EnclosingRegion;
320
if (fromRegion.Kind ==
ControlFlowRegionKind
.Try)
324
case
ControlFlowRegionKind
.TryAndFinally:
326
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
336
case
ControlFlowRegionKind
.TryAndCatch:
345
else if (fromRegion.Kind ==
ControlFlowRegionKind
.Filter)
348
Debug.Assert(enclosing.Kind ==
ControlFlowRegionKind
.FilterAndHandler);
350
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
374
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
384
case
ControlFlowRegionKind
.Catch:
388
case
ControlFlowRegionKind
.FilterAndHandler:
390
Debug.Assert(@catch.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Filter);
src\roslyn\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\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (6)
385
case
ControlFlowRegionKind
.Catch:
386
case
ControlFlowRegionKind
.Filter:
387
case
ControlFlowRegionKind
.FilterAndHandler:
388
case
ControlFlowRegionKind
.Finally:
402
case
ControlFlowRegionKind
.TryAndCatch:
403
case
ControlFlowRegionKind
.TryAndFinally:
Microsoft.CodeAnalysis.ResxSourceGenerator (27)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
318
case
ControlFlowRegionKind
.Catch:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (18)
175
if (current.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally &&
258
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
260
if (region.Kind ==
ControlFlowRegionKind
.Try && enclosing.Kind ==
ControlFlowRegionKind
.TryAndFinally)
263
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
280
Debug.Assert(@finally.Kind ==
ControlFlowRegionKind
.Finally);
319
var enclosing = fromRegion.Kind ==
ControlFlowRegionKind
.Root ? null : fromRegion.EnclosingRegion;
320
if (fromRegion.Kind ==
ControlFlowRegionKind
.Try)
324
case
ControlFlowRegionKind
.TryAndFinally:
326
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
336
case
ControlFlowRegionKind
.TryAndCatch:
345
else if (fromRegion.Kind ==
ControlFlowRegionKind
.Filter)
348
Debug.Assert(enclosing.Kind ==
ControlFlowRegionKind
.FilterAndHandler);
350
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
374
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
384
case
ControlFlowRegionKind
.Catch:
388
case
ControlFlowRegionKind
.FilterAndHandler:
390
Debug.Assert(@catch.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Filter);
src\roslyn\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\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (6)
385
case
ControlFlowRegionKind
.Catch:
386
case
ControlFlowRegionKind
.Filter:
387
case
ControlFlowRegionKind
.FilterAndHandler:
388
case
ControlFlowRegionKind
.Finally:
402
case
ControlFlowRegionKind
.TryAndCatch:
403
case
ControlFlowRegionKind
.TryAndFinally:
Microsoft.CodeAnalysis.Workspaces (27)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
318
case
ControlFlowRegionKind
.Catch:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (18)
175
if (current.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally &&
258
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
260
if (region.Kind ==
ControlFlowRegionKind
.Try && enclosing.Kind ==
ControlFlowRegionKind
.TryAndFinally)
263
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
280
Debug.Assert(@finally.Kind ==
ControlFlowRegionKind
.Finally);
319
var enclosing = fromRegion.Kind ==
ControlFlowRegionKind
.Root ? null : fromRegion.EnclosingRegion;
320
if (fromRegion.Kind ==
ControlFlowRegionKind
.Try)
324
case
ControlFlowRegionKind
.TryAndFinally:
326
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
336
case
ControlFlowRegionKind
.TryAndCatch:
345
else if (fromRegion.Kind ==
ControlFlowRegionKind
.Filter)
348
Debug.Assert(enclosing.Kind ==
ControlFlowRegionKind
.FilterAndHandler);
350
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
374
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
384
case
ControlFlowRegionKind
.Catch:
388
case
ControlFlowRegionKind
.FilterAndHandler:
390
Debug.Assert(@catch.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Filter);
src\roslyn\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\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (6)
385
case
ControlFlowRegionKind
.Catch:
386
case
ControlFlowRegionKind
.Filter:
387
case
ControlFlowRegionKind
.FilterAndHandler:
388
case
ControlFlowRegionKind
.Finally:
402
case
ControlFlowRegionKind
.TryAndCatch:
403
case
ControlFlowRegionKind
.TryAndFinally:
Roslyn.Diagnostics.Analyzers (27)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
318
case
ControlFlowRegionKind
.Catch:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\CustomDataFlowAnalysis.cs (18)
175
if (current.EnclosingRegion.Kind ==
ControlFlowRegionKind
.Finally &&
258
Debug.Assert(region.Kind !=
ControlFlowRegionKind
.Root);
260
if (region.Kind ==
ControlFlowRegionKind
.Try && enclosing.Kind ==
ControlFlowRegionKind
.TryAndFinally)
263
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
280
Debug.Assert(@finally.Kind ==
ControlFlowRegionKind
.Finally);
319
var enclosing = fromRegion.Kind ==
ControlFlowRegionKind
.Root ? null : fromRegion.EnclosingRegion;
320
if (fromRegion.Kind ==
ControlFlowRegionKind
.Try)
324
case
ControlFlowRegionKind
.TryAndFinally:
326
Debug.Assert(enclosing.NestedRegions[1].Kind ==
ControlFlowRegionKind
.Finally);
336
case
ControlFlowRegionKind
.TryAndCatch:
345
else if (fromRegion.Kind ==
ControlFlowRegionKind
.Filter)
348
Debug.Assert(enclosing.Kind ==
ControlFlowRegionKind
.FilterAndHandler);
350
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
374
Debug.Assert(tryAndCatch.Kind ==
ControlFlowRegionKind
.TryAndCatch);
384
case
ControlFlowRegionKind
.Catch:
388
case
ControlFlowRegionKind
.FilterAndHandler:
390
Debug.Assert(@catch.NestedRegions[0].Kind ==
ControlFlowRegionKind
.Filter);
src\roslyn\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\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (6)
385
case
ControlFlowRegionKind
.Catch:
386
case
ControlFlowRegionKind
.Filter:
387
case
ControlFlowRegionKind
.FilterAndHandler:
388
case
ControlFlowRegionKind
.Finally:
402
case
ControlFlowRegionKind
.TryAndCatch:
403
case
ControlFlowRegionKind
.TryAndFinally: