1 implementation of IBlockOperation
Microsoft.CodeAnalysis (1)
Generated\Operations.Generated.cs (1)
4037internal sealed partial class BlockOperation : Operation, IBlockOperation
362 references to IBlockOperation
GenerateDocumentationAndConfigFiles (19)
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\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (1)
36while (rootOperation is not IBlockOperation &&
Metrics (8)
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\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
Metrics.Legacy (8)
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\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
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.AspNetCore.Mvc.Api.Analyzers (1)
ApiActionsDoNotRequireExplicitModelValidationCheckAnalyzer.cs (1)
215return statement is IBlockOperation block && block.Operations.Length == 1 ?
Microsoft.CodeAnalysis (37)
Generated\OperationKind.Generated.cs (1)
21/// <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" />. 4758internal TryOperation(IBlockOperation body, ImmutableArray<ICatchClauseOperation> catches, IBlockOperation? @finally, ILabelSymbol? exitLabel, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4766public IBlockOperation Body { get; } 4768public IBlockOperation? Finally { get; } 4956internal LocalFunctionOperation(IMethodSymbol symbol, IBlockOperation? body, IBlockOperation? ignoredBody, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4964public IBlockOperation? Body { get; } 4965public IBlockOperation? IgnoredBody { get; } 5902internal AnonymousFunctionOperation(IMethodSymbol symbol, IBlockOperation body, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 5909public IBlockOperation Body { get; } 8013internal CatchClauseOperation(IOperation? exceptionDeclarationOrExpression, ITypeSymbol exceptionType, ImmutableArray<ILocalSymbol> locals, IOperation? filter, IBlockOperation handler, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 8026public IBlockOperation Handler { get; } 8695protected BaseMethodBodyBaseOperation(IBlockOperation? blockBody, IBlockOperation? expressionBody, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 8701public IBlockOperation? BlockBody { get; } 8702public IBlockOperation? ExpressionBody { get; } 8706internal MethodBodyOperation(IBlockOperation? blockBody, IBlockOperation? expressionBody, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 8762internal ConstructorBodyOperation(ImmutableArray<ILocalSymbol> locals, IOperation? initializer, IBlockOperation? blockBody, IBlockOperation? expressionBody, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 10866public override IOperation VisitBlock(IBlockOperation operation, object? argument) 11491public virtual void VisitBlock(IBlockOperation operation) => DefaultVisit(operation); 11631public 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)
1384public override IOperation? VisitBlock(IBlockOperation operation, int? captureIdForResult) 1512private void VisitMethodBodies(IBlockOperation? blockBody, IBlockOperation? expressionBody)
Microsoft.CodeAnalysis.Analyzers (19)
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\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (1)
36while (rootOperation is not IBlockOperation &&
Microsoft.CodeAnalysis.AnalyzerUtilities (13)
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\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\ParameterValidationAnalysis\ParameterValidationAnalysis.cs (1)
31IBlockOperation topmostBlock,
src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowAnalysisResult.cs (1)
118Debug.Assert(operation.GetAncestor<IBlockOperation>(OperationKind.Block, predicate: b => b.Parent == null) == null);
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\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
Microsoft.CodeAnalysis.BannedApiAnalyzers (19)
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\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (1)
36while (rootOperation is not IBlockOperation &&
Microsoft.CodeAnalysis.CodeStyle (9)
src\Analyzers\Core\Analyzers\Helpers\HashCodeAnalyzer\HashCodeAnalyzer.cs (2)
52if (operation is not IBlockOperation blockOperation) 69while (blockOperation.Operations is [IBlockOperation childBlock])
src\Analyzers\Core\Analyzers\UseConditionalExpression\ForReturn\UseConditionalExpressionForReturnHelpers.cs (1)
57if (ifOperation.Parent is not IBlockOperation parentBlock)
src\Analyzers\Core\Analyzers\UseConditionalExpression\UseConditionalExpressionHelpers.cs (1)
73=> statement is IBlockOperation { Operations: [var operationInBlock] }
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\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
Microsoft.CodeAnalysis.CodeStyle.Fixes (12)
src\Analyzers\Core\CodeFixes\UseConditionalExpression\ForAssignment\AbstractUseConditionalExpressionForAssignmentCodeFixProvider.cs (1)
194if (ifOperation.Parent is not IBlockOperation parentBlock)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
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\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) 1792private IBlockOperation CreateBoundBlockOperation(BoundBlock boundBlock) 2038var body = (IBlockOperation)Create(boundTryStatement.TryBlock); 2040var @finally = (IBlockOperation?)Create(boundTryStatement.FinallyBlockOpt); 2052IBlockOperation handler = (IBlockOperation)Create(boundCatchBlock.Body);
Microsoft.CodeAnalysis.CSharp.CodeStyle (4)
src\Analyzers\CSharp\Analyzers\MakeStructMemberReadOnly\CSharpMakeStructMemberReadOnlyAnalyzer.cs (1)
149if (blockOperation is IBlockOperation { Operations: [IThrowOperation or IExpressionStatementOperation { Operation: IThrowOperation }] })
src\Analyzers\CSharp\Analyzers\RemoveUnusedParametersAndValues\CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (1)
78=> expressionStatementOperation.Parent is IBlockOperation blockOperation &&
src\Analyzers\CSharp\Analyzers\UseConditionalExpression\CSharpUseConditionalExpressionForReturnDiagnosticAnalyzer.cs (1)
36if (statement is not IReturnOperation { Parent: IBlockOperation block })
src\Analyzers\CSharp\Analyzers\UseSimpleUsingStatement\UseSimpleUsingStatementDiagnosticAnalyzer.cs (1)
159if (innerUsingOperation.Body is IBlockOperation innerUsingBlock)
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (12)
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\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\InitializeParameter\CSharpInitializeParameterService.cs (3)
34protected override SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement) 41IBlockOperation? blockStatement, 100private static IEnumerable<(ITupleOperation targetTuple, ITupleOperation valueTuple)> TryGetAssignmentExpressions(IBlockOperation blockOperation)
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\Analyzers\CSharp\Analyzers\MakeStructMemberReadOnly\CSharpMakeStructMemberReadOnlyAnalyzer.cs (1)
149if (blockOperation is IBlockOperation { Operations: [IThrowOperation or IExpressionStatementOperation { Operation: IThrowOperation }] })
src\Analyzers\CSharp\Analyzers\RemoveUnusedParametersAndValues\CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (1)
78=> expressionStatementOperation.Parent is IBlockOperation blockOperation &&
src\Analyzers\CSharp\Analyzers\UseConditionalExpression\CSharpUseConditionalExpressionForReturnDiagnosticAnalyzer.cs (1)
36if (statement is not IReturnOperation { Parent: IBlockOperation block })
src\Analyzers\CSharp\Analyzers\UseSimpleUsingStatement\UseSimpleUsingStatementDiagnosticAnalyzer.cs (1)
159if (innerUsingOperation.Body is IBlockOperation innerUsingBlock)
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.Semantic.UnitTests (3)
Semantics\TopLevelStatementsTests.cs (3)
205Assert.NotNull(ControlFlowGraph.Create((IMethodBodyOperation)((IBlockOperation)operation1.Parent.Parent).Parent)); 333Assert.NotNull(ControlFlowGraph.Create((IMethodBodyOperation)((IBlockOperation)operation1.Parent.Parent).Parent)); 371Assert.NotNull(ControlFlowGraph.Create((IMethodBodyOperation)((IBlockOperation)operation2.Parent).Parent));
Microsoft.CodeAnalysis.CSharp.Workspaces (4)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\InitializeParameter\CSharpInitializeParameterService.cs (3)
34protected override SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement) 41IBlockOperation? blockStatement, 100private static IEnumerable<(ITupleOperation targetTuple, ITupleOperation valueTuple)> TryGetAssignmentExpressions(IBlockOperation blockOperation)
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\Analyzers\Core\Analyzers\Helpers\HashCodeAnalyzer\HashCodeAnalyzer.cs (2)
52if (operation is not IBlockOperation blockOperation) 69while (blockOperation.Operations is [IBlockOperation childBlock])
src\Analyzers\Core\Analyzers\UseConditionalExpression\ForReturn\UseConditionalExpressionForReturnHelpers.cs (1)
57if (ifOperation.Parent is not IBlockOperation parentBlock)
src\Analyzers\Core\Analyzers\UseConditionalExpression\UseConditionalExpressionHelpers.cs (1)
73=> statement is IBlockOperation { Operations: [var operationInBlock] }
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\Analyzers\Core\CodeFixes\UseConditionalExpression\ForAssignment\AbstractUseConditionalExpressionForAssignmentCodeFixProvider.cs (1)
194if (ifOperation.Parent is not IBlockOperation parentBlock)
ValueTracking\ValueTracker.OperationCollector.cs (1)
40IBlockOperation blockOperation => VisitReturnDescendentsAsync(blockOperation, allowImplicit: false, cancellationToken),
Microsoft.CodeAnalysis.PerformanceSensitiveAnalyzers (19)
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\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (1)
36while (rootOperation is not IBlockOperation &&
Microsoft.CodeAnalysis.PublicApiAnalyzers (8)
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\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
Microsoft.CodeAnalysis.ResxSourceGenerator (8)
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\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
Microsoft.CodeAnalysis.Test.Utilities (6)
Compilation\CompilationExtensions.cs (1)
369case IBlockOperation blockOperation:
Compilation\ControlFlowGraphVerifier.cs (1)
44case IBlockOperation blockOperation:
Compilation\OperationTreeVerifier.cs (2)
422public override void VisitBlock(IBlockOperation operation) 424LogString(nameof(IBlockOperation));
Compilation\TestOperationVisitor.cs (1)
118public override void VisitBlock(IBlockOperation operation)
Diagnostics\OperationTestAnalyzer.cs (1)
1315var block = lambdaExpression.Body;
Microsoft.CodeAnalysis.UnitTests (2)
Diagnostics\OperationTests.cs (2)
120Assert.Throws<ArgumentNullException>(() => ControlFlowGraph.Create((IBlockOperation)null)); 150IBlockOperation block = new BlockOperation(
Microsoft.CodeAnalysis.Workspaces (12)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
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\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\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\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (1)
36while (rootOperation is not IBlockOperation &&
Roslyn.Diagnostics.CSharp.Analyzers (4)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\InitializeParameter\CSharpInitializeParameterService.cs (3)
34protected override SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement) 41IBlockOperation? blockStatement, 100private static IEnumerable<(ITupleOperation targetTuple, ITupleOperation valueTuple)> TryGetAssignmentExpressions(IBlockOperation blockOperation)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\InitializeParameter\InitializeParameterHelpers.cs (1)
157public static SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement)
Test.Utilities (8)
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\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
Text.Analyzers (19)
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\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (2)
285public static ControlFlowGraph? GetEnclosingControlFlowGraph(this IBlockOperation blockOperation) 297case IBlockOperation blockOperation:
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (1)
409if (firstBlock is not IBlockOperation block)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\IInitializeParameterService.cs (1)
29out IBlockOperation? blockStatement);
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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (1)
36while (rootOperation is not IBlockOperation &&