1 implementation of Parent
Microsoft.CodeAnalysis (1)
Operations\Operation.cs (1)
49public IOperation? Parent
280 references to Parent
Microsoft.CodeAnalysis (29)
DiagnosticAnalyzer\AnalyzerDriver.cs (13)
2828if (operationBlock.Parent != null) 2830switch (operationBlock.Parent.Kind) 2834Debug.Assert(!operationBlock.Parent.IsImplicit); 2835operationsToAnalyze.Add(operationBlock.Parent); 2841Debug.Assert(operationBlock.Parent.IsImplicit); 2842Debug.Assert(operationBlock.Parent.Parent is IConstructorBodyOperation ctorBody && 2843ctorBody.Initializer == operationBlock.Parent); 2844Debug.Assert(!operationBlock.Parent.Parent.IsImplicit); 2846operationsToAnalyze.Add(operationBlock.Parent.Parent); 2851Debug.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)
1462Debug.Assert(operation.Parent == null);
Operations\ControlFlowGraph.cs (1)
180if (operation.Parent != null)
Operations\ControlFlowGraphBuilder.cs (4)
95Debug.Assert(body.Parent == null); 3086Debug.Assert(operation.Parent != null); 3087bool isStatement = _currentStatement == operation || operation.Parent.Kind == OperationKind.ExpressionStatement; 3350bool isOnStatementLevel = _currentStatement == operation || (_currentStatement == operation.Parent && _currentStatement?.Kind == OperationKind.ExpressionStatement);
Operations\ControlFlowGraphBuilder.InterpolatedStringContext.cs (2)
52IOperation? operation = placeholderOperation.Parent; 55operation = operation.Parent;
Operations\Operation.cs (1)
179Debug.Assert((object?)child.Parent == parent);
Operations\OperationExtensions.cs (5)
180return declarationOperation.Initializer ?? (declarationOperation.Parent as IVariableDeclarationOperation)?.Initializer; 336while (operation.Parent != null) 338operation = operation.Parent; 373for (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.CodeStyle (61)
AbstractConvertTypeOfToNameOfDiagnosticAnalyzer.cs (2)
61if (operation.Parent is not IPropertyReferenceOperation) 67var operationParent = (IPropertyReferenceOperation)operation.Parent;
AbstractQualifyMemberAccessDiagnosticAnalyzer.cs (1)
94if (context.Operation.Parent?.Kind == OperationKind.PropertySubpattern)
AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (6)
286Debug.Assert(memberReference.Parent is ICompoundAssignmentOperation compoundAssignment && 288memberReference.Parent is ICoalesceAssignmentOperation coalesceAssignment && 290memberReference.Parent is IIncrementOrDecrementOperation || 291memberReference.Parent is IReDimClauseOperation reDimClause && reDimClause.Operand == memberReference); 308if (memberReference.Parent.Parent is IExpressionStatementOperation)
AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (9)
231if (operation.Parent is IVariableInitializerOperation) 240if (operation.Parent is ISimpleAssignmentOperation assignment && 251operation.Parent is IDelegateCreationOperation) 253return IsHandledDelegateCreationOrAnonymousFunctionTreeShape(operation.Parent); 286if (operation.Parent is IInvocationOperation) 291if (operation.Parent is ISimpleAssignmentOperation assignmentOperation) 319if (operation.Parent is IBinaryOperation) 602if (unusedSymbolWriteOperation.Parent is IAssignmentOperation assignment && 607else if (unusedSymbolWriteOperation.Parent is IIncrementOrDecrementOperation)
AbstractSimplifyInterpolationHelpers.cs (6)
58if (towardsParent && expression?.Parent is null) 64expression = towardsParent ? expression.Parent : parenthesized.Operand; 67expression = towardsParent ? expression.Parent : conversion.Operand; 162return Unwrap(interpolatedStringOperation?.Parent, towardsParent: true) is IArgumentOperation 164Parent: IInvocationOperation 179for (var current = operation; current is not null; current = current.Parent)
AbstractUseThrowExpressionDiagnosticAnalyzer.cs (1)
103if (ifOperation.Parent is not IBlockOperation containingBlock)
LValueFlowCaptureProvider.cs (2)
56if (flowCaptureReference.Parent is IAssignmentOperation assignment && 61var captureKind = flowCaptureReference.Parent.IsAnyCompoundAssignment() || rvalueFlowCaptureIds.Contains(flowCaptureReference.Id)
OperationExtensions.cs (24)
19=> operation.Parent is IAssignmentOperation assignmentOperation && 21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 58while (operation.Parent is IBinaryPatternOperation or 62operation = operation.Parent; 65switch (operation.Parent) 122if (operation.Parent is IAssignmentOperation assignmentOperation && 125return operation.Parent.IsAnyCompoundAssignment() 129else if (operation.Parent is ISimpleAssignmentOperation simpleAssignmentOperation && 135else if (operation.Parent is IIncrementOrDecrementOperation || (operation.Parent is IForToLoopOperation forToLoopOperation && forToLoopOperation.LoopControlVariable.Equals(operation))) 139else if (operation.Parent is IParenthesizedOperation parenthesizedOperation) 147else if (operation.Parent is INameOfOperation or 153else if (operation.Parent is IArgumentOperation argumentOperation) 170else if (operation.Parent is IReturnOperation returnOperation) 179else if (operation.Parent is IConditionalOperation conditionalOperation) 191else if (operation.Parent is IReDimClauseOperation reDimClauseOperation && 194return (reDimClauseOperation.Parent as IReDimOperation)?.Preserve == true 198else if (operation.Parent is IDeclarationExpressionOperation declarationExpression) 206else if (operation.Parent is IVariableInitializerOperation variableInitializerOperation) 208if (variableInitializerOperation.Parent is IVariableDeclaratorOperation variableDeclaratorOperation) 232operation = operation?.Parent; 244operation = operation.Parent; 255var current = operation.Parent; 269current = current.Parent;
SymbolUsageAnalysis.Walker.cs (9)
131if (operation.Parent is IFlowCaptureOperation flowCapture && 153if (operation.Parent is IIncrementOrDecrementOperation && 154operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 164if (operation.Parent is IAssignmentOperation assignmentOperation && 192operation.Parent?.Kind != OperationKind.ExpressionStatement; 264operation.Parent is IForEachLoopOperation forEachLoop && forEachLoop.LoopControlVariable == operation || 265operation.Parent is ICatchClauseOperation catchClause && catchClause.ExceptionDeclarationOrExpression == operation) 393else if (write.Parent is ISimpleAssignmentOperation simpleAssignment)
UseConditionalExpressionForReturnHelpers.cs (1)
49if (ifOperation.Parent is not IBlockOperation parentBlock)
Microsoft.CodeAnalysis.CodeStyle.Fixes (1)
AbstractUseConditionalExpressionForAssignmentCodeFixProvider.cs (1)
189if (ifOperation.Parent is not IBlockOperation parentBlock)
Microsoft.CodeAnalysis.CSharp.CodeStyle (15)
CastSimplifier.cs (9)
91Parent.Kind: OperationKind.DelegateCreation, 92Parent.Parent: IConversionOperation { Type.SpecialType: SpecialType.System_Object } conversionOperation 100if (conversionOperation.Parent is IConversionOperation { Type: { } parentConversionType } && 259if (rewrittenOperation.Parent is not IDelegateCreationOperation rewrittenDelegateCreationOperation) 366if (originalConversionOperation.Parent is IConversionOperation { Conversion.IsUserDefined: true } originalParentConversion && 599if (originalConversionOperation.Parent is not IConversionOperation outerOriginalConversionOperation) 652if (rewrittenOperation.Parent is not IConversionOperation rewrittenBitwiseNotConversionOperation) 741if (rewrittenConditionalOperation.Parent is IConversionOperation conditionalParentConversion &&
CSharpMakeStructMemberReadOnlyAnalyzer.cs (3)
168for (var operation = instanceOperation.Parent; operation != null; operation = operation.Parent) 205if (operation.Parent is IEventAssignmentOperation)
CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (1)
83=> expressionStatementOperation.Parent is IBlockOperation blockOperation &&
CSharpSimplifyLinqExpressionDiagnosticAnalyzer.cs (2)
22=> invocation.Parent is IArgumentOperation argument && 23argument.Parent is IInvocationOperation nextInvocation
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (4)
NullableHelpers.cs (2)
32rootOperation.Parent is not null) 34rootOperation = rootOperation.Parent;
UseUtf8StringLiteralCodeFixProvider.cs (2)
67var isConvertedToReadOnlySpan = arrayOp.Parent is IConversionOperation conversion && 136operation = operation.Parent!;
Microsoft.CodeAnalysis.CSharp.EditorFeatures.UnitTests (1)
Diagnostics\Suppression\RemoveUnnecessaryPragmaSuppressionsTests.cs (1)
84if (localReference.Parent is ISimpleAssignmentOperation simpleAssignment &&
Microsoft.CodeAnalysis.CSharp.Emit.UnitTests (5)
CodeGen\CodeGenLocalFunctionTests.cs (5)
161Assert.Equal(OperationKind.ExpressionStatement, objectCreationOperation.Parent.Kind); 162Assert.Equal(OperationKind.Block, objectCreationOperation.Parent.Parent.Kind); 163Assert.Same(localFunctionOperation.IgnoredBody, objectCreationOperation.Parent.Parent);
Microsoft.CodeAnalysis.CSharp.Features (8)
CSharpMakeStructMemberReadOnlyAnalyzer.cs (3)
168for (var operation = instanceOperation.Parent; operation != null; operation = operation.Parent) 205if (operation.Parent is IEventAssignmentOperation)
CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (1)
83=> expressionStatementOperation.Parent is IBlockOperation blockOperation &&
CSharpSimplifyLinqExpressionDiagnosticAnalyzer.cs (2)
22=> invocation.Parent is IArgumentOperation argument && 23argument.Parent is IInvocationOperation nextInvocation
UseUtf8StringLiteralCodeFixProvider.cs (2)
67var isConvertedToReadOnlySpan = arrayOp.Parent is IConversionOperation conversion && 136operation = operation.Parent!;
Microsoft.CodeAnalysis.CSharp.IOperation.UnitTests (3)
IOperation\IOperationTests.cs (3)
514Assert.Null(operation.Parent); 687if (operation.Parent == null) 694operation = operation.Parent;
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (48)
Semantics\OutVarTests.cs (22)
3516Assert.Null(initializerOperation.Parent.Parent.Parent); 3517VerifyOperationTree(compilation, initializerOperation.Parent.Parent, @" 35940Assert.Equal(OperationKind.ExpressionStatement, initializerOperation.Parent.Kind); 35963Assert.Equal(OperationKind.ConstructorBody, blockBodyOperation.Parent.Kind); 35964Assert.Same(initializerOperation.Parent.Parent, blockBodyOperation.Parent); 35965Assert.Null(blockBodyOperation.Parent.Parent); 35988Assert.Same(blockBodyOperation.Parent, model.GetOperation(expressionBodySyntax).Parent); 35992Assert.Same(blockBodyOperation.Parent, model.GetOperation(declarationSyntax)); 36084Assert.Equal(OperationKind.MethodBody, expressionBodyOperation.Parent.Kind); 36085Assert.Null(expressionBodyOperation.Parent.Parent); 36109Assert.Same(expressionBodyOperation.Parent, blockBodyOperation.Parent); 36117Assert.Same(expressionBodyOperation.Parent, model.GetOperation(declarationSyntax)); 36191Assert.Null(model.GetOperation(node3).Parent);
Semantics\PrimaryConstructorTests.cs (9)
1021Assert.Same(operation.Parent.Parent, model.GetOperation(baseWithargs.Parent.Parent)); 1024VerifyOperationTree(comp, operation.Parent.Parent, 1048Assert.Null(operation.Parent.Parent.Parent); 1049VerifyFlowGraph(comp, operation.Parent.Parent.Syntax, @"
Semantics\RecordTests.cs (9)
21213Assert.Same(operation.Parent.Parent, model.GetOperation(baseWithargs.Parent.Parent)); 21216VerifyOperationTree(comp, operation.Parent.Parent, 21240Assert.Null(operation.Parent.Parent.Parent); 21241VerifyFlowGraph(comp, operation.Parent.Parent.Syntax, @"
Semantics\TopLevelStatementsTests.cs (8)
204Assert.NotNull(ControlFlowGraph.Create((IMethodBodyOperation)((IBlockOperation)operation1.Parent.Parent).Parent)); 332Assert.NotNull(ControlFlowGraph.Create((IMethodBodyOperation)((IBlockOperation)operation1.Parent.Parent).Parent)); 370Assert.NotNull(ControlFlowGraph.Create((IMethodBodyOperation)((IBlockOperation)operation2.Parent).Parent));
Microsoft.CodeAnalysis.CSharp.Test.Utilities (1)
CompilationTestUtils.cs (1)
376if (iop is { Parent: IConversionOperation parentConversion })
Microsoft.CodeAnalysis.CSharp.Workspaces (11)
CastSimplifier.cs (9)
91Parent.Kind: OperationKind.DelegateCreation, 92Parent.Parent: IConversionOperation { Type.SpecialType: SpecialType.System_Object } conversionOperation 100if (conversionOperation.Parent is IConversionOperation { Type: { } parentConversionType } && 259if (rewrittenOperation.Parent is not IDelegateCreationOperation rewrittenDelegateCreationOperation) 366if (originalConversionOperation.Parent is IConversionOperation { Conversion.IsUserDefined: true } originalParentConversion && 599if (originalConversionOperation.Parent is not IConversionOperation outerOriginalConversionOperation) 652if (rewrittenOperation.Parent is not IConversionOperation rewrittenBitwiseNotConversionOperation) 741if (rewrittenConditionalOperation.Parent is IConversionOperation conditionalParentConversion &&
NullableHelpers.cs (2)
32rootOperation.Parent is not null) 34rootOperation = rootOperation.Parent;
Microsoft.CodeAnalysis.Features (30)
AbstractConvertTypeOfToNameOfDiagnosticAnalyzer.cs (2)
61if (operation.Parent is not IPropertyReferenceOperation) 67var operationParent = (IPropertyReferenceOperation)operation.Parent;
AbstractQualifyMemberAccessDiagnosticAnalyzer.cs (1)
94if (context.Operation.Parent?.Kind == OperationKind.PropertySubpattern)
AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (6)
286Debug.Assert(memberReference.Parent is ICompoundAssignmentOperation compoundAssignment && 288memberReference.Parent is ICoalesceAssignmentOperation coalesceAssignment && 290memberReference.Parent is IIncrementOrDecrementOperation || 291memberReference.Parent is IReDimClauseOperation reDimClause && reDimClause.Operand == memberReference); 308if (memberReference.Parent.Parent is IExpressionStatementOperation)
AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (9)
231if (operation.Parent is IVariableInitializerOperation) 240if (operation.Parent is ISimpleAssignmentOperation assignment && 251operation.Parent is IDelegateCreationOperation) 253return IsHandledDelegateCreationOrAnonymousFunctionTreeShape(operation.Parent); 286if (operation.Parent is IInvocationOperation) 291if (operation.Parent is ISimpleAssignmentOperation assignmentOperation) 319if (operation.Parent is IBinaryOperation) 602if (unusedSymbolWriteOperation.Parent is IAssignmentOperation assignment && 607else if (unusedSymbolWriteOperation.Parent is IIncrementOrDecrementOperation)
AbstractSimplifyInterpolationHelpers.cs (6)
58if (towardsParent && expression?.Parent is null) 64expression = towardsParent ? expression.Parent : parenthesized.Operand; 67expression = towardsParent ? expression.Parent : conversion.Operand; 162return Unwrap(interpolatedStringOperation?.Parent, towardsParent: true) is IArgumentOperation 164Parent: IInvocationOperation 179for (var current = operation; current is not null; current = current.Parent)
AbstractUseConditionalExpressionForAssignmentCodeFixProvider.cs (1)
189if (ifOperation.Parent is not IBlockOperation parentBlock)
AbstractUseThrowExpressionDiagnosticAnalyzer.cs (1)
103if (ifOperation.Parent is not IBlockOperation containingBlock)
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.cs (1)
88if (ifOperation is not IConditionalOperation { Parent: IBlockOperation parentBlock })
UseConditionalExpressionForReturnHelpers.cs (1)
49if (ifOperation.Parent is not IBlockOperation parentBlock)
ValueTracking\ValueTracker.cs (1)
154operation = operation.Parent;
ValueTracking\ValueTracker.OperationCollector.cs (1)
294operation = operation.Parent;
Microsoft.CodeAnalysis.Test.Utilities (25)
CommonTestBase.cs (1)
550Assert.Equal(child.Parent, parent);
Compilation\CompilationExtensions.cs (1)
313if (operation.Parent == null)
Compilation\ControlFlowGraphVerifier.cs (15)
34(operationRoot.Parent?.Kind == OperationKind.ConstructorBody || 35operationRoot.Parent?.Kind == OperationKind.MethodBody) ? 36operationRoot.Parent : 937containingArgument = containingArgument.Parent; 944Parent: IObjectCreationOperation 946Parent: IFlowCaptureOperation, 969Parent: IInvocationOperation 982if (reference.Parent is IBinaryOperation binOp) 1034if (reference.Parent is ISimpleAssignmentOperation assignment && 1080if (operation.Parent == null && operation is IsNullOperation isNull && isNull.Operand.Kind == OperationKind.FlowCaptureReference) 1656Assert.Null(root.Parent); 1664Assert.NotNull(operation.Parent); 1918n.Parent is IPropertyReferenceOperation propertyReference && 1920propertyReference.Parent is ISimpleAssignmentOperation simpleAssignment && 1922simpleAssignment.Parent.Kind == OperationKind.AnonymousObjectCreation);
Compilation\OperationTreeVerifier.cs (2)
1031if (operation.Parent is IMemberReferenceOperation memberReference && memberReference.Instance == operation) 1035else if (operation.Parent is IInvocationOperation invocation && invocation.Instance == operation)
Compilation\TestOperationVisitor.cs (4)
56Assert.Equal(LanguageNames.CSharp, operation.Parent.Language); 184Assert.NotNull(root.Parent); 185Assert.Same(root, ((SwitchCaseOperation)root.Parent).Condition); 189Assert.Null(root.Parent);
Diagnostics\CouldHaveMoreSpecificTypeAnalyzer.cs (2)
105if (initializer.Parent is IVariableDeclaratorOperation singleVariableDeclaration) 110else if (initializer.Parent is IVariableDeclarationOperation multiVariableDeclaration)
Microsoft.CodeAnalysis.VisualBasic.CodeStyle (1)
VisualBasicSimplifyLinqExpressionDiagnosticAnalyzer.vb (1)
22Return TryCast(invocation.Parent, IInvocationOperation)
Microsoft.CodeAnalysis.VisualBasic.Features (1)
VisualBasicSimplifyLinqExpressionDiagnosticAnalyzer.vb (1)
22Return TryCast(invocation.Parent, IInvocationOperation)
Microsoft.CodeAnalysis.Workspaces (36)
FindSymbols\FindReferences\Finders\AbstractReferenceFinder.cs (1)
667switch (operation?.Parent)
LValueFlowCaptureProvider.cs (2)
56if (flowCaptureReference.Parent is IAssignmentOperation assignment && 61var captureKind = flowCaptureReference.Parent.IsAnyCompoundAssignment() || rvalueFlowCaptureIds.Contains(flowCaptureReference.Id)
OperationExtensions.cs (24)
19=> operation.Parent is IAssignmentOperation assignmentOperation && 21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 58while (operation.Parent is IBinaryPatternOperation or 62operation = operation.Parent; 65switch (operation.Parent) 122if (operation.Parent is IAssignmentOperation assignmentOperation && 125return operation.Parent.IsAnyCompoundAssignment() 129else if (operation.Parent is ISimpleAssignmentOperation simpleAssignmentOperation && 135else if (operation.Parent is IIncrementOrDecrementOperation || (operation.Parent is IForToLoopOperation forToLoopOperation && forToLoopOperation.LoopControlVariable.Equals(operation))) 139else if (operation.Parent is IParenthesizedOperation parenthesizedOperation) 147else if (operation.Parent is INameOfOperation or 153else if (operation.Parent is IArgumentOperation argumentOperation) 170else if (operation.Parent is IReturnOperation returnOperation) 179else if (operation.Parent is IConditionalOperation conditionalOperation) 191else if (operation.Parent is IReDimClauseOperation reDimClauseOperation && 194return (reDimClauseOperation.Parent as IReDimOperation)?.Preserve == true 198else if (operation.Parent is IDeclarationExpressionOperation declarationExpression) 206else if (operation.Parent is IVariableInitializerOperation variableInitializerOperation) 208if (variableInitializerOperation.Parent is IVariableDeclaratorOperation variableDeclaratorOperation) 232operation = operation?.Parent; 244operation = operation.Parent; 255var current = operation.Parent; 269current = current.Parent;
SymbolUsageAnalysis.Walker.cs (9)
131if (operation.Parent is IFlowCaptureOperation flowCapture && 153if (operation.Parent is IIncrementOrDecrementOperation && 154operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 164if (operation.Parent is IAssignmentOperation assignmentOperation && 192operation.Parent?.Kind != OperationKind.ExpressionStatement; 264operation.Parent is IForEachLoopOperation forEachLoop && forEachLoop.LoopControlVariable == operation || 265operation.Parent is ICatchClauseOperation catchClause && catchClause.ExceptionDeclarationOrExpression == operation) 393else if (write.Parent is ISimpleAssignmentOperation simpleAssignment)