1 implementation of Parent
Microsoft.CodeAnalysis (1)
Operations\Operation.cs (1)
48public IOperation? Parent
797 references to Parent
GenerateDocumentationAndConfigFiles (49)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (11)
122return operation is { Kind: OperationKind.None, Parent: null }; 142ancestor = ancestor.Parent; 176ancestor = ancestor.Parent; 215for (IOperation? current = operation; current != null && current.Kind != OperationKind.Block; current = current.Parent) 260while (operation.Parent != null) 262operation = operation.Parent; 416var currentOperation = tupleOperation.Parent; 425currentOperation = currentOperation.Parent; 478while (potentialLeftSide.Parent is IParenthesizedOperation or ITupleOperation) 480potentialLeftSide = potentialLeftSide.Parent; 483return potentialLeftSide.Parent switch
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (24)
19=> operation.Parent is IAssignmentOperation assignmentOperation && 21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 66while (operation.Parent is IBinaryPatternOperation or INegatedPatternOperation or IRelationalPatternOperation) 67operation = operation.Parent; 69switch (operation.Parent) 130if (operation.Parent is IAssignmentOperation assignmentOperation && 133return operation.Parent.IsAnyCompoundAssignment() 137else if (operation.Parent is ISimpleAssignmentOperation { IsRef: true } simpleAssignmentOperation && 142else if (operation.Parent is IIncrementOrDecrementOperation) 146else if (operation.Parent is IForToLoopOperation forToLoopOperation && forToLoopOperation.LoopControlVariable.Equals(operation)) 150else if (operation.Parent is IParenthesizedOperation parenthesizedOperation) 158else if (operation.Parent is INameOfOperation or ITypeOfOperation or ISizeOfOperation) 162else if (operation.Parent is IArgumentOperation argumentOperation) 179else if (operation.Parent is IReturnOperation returnOperation) 188else if (operation.Parent is IConditionalOperation conditionalOperation) 200else if (operation.Parent is IReDimClauseOperation reDimClauseOperation && 203return reDimClauseOperation.Parent is IReDimOperation { Preserve: true } 207else if (operation.Parent is IDeclarationExpressionOperation declarationExpression) 215else if (operation.Parent is IVariableInitializerOperation variableInitializerOperation) 217if (variableInitializerOperation.Parent is IVariableDeclaratorOperation variableDeclaratorOperation) 241operation = operation?.Parent; 253operation = operation.Parent; 264var current = operation.Parent; 278current = current.Parent;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SymbolUsageInfo.cs (1)
203if (operation?.Parent is INameOfOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (2)
56if (flowCaptureReference.Parent is IAssignmentOperation assignment && 61var captureKind = flowCaptureReference.Parent.IsAnyCompoundAssignment() || rvalueFlowCaptureIds.Contains(flowCaptureReference.Id)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (9)
130if (operation.Parent is IFlowCaptureOperation flowCapture && 152if (operation.Parent is IIncrementOrDecrementOperation && 153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 163if (operation.Parent is IAssignmentOperation assignmentOperation && 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 271operation.Parent is IForEachLoopOperation forEachLoop && forEachLoop.LoopControlVariable == operation || 272operation.Parent is ICatchClauseOperation catchClause && catchClause.ExceptionDeclarationOrExpression == operation) 420else if (write.Parent is ISimpleAssignmentOperation simpleAssignment)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (2)
37rootOperation.Parent is not null) 39rootOperation = rootOperation.Parent;
ILLink.RoslynAnalyzer (29)
DataFlow\LValueFlowCaptureProvider.cs (1)
43assignment = flowCaptureReference.Parent as IAssignmentOperation;
IOperationExtensions.cs (26)
47while (operation.Parent is IBinaryPatternOperation || 48operation.Parent is INegatedPatternOperation || 49operation.Parent is IRelationalPatternOperation) 51operation = operation.Parent; 54switch (operation.Parent) 111if (operation.Parent is IAssignmentOperation assignmentOperation && 114return operation.Parent.IsAnyCompoundAssignment() 118else if (operation.Parent is IIncrementOrDecrementOperation) 122else if (operation.Parent is IParenthesizedOperation parenthesizedOperation) 130else if (operation.Parent is INameOfOperation || 131operation.Parent is ITypeOfOperation || 132operation.Parent is ISizeOfOperation) 136else if (operation.Parent is IArgumentOperation argumentOperation) 153else if (operation.Parent is IReturnOperation returnOperation) 162else if (operation.Parent is IConditionalOperation conditionalOperation) 174else if (operation.Parent is IReDimClauseOperation reDimClauseOperation && 177return (reDimClauseOperation.Parent as IReDimOperation)?.Preserve == true 181else if (operation.Parent is IDeclarationExpressionOperation declarationExpression) 189else if (operation.Parent is IVariableInitializerOperation variableInitializerOperation) 191if (variableInitializerOperation.Parent is IVariableDeclaratorOperation variableDeclaratorOperation) 215operation = operation?.Parent; 227operation = operation.Parent; 238var current = operation.Parent; 252current = current.Parent; 291var parent = operation.Parent; 309parent = parent.Parent;
RequiresAnalyzerBase.cs (2)
239var parent = operationContext.Operation.Parent; 257parent = parent.Parent;
Microsoft.Analyzers.Extra (7)
AsyncCallInsideUsingBlockAnalyzer.cs (2)
49if (operation.Parent == null) 54ValidateDisposable(analysisContext, disposable, operation.Parent);
CallAnalysis\Fixers\LegacyLoggingFixer.cs (1)
368if (invocationOp.Parent?.Kind == OperationKind.ConditionalAccess)
Utilities\OperationExtensions.cs (4)
19while (operationToStart.Parent != null) 21if (operationToStart.Parent == parent) 26yield return operationToStart.Parent; 27operationToStart = operationToStart.Parent;
Microsoft.AspNetCore.App.Analyzers (11)
Authorization\AddAuthorizationBuilderAnalyzer.cs (3)
179if (propertyReferenceOperation.Parent is IAssignmentOperation { Target: IPropertyReferenceOperation targetProperty } 184if (propertyReferenceOperation.Parent is IAssignmentOperation { Value: IPropertyReferenceOperation valueProperty } 225return invocation.Parent is IExpressionStatementOperation;
Http\RequestDelegateReturnTypeAnalyzer.cs (2)
31if (methodReference.Parent is { } parent && 47if (anonymousFunction.Parent is { } parent &&
RouteHandlers\DetectAmbiguousRoutes.cs (6)
62if (current.Parent is IArgumentOperation { Parent: IInvocationOperation invocationOperation } && 70if (current.Parent is IBlockOperation or ISwitchCaseOperation) 72return current.Parent; 74else if (current.Parent is IConditionalOperation or 84current = current.Parent;
Microsoft.AspNetCore.Mvc.Analyzers (2)
TagHelpersInCodeBlocksAnalyzer.cs (2)
60var parent = context.Operation.Parent; 63parent = parent.Parent;
Microsoft.AspNetCore.Mvc.Api.Analyzers (5)
ActualApiResponseMetadataFactory.cs (2)
305var parent = operation.Parent; 313parent = parent.Parent;
ApiActionsDoNotRequireExplicitModelValidationCheckAnalyzer.cs (3)
51var parent = ifOperation.Parent; 58if (parent.Kind == OperationKind.Block && parent.Parent != null) 60parent = parent.Parent;
Microsoft.CodeAnalysis (32)
DiagnosticAnalyzer\AnalyzerDriver.cs (13)
3026if (operationBlock.Parent != null) 3028switch (operationBlock.Parent.Kind) 3032Debug.Assert(!operationBlock.Parent.IsImplicit); 3033operationsToAnalyze.Add(operationBlock.Parent); 3040Debug.Assert(operationBlock.Parent.IsImplicit); 3041Debug.Assert(operationBlock.Parent.Parent is IConstructorBodyOperation ctorBody && 3042ctorBody.Initializer == operationBlock.Parent); 3043Debug.Assert(!operationBlock.Parent.Parent.IsImplicit); 3045operationsToAnalyze.Add(operationBlock.Parent.Parent); 3050Debug.Fail($"Expected operation with kind '{operationBlock.Kind}' to be the root operation with null 'Parent', but instead it has a non-null Parent with kind '{operationBlock.Parent.Kind}'");
DiagnosticAnalyzer\AnalyzerExecutor.cs (1)
1701Debug.Assert(operation.Parent == null);
Operations\ControlFlowGraph.cs (1)
180if (operation.Parent != null)
Operations\ControlFlowGraphBuilder.cs (5)
95Debug.Assert(body.Parent == null); 3113Debug.Assert(operation.Parent != null); 3114bool isStatement = _currentStatement == operation || operation.Parent.Kind == OperationKind.ExpressionStatement; 3377bool isOnStatementLevel = _currentStatement == operation || (_currentStatement == operation.Parent && _currentStatement?.Kind == OperationKind.ExpressionStatement); 6627Debug.Assert(operation.Parent is InvocationOperation { Parent: CollectionExpressionOperation ce } && ce.HasErrors(_compilation),
Operations\ControlFlowGraphBuilder.InterpolatedStringContext.cs (4)
52IOperation? operation = placeholderOperation.Parent; 55operation = operation.Parent; 74Debug.Assert(placeholderOperation.Parent!.Parent is IObjectCreationOperation objectCreation && objectCreation.HasErrors(_compilation));
Operations\Operation.cs (1)
178Debug.Assert((object?)child.Parent == parent);
Operations\OperationExtensions.cs (5)
185return declarationOperation.Initializer ?? (declarationOperation.Parent as IVariableDeclarationOperation)?.Initializer; 341while (operation.Parent != null) 343operation = operation.Parent; 378for (IOperation current = operation; current.Parent != null; current = current.Parent)
Operations\OperationNodes.cs (2)
699Debug.Assert(statements.All(s => s.Parent != this && s.Parent!.Kind is OperationKind.Block or OperationKind.SwitchCase));
Microsoft.CodeAnalysis.Analyzers (55)
ImmutableObjectMethodAnalyzer.cs (1)
83if (invocation.Parent is not IExpressionStatementOperation || invocation.TargetMethod.ReturnsVoid)
MetaAnalyzers\DiagnosticDescriptorCreationAnalyzer.cs (1)
367switch (invocation.Parent)
MetaAnalyzers\Fixers\CompareSymbolsCorrectlyFix.cs (1)
202while (currentOperation.Parent is IConditionalAccessOperation conditionalAccess)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (2)
298if (operation.Parent != null) 300switch (operation.Parent.Kind)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (1)
258if (operationBlock != null && operationBlock.Parent == null)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (11)
122return operation is { Kind: OperationKind.None, Parent: null }; 142ancestor = ancestor.Parent; 176ancestor = ancestor.Parent; 215for (IOperation? current = operation; current != null && current.Kind != OperationKind.Block; current = current.Parent) 260while (operation.Parent != null) 262operation = operation.Parent; 416var currentOperation = tupleOperation.Parent; 425currentOperation = currentOperation.Parent; 478while (potentialLeftSide.Parent is IParenthesizedOperation or ITupleOperation) 480potentialLeftSide = potentialLeftSide.Parent; 483return potentialLeftSide.Parent switch
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (24)
19=> operation.Parent is IAssignmentOperation assignmentOperation && 21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 66while (operation.Parent is IBinaryPatternOperation or INegatedPatternOperation or IRelationalPatternOperation) 67operation = operation.Parent; 69switch (operation.Parent) 130if (operation.Parent is IAssignmentOperation assignmentOperation && 133return operation.Parent.IsAnyCompoundAssignment() 137else if (operation.Parent is ISimpleAssignmentOperation { IsRef: true } simpleAssignmentOperation && 142else if (operation.Parent is IIncrementOrDecrementOperation) 146else if (operation.Parent is IForToLoopOperation forToLoopOperation && forToLoopOperation.LoopControlVariable.Equals(operation)) 150else if (operation.Parent is IParenthesizedOperation parenthesizedOperation) 158else if (operation.Parent is INameOfOperation or ITypeOfOperation or ISizeOfOperation) 162else if (operation.Parent is IArgumentOperation argumentOperation) 179else if (operation.Parent is IReturnOperation returnOperation) 188else if (operation.Parent is IConditionalOperation conditionalOperation) 200else if (operation.Parent is IReDimClauseOperation reDimClauseOperation && 203return reDimClauseOperation.Parent is IReDimOperation { Preserve: true } 207else if (operation.Parent is IDeclarationExpressionOperation declarationExpression) 215else if (operation.Parent is IVariableInitializerOperation variableInitializerOperation) 217if (variableInitializerOperation.Parent is IVariableDeclaratorOperation variableDeclaratorOperation) 241operation = operation?.Parent; 253operation = operation.Parent; 264var current = operation.Parent; 278current = current.Parent;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SymbolUsageInfo.cs (1)
203if (operation?.Parent is INameOfOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (2)
56if (flowCaptureReference.Parent is IAssignmentOperation assignment && 61var captureKind = flowCaptureReference.Parent.IsAnyCompoundAssignment() || rvalueFlowCaptureIds.Contains(flowCaptureReference.Id)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (9)
130if (operation.Parent is IFlowCaptureOperation flowCapture && 152if (operation.Parent is IIncrementOrDecrementOperation && 153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 163if (operation.Parent is IAssignmentOperation assignmentOperation && 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 271operation.Parent is IForEachLoopOperation forEachLoop && forEachLoop.LoopControlVariable == operation || 272operation.Parent is ICatchClauseOperation catchClause && catchClause.ExceptionDeclarationOrExpression == operation) 420else if (write.Parent is ISimpleAssignmentOperation simpleAssignment)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (2)
37rootOperation.Parent is not null) 39rootOperation = rootOperation.Parent;
Microsoft.CodeAnalysis.AnalyzerUtilities (66)
src\2e2796bccd1466f6\TaintedDataAnalysis.TaintedDataOperationVisitor.cs (1)
464if (operation.Parent is IInvocationOperation invocationOperation)
src\683181b2796de991\ParameterValidationAnalysis.ParameterValidationDataFlowOperationVisitor.cs (1)
162return operation.Parent switch
src\a172c07bebba4cd8\DisposeAnalysis.DisposeDataFlowOperationVisitor.cs (3)
193if (operation.Parent is IInvocationOperation invocation && 342operation.Parent is IInvocationOperation invocation && 385return operation.Parent switch
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (2)
298if (operation.Parent != null) 300switch (operation.Parent.Kind)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (1)
258if (operationBlock != null && operationBlock.Parent == null)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (11)
122return operation is { Kind: OperationKind.None, Parent: null }; 142ancestor = ancestor.Parent; 176ancestor = ancestor.Parent; 215for (IOperation? current = operation; current != null && current.Kind != OperationKind.Block; current = current.Parent) 260while (operation.Parent != null) 262operation = operation.Parent; 416var currentOperation = tupleOperation.Parent; 425currentOperation = currentOperation.Parent; 478while (potentialLeftSide.Parent is IParenthesizedOperation or ITupleOperation) 480potentialLeftSide = potentialLeftSide.Parent; 483return potentialLeftSide.Parent switch
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\Extensions\IOperationExtensions_FlowAnalysis.cs (1)
53=> flowCaptureReference.Parent is IAssignmentOperation assignment &&
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\DisposeAnalysis\DisposeAnalysisHelper.cs (1)
160operation.Parent is IArgumentOperation argument && argument.Parameter?.RefKind == RefKind.Out) &&
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AnalysisEntityFactory.cs (1)
165if (conditionalAccessInstance.Parent is IMemberReferenceOperation memberReferenceParent)
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 (6)
978=> operation.Parent is IInvocationOperation invocation && 1495var current = operation.Parent; 1502current = current.Parent; 1515var current = operation.Parent; 1522current = current.Parent; 2782var pendingArguments = _pendingArgumentsToPostProcess.ExtractAll(static (arg, operation) => arg.Parent == operation, operation);
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\LValueFlowCapturesProvider.cs (1)
65operations.Single().Parent?.Kind == OperationKind.FlowCapture)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (24)
19=> operation.Parent is IAssignmentOperation assignmentOperation && 21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 66while (operation.Parent is IBinaryPatternOperation or INegatedPatternOperation or IRelationalPatternOperation) 67operation = operation.Parent; 69switch (operation.Parent) 130if (operation.Parent is IAssignmentOperation assignmentOperation && 133return operation.Parent.IsAnyCompoundAssignment() 137else if (operation.Parent is ISimpleAssignmentOperation { IsRef: true } simpleAssignmentOperation && 142else if (operation.Parent is IIncrementOrDecrementOperation) 146else if (operation.Parent is IForToLoopOperation forToLoopOperation && forToLoopOperation.LoopControlVariable.Equals(operation)) 150else if (operation.Parent is IParenthesizedOperation parenthesizedOperation) 158else if (operation.Parent is INameOfOperation or ITypeOfOperation or ISizeOfOperation) 162else if (operation.Parent is IArgumentOperation argumentOperation) 179else if (operation.Parent is IReturnOperation returnOperation) 188else if (operation.Parent is IConditionalOperation conditionalOperation) 200else if (operation.Parent is IReDimClauseOperation reDimClauseOperation && 203return reDimClauseOperation.Parent is IReDimOperation { Preserve: true } 207else if (operation.Parent is IDeclarationExpressionOperation declarationExpression) 215else if (operation.Parent is IVariableInitializerOperation variableInitializerOperation) 217if (variableInitializerOperation.Parent is IVariableDeclaratorOperation variableDeclaratorOperation) 241operation = operation?.Parent; 253operation = operation.Parent; 264var current = operation.Parent; 278current = current.Parent;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SymbolUsageInfo.cs (1)
203if (operation?.Parent is INameOfOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (2)
56if (flowCaptureReference.Parent is IAssignmentOperation assignment && 61var captureKind = flowCaptureReference.Parent.IsAnyCompoundAssignment() || rvalueFlowCaptureIds.Contains(flowCaptureReference.Id)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (9)
130if (operation.Parent is IFlowCaptureOperation flowCapture && 152if (operation.Parent is IIncrementOrDecrementOperation && 153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 163if (operation.Parent is IAssignmentOperation assignmentOperation && 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 271operation.Parent is IForEachLoopOperation forEachLoop && forEachLoop.LoopControlVariable == operation || 272operation.Parent is ICatchClauseOperation catchClause && catchClause.ExceptionDeclarationOrExpression == operation) 420else if (write.Parent is ISimpleAssignmentOperation simpleAssignment)
Microsoft.CodeAnalysis.CodeStyle (71)
src\9547feb31df4cc5d\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (10)
281if (operation.Parent is IVariableInitializerOperation) 290if (operation.Parent is ISimpleAssignmentOperation assignment && 301operation.Parent is IDelegateCreationOperation) 303return IsHandledDelegateCreationOrAnonymousFunctionTreeShape(operation.Parent); 336if (operation.Parent is IInvocationOperation) 341if (operation.Parent is ISimpleAssignmentOperation assignmentOperation) 369if (operation.Parent is IBinaryOperation) 409hasUnknownOperationNoneDescendant = operation.Parent is not INameOfOperation; 660if (unusedSymbolWriteOperation.Parent is IAssignmentOperation assignment && 665else if (unusedSymbolWriteOperation.Parent is IIncrementOrDecrementOperation)
src\roslyn\src\Analyzers\Core\Analyzers\ConvertTypeofToNameof\AbstractConvertTypeOfToNameOfDiagnosticAnalyzer.cs (2)
50if (operation.Parent is not IPropertyReferenceOperation) 54var operationParent = (IPropertyReferenceOperation)operation.Parent;
src\roslyn\src\Analyzers\Core\Analyzers\MakeFieldReadonly\AbstractMakeFieldReadonlyDiagnosticAnalyzer.cs (2)
248return operation is { Type.IsValueType: true, Parent: IPropertyReferenceOperation } 249? IsWrittenTo(operation.Parent, owningSymbol)
src\roslyn\src\Analyzers\Core\Analyzers\QualifyMemberAccess\AbstractQualifyMemberAccessDiagnosticAnalyzer.cs (1)
85if (context.Operation.Parent?.Kind == OperationKind.PropertySubpattern)
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnusedMembers\AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (8)
262if (operation is { Kind: OperationKind.None, Parent: INameOfOperation { Argument: var nameofArgument } } && 406Debug.Assert(memberReference.Parent is ICompoundAssignmentOperation compoundAssignment && 408memberReference.Parent is ICoalesceAssignmentOperation coalesceAssignment && 410memberReference.Parent is IIncrementOrDecrementOperation || 411memberReference.Parent is IReDimClauseOperation reDimClause && reDimClause.Operand == memberReference); 430if (memberReference?.Parent?.Parent is IExpressionStatementOperation && 431memberReference.Parent is not ICoalesceAssignmentOperation)
src\roslyn\src\Analyzers\Core\Analyzers\SimplifyInterpolation\AbstractSimplifyInterpolationDiagnosticAnalyzer.cs (4)
63if (interpolation.Parent is IInterpolatedStringOperation { Parent: IConversionOperation { Type: { } convertedType } conversion } && 69conversion.Parent is IArgumentOperation { Parent: IInvocationOperation invocation } &&
src\roslyn\src\Analyzers\Core\Analyzers\SimplifyInterpolation\AbstractSimplifyInterpolationHelpers.cs (6)
101if (towardsParent && expression?.Parent is null) 107expression = towardsParent ? expression.Parent : parenthesized.Operand; 110expression = towardsParent ? expression.Parent : conversion.Operand; 235return Unwrap(interpolatedStringOperation?.Parent, towardsParent: true) is IArgumentOperation 237Parent: IInvocationOperation 252for (var current = operation; current is not null; current = current.Parent)
src\roslyn\src\Analyzers\Core\Analyzers\UseConditionalExpression\ForReturn\UseConditionalExpressionForReturnHelpers.cs (1)
57if (ifOperation.Parent is not IBlockOperation parentBlock)
src\roslyn\src\Analyzers\Core\Analyzers\UseThrowExpression\AbstractUseThrowExpressionDiagnosticAnalyzer.cs (1)
103if (ifOperation.Parent is not IBlockOperation containingBlock)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (24)
19=> operation.Parent is IAssignmentOperation assignmentOperation && 21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 66while (operation.Parent is IBinaryPatternOperation or INegatedPatternOperation or IRelationalPatternOperation) 67operation = operation.Parent; 69switch (operation.Parent) 130if (operation.Parent is IAssignmentOperation assignmentOperation && 133return operation.Parent.IsAnyCompoundAssignment() 137else if (operation.Parent is ISimpleAssignmentOperation { IsRef: true } simpleAssignmentOperation && 142else if (operation.Parent is IIncrementOrDecrementOperation) 146else if (operation.Parent is IForToLoopOperation forToLoopOperation && forToLoopOperation.LoopControlVariable.Equals(operation)) 150else if (operation.Parent is IParenthesizedOperation parenthesizedOperation) 158else if (operation.Parent is INameOfOperation or ITypeOfOperation or ISizeOfOperation) 162else if (operation.Parent is IArgumentOperation argumentOperation) 179else if (operation.Parent is IReturnOperation returnOperation) 188else if (operation.Parent is IConditionalOperation conditionalOperation) 200else if (operation.Parent is IReDimClauseOperation reDimClauseOperation && 203return reDimClauseOperation.Parent is IReDimOperation { Preserve: true } 207else if (operation.Parent is IDeclarationExpressionOperation declarationExpression) 215else if (operation.Parent is IVariableInitializerOperation variableInitializerOperation) 217if (variableInitializerOperation.Parent is IVariableDeclaratorOperation variableDeclaratorOperation) 241operation = operation?.Parent; 253operation = operation.Parent; 264var current = operation.Parent; 278current = current.Parent;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SymbolUsageInfo.cs (1)
203if (operation?.Parent is INameOfOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (2)
56if (flowCaptureReference.Parent is IAssignmentOperation assignment && 61var captureKind = flowCaptureReference.Parent.IsAnyCompoundAssignment() || rvalueFlowCaptureIds.Contains(flowCaptureReference.Id)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (9)
130if (operation.Parent is IFlowCaptureOperation flowCapture && 152if (operation.Parent is IIncrementOrDecrementOperation && 153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 163if (operation.Parent is IAssignmentOperation assignmentOperation && 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 271operation.Parent is IForEachLoopOperation forEachLoop && forEachLoop.LoopControlVariable == operation || 272operation.Parent is ICatchClauseOperation catchClause && catchClause.ExceptionDeclarationOrExpression == operation) 420else if (write.Parent is ISimpleAssignmentOperation simpleAssignment)
Microsoft.CodeAnalysis.CodeStyle.Fixes (5)
src\939a5660f39ce290\AbstractUseConditionalExpressionForAssignmentCodeFixProvider.cs (2)
112if (assignmentOperation.Parent is IConditionalAccessOperation conditionalAccess) 194if (ifOperation.Parent is not IBlockOperation parentBlock)
src\roslyn\src\Analyzers\Core\CodeFixes\MakeMethodAsynchronous\AbstractMakeMethodAsynchronousCodeFixProvider.cs (1)
161for (; operation != null; operation = operation.Parent)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (2)
37rootOperation.Parent is not null) 39rootOperation = rootOperation.Parent;
Microsoft.CodeAnalysis.CSharp.CodeStyle (24)
src\roslyn\src\Analyzers\CSharp\Analyzers\HiddenExplicitCast\CSharpHiddenExplicitCastDiagnosticAnalyzer.cs (2)
60for (var current = innerOperation.Parent; 62current = current.Parent)
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructMemberReadOnly\CSharpMakeStructMemberReadOnlyAnalyzer.cs (3)
281for (var operation = instanceOperation.Parent; operation != null; operation = operation.Parent) 322if (operation.Parent is IEventAssignmentOperation)
src\roslyn\src\Analyzers\CSharp\Analyzers\RemoveUnusedParametersAndValues\CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (1)
78=> expressionStatementOperation.Parent is IBlockOperation blockOperation &&
src\roslyn\src\Analyzers\CSharp\Analyzers\SimplifyLinqExpression\CSharpSimplifyLinqExpressionDiagnosticAnalyzer.cs (2)
29=> invocation.Parent is IArgumentOperation { Parent: IInvocationOperation nextInvocation } ? nextInvocation : null;
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCollectionExpression\UseCollectionExpressionHelpers.cs (1)
138if (operation?.Parent is IAssignmentOperation { Type.TypeKind: TypeKind.Dynamic })
src\roslyn\src\Analyzers\CSharp\Analyzers\UseConditionalExpression\CSharpUseConditionalExpressionForReturnDiagnosticAnalyzer.cs (1)
36if (statement is not IReturnOperation { Parent: IBlockOperation block })
src\roslyn\src\Analyzers\CSharp\Analyzers\UseSystemThreadingLock\CSharpUseSystemThreadingLockDiagnosticAnalyzer.cs (3)
181if (fieldReferenceOperation.Parent is ILockOperation lockOperation) 200if (fieldReferenceOperation.Parent is IAssignmentOperation assignment && 208if (fieldReferenceOperation.Parent is INameOfOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (11)
92Parent.Kind: OperationKind.DelegateCreation, 96var current = castExpressionOperation.Parent.Parent; 98current = current.Parent; 107if (current.Parent is IConversionOperation { Type: { } parentConversionType, IsImplicit: false } && 267if (rewrittenOperation.Parent is not IDelegateCreationOperation rewrittenDelegateCreationOperation) 278if (originalDelegateCreationOperation.Parent is IConversionOperation conversionOperation && 405if (originalConversionOperation.Parent is IConversionOperation { Conversion.IsUserDefined: true } originalParentConversionOperation) 774if (originalConversionOperation.Parent is not IConversionOperation outerOriginalConversionOperation) 827if (rewrittenOperation.Parent is not IConversionOperation rewrittenBitwiseNotConversionOperation) 982if (rewrittenOperation.Parent is IConversionOperation conditionalParentConversion &&
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (2)
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseUtf8StringLiteral\UseUtf8StringLiteralCodeFixProvider.cs (2)
63var isConvertedToReadOnlySpan = arrayOp.Parent is IConversionOperation conversion && 132operation = operation.Parent!;
Microsoft.CodeAnalysis.CSharp.Features (15)
src\roslyn\src\Analyzers\CSharp\Analyzers\HiddenExplicitCast\CSharpHiddenExplicitCastDiagnosticAnalyzer.cs (2)
60for (var current = innerOperation.Parent; 62current = current.Parent)
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructMemberReadOnly\CSharpMakeStructMemberReadOnlyAnalyzer.cs (3)
281for (var operation = instanceOperation.Parent; operation != null; operation = operation.Parent) 322if (operation.Parent is IEventAssignmentOperation)
src\roslyn\src\Analyzers\CSharp\Analyzers\RemoveUnusedParametersAndValues\CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (1)
78=> expressionStatementOperation.Parent is IBlockOperation blockOperation &&
src\roslyn\src\Analyzers\CSharp\Analyzers\SimplifyLinqExpression\CSharpSimplifyLinqExpressionDiagnosticAnalyzer.cs (2)
29=> invocation.Parent is IArgumentOperation { Parent: IInvocationOperation nextInvocation } ? nextInvocation : null;
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCollectionExpression\UseCollectionExpressionHelpers.cs (1)
138if (operation?.Parent is IAssignmentOperation { Type.TypeKind: TypeKind.Dynamic })
src\roslyn\src\Analyzers\CSharp\Analyzers\UseConditionalExpression\CSharpUseConditionalExpressionForReturnDiagnosticAnalyzer.cs (1)
36if (statement is not IReturnOperation { Parent: IBlockOperation block })
src\roslyn\src\Analyzers\CSharp\Analyzers\UseSystemThreadingLock\CSharpUseSystemThreadingLockDiagnosticAnalyzer.cs (3)
181if (fieldReferenceOperation.Parent is ILockOperation lockOperation) 200if (fieldReferenceOperation.Parent is IAssignmentOperation assignment && 208if (fieldReferenceOperation.Parent is INameOfOperation)
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseUtf8StringLiteral\UseUtf8StringLiteralCodeFixProvider.cs (2)
63var isConvertedToReadOnlySpan = arrayOp.Parent is IConversionOperation conversion && 132operation = operation.Parent!;
Microsoft.CodeAnalysis.CSharp.NetAnalyzers (3)
Microsoft.NetCore.Analyzers\Runtime\CSharpDoNotUseStackallocInLoops.cs (1)
77for (; op is not null and not ILoopOperation; op = op.Parent)
Microsoft.NetCore.Analyzers\Runtime\CSharpPreventNumericIntPtrUIntPtrBehavioralChanges.cs (1)
23var parent = operation.Parent?.Syntax;
Microsoft.NetCore.Analyzers\Runtime\CSharpUseSpanBasedStringConcat.cs (1)
17(binaryOperation.Parent is not IBinaryOperation parentBinary || !IsConcatOperation(parentBinary));
Microsoft.CodeAnalysis.CSharp.Workspaces (11)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (11)
92Parent.Kind: OperationKind.DelegateCreation, 96var current = castExpressionOperation.Parent.Parent; 98current = current.Parent; 107if (current.Parent is IConversionOperation { Type: { } parentConversionType, IsImplicit: false } && 267if (rewrittenOperation.Parent is not IDelegateCreationOperation rewrittenDelegateCreationOperation) 278if (originalDelegateCreationOperation.Parent is IConversionOperation conversionOperation && 405if (originalConversionOperation.Parent is IConversionOperation { Conversion.IsUserDefined: true } originalParentConversionOperation) 774if (originalConversionOperation.Parent is not IConversionOperation outerOriginalConversionOperation) 827if (rewrittenOperation.Parent is not IConversionOperation rewrittenBitwiseNotConversionOperation) 982if (rewrittenOperation.Parent is IConversionOperation conditionalParentConversion &&
Microsoft.CodeAnalysis.Features (43)
CallHierarchy\AbstractCallHierarchyService.cs (2)
335while (operation.Parent != null) 336operation = operation.Parent;
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.cs (1)
89if (ifOperation is not IConditionalOperation { Parent: IBlockOperation parentBlock })
src\939a5660f39ce290\AbstractUseConditionalExpressionForAssignmentCodeFixProvider.cs (2)
112if (assignmentOperation.Parent is IConditionalAccessOperation conditionalAccess) 194if (ifOperation.Parent is not IBlockOperation parentBlock)
src\9547feb31df4cc5d\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (10)
281if (operation.Parent is IVariableInitializerOperation) 290if (operation.Parent is ISimpleAssignmentOperation assignment && 301operation.Parent is IDelegateCreationOperation) 303return IsHandledDelegateCreationOrAnonymousFunctionTreeShape(operation.Parent); 336if (operation.Parent is IInvocationOperation) 341if (operation.Parent is ISimpleAssignmentOperation assignmentOperation) 369if (operation.Parent is IBinaryOperation) 409hasUnknownOperationNoneDescendant = operation.Parent is not INameOfOperation; 660if (unusedSymbolWriteOperation.Parent is IAssignmentOperation assignment && 665else if (unusedSymbolWriteOperation.Parent is IIncrementOrDecrementOperation)
src\roslyn\src\Analyzers\Core\Analyzers\ConvertTypeofToNameof\AbstractConvertTypeOfToNameOfDiagnosticAnalyzer.cs (2)
50if (operation.Parent is not IPropertyReferenceOperation) 54var operationParent = (IPropertyReferenceOperation)operation.Parent;
src\roslyn\src\Analyzers\Core\Analyzers\MakeFieldReadonly\AbstractMakeFieldReadonlyDiagnosticAnalyzer.cs (2)
248return operation is { Type.IsValueType: true, Parent: IPropertyReferenceOperation } 249? IsWrittenTo(operation.Parent, owningSymbol)
src\roslyn\src\Analyzers\Core\Analyzers\QualifyMemberAccess\AbstractQualifyMemberAccessDiagnosticAnalyzer.cs (1)
85if (context.Operation.Parent?.Kind == OperationKind.PropertySubpattern)
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnusedMembers\AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (8)
262if (operation is { Kind: OperationKind.None, Parent: INameOfOperation { Argument: var nameofArgument } } && 406Debug.Assert(memberReference.Parent is ICompoundAssignmentOperation compoundAssignment && 408memberReference.Parent is ICoalesceAssignmentOperation coalesceAssignment && 410memberReference.Parent is IIncrementOrDecrementOperation || 411memberReference.Parent is IReDimClauseOperation reDimClause && reDimClause.Operand == memberReference); 430if (memberReference?.Parent?.Parent is IExpressionStatementOperation && 431memberReference.Parent is not ICoalesceAssignmentOperation)
src\roslyn\src\Analyzers\Core\Analyzers\SimplifyInterpolation\AbstractSimplifyInterpolationDiagnosticAnalyzer.cs (4)
63if (interpolation.Parent is IInterpolatedStringOperation { Parent: IConversionOperation { Type: { } convertedType } conversion } && 69conversion.Parent is IArgumentOperation { Parent: IInvocationOperation invocation } &&
src\roslyn\src\Analyzers\Core\Analyzers\SimplifyInterpolation\AbstractSimplifyInterpolationHelpers.cs (6)
101if (towardsParent && expression?.Parent is null) 107expression = towardsParent ? expression.Parent : parenthesized.Operand; 110expression = towardsParent ? expression.Parent : conversion.Operand; 235return Unwrap(interpolatedStringOperation?.Parent, towardsParent: true) is IArgumentOperation 237Parent: IInvocationOperation 252for (var current = operation; current is not null; current = current.Parent)
src\roslyn\src\Analyzers\Core\Analyzers\UseConditionalExpression\ForReturn\UseConditionalExpressionForReturnHelpers.cs (1)
57if (ifOperation.Parent is not IBlockOperation parentBlock)
src\roslyn\src\Analyzers\Core\Analyzers\UseThrowExpression\AbstractUseThrowExpressionDiagnosticAnalyzer.cs (1)
103if (ifOperation.Parent is not IBlockOperation containingBlock)
src\roslyn\src\Analyzers\Core\CodeFixes\MakeMethodAsynchronous\AbstractMakeMethodAsynchronousCodeFixProvider.cs (1)
161for (; operation != null; operation = operation.Parent)
ValueTracking\ValueTracker.cs (1)
153operation = operation.Parent;
ValueTracking\ValueTracker.OperationCollector.cs (1)
288operation = operation.Parent;
Microsoft.CodeAnalysis.NetAnalyzers (203)
Microsoft.CodeQuality.Analyzers\Maintainability\AvoidDeadConditionalCode.cs (2)
89&& (op.Parent is not IArgumentOperation { Parent: IInvocationOperation invocation } ||
Microsoft.CodeQuality.Analyzers\Maintainability\DoNotIgnoreMethodResults.cs (2)
271if (operationContext.Operation.Parent is not IBlockOperation enclosingBlock) 279var hasAnonymousFunctionParent = enclosingBlock.Parent?.Kind == OperationKind.AnonymousFunction;
Microsoft.CodeQuality.Analyzers\Maintainability\UseNameofInPlaceOfString.cs (2)
107var parentOperation = context.Operation.Parent; 128parentOperation = parentOperation.Parent;
Microsoft.CodeQuality.Analyzers\QualityGuidelines\AvoidInfiniteRecursion.cs (1)
71ancestor = ancestor.Parent;
Microsoft.CodeQuality.Analyzers\QualityGuidelines\AvoidMultipleEnumerations\AvoidMultipleEnumerations.DataFlowOperationVisitor.cs (1)
364return operation.Parent is IInvocationOperation invocationOperation
Microsoft.CodeQuality.Analyzers\QualityGuidelines\AvoidMultipleEnumerations\AvoidMultipleEnumerationsHelpers.cs (13)
34if (IsValidImplicitConversion(operation.Parent, wellKnownSymbolsInfo)) 43return VisitLinqChainAndCoversionMethod(operation.Parent, enumerationCount, wellKnownSymbolsInfo); 46if (IsOperationIsArgumentOfLinqChainInvocation(operation.Parent, wellKnownSymbolsInfo, out var enumerateArgument)) 51operation.Parent.Parent!, 64operation.Parent!, 104return operation.Parent is IForEachLoopOperation forEachLoopOperation && forEachLoopOperation.Collection == operation; 110if (operation.Parent is IInvocationOperation invocationOperation 128if (operation.Parent is IArgumentOperation parentArgumentOperation) 130if (parentArgumentOperation.Parent is IInvocationOperation grandParentInvocationOperation) 137else if (parentArgumentOperation.Parent is IObjectCreationOperation grandParentObjectCreationOperation) 150if (operation.Parent is IInvocationOperation { TargetMethod.MethodKind: MethodKind.ReducedExtension } parentInvocationOperation 272if (operation is IArgumentOperation { Parent: IInvocationOperation invocationOperation } argumentOperation)
Microsoft.CodeQuality.Analyzers\QualityGuidelines\DoNotPassDisposablesIntoUnawaitedTasks.cs (2)
102bool contextContainsDisposeCalls = localReferences.AnyWhere(r => r.Parent 192op.Parent is IInvocationOperation { TargetMethod.Name: "Wait" } or
Microsoft.CodeQuality.Analyzers\QualityGuidelines\MarkMembersAsStatic.cs (1)
109&& (context.Operation.Parent is not IInvocationOperation invocation || !invocation.TargetMethod.Equals(methodSymbol, SymbolEqualityComparer.Default)))
Microsoft.CodeQuality.Analyzers\QualityGuidelines\RethrowToPreserveStackDetails.cs (1)
67ancestor = ancestor.Parent;
Microsoft.NetCore.Analyzers\Data\ReviewSqlQueriesForSecurityVulnerabilities.cs (1)
112if (propertyReference.Parent is not IAssignmentOperation assignment)
Microsoft.NetCore.Analyzers\InteropServices\PlatformCompatibilityAnalyzer.cs (4)
1324if (operation.Parent is IEventAssignmentOperation eventAssignment) 1340if (operation.Parent is IArgumentOperation argumentOperation && UsedInCreatingNotSupportedException(argumentOperation, notSupportedExceptionType)) 1441if (operation.Parent is IObjectCreationOperation creation && 1774pOperation.Parent is IBinaryOperation bo &&
Microsoft.NetCore.Analyzers\Performance\AvoidPotentiallyExpensiveCallWhenLogging.cs (1)
418var isNegated = invocation.Parent is IUnaryOperation { OperatorKind: UnaryOperatorKind.Not };
Microsoft.NetCore.Analyzers\Performance\AvoidSingleUseOfLocalJsonSerializerOptions.cs (16)
84return operation.Parent is IArgumentOperation argumentOperation && 90return argumentOperation.Parent is IInvocationOperation invocationOperation && 165while (operation.Parent is IConditionalOperation conditionalOperation) 176while ((current = current?.Parent) is not null) 195if (operation.Parent is IArgumentOperation arg && arg.Parent is IInvocationOperation inv) 207IOperation? current = operation.Parent; 216current = current.Parent; 224IOperation? current = operation.Parent; 235while (tuple.Parent is ITupleOperation parent) 241current = tuple.WalkUpConversion().Parent; 294IOperation? currentOperation = operation.Parent; 309IOperation? tmpOperation = operation.Parent; 323tmpOperation = assignment.Parent; 332if (operation.Parent is IAssignmentOperation assignment) 352currentOperation = currentOperation.Parent;
Microsoft.NetCore.Analyzers\Performance\CollapseMultiplePathOperations.cs (3)
191var current = invocation.Parent; 198var grandParent = current.Parent; 211current = current.Parent;
Microsoft.NetCore.Analyzers\Performance\PreferConvertToHexStringOverBitConverter.cs (1)
306parentInvocation = invocation.Parent as IInvocationOperation;
Microsoft.NetCore.Analyzers\Performance\PreferDictionaryTryMethodsOverContainsKeyGuardAnalyzer.cs (15)
202if (invocation.Parent?.Parent is IBlockOperation block) 277if (operation.Parent is IUnaryOperation { OperatorKind: UnaryOperatorKind.Not }) 279operation = operation.Parent; 285var parentOperation = operation.Parent; 330switch (descendant.Parent) 358switch (indexer.Parent) 371inc.Parent is not IExpressionStatementOperation: 376Parent: IVariableDeclaratorOperation 378Parent: IVariableDeclarationOperation 380Parent: IVariableDeclarationGroupOperation declarationGroup 391Parent: IVariableDeclarationOperation 393Parent: IVariableDeclarationGroupOperation declarationGroup 409switch (descendant.Parent) 525foreach (var operation in sourceOperation.Parent!.Children)
Microsoft.NetCore.Analyzers\Performance\PreferHashDataOverComputeHash.cs (4)
149if (TryGetVariableInitializerOperation(objectCreationOperation.Parent, out var variableInitializerOperation)) 189if (TryGetVariableInitializerOperation(hashCreateInvocation.Parent, out var variableInitializerOperation)) 198switch (variableInitializerOperation.Parent) 247case IConversionOperation { Parent: IVariableInitializerOperation variableInitializerOperationAlt }:
Microsoft.NetCore.Analyzers\Performance\PreferReadOnlySpanOverSpan.cs (12)
142for (var current = reference.Parent; current is not null; current = current.Parent) 166if (invocation.Parent is IArgumentOperation arg) 191return propRef.Parent is IArgumentOperation arg && IsArgumentSafe(parameter, arg, readOnlySpan, readOnlyMemory, memoryExtensions); 283if (propRef.Parent is IAssignmentOperation assignment && assignment.Target == propRef) 289if (propRef.Parent is IIncrementOrDecrementOperation) 295if (propRef.Parent is IArgumentOperation argument && 303IVariableDeclaratorOperation? declarator = propRef.Parent as IVariableDeclaratorOperation; 304if (declarator is null && propRef.Parent is IVariableInitializerOperation initializer) 306declarator = initializer.Parent as IVariableDeclaratorOperation; 315if (propRef.Parent is IReturnOperation && containingMethod.ReturnsByRef) 331if (argument.Parent is IInvocationOperation invocation &&
Microsoft.NetCore.Analyzers\Performance\UseAsSpanInsteadOfRangeIndexer.cs (1)
166if (operationContext.Operation.Parent is not IConversionOperation conversionOperation)
Microsoft.NetCore.Analyzers\Performance\UseCountProperly.cs (4)
211IOperation? parentOperation = invocationOperation.WalkUpParentheses().WalkUpConversion().Parent; 221parentOperation = awaitOperation.WalkUpParentheses().WalkUpConversion().Parent; 247IOperation? parentOperation = propertyReferenceOperation.WalkUpParentheses().WalkUpConversion().Parent; 278argumentOperation.Parent is IInvocationOperation argumentParentInvocationOperation)
Microsoft.NetCore.Analyzers\Performance\UseSearchValues.cs (1)
79if (isStringIndexOfAny && invocation.Parent is IConditionalAccessOperation)
Microsoft.NetCore.Analyzers\Performance\UseSearchValues.Fixer.cs (1)
155argumentOperation.Parent is IInvocationOperation indexOfAnyOperation &&
Microsoft.NetCore.Analyzers\Runtime\AvoidConstArrays.cs (2)
67|| (argumentOperation.Parent is IObjectCreationOperation objectCreation && objectCreation.Type.Inherits(attributeType))) 168ancestor = ancestor!.Parent;
Microsoft.NetCore.Analyzers\Runtime\AvoidUnreliableStreamRead.cs (3)
68if (invocation.Parent is not IExpressionStatementOperation) 75if (invocation.Parent is not IAwaitOperation awaitOperation || 76awaitOperation.Parent is not IExpressionStatementOperation)
Microsoft.NetCore.Analyzers\Runtime\BufferBlockCopyLengthAnalyzer.cs (1)
151else if (variableDeclaratorOperation.Parent is IVariableDeclarationOperation variableDeclarationOperation &&
Microsoft.NetCore.Analyzers\Runtime\DisposableFieldsShouldBeDisposed.cs (1)
170if (fieldReference.Parent is ISimpleAssignmentOperation simpleAssignmentOperation &&
Microsoft.NetCore.Analyzers\Runtime\DoNotPassLiteralsAsLocalizedParameters.cs (2)
75switch (argument.Parent) 95if (propertyReference.Parent is IAssignmentOperation assignment &&
Microsoft.NetCore.Analyzers\Runtime\ForwardCancellationTokenToInvocations.Analyzer.cs (2)
202IOperation? currentOperation = invocation.Parent; 239currentOperation = currentOperation.Parent;
Microsoft.NetCore.Analyzers\Runtime\InstantiateArgumentExceptionsCorrectly.cs (2)
222var operation = creation.Parent; 242operation = operation.Parent;
Microsoft.NetCore.Analyzers\Runtime\PreferAsSpanOverSubstring.cs (1)
63if (symbols.IsAnySubstringInvocation(argument.Value.WalkDownConversion(c => c.IsImplicit)) && argument.Parent is IInvocationOperation invocation)
Microsoft.NetCore.Analyzers\Runtime\PreferConstCharOverConstUnitString.Fixer.cs (4)
67var variableDeclarationOperation = (IVariableDeclarationOperation?)variableDeclaratorOperation.Parent; 73var variableGroupDeclarationOperation = (IVariableDeclarationGroupOperation?)variableDeclarationOperation.Parent; 116IVariableDeclarationOperation variableDeclarationOperation = (IVariableDeclarationOperation)variableDeclaratorOperation.Parent!; 117IVariableDeclarationGroupOperation variableGroupDeclarationOperation = (IVariableDeclarationGroupOperation)variableDeclarationOperation.Parent!;
Microsoft.NetCore.Analyzers\Runtime\PreferStringContainsOverIndexOfAnalyzer.cs (4)
130var parent = localReference.Parent; 152var parent = invocationOperation.Parent; 163if (variableInitializer.Parent is IVariableDeclaratorOperation variableDeclaratorOperation) 167else if (variableInitializer.Parent is IVariableDeclarationOperation variableDeclarationOperation && variableDeclarationOperation.Declarators.Length == 1)
Microsoft.NetCore.Analyzers\Runtime\PreferTypedStringBuilderAppendOverloads.Fixer.cs (1)
57argOp.Parent is IInvocationOperation invocationOp &&
Microsoft.NetCore.Analyzers\Runtime\UseAsyncMethodInAsyncContext.cs (1)
160if (propertyReferenceOperation.Parent is not INameOfOperation)
Microsoft.NetCore.Analyzers\Runtime\UseExceptionThrowHelpers.cs (3)
164IConditionalOperation? condition = throwOperation.Parent as IConditionalOperation; 167if (throwOperation.Parent is IBlockOperation parentBlock && parentBlock.Children.Count() == 1) 169condition = parentBlock.Parent as IConditionalOperation;
Microsoft.NetCore.Analyzers\Runtime\UseStringEqualsOverStringCompare.Fixer.cs (1)
136return i.Instance?.Parent is IUnaryOperation { OperatorKind: UnaryOperatorKind.Not }
Microsoft.NetCore.Analyzers\Security\DataSetDataTableInIFormatterSerializableObjectGraphAnalyzer.cs (3)
101&& invocationOperation.Parent?.Kind == OperationKind.Conversion 102&& invocationOperation.Parent is IConversionOperation conversionOperation)) 129invocationOperation.Parent.Syntax.GetLocation(),
Microsoft.NetCore.Analyzers\Security\DataSetDataTableInSerializableObjectGraphAnalyzer.cs (4)
158&& invocationOperation.Parent?.Kind == OperationKind.Conversion 159&& invocationOperation.Parent is IConversionOperation javaScriptConversionOperation) 230else if (invocationOperation.Parent?.Kind == OperationKind.Conversion 231&& invocationOperation.Parent is IConversionOperation conversionOperation)
Microsoft.NetCore.Analyzers\Tasks\DoNotUseWhenAllOrWaitAllWithSingleArgumentFixer.cs (2)
84var currentOperation = operation.Parent; 93currentOperation = currentOperation.Parent;
Microsoft.NetCore.Analyzers\Tasks\UseValueTasksCorrectly.cs (17)
116if (invocation.Parent is IInvocationOperation parentIo) 126case nameof(ValueTask.GetAwaiter) when parentIo.Parent is IInvocationOperation { TargetMethod.Name: nameof(ValueTaskAwaiter.GetResult) }: 137else if (invocation.Parent is IPropertyReferenceOperation { Property.Name: nameof(ValueTask<int>.Result) }) 144while (operation.Parent != null) // for walking up the operation tree if necessary 146switch (operation.Parent.Kind) 159var arg = (IArgumentOperation)operation.Parent; 181case OperationKind.SimpleAssignment when operation.Parent is ISimpleAssignmentOperation sao && sao.Target is IDiscardOperation: 187var conversion = (IConversionOperation)operation.Parent; 191operation = operation.Parent; 205operation = operation.Parent; 221if (TryGetLocalSymbolAssigned(operation.Parent, out var valueTypeSymbol, out var startingBlock)) 390case OperationKind.VariableInitializer when operation.Parent is IVariableDeclaratorOperation decl: 439op.Parent?.Kind switch 445OperationKind.PropertyReference when op.Parent is IPropertyReferenceOperation { Property.Name: "Result" } => true, 523op.Parent?.Kind switch 525OperationKind.PropertyReference when op.Parent is IPropertyReferenceOperation { Property.Name: nameof(ValueTask<int>.Result) } => true, 526OperationKind.Invocation when op.Parent is IInvocationOperation { TargetMethod.Name: nameof(ValueTask.GetAwaiter) } => true,
Microsoft.NetCore.Analyzers\Usage\PreferGenericOverloads.cs (1)
193public IOperation? Parent => Invocation.Parent;
Microsoft.NetFramework.Analyzers\DoNotUseInsecureDtdProcessing.cs (1)
606else if (context.Operation?.Parent?.Kind != OperationKind.ObjectOrCollectionInitializer)
Microsoft.NetFramework.Analyzers\DoNotUseInsecureXSLTScriptExecution.cs (5)
185var invocationOrObjCreation = settingsOperation.Parent!.Parent!; 227env.XsltSettingsDefinition = lhs.Parent; 277env.XsltSettingsDefinition = lhs.Parent; 289env.XsltSettingsDefinition = lhs.Parent;
src\40daf5e1cab76dff\TaintedDataAnalysis.TaintedDataOperationVisitor.cs (1)
462if (operation.Parent is IInvocationOperation invocationOperation)
src\47c588c5b8785708\ParameterValidationAnalysis.ParameterValidationDataFlowOperationVisitor.cs (1)
160return operation.Parent switch
src\afc74d572e54ec72\DisposeAnalysis.DisposeDataFlowOperationVisitor.cs (3)
190if (operation.Parent is IInvocationOperation invocation && 339operation.Parent is IInvocationOperation invocation && 382return operation.Parent switch
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (2)
300if (operation.Parent != null) 302switch (operation.Parent.Kind)
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (1)
260if (operationBlock != null && operationBlock.Parent == null)
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Compiler\Extensions\IOperationExtensions.cs (34)
198return operation.Kind == OperationKind.None && operation.Parent == null; 215currentOperation = currentOperation.Parent; 234currentOperation = currentOperation.Parent; 257ancestor = ancestor.Parent; 291ancestor = ancestor.Parent; 330for (IOperation? current = operation; current != null && current.Kind != OperationKind.Block; current = current.Parent) 432while (operation.Parent != null) 434operation = operation.Parent; 563&& operation.GetAncestor(s_LambdaAndLocalFunctionKinds)?.Parent?.Type?.OriginalDefinition is { } lambdaType 603var currentOperation = tupleOperation.Parent; 612currentOperation = currentOperation.Parent; 694while (operation.Parent is IParenthesizedOperation parenthesizedOperation) 740while (operation.Parent is IConversionOperation conversionOperation) 839while (potentialLeftSide.Parent is IParenthesizedOperation or ITupleOperation) 841potentialLeftSide = potentialLeftSide.Parent; 844return potentialLeftSide.Parent switch 942switch (operation.Parent) 999if (operation.Parent is IAssignmentOperation assignmentOperation && 1002return operation.Parent.IsAnyCompoundAssignment() 1006else if (operation.Parent is IIncrementOrDecrementOperation) 1010else if (operation.Parent is IParenthesizedOperation parenthesizedOperation) 1018else if (operation.Parent is INameOfOperation or 1024else if (operation.Parent is IArgumentOperation argumentOperation) 1034else if (operation.Parent is IReturnOperation returnOperation) 1043else if (operation.Parent is IConditionalOperation conditionalOperation) 1055else if (operation.Parent is IReDimClauseOperation reDimClauseOperation && 1058return reDimClauseOperation.Parent is IReDimOperation { Preserve: true } 1062else if (operation.Parent is IDeclarationExpressionOperation declarationExpression) 1070else if (operation.Parent is IVariableInitializerOperation variableInitializerOperation && 1071variableInitializerOperation.Parent is IVariableDeclaratorOperation variableDeclaratorOperation) 1091operation = operation.Parent; 1105operation = operation.Parent; 1124operation = operation?.Parent; 1136operation = operation.Parent;
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\FlowAnalysis\Extensions\IOperationExtensions_FlowAnalysis.cs (1)
52=> flowCaptureReference.Parent is IAssignmentOperation assignment &&
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\FlowAnalysis\FlowAnalysis\Analysis\DisposeAnalysis\DisposeAnalysisHelper.cs (1)
159operation.Parent is IArgumentOperation argument && argument.Parameter?.RefKind == RefKind.Out) &&
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\AnalysisEntityFactory.cs (1)
163if (conditionalAccessInstance.Parent is IMemberReferenceOperation memberReferenceParent)
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 (6)
975=> operation.Parent is IInvocationOperation invocation && 1492var current = operation.Parent; 1499current = current.Parent; 1512var current = operation.Parent; 1519current = current.Parent; 2779var pendingArguments = _pendingArgumentsToPostProcess.ExtractAll(static (arg, operation) => arg.Parent == operation, operation);
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\LValueFlowCapturesProvider.cs (1)
65operations.Single().Parent?.Kind == OperationKind.FlowCapture)
Microsoft.CodeAnalysis.ResxSourceGenerator (50)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (2)
298if (operation.Parent != null) 300switch (operation.Parent.Kind)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (1)
258if (operationBlock != null && operationBlock.Parent == null)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (11)
122return operation is { Kind: OperationKind.None, Parent: null }; 142ancestor = ancestor.Parent; 176ancestor = ancestor.Parent; 215for (IOperation? current = operation; current != null && current.Kind != OperationKind.Block; current = current.Parent) 260while (operation.Parent != null) 262operation = operation.Parent; 416var currentOperation = tupleOperation.Parent; 425currentOperation = currentOperation.Parent; 478while (potentialLeftSide.Parent is IParenthesizedOperation or ITupleOperation) 480potentialLeftSide = potentialLeftSide.Parent; 483return potentialLeftSide.Parent switch
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (24)
19=> operation.Parent is IAssignmentOperation assignmentOperation && 21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 66while (operation.Parent is IBinaryPatternOperation or INegatedPatternOperation or IRelationalPatternOperation) 67operation = operation.Parent; 69switch (operation.Parent) 130if (operation.Parent is IAssignmentOperation assignmentOperation && 133return operation.Parent.IsAnyCompoundAssignment() 137else if (operation.Parent is ISimpleAssignmentOperation { IsRef: true } simpleAssignmentOperation && 142else if (operation.Parent is IIncrementOrDecrementOperation) 146else if (operation.Parent is IForToLoopOperation forToLoopOperation && forToLoopOperation.LoopControlVariable.Equals(operation)) 150else if (operation.Parent is IParenthesizedOperation parenthesizedOperation) 158else if (operation.Parent is INameOfOperation or ITypeOfOperation or ISizeOfOperation) 162else if (operation.Parent is IArgumentOperation argumentOperation) 179else if (operation.Parent is IReturnOperation returnOperation) 188else if (operation.Parent is IConditionalOperation conditionalOperation) 200else if (operation.Parent is IReDimClauseOperation reDimClauseOperation && 203return reDimClauseOperation.Parent is IReDimOperation { Preserve: true } 207else if (operation.Parent is IDeclarationExpressionOperation declarationExpression) 215else if (operation.Parent is IVariableInitializerOperation variableInitializerOperation) 217if (variableInitializerOperation.Parent is IVariableDeclaratorOperation variableDeclaratorOperation) 241operation = operation?.Parent; 253operation = operation.Parent; 264var current = operation.Parent; 278current = current.Parent;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SymbolUsageInfo.cs (1)
203if (operation?.Parent is INameOfOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (2)
56if (flowCaptureReference.Parent is IAssignmentOperation assignment && 61var captureKind = flowCaptureReference.Parent.IsAnyCompoundAssignment() || rvalueFlowCaptureIds.Contains(flowCaptureReference.Id)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (9)
130if (operation.Parent is IFlowCaptureOperation flowCapture && 152if (operation.Parent is IIncrementOrDecrementOperation && 153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 163if (operation.Parent is IAssignmentOperation assignmentOperation && 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 271operation.Parent is IForEachLoopOperation forEachLoop && forEachLoop.LoopControlVariable == operation || 272operation.Parent is ICatchClauseOperation catchClause && catchClause.ExceptionDeclarationOrExpression == operation) 420else if (write.Parent is ISimpleAssignmentOperation simpleAssignment)
Microsoft.CodeAnalysis.VisualBasic.CodeStyle (1)
src\roslyn\src\Analyzers\VisualBasic\Analyzers\SimplifyLinqExpression\VisualBasicSimplifyLinqExpressionDiagnosticAnalyzer.vb (1)
28Return TryCast(invocation.Parent, IInvocationOperation)
Microsoft.CodeAnalysis.VisualBasic.Features (1)
src\roslyn\src\Analyzers\VisualBasic\Analyzers\SimplifyLinqExpression\VisualBasicSimplifyLinqExpressionDiagnosticAnalyzer.vb (1)
28Return TryCast(invocation.Parent, IInvocationOperation)
Microsoft.CodeAnalysis.VisualBasic.NetAnalyzers (2)
Microsoft.NetCore.Analyzers\Runtime\BasicUseSpanBasedStringConcat.vb (2)
18Dim parentBinaryOperation = TryCast(WalkUpImplicitConversionToObject(binaryOperation.Parent), IBinaryOperation) 38Return conversion.Parent
Microsoft.CodeAnalysis.Workspaces (38)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (24)
19=> operation.Parent is IAssignmentOperation assignmentOperation && 21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 66while (operation.Parent is IBinaryPatternOperation or INegatedPatternOperation or IRelationalPatternOperation) 67operation = operation.Parent; 69switch (operation.Parent) 130if (operation.Parent is IAssignmentOperation assignmentOperation && 133return operation.Parent.IsAnyCompoundAssignment() 137else if (operation.Parent is ISimpleAssignmentOperation { IsRef: true } simpleAssignmentOperation && 142else if (operation.Parent is IIncrementOrDecrementOperation) 146else if (operation.Parent is IForToLoopOperation forToLoopOperation && forToLoopOperation.LoopControlVariable.Equals(operation)) 150else if (operation.Parent is IParenthesizedOperation parenthesizedOperation) 158else if (operation.Parent is INameOfOperation or ITypeOfOperation or ISizeOfOperation) 162else if (operation.Parent is IArgumentOperation argumentOperation) 179else if (operation.Parent is IReturnOperation returnOperation) 188else if (operation.Parent is IConditionalOperation conditionalOperation) 200else if (operation.Parent is IReDimClauseOperation reDimClauseOperation && 203return reDimClauseOperation.Parent is IReDimOperation { Preserve: true } 207else if (operation.Parent is IDeclarationExpressionOperation declarationExpression) 215else if (operation.Parent is IVariableInitializerOperation variableInitializerOperation) 217if (variableInitializerOperation.Parent is IVariableDeclaratorOperation variableDeclaratorOperation) 241operation = operation?.Parent; 253operation = operation.Parent; 264var current = operation.Parent; 278current = current.Parent;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SymbolUsageInfo.cs (1)
203if (operation?.Parent is INameOfOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (2)
56if (flowCaptureReference.Parent is IAssignmentOperation assignment && 61var captureKind = flowCaptureReference.Parent.IsAnyCompoundAssignment() || rvalueFlowCaptureIds.Contains(flowCaptureReference.Id)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (9)
130if (operation.Parent is IFlowCaptureOperation flowCapture && 152if (operation.Parent is IIncrementOrDecrementOperation && 153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 163if (operation.Parent is IAssignmentOperation assignmentOperation && 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 271operation.Parent is IForEachLoopOperation forEachLoop && forEachLoop.LoopControlVariable == operation || 272operation.Parent is ICatchClauseOperation catchClause && catchClause.ExceptionDeclarationOrExpression == operation) 420else if (write.Parent is ISimpleAssignmentOperation simpleAssignment)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (2)
37rootOperation.Parent is not null) 39rootOperation = rootOperation.Parent;
Roslyn.Diagnostics.Analyzers (58)
PooledArrayBuilderAsRefAnalyzer.cs (3)
72if (declaration is not { Parent: IVariableDeclarationOperation { Parent: IVariableDeclarationGroupOperation { Parent: IUsingOperation or IUsingDeclarationOperation } } })
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (2)
298if (operation.Parent != null) 300switch (operation.Parent.Kind)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (1)
258if (operationBlock != null && operationBlock.Parent == null)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (11)
122return operation is { Kind: OperationKind.None, Parent: null }; 142ancestor = ancestor.Parent; 176ancestor = ancestor.Parent; 215for (IOperation? current = operation; current != null && current.Kind != OperationKind.Block; current = current.Parent) 260while (operation.Parent != null) 262operation = operation.Parent; 416var currentOperation = tupleOperation.Parent; 425currentOperation = currentOperation.Parent; 478while (potentialLeftSide.Parent is IParenthesizedOperation or ITupleOperation) 480potentialLeftSide = potentialLeftSide.Parent; 483return potentialLeftSide.Parent switch
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (24)
19=> operation.Parent is IAssignmentOperation assignmentOperation && 21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 66while (operation.Parent is IBinaryPatternOperation or INegatedPatternOperation or IRelationalPatternOperation) 67operation = operation.Parent; 69switch (operation.Parent) 130if (operation.Parent is IAssignmentOperation assignmentOperation && 133return operation.Parent.IsAnyCompoundAssignment() 137else if (operation.Parent is ISimpleAssignmentOperation { IsRef: true } simpleAssignmentOperation && 142else if (operation.Parent is IIncrementOrDecrementOperation) 146else if (operation.Parent is IForToLoopOperation forToLoopOperation && forToLoopOperation.LoopControlVariable.Equals(operation)) 150else if (operation.Parent is IParenthesizedOperation parenthesizedOperation) 158else if (operation.Parent is INameOfOperation or ITypeOfOperation or ISizeOfOperation) 162else if (operation.Parent is IArgumentOperation argumentOperation) 179else if (operation.Parent is IReturnOperation returnOperation) 188else if (operation.Parent is IConditionalOperation conditionalOperation) 200else if (operation.Parent is IReDimClauseOperation reDimClauseOperation && 203return reDimClauseOperation.Parent is IReDimOperation { Preserve: true } 207else if (operation.Parent is IDeclarationExpressionOperation declarationExpression) 215else if (operation.Parent is IVariableInitializerOperation variableInitializerOperation) 217if (variableInitializerOperation.Parent is IVariableDeclaratorOperation variableDeclaratorOperation) 241operation = operation?.Parent; 253operation = operation.Parent; 264var current = operation.Parent; 278current = current.Parent;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SymbolUsageInfo.cs (1)
203if (operation?.Parent is INameOfOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (2)
56if (flowCaptureReference.Parent is IAssignmentOperation assignment && 61var captureKind = flowCaptureReference.Parent.IsAnyCompoundAssignment() || rvalueFlowCaptureIds.Contains(flowCaptureReference.Id)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (9)
130if (operation.Parent is IFlowCaptureOperation flowCapture && 152if (operation.Parent is IIncrementOrDecrementOperation && 153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 163if (operation.Parent is IAssignmentOperation assignmentOperation && 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 271operation.Parent is IForEachLoopOperation forEachLoop && forEachLoop.LoopControlVariable == operation || 272operation.Parent is ICatchClauseOperation catchClause && catchClause.ExceptionDeclarationOrExpression == operation) 420else if (write.Parent is ISimpleAssignmentOperation simpleAssignment)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Utilities\NullableHelpers.cs (2)
37rootOperation.Parent is not null) 39rootOperation = rootOperation.Parent;
TemporaryArrayAsRefAnalyzer.cs (3)
70if (declaration is not { Parent: IVariableDeclarationOperation { Parent: IVariableDeclarationGroupOperation { Parent: IUsingOperation or IUsingDeclarationOperation } } })
Roslyn.Diagnostics.CSharp.Analyzers (13)
CSharpDoNotCapturePrimaryContructorParameters.cs (2)
49for (; rootOperation.Parent != null; rootOperation = rootOperation.Parent)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (11)
92Parent.Kind: OperationKind.DelegateCreation, 96var current = castExpressionOperation.Parent.Parent; 98current = current.Parent; 107if (current.Parent is IConversionOperation { Type: { } parentConversionType, IsImplicit: false } && 267if (rewrittenOperation.Parent is not IDelegateCreationOperation rewrittenDelegateCreationOperation) 278if (originalDelegateCreationOperation.Parent is IConversionOperation conversionOperation && 405if (originalConversionOperation.Parent is IConversionOperation { Conversion.IsUserDefined: true } originalParentConversionOperation) 774if (originalConversionOperation.Parent is not IConversionOperation outerOriginalConversionOperation) 827if (rewrittenOperation.Parent is not IConversionOperation rewrittenBitwiseNotConversionOperation) 982if (rewrittenOperation.Parent is IConversionOperation conditionalParentConversion &&
System.Private.CoreLib.Generators (1)
IntrinsicsInSystemPrivateCoreLibAnalyzer.cs (1)
506operationSearch = operationSearch.Parent;