1 implementation of IBlockOperation
Microsoft.CodeAnalysis (1)
Generated\Operations.Generated.cs (1)
4039internal sealed partial class BlockOperation : Operation, IBlockOperation
324 references to IBlockOperation
GenerateDocumentationAndConfigFiles (19)
src\ce8c1e82c1124a2b\AbstractInitializerParameterService.cs (7)
27protected abstract SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement); 29protected abstract bool TryUpdateTupleAssignment(IBlockOperation? blockStatement, IParameterSymbol parameter, ISymbol fieldOrProperty, SyntaxEditor editor); 41out IBlockOperation? blockStatement) 70blockStatement = (IBlockOperation)operation; 121if (TryGetBlockForSingleParameterInitialization(functionDeclaration, semanticModel, syntaxFacts, cancellationToken, out var blockStatementOpt)) 136IBlockOperation? blockStatement, 165IParameterSymbol parameter, IBlockOperation? blockStatement)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (5)
420private static readonly BoundedCache<Compilation, ConcurrentDictionary<IMethodSymbol, IBlockOperation?>> s_methodToTopmostOperationBlockCache 424/// Returns the topmost <see cref="IBlockOperation"/> for given <paramref name="method"/>. 426public static IBlockOperation? GetTopmostOperationBlock(this IMethodSymbol method, Compilation compilation, CancellationToken cancellationToken = default) 432IBlockOperation? ComputeTopmostOperationBlock(IMethodSymbol unused) 454if (operation is IBlockOperation blockOperation)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\InitializeParameterHelpersCore.cs (2)
76public static IOperation? TryFindFieldOrPropertyAssignmentStatement(IParameterSymbol parameter, IBlockOperation? blockStatement) 80IParameterSymbol parameter, IBlockOperation? blockStatement, out ISymbol? fieldOrProperty)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (1)
36while (rootOperation is not IBlockOperation &&
Microsoft.AspNetCore.App.Analyzers (8)
Authorization\AddAuthorizationBuilderAnalyzer.cs (4)
73&& TryGetConfigureBlockOperation(configureAnonymousFunctionOperation, out var configureBlockOperation)) 129private static bool TryGetConfigureBlockOperation(IAnonymousFunctionOperation configureAnonymousFunctionOperation, [NotNullWhen(true)] out IBlockOperation? configureBlockOperation) 134&& anonymousFunctionChildOperations.First() is IBlockOperation blockOperation) 163private static bool IsConfigureActionCompatibleWithAuthorizationBuilder(IBlockOperation configureAction, AuthorizationOptionsTypes authorizationOptionsTypes)
RouteHandlers\DetectAmbiguousRoutes.cs (1)
70if (current.Parent is IBlockOperation or ISwitchCaseOperation)
RouteHandlers\DetectMisplacedLambdaAttribute.cs (2)
28if (lambda.ChildOperations.Count != 1 || lambda.ChildOperations.FirstOrDefault() is not IBlockOperation blockOperation) 71static IMethodSymbol? GetReturnedInvocation(IBlockOperation blockOperation)
RouteHandlers\DisallowReturningActionResultFromMapMethods.cs (1)
31IBlockOperation? methodBody,
Microsoft.CodeAnalysis (37)
Generated\OperationKind.Generated.cs (1)
22/// <summary>Indicates an <see cref="IBlockOperation"/>.</summary>
Generated\Operations.Generated.cs (32)
478IBlockOperation Body { get; } 486IBlockOperation? Finally { get; } 584IBlockOperation? Body { get; } 591IBlockOperation? IgnoredBody { get; } 1254IBlockOperation Body { get; } 2624IBlockOperation Handler { get; } 3004IBlockOperation? BlockBody { get; } 3008IBlockOperation? ExpressionBody { get; } 3459/// Represents using variable declaration, with scope spanning across the parent <see cref="IBlockOperation" />. 4760internal TryOperation(IBlockOperation body, ImmutableArray<ICatchClauseOperation> catches, IBlockOperation? @finally, ILabelSymbol? exitLabel, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4768public IBlockOperation Body { get; } 4770public IBlockOperation? Finally { get; } 4958internal LocalFunctionOperation(IMethodSymbol symbol, IBlockOperation? body, IBlockOperation? ignoredBody, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4966public IBlockOperation? Body { get; } 4967public IBlockOperation? IgnoredBody { get; } 5904internal AnonymousFunctionOperation(IMethodSymbol symbol, IBlockOperation body, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 5911public IBlockOperation Body { get; } 8015internal CatchClauseOperation(IOperation? exceptionDeclarationOrExpression, ITypeSymbol exceptionType, ImmutableArray<ILocalSymbol> locals, IOperation? filter, IBlockOperation handler, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 8028public IBlockOperation Handler { get; } 8697protected BaseMethodBodyBaseOperation(IBlockOperation? blockBody, IBlockOperation? expressionBody, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 8703public IBlockOperation? BlockBody { get; } 8704public IBlockOperation? ExpressionBody { get; } 8708internal MethodBodyOperation(IBlockOperation? blockBody, IBlockOperation? expressionBody, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 8764internal ConstructorBodyOperation(ImmutableArray<ILocalSymbol> locals, IOperation? initializer, IBlockOperation? blockBody, IBlockOperation? expressionBody, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 10868public override IOperation VisitBlock(IBlockOperation operation, object? argument) 11493public virtual void VisitBlock(IBlockOperation operation) => DefaultVisit(operation); 11634public virtual TResult? VisitBlock(IBlockOperation operation, TArgument argument) => DefaultVisit(operation, argument);
Operations\ControlFlowGraph.cs (1)
105public static ControlFlowGraph Create(Operations.IBlockOperation body, CancellationToken cancellationToken = default)
Operations\ControlFlowGraphBuilder.cs (3)
1392public override IOperation? VisitBlock(IBlockOperation operation, int? captureIdForResult) 1520private void VisitMethodBodies(IBlockOperation? blockBody, IBlockOperation? expressionBody)
Microsoft.CodeAnalysis.Analyzers (19)
src\ce8c1e82c1124a2b\AbstractInitializerParameterService.cs (7)
27protected abstract SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement); 29protected abstract bool TryUpdateTupleAssignment(IBlockOperation? blockStatement, IParameterSymbol parameter, ISymbol fieldOrProperty, SyntaxEditor editor); 41out IBlockOperation? blockStatement) 70blockStatement = (IBlockOperation)operation; 121if (TryGetBlockForSingleParameterInitialization(functionDeclaration, semanticModel, syntaxFacts, cancellationToken, out var blockStatementOpt)) 136IBlockOperation? blockStatement, 165IParameterSymbol parameter, IBlockOperation? blockStatement)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (5)
420private static readonly BoundedCache<Compilation, ConcurrentDictionary<IMethodSymbol, IBlockOperation?>> s_methodToTopmostOperationBlockCache 424/// Returns the topmost <see cref="IBlockOperation"/> for given <paramref name="method"/>. 426public static IBlockOperation? GetTopmostOperationBlock(this IMethodSymbol method, Compilation compilation, CancellationToken cancellationToken = default) 432IBlockOperation? ComputeTopmostOperationBlock(IMethodSymbol unused) 454if (operation is IBlockOperation blockOperation)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\InitializeParameterHelpersCore.cs (2)
76public static IOperation? TryFindFieldOrPropertyAssignmentStatement(IParameterSymbol parameter, IBlockOperation? blockStatement) 80IParameterSymbol parameter, IBlockOperation? blockStatement, out ISymbol? fieldOrProperty)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (1)
36while (rootOperation is not IBlockOperation &&
Microsoft.CodeAnalysis.AnalyzerUtilities (13)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (5)
420private static readonly BoundedCache<Compilation, ConcurrentDictionary<IMethodSymbol, IBlockOperation?>> s_methodToTopmostOperationBlockCache 424/// Returns the topmost <see cref="IBlockOperation"/> for given <paramref name="method"/>. 426public static IBlockOperation? GetTopmostOperationBlock(this IMethodSymbol method, Compilation compilation, CancellationToken cancellationToken = default) 432IBlockOperation? ComputeTopmostOperationBlock(IMethodSymbol unused) 454if (operation is IBlockOperation blockOperation)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\ParameterValidationAnalysis\ParameterValidationAnalysis.cs (1)
31IBlockOperation topmostBlock,
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowAnalysisResult.cs (1)
118Debug.Assert(operation.GetAncestor<IBlockOperation>(OperationKind.Block, predicate: b => b.Parent == null) == null);
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (3)
3558var operation = method.GetTopmostOperationBlock(WellKnownTypeProvider.Compilation); 4039public sealed override TAbstractAnalysisValue VisitBlock(IBlockOperation operation, object? argument) 4041throw new NotSupportedException($"'{nameof(IBlockOperation)}' must have been lowered in the CFG");
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
Microsoft.CodeAnalysis.CodeStyle (9)
src\roslyn\src\Analyzers\Core\Analyzers\Helpers\HashCodeAnalyzer\HashCodeAnalyzer.cs (2)
52if (operation is not IBlockOperation blockOperation) 69while (blockOperation.Operations is [IBlockOperation childBlock])
src\roslyn\src\Analyzers\Core\Analyzers\UseConditionalExpression\ForReturn\UseConditionalExpressionForReturnHelpers.cs (1)
57if (ifOperation.Parent is not IBlockOperation parentBlock)
src\roslyn\src\Analyzers\Core\Analyzers\UseConditionalExpression\UseConditionalExpressionHelpers.cs (1)
73=> statement is IBlockOperation { Operations: [var operationInBlock] }
src\roslyn\src\Analyzers\Core\Analyzers\UseThrowExpression\AbstractUseThrowExpressionDiagnosticAnalyzer.cs (4)
103if (ifOperation.Parent is not IBlockOperation containingBlock) 138private static bool ValueIsAccessed(SemanticModel semanticModel, IConditionalOperation ifOperation, IBlockOperation containingBlock, ISymbol localOrParameter, IExpressionStatementOperation expressionStatement, IAssignmentOperation assignmentExpression) 167IBlockOperation containingBlock, IConditionalOperation ifOperation, ISymbol localOrParameter, 275if (containingOperation is IBlockOperation block)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
Microsoft.CodeAnalysis.CodeStyle.Fixes (12)
src\939a5660f39ce290\AbstractUseConditionalExpressionForAssignmentCodeFixProvider.cs (1)
194if (ifOperation.Parent is not IBlockOperation parentBlock)
src\ce8c1e82c1124a2b\AbstractInitializerParameterService.cs (7)
27protected abstract SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement); 29protected abstract bool TryUpdateTupleAssignment(IBlockOperation? blockStatement, IParameterSymbol parameter, ISymbol fieldOrProperty, SyntaxEditor editor); 41out IBlockOperation? blockStatement) 70blockStatement = (IBlockOperation)operation; 121if (TryGetBlockForSingleParameterInitialization(functionDeclaration, semanticModel, syntaxFacts, cancellationToken, out var blockStatementOpt)) 136IBlockOperation? blockStatement, 165IParameterSymbol parameter, IBlockOperation? blockStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\InitializeParameterHelpersCore.cs (2)
76public static IOperation? TryFindFieldOrPropertyAssignmentStatement(IParameterSymbol parameter, IBlockOperation? blockStatement) 80IParameterSymbol parameter, IBlockOperation? blockStatement, out ISymbol? fieldOrProperty)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (1)
36while (rootOperation is not IBlockOperation &&
Microsoft.CodeAnalysis.CSharp (17)
Operations\CSharpOperationFactory.cs (17)
361(IBlockOperation?)Create(boundNode.BlockBody), 362(IBlockOperation?)Create(boundNode.ExpressionBody), 373(IBlockOperation?)Create(boundNode.BlockBody), 374(IBlockOperation?)Create(boundNode.ExpressionBody), 1012IBlockOperation body = (IBlockOperation)Create(boundLambda.Body); 1020IBlockOperation? body = (IBlockOperation?)Create(boundLocalFunctionStatement.Body); 1021IBlockOperation? ignoredBody = boundLocalFunctionStatement is { BlockBody: { }, ExpressionBody: { } exprBody } 1022? (IBlockOperation?)Create(exprBody) 1817private IBlockOperation CreateBoundBlockOperation(BoundBlock boundBlock) 2063var body = (IBlockOperation)Create(boundTryStatement.TryBlock); 2065var @finally = (IBlockOperation?)Create(boundTryStatement.FinallyBlockOpt); 2077IBlockOperation handler = (IBlockOperation)Create(boundCatchBlock.Body);
Microsoft.CodeAnalysis.CSharp.CodeStyle (4)
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructMemberReadOnly\CSharpMakeStructMemberReadOnlyAnalyzer.cs (1)
149if (blockOperation is IBlockOperation { Operations: [IThrowOperation or IExpressionStatementOperation { Operation: IThrowOperation }] })
src\roslyn\src\Analyzers\CSharp\Analyzers\RemoveUnusedParametersAndValues\CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (1)
78=> expressionStatementOperation.Parent is IBlockOperation blockOperation &&
src\roslyn\src\Analyzers\CSharp\Analyzers\UseConditionalExpression\CSharpUseConditionalExpressionForReturnDiagnosticAnalyzer.cs (1)
36if (statement is not IReturnOperation { Parent: IBlockOperation block })
src\roslyn\src\Analyzers\CSharp\Analyzers\UseSimpleUsingStatement\UseSimpleUsingStatementDiagnosticAnalyzer.cs (1)
159if (innerUsingOperation.Body is IBlockOperation innerUsingBlock)
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (12)
src\4f0789c9734b88bf\CSharpInitializeParameterService.cs (3)
34protected override SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement) 41IBlockOperation? blockStatement, 100private static IEnumerable<(ITupleOperation targetTuple, ITupleOperation valueTuple)> TryGetAssignmentExpressions(IBlockOperation blockOperation)
src\roslyn\src\Analyzers\CSharp\CodeFixes\ConvertToRecord\ConvertToRecordHelpers.cs (8)
38GetBlockOfMethodBody(methodBodyOperation) is IBlockOperation 114return GetBlockOfMethodBody(operation) is IBlockOperation 133if (GetBlockOfMethodBody(operation) is not IBlockOperation 423var body = GetBlockOfMethodBody(constructorOperation); 498var body = GetBlockOfMethodBody(operation); 1064var trueOps = ((whenTrue as IBlockOperation)?.Operations ?? [whenTrue]) 1066var falseOps = ((whenFalse as IBlockOperation)?.Operations ?? 1121private static IBlockOperation? GetBlockOfMethodBody(IMethodBodyBaseOperation body)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\InitializeParameter\InitializeParameterHelpers.cs (1)
157public static SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement)
Microsoft.CodeAnalysis.CSharp.Features (14)
ConvertIfToSwitch\CSharpConvertIfToSwitchCodeRefactoringProvider.Rewriting.cs (1)
63IBlockOperation { Operations: [var op] } => AsExpressionSyntax(op),
Copilot\CSharpImplementNotImplementedExceptionDiagnosticAnalyzer.cs (1)
89if (block is IBlockOperation { Operations: [var child] })
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructMemberReadOnly\CSharpMakeStructMemberReadOnlyAnalyzer.cs (1)
149if (blockOperation is IBlockOperation { Operations: [IThrowOperation or IExpressionStatementOperation { Operation: IThrowOperation }] })
src\roslyn\src\Analyzers\CSharp\Analyzers\RemoveUnusedParametersAndValues\CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (1)
78=> expressionStatementOperation.Parent is IBlockOperation blockOperation &&
src\roslyn\src\Analyzers\CSharp\Analyzers\UseConditionalExpression\CSharpUseConditionalExpressionForReturnDiagnosticAnalyzer.cs (1)
36if (statement is not IReturnOperation { Parent: IBlockOperation block })
src\roslyn\src\Analyzers\CSharp\Analyzers\UseSimpleUsingStatement\UseSimpleUsingStatementDiagnosticAnalyzer.cs (1)
159if (innerUsingOperation.Body is IBlockOperation innerUsingBlock)
src\roslyn\src\Analyzers\CSharp\CodeFixes\ConvertToRecord\ConvertToRecordHelpers.cs (8)
38GetBlockOfMethodBody(methodBodyOperation) is IBlockOperation 114return GetBlockOfMethodBody(operation) is IBlockOperation 133if (GetBlockOfMethodBody(operation) is not IBlockOperation 423var body = GetBlockOfMethodBody(constructorOperation); 498var body = GetBlockOfMethodBody(operation); 1064var trueOps = ((whenTrue as IBlockOperation)?.Operations ?? [whenTrue]) 1066var falseOps = ((whenFalse as IBlockOperation)?.Operations ?? 1121private static IBlockOperation? GetBlockOfMethodBody(IMethodBodyBaseOperation body)
Microsoft.CodeAnalysis.CSharp.NetAnalyzers (4)
Microsoft.NetCore.Analyzers\InteropServices\CSharpDisableRuntimeMarshalling.FixAllProvider.cs (2)
37Dictionary<IBlockOperation, IdentifierGenerator> scopeMap = new(); 43IBlockOperation? block = editor.SemanticModel.GetOperation(node, fixAllContext.CancellationToken).GetFirstParentBlock();
Microsoft.NetCore.Analyzers\InteropServices\CSharpDisableRuntimeMarshalling.Fixer.IdentifierGenerator.cs (1)
21public IdentifierGenerator(SemanticModel model, IBlockOperation block)
Microsoft.NetCore.Analyzers\Runtime\CSharpDoNotUseStackallocInLoops.cs (1)
82if (op is IBlockOperation block)
Microsoft.CodeAnalysis.CSharp.Workspaces (4)
src\4f0789c9734b88bf\CSharpInitializeParameterService.cs (3)
34protected override SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement) 41IBlockOperation? blockStatement, 100private static IEnumerable<(ITupleOperation targetTuple, ITupleOperation valueTuple)> TryGetAssignmentExpressions(IBlockOperation blockOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\InitializeParameter\InitializeParameterHelpers.cs (1)
157public static SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement)
Microsoft.CodeAnalysis.Features (49)
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.Analyzer.cs (1)
185return op is IBlockOperation block
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.cs (2)
89if (ifOperation is not IConditionalOperation { Parent: IBlockOperation parentBlock }) 148case IBlockOperation { Operations: { Length: 1 } statements }:
InitializeParameter\AbstractAddParameterCheckCodeRefactoringProvider.cs (14)
72IBlockOperation? blockStatement, 105IBlockOperation? blockStatement, 175IBlockOperation? blockStatement, 339IBlockOperation? blockStatement, CancellationToken cancellationToken) 391private bool ParameterValidForNumericCheck(IParameterSymbol parameter, IBlockOperation? blockStatement) 429private bool ParameterValidForEnumIsDefinedCheck(IParameterSymbol parameter, Compilation compilation, IBlockOperation? blockStatement) 546IBlockOperation? blockStatement, 569IBlockOperation? blockStatement, 585IBlockOperation? blockStatement, 601IBlockOperation? blockStatement, 635IBlockOperation? blockStatement, 794IBlockOperation? blockStatement, 840IBlockOperation? blockStatement, 888IBlockOperation? blockStatement,
InitializeParameter\AbstractInitializeMemberFromParameterCodeRefactoringProviderMemberCreation.cs (17)
50Document document, SyntaxNode functionDeclaration, IMethodSymbol method, IBlockOperation? blockStatementOpt, 63IBlockOperation? blockStatement, 107IBlockOperation? blockStatement, 158IBlockOperation? blockStatement, 191IBlockOperation? blockStatement, 214IBlockOperation? blockStatement, 240IBlockOperation? blockStatement, 261IParameterSymbol parameter, IBlockOperation? blockStatement) 359IBlockOperation? blockStatement, 393IBlockOperation? currentBlockStatement = null; 396currentBlockStatement = (IBlockOperation?)currentSemanticModel.GetOperation(currentRoot.GetCurrentNode(blockStatement.Syntax)!, cancellationToken); 423IBlockOperation? blockStatement, 472IBlockOperation? blockStatement, 539IParameterSymbol parameter, IBlockOperation? blockStatement, 574IParameterSymbol parameter, IBlockOperation? blockStatement, out ISymbol? fieldOrProperty) 615Document document, IParameterSymbol parameter, IBlockOperation? blockStatement, ImmutableArray<NamingRule> rules, ImmutableArray<string> parameterWords, CancellationToken cancellationToken) 668static bool ContainsMemberAssignment(IBlockOperation? blockStatement, ISymbol member)
InitializeParameter\AbstractInitializeParameterCodeRefactoringProvider.cs (5)
41IBlockOperation? blockStatement, 52IBlockOperation? blockStatement, 96if (service.TryGetBlockForSingleParameterInitialization(functionDeclaration, semanticModel, syntaxFacts, cancellationToken, out var blockStatementOpt)) 142CancellationToken cancellationToken, out IBlockOperation? blockStatement) 171blockStatement = (IBlockOperation)operation;
src\939a5660f39ce290\AbstractUseConditionalExpressionForAssignmentCodeFixProvider.cs (1)
194if (ifOperation.Parent is not IBlockOperation parentBlock)
src\roslyn\src\Analyzers\Core\Analyzers\Helpers\HashCodeAnalyzer\HashCodeAnalyzer.cs (2)
52if (operation is not IBlockOperation blockOperation) 69while (blockOperation.Operations is [IBlockOperation childBlock])
src\roslyn\src\Analyzers\Core\Analyzers\UseConditionalExpression\ForReturn\UseConditionalExpressionForReturnHelpers.cs (1)
57if (ifOperation.Parent is not IBlockOperation parentBlock)
src\roslyn\src\Analyzers\Core\Analyzers\UseConditionalExpression\UseConditionalExpressionHelpers.cs (1)
73=> statement is IBlockOperation { Operations: [var operationInBlock] }
src\roslyn\src\Analyzers\Core\Analyzers\UseThrowExpression\AbstractUseThrowExpressionDiagnosticAnalyzer.cs (4)
103if (ifOperation.Parent is not IBlockOperation containingBlock) 138private static bool ValueIsAccessed(SemanticModel semanticModel, IConditionalOperation ifOperation, IBlockOperation containingBlock, ISymbol localOrParameter, IExpressionStatementOperation expressionStatement, IAssignmentOperation assignmentExpression) 167IBlockOperation containingBlock, IConditionalOperation ifOperation, ISymbol localOrParameter, 275if (containingOperation is IBlockOperation block)
ValueTracking\ValueTracker.OperationCollector.cs (1)
40IBlockOperation blockOperation => VisitReturnDescendentsAsync(blockOperation, allowImplicit: false, cancellationToken),
Microsoft.CodeAnalysis.NetAnalyzers (50)
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\ImplementIDisposableCorrectly.cs (3)
553var blockStatement = (IBlockOperation)operation; 679OperationKind.Block => ValidateOperations(((IBlockOperation)operation).Operations),
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\InterfaceMethodsShouldBeCallableByChildTypes.cs (1)
65if (operationBlocks[0] is not IBlockOperation block)
Microsoft.CodeQuality.Analyzers\Maintainability\DoNotIgnoreMethodResults.cs (1)
271if (operationContext.Operation.Parent is not IBlockOperation enclosingBlock)
Microsoft.CodeQuality.Analyzers\QualityGuidelines\RemoveEmptyFinalizers.cs (1)
50context.OperationBlocks[0] is not IBlockOperation blockOperation ||
Microsoft.CodeQuality.Analyzers\QualityGuidelines\ValidateArgumentsOfPublicMethods.cs (1)
89if (operationBlock is IBlockOperation topmostBlock)
Microsoft.NetCore.Analyzers\Performance\AvoidPotentiallyExpensiveCallWhenLogging.cs (3)
378var currentBlockAncestor = logInvocation.GetAncestor<IBlockOperation>(OperationKind.Block); 387currentBlockAncestor = currentBlockAncestor.GetAncestor<IBlockOperation>(OperationKind.Block);
Microsoft.NetCore.Analyzers\Performance\AvoidSingleUseOfLocalJsonSerializerOptions.cs (5)
102IBlockOperation? localBlock = objCreation.GetFirstParentBlock(); 173private static bool IsLocalReferenceInsideChildLoop(ILocalReferenceOperation localRef, IBlockOperation symbolBlock) 180Debug.Assert(loop.Body is IBlockOperation); 274private static bool IsClosureOnLambdaOrLocalFunction(IOperation operation, IBlockOperation localBlock) 281IBlockOperation? block = lambdaOrLocalFunc switch
Microsoft.NetCore.Analyzers\Performance\PreferDictionaryTryMethodsOverContainsKeyGuardAnalyzer.cs (2)
202if (invocation.Parent?.Parent is IBlockOperation block) 454case IBlockOperation block:
Microsoft.NetCore.Analyzers\Performance\PreferReadOnlySpanOverSpan.cs (1)
215case IBlockOperation:
Microsoft.NetCore.Analyzers\Runtime\AvoidConstArrays.Fixer.cs (1)
102methodContext ??= arrayArgument.GetAncestor<IBlockOperation>(OperationKind.Block); // VB methods have a different structure than CS methods
Microsoft.NetCore.Analyzers\Runtime\AvoidRedundantRegexIsMatchBeforeMatch.cs (1)
123if (whenTrue is not IBlockOperation block)
Microsoft.NetCore.Analyzers\Runtime\UseCancellationTokenThrowIfCancellationRequested.cs (1)
71if (singleOrBlock is IBlockOperation blockOperation)
Microsoft.NetCore.Analyzers\Runtime\UseCancellationTokenThrowIfCancellationRequested.Fixer.cs (3)
62if (conditional.WhenFalse is IBlockOperation block) 89if (conditional.WhenTrue is IBlockOperation block) 128var firstWhenTrueStatement = conditional.WhenTrue is IBlockOperation block ? block.Operations.FirstOrDefault() : conditional.WhenTrue;
Microsoft.NetCore.Analyzers\Runtime\UseExceptionThrowHelpers.cs (1)
167if (throwOperation.Parent is IBlockOperation parentBlock && parentBlock.ChildOperations.Count == 1)
Microsoft.NetCore.Analyzers\Security\DoNotAlwaysSkipTokenValidationInDelegates.cs (1)
110var blockOperation = methodSymbol.GetTopmostOperationBlock(compilation);
Microsoft.NetCore.Analyzers\Security\DoNotDisableCertificateValidation.cs (1)
102var blockOperation = methodSymbol.GetTopmostOperationBlock(compilation);
src\47c588c5b8785708\ParameterValidationAnalysis.cs (1)
30IBlockOperation topmostBlock,
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (5)
559private static readonly BoundedCache<Compilation, ConcurrentDictionary<IMethodSymbol, IBlockOperation?>> s_methodToTopmostOperationBlockCache 563/// Returns the topmost <see cref="IBlockOperation"/> for given <paramref name="method"/>. 565public static IBlockOperation? GetTopmostOperationBlock(this IMethodSymbol method, Compilation compilation, CancellationToken cancellationToken = default) 571IBlockOperation? ComputeTopmostOperationBlock(IMethodSymbol unused) 593if (operation is IBlockOperation blockOperation)
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Compiler\Extensions\IOperationExtensions.cs (9)
201/// Returns the topmost <see cref="IBlockOperation"/> containing the given <paramref name="operation"/>. 203public static IBlockOperation? GetTopmostParentBlock(this IOperation? operation) 206IBlockOperation? topmostBlockOperation = null; 209if (currentOperation is IBlockOperation blockOperation) 221/// Returns the first <see cref="IBlockOperation"/> in the parent chain of <paramref name="operation"/>. 223public static IBlockOperation? GetFirstParentBlock(this IOperation? operation) 228if (currentOperation is IBlockOperation blockOperation) 456public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 468case IBlockOperation blockOperation:
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Compiler\Extensions\OperationBlockAnalysisContextExtension.cs (4)
24IBlockOperation? methodBlock = null; 27methodBlock = (IBlockOperation)operationBlocks[0]; 35methodBlock = (IBlockOperation)block; 43static bool IsSingleStatementBody(IBlockOperation body)
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowAnalysisResult.cs (1)
117Debug.Assert(operation.GetAncestor<IBlockOperation>(OperationKind.Block, predicate: b => b.Parent == null) == null);
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (3)
3555var operation = method.GetTopmostOperationBlock(WellKnownTypeProvider.Compilation); 4036public sealed override TAbstractAnalysisValue VisitBlock(IBlockOperation operation, object? argument) 4038throw new NotSupportedException($"'{nameof(IBlockOperation)}' must have been lowered in the CFG");
Microsoft.CodeAnalysis.ResxSourceGenerator (8)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (5)
420private static readonly BoundedCache<Compilation, ConcurrentDictionary<IMethodSymbol, IBlockOperation?>> s_methodToTopmostOperationBlockCache 424/// Returns the topmost <see cref="IBlockOperation"/> for given <paramref name="method"/>. 426public static IBlockOperation? GetTopmostOperationBlock(this IMethodSymbol method, Compilation compilation, CancellationToken cancellationToken = default) 432IBlockOperation? ComputeTopmostOperationBlock(IMethodSymbol unused) 454if (operation is IBlockOperation blockOperation)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
Microsoft.CodeAnalysis.VisualBasic.CodeStyle.Fixes (3)
src\f388afcd21099bcf\InitializeParameterHelpers.vb (1)
44Public Shared Function TryGetLastStatement(blockStatementOpt As IBlockOperation) As SyntaxNode
src\f388afcd21099bcf\VisualBasicInitializeParameterService.vb (2)
44Protected Overrides Function TryGetLastStatement(blockStatement As IBlockOperation) As SyntaxNode 48Protected Overrides Function TryUpdateTupleAssignment(blockStatement As IBlockOperation, parameter As IParameterSymbol, fieldOrProperty As ISymbol, editor As SyntaxEditor) As Boolean
Microsoft.CodeAnalysis.VisualBasic.Workspaces (3)
src\f388afcd21099bcf\InitializeParameterHelpers.vb (1)
44Public Shared Function TryGetLastStatement(blockStatementOpt As IBlockOperation) As SyntaxNode
src\f388afcd21099bcf\VisualBasicInitializeParameterService.vb (2)
44Protected Overrides Function TryGetLastStatement(blockStatement As IBlockOperation) As SyntaxNode 48Protected Overrides Function TryUpdateTupleAssignment(blockStatement As IBlockOperation, parameter As IParameterSymbol, fieldOrProperty As ISymbol, editor As SyntaxEditor) As Boolean
Microsoft.CodeAnalysis.Workspaces (12)
src\ce8c1e82c1124a2b\AbstractInitializerParameterService.cs (7)
27protected abstract SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement); 29protected abstract bool TryUpdateTupleAssignment(IBlockOperation? blockStatement, IParameterSymbol parameter, ISymbol fieldOrProperty, SyntaxEditor editor); 41out IBlockOperation? blockStatement) 70blockStatement = (IBlockOperation)operation; 121if (TryGetBlockForSingleParameterInitialization(functionDeclaration, semanticModel, syntaxFacts, cancellationToken, out var blockStatementOpt)) 136IBlockOperation? blockStatement, 165IParameterSymbol parameter, IBlockOperation? blockStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\InitializeParameterHelpersCore.cs (2)
76public static IOperation? TryFindFieldOrPropertyAssignmentStatement(IParameterSymbol parameter, IBlockOperation? blockStatement) 80IParameterSymbol parameter, IBlockOperation? blockStatement, out ISymbol? fieldOrProperty)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (1)
36while (rootOperation is not IBlockOperation &&
Roslyn.Diagnostics.Analyzers (20)
AbstractDoNotCopyValue.cs (1)
443public override void VisitBlock(IBlockOperation operation)
src\ce8c1e82c1124a2b\AbstractInitializerParameterService.cs (7)
27protected abstract SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement); 29protected abstract bool TryUpdateTupleAssignment(IBlockOperation? blockStatement, IParameterSymbol parameter, ISymbol fieldOrProperty, SyntaxEditor editor); 41out IBlockOperation? blockStatement) 70blockStatement = (IBlockOperation)operation; 121if (TryGetBlockForSingleParameterInitialization(functionDeclaration, semanticModel, syntaxFacts, cancellationToken, out var blockStatementOpt)) 136IBlockOperation? blockStatement, 165IParameterSymbol parameter, IBlockOperation? blockStatement)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IMethodSymbolExtensions.cs (5)
420private static readonly BoundedCache<Compilation, ConcurrentDictionary<IMethodSymbol, IBlockOperation?>> s_methodToTopmostOperationBlockCache 424/// Returns the topmost <see cref="IBlockOperation"/> for given <paramref name="method"/>. 426public static IBlockOperation? GetTopmostOperationBlock(this IMethodSymbol method, Compilation compilation, CancellationToken cancellationToken = default) 432IBlockOperation? ComputeTopmostOperationBlock(IMethodSymbol unused) 454if (operation is IBlockOperation blockOperation)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\InitializeParameterHelpersCore.cs (2)
76public static IOperation? TryFindFieldOrPropertyAssignmentStatement(IParameterSymbol parameter, IBlockOperation? blockStatement) 80IParameterSymbol parameter, IBlockOperation? blockStatement, out ISymbol? fieldOrProperty)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (1)
36while (rootOperation is not IBlockOperation &&
Roslyn.Diagnostics.CSharp.Analyzers (4)
src\4f0789c9734b88bf\CSharpInitializeParameterService.cs (3)
34protected override SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement) 41IBlockOperation? blockStatement, 100private static IEnumerable<(ITupleOperation targetTuple, ITupleOperation valueTuple)> TryGetAssignmentExpressions(IBlockOperation blockOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\InitializeParameter\InitializeParameterHelpers.cs (1)
157public static SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement)
Roslyn.Diagnostics.VisualBasic.Analyzers (3)
src\f388afcd21099bcf\InitializeParameterHelpers.vb (1)
44Public Shared Function TryGetLastStatement(blockStatementOpt As IBlockOperation) As SyntaxNode
src\f388afcd21099bcf\VisualBasicInitializeParameterService.vb (2)
44Protected Overrides Function TryGetLastStatement(blockStatement As IBlockOperation) As SyntaxNode 48Protected Overrides Function TryUpdateTupleAssignment(blockStatement As IBlockOperation, parameter As IParameterSymbol, fieldOrProperty As ISymbol, editor As SyntaxEditor) As Boolean