102 interfaces inheriting from IOperation
Microsoft.CodeAnalysis (102)
Generated\FlowAnalysis.Generated.cs (6)
26public interface IFlowCaptureOperation : IOperation 50public interface IFlowCaptureReferenceOperation : IOperation 76public interface IIsNullOperation : IOperation 95public interface ICaughtExceptionOperation : IOperation 112public interface IStaticLocalInitializationSemaphoreOperation : IOperation 137public interface IFlowAnonymousFunctionOperation : IOperation
Generated\Operations.Generated.cs (96)
34public interface IInvalidOperation : IOperation 53public interface IBlockOperation : IOperation 84public interface IVariableDeclarationGroupOperation : IOperation 110public interface ISwitchOperation : IOperation 141public interface ILoopOperation : IOperation 319public interface ILabeledOperation : IOperation 346public interface IBranchOperation : IOperation 372public interface IEmptyOperation : IOperation 393public interface IReturnOperation : IOperation 416public interface ILockOperation : IOperation 443public interface ITryOperation : IOperation 478public interface IUsingOperation : IOperation 514public interface IExpressionStatementOperation : IOperation 536public interface ILocalFunctionOperation : IOperation 572public interface IStopOperation : IOperation 590public interface IEndOperation : IOperation 608public interface IRaiseEventOperation : IOperation 639public interface ILiteralOperation : IOperation 658public interface IConversionOperation : IOperation 715public interface IInvocationOperation : IOperation 759public interface IArrayElementReferenceOperation : IOperation 786public interface ILocalReferenceOperation : IOperation 814public interface IParameterReferenceOperation : IOperation 833public interface IMemberReferenceOperation : IOperation 978public interface IUnaryOperation : IOperation 1026public interface IBinaryOperation : IOperation 1085public interface IConditionalOperation : IOperation 1122public interface ICoalesceOperation : IOperation 1156public interface IAnonymousFunctionOperation : IOperation 1183public interface IObjectCreationOperation : IOperation 1218public interface ITypeParameterObjectCreationOperation : IOperation 1241public interface IArrayCreationOperation : IOperation 1270public interface IInstanceReferenceOperation : IOperation 1293public interface IIsTypeOperation : IOperation 1326public interface IAwaitOperation : IOperation 1345public interface IAssignmentOperation : IOperation 1443public interface IParenthesizedOperation : IOperation 1466public interface IEventAssignmentOperation : IOperation 1498public interface IConditionalAccessOperation : IOperation 1527public interface IConditionalAccessInstanceOperation : IOperation 1546public interface IInterpolatedStringOperation : IOperation 1569public interface IAnonymousObjectCreationOperation : IOperation 1596public interface IObjectOrCollectionInitializerOperation : IOperation 1620public interface IMemberInitializerOperation : IOperation 1648public interface ICollectionElementInitializerOperation : IOperation 1670public interface INameOfOperation : IOperation 1693public interface ITupleOperation : IOperation 1722public interface IDynamicObjectCreationOperation : IOperation 1749public interface IDynamicMemberReferenceOperation : IOperation 1791public interface IDynamicInvocationOperation : IOperation 1817public interface IDynamicIndexerAccessOperation : IOperation 1849public interface ITranslatedQueryOperation : IOperation 1872public interface IDelegateCreationOperation : IOperation 1894public interface IDefaultValueOperation : IOperation 1913public interface ITypeOfOperation : IOperation 1935public interface ISizeOfOperation : IOperation 1957public interface IAddressOfOperation : IOperation 1979public interface IIsPatternOperation : IOperation 2008public interface IIncrementOrDecrementOperation : IOperation 2056public interface IThrowOperation : IOperation 2099public interface IDeclarationExpressionOperation : IOperation 2121public interface IOmittedArgumentOperation : IOperation 2136public interface ISymbolInitializerOperation : IOperation 2251public interface IArrayInitializerOperation : IOperation 2278public interface IVariableDeclaratorOperation : IOperation 2321public interface IVariableDeclarationOperation : IOperation 2360public interface IArgumentOperation : IOperation 2399public interface ICatchClauseOperation : IOperation 2442public interface ISwitchCaseOperation : IOperation 2469public interface ICaseClauseOperation : IOperation 2596public interface IInterpolatedStringContentOperation : IOperation 2664public interface IPatternOperation : IOperation 2745public interface ITupleBinaryOperation : IOperation 2771public interface IMethodBodyBaseOperation : IOperation 2842public interface IDiscardOperation : IOperation 2885public interface IRangeOperation : IOperation 2923public interface IReDimOperation : IOperation 2949public interface IReDimClauseOperation : IOperation 3028public interface ISwitchExpressionOperation : IOperation 3054public interface ISwitchExpressionArmOperation : IOperation 3085public interface IPropertySubpatternOperation : IOperation 3104internal interface IAggregateQueryOperation : IOperation 3116internal interface IFixedOperation : IOperation 3143internal interface INoPiaObjectCreationOperation : IOperation 3158internal interface IPlaceholderOperation : IOperation 3173internal interface IPointerIndirectionReferenceOperation : IOperation 3191internal interface IWithStatementOperation : IOperation 3218public interface IUsingDeclarationOperation : IOperation 3344public interface IWithOperation : IOperation 3370public interface IInterpolatedStringHandlerCreationOperation : IOperation 3411public interface IInterpolatedStringAdditionOperation : IOperation 3456public interface IInterpolatedStringHandlerArgumentPlaceholderOperation : IOperation 3479public interface IFunctionPointerInvocationOperation : IOperation 3559public interface IImplicitIndexerReferenceOperation : IOperation 3593public interface IUtf8StringOperation : IOperation 3616public interface IAttributeOperation : IOperation
1 implementation of IOperation
Microsoft.CodeAnalysis (1)
Operations\Operation.cs (1)
19internal abstract partial class Operation : IOperation
2963 references to IOperation
Microsoft.CodeAnalysis (1375)
Compilation\Compilation.cs (1)
1728internal abstract IConvertibleConversion ClassifyConvertibleConversion(IOperation source, ITypeSymbol destination, out ConstantValue? constantValue);
Compilation\SemanticModel.cs (2)
76public IOperation? GetOperation(SyntaxNode node, CancellationToken cancellationToken = default(CancellationToken)) 81protected abstract IOperation? GetOperationCore(SyntaxNode node, CancellationToken cancellationToken);
DiagnosticAnalyzer\AnalysisContextInfo.cs (4)
17private readonly IOperation? _operation; 47public AnalysisContextInfo(Compilation compilation, IOperation operation) : 59IOperation? operation, 85sb.AppendLine($"{nameof(IOperation)}: {_operation.Kind}");
DiagnosticAnalyzer\AnalyzerDriver.cs (15)
2592ImmutableArray<IOperation> getOperationsToAnalyzeWithStackGuard(ImmutableArray<IOperation> operationBlocksToAnalyze) 2604return ImmutableArray<IOperation>.Empty; 2608void executeOperationsActions(ImmutableArray<IOperation> operationsToAnalyze) 2617void executeOperationsActionsByKind(AnalysisScope analysisScope, ImmutableArray<IOperation> operationsToAnalyze, GroupedAnalyzerActions groupedActions) 2642void executeOperationsBlockActions(ImmutableArray<IOperation> operationBlocksToAnalyze, ImmutableArray<IOperation> operationsToAnalyze, IEnumerable<ExecutableCodeBlockAnalyzerActions> codeBlockActions) 2792private static ImmutableArray<IOperation> GetOperationBlocksToAnalyze( 2797ArrayBuilder<IOperation> operationBlocksToAnalyze = ArrayBuilder<IOperation>.GetInstance(); 2810private static ImmutableArray<IOperation> GetOperationsToAnalyze( 2811ImmutableArray<IOperation> operationBlocks) 2813ArrayBuilder<IOperation> operationsToAnalyze = ArrayBuilder<IOperation>.GetInstance(); 2816foreach (IOperation operationBlock in operationBlocks)
DiagnosticAnalyzer\AnalyzerExecutor.cs (22)
58private Func<IOperation, ControlFlowGraph>? _lazyGetControlFlowGraph; 60private ConcurrentDictionary<IOperation, ControlFlowGraph>? _lazyControlFlowGraphMap; 62private Func<IOperation, ControlFlowGraph> GetControlFlowGraph 689IOperation operation, 753ImmutableArray<IOperation> operationBlocks, 754ImmutableArray<IOperation> operations, 758ExecuteBlockActionsCore<OperationBlockStartAnalyzerAction, OperationBlockAnalyzerAction, OperationAnalyzerAction, IOperation, int>( 800ImmutableArray<IOperation> operationBlocks = executableBlocks[0] is IOperation ? (ImmutableArray<IOperation>)(object)executableBlocks : ImmutableArray<IOperation>.Empty; 873var operationsToAnalyze = (IEnumerable<IOperation>)getNodesToAnalyze(executableBlocks); 892ImmutableArray<IOperation> operationBlocks, 1054IEnumerable<IOperation> operationsToAnalyze, 1076IEnumerable<IOperation> operationsToAnalyze, 1090foreach (var operation in operationsToAnalyze) 1437private bool ShouldExecuteOperation(IOperation operation, DiagnosticAnalyzer analyzer) 1460private ControlFlowGraph GetControlFlowGraphImpl(IOperation operation) 1466Interlocked.CompareExchange(ref _lazyControlFlowGraphMap, new ConcurrentDictionary<IOperation, ControlFlowGraph>(), null); 1486public void OnOperationBlockActionsExecuted(ImmutableArray<IOperation> operationBlocks) 1495foreach (var operationBlock in operationBlocks) 1497var root = operationBlock.GetRootOperation();
DiagnosticAnalyzer\DiagnosticAnalysisContext.cs (54)
176/// Register an action to be executed at completion of semantic analysis of an <see cref="IOperation"/> with an appropriate Kind. 177/// An operation action can report <see cref="Diagnostic"/>s about <see cref="IOperation"/>s, and can also collect 180/// <param name="action">Action to be executed at completion of semantic analysis of an <see cref="IOperation"/>.</param> 181/// <param name="operationKinds">Action will be executed only if an <see cref="IOperation"/>'s Kind matches one of the operation kind values.</param> 188/// Register an action to be executed at completion of semantic analysis of an <see cref="IOperation"/> with an appropriate Kind. 189/// An operation action can report <see cref="Diagnostic"/>s about <see cref="IOperation"/>s, and can also collect 192/// <param name="action">Action to be executed at completion of semantic analysis of an <see cref="IOperation"/>.</param> 193/// <param name="operationKinds">Action will be executed only if an <see cref="IOperation"/>'s Kind matches one of the operation kind values.</param> 450/// Register an action to be executed at completion of semantic analysis of an <see cref="IOperation"/> with an appropriate Kind. 451/// An operation action can report <see cref="Diagnostic"/>s about <see cref="IOperation"/>s, and can also collect 454/// <param name="action">Action to be executed at completion of semantic analysis of an <see cref="IOperation"/>.</param> 455/// <param name="operationKinds">Action will be executed only if an <see cref="IOperation"/>'s Kind matches one of the operation kind values.</param> 462/// Register an action to be executed at completion of semantic analysis of an <see cref="IOperation"/> with an appropriate Kind. 463/// An operation action can report <see cref="Diagnostic"/>s about <see cref="IOperation"/>s, and can also collect 466/// <param name="action">Action to be executed at completion of semantic analysis of an <see cref="IOperation"/>.</param> 467/// <param name="operationKinds">Action will be executed only if an <see cref="IOperation"/>'s Kind matches one of the operation kind values.</param> 886/// Register an action to be executed at completion of semantic analysis of an <see cref="IOperation"/> with an appropriate Kind. 887/// An operation action can report <see cref="Diagnostic"/>s about <see cref="IOperation"/>s, and can also collect 890/// <param name="action">Action to be executed at completion of semantic analysis of an <see cref="IOperation"/>.</param> 891/// <param name="operationKinds">Action will be executed only if an <see cref="IOperation"/>'s Kind matches one of the operation kind values.</param> 898/// Register an action to be executed at completion of semantic analysis of an <see cref="IOperation"/> with an appropriate Kind. 899/// An operation action can report <see cref="Diagnostic"/>s about <see cref="IOperation"/>s, and can also collect 902/// <param name="action">Action to be executed at completion of semantic analysis of an <see cref="IOperation"/>.</param> 903/// <param name="operationKinds">Action will be executed only if an <see cref="IOperation"/>'s Kind matches one of the operation kind values.</param> 1108private readonly ImmutableArray<IOperation> _operationBlocks; 1112private readonly Func<IOperation, ControlFlowGraph>? _getControlFlowGraph; 1121public ImmutableArray<IOperation> OperationBlocks => _operationBlocks; 1150ImmutableArray<IOperation> operationBlocks, 1160ImmutableArray<IOperation> operationBlocks, 1164Func<IOperation, ControlFlowGraph>? getControlFlowGraph, 1186/// An operation action can report <see cref="Diagnostic"/>s about <see cref="IOperation"/>s, and can also collect 1189/// <param name="action">Action to be executed at completion of semantic analysis of an <see cref="IOperation"/>.</param> 1190/// <param name="operationKinds">Action will be executed only if an <see cref="IOperation"/>'s Kind matches one of the operation kind values.</param> 1197/// Register an action to be executed at completion of semantic analysis of an <see cref="IOperation"/> with an appropriate Kind. 1198/// An operation action can report <see cref="Diagnostic"/>s about <see cref="IOperation"/>s, and can also collect 1201/// <param name="action">Action to be executed at completion of semantic analysis of an <see cref="IOperation"/>.</param> 1202/// <param name="operationKinds">Action will be executed only if an <see cref="IOperation"/>'s Kind matches one of the operation kind values.</param> 1209public ControlFlowGraph GetControlFlowGraph(IOperation operationBlock) 1231private readonly ImmutableArray<IOperation> _operationBlocks; 1237private readonly Func<IOperation, ControlFlowGraph>? _getControlFlowGraph; 1246public ImmutableArray<IOperation> OperationBlocks => _operationBlocks; 1275ImmutableArray<IOperation> operationBlocks, 1287ImmutableArray<IOperation> operationBlocks, 1293Func<IOperation, ControlFlowGraph>? getControlFlowGraph, 1325public ControlFlowGraph GetControlFlowGraph(IOperation operationBlock) 1571/// An operation action can use an <see cref="OperationAnalysisContext"/> to report <see cref="Diagnostic"/>s for an <see cref="IOperation"/>. 1575private readonly IOperation _operation; 1581private readonly Func<IOperation, ControlFlowGraph>? _getControlFlowGraph; 1585/// <see cref="IOperation"/> that is the subject of the analysis. 1587public IOperation Operation => _operation; 1595/// <see cref="CodeAnalysis.Compilation"/> containing the <see cref="IOperation"/>. 1616IOperation operation, 1628IOperation operation, 1634Func<IOperation, ControlFlowGraph>? getControlFlowGraph,
DiagnosticAnalyzer\DiagnosticAnalysisContextHelpers.cs (3)
171internal static ControlFlowGraph GetControlFlowGraph(IOperation operation, Func<IOperation, ControlFlowGraph>? getControlFlowGraph, CancellationToken cancellationToken) 173IOperation rootOperation = operation.GetRootOperation();
DiagnosticAnalyzer\DiagnosticStartAnalysisScope.cs (2)
330ImmutableArray<IOperation> operationBlocks, 334Func<IOperation, ControlFlowGraph> getControlFlowGraph,
Generated\FlowAnalysis.Generated.cs (2)
35IOperation Value { get; } 81IOperation Operand { get; }
Generated\OperationKind.Generated.cs (1)
17/// <summary>Indicates an <see cref="IOperation"/> for a construct that is not implemented yet.</summary>
Generated\Operations.Generated.cs (600)
58ImmutableArray<IOperation> Operations { get; } 119IOperation Value { get; } 150IOperation Body { get; } 181IOperation LoopControlVariable { get; } 185IOperation Collection { get; } 190ImmutableArray<IOperation> NextVariables { get; } 213ImmutableArray<IOperation> Before { get; } 223IOperation? Condition { get; } 227ImmutableArray<IOperation> AtLoopBottom { get; } 245IOperation LoopControlVariable { get; } 249IOperation InitialValue { get; } 253IOperation LimitValue { get; } 258IOperation StepValue { get; } 266ImmutableArray<IOperation> NextVariables { get; } 285IOperation? Condition { get; } 301IOperation? IgnoredCondition { get; } 328IOperation? Operation { get; } 398IOperation? ReturnedValue { get; } 421IOperation LockedValue { get; } 425IOperation Body { get; } 483IOperation Resources { get; } 487IOperation Body { get; } 519IOperation Operation { get; } 663IOperation Operand { get; } 729IOperation? Instance { get; } 764IOperation ArrayReference { get; } 768ImmutableArray<IOperation> Indices { get; } 838IOperation? Instance { get; } 987IOperation Operand { get; } 1035IOperation LeftOperand { get; } 1039IOperation RightOperand { get; } 1090IOperation Condition { get; } 1094IOperation WhenTrue { get; } 1098IOperation? WhenFalse { get; } 1127IOperation Value { get; } 1131IOperation WhenNull { get; } 1246ImmutableArray<IOperation> DimensionSizes { get; } 1298IOperation ValueOperand { get; } 1331IOperation Operation { get; } 1350IOperation Target { get; } 1354IOperation Value { get; } 1448IOperation Operand { get; } 1471IOperation EventReference { get; } 1475IOperation HandlerValue { get; } 1503IOperation Operation { get; } 1507IOperation WhenNotNull { get; } 1576ImmutableArray<IOperation> Initializers { get; } 1601ImmutableArray<IOperation> Initializers { get; } 1625IOperation InitializedMember { get; } 1651ImmutableArray<IOperation> Arguments { get; } 1675IOperation Argument { get; } 1698ImmutableArray<IOperation> Elements { get; } 1701/// Natural type can be different from <see cref="IOperation.Type" /> depending on the 1731ImmutableArray<IOperation> Arguments { get; } 1754IOperation? Instance { get; } 1796IOperation Operation { get; } 1800ImmutableArray<IOperation> Arguments { get; } 1822IOperation Operation { get; } 1826ImmutableArray<IOperation> Arguments { get; } 1854IOperation Operation { get; } 1877IOperation Target { get; } 1962IOperation Reference { get; } 1984IOperation Value { get; } 2028IOperation Target { get; } 2061IOperation? Exception { get; } 2104IOperation Expression { get; } 2145IOperation Value { get; } 2256ImmutableArray<IOperation> ElementValues { get; } 2297ImmutableArray<IOperation> IgnoredArguments { get; } 2342ImmutableArray<IOperation> IgnoredDimensions { get; } 2373IOperation Value { get; } 2408IOperation? ExceptionDeclarationOrExpression { get; } 2420IOperation? Filter { get; } 2451ImmutableArray<IOperation> Body { get; } 2519IOperation? Guard { get; } 2537IOperation MinimumValue { get; } 2541IOperation MaximumValue { get; } 2559IOperation Value { get; } 2582IOperation Value { get; } 2620IOperation Text { get; } 2643IOperation Expression { get; } 2647IOperation? Alignment { get; } 2651IOperation? FormatString { get; } 2695IOperation Value { get; } 2754IOperation LeftOperand { get; } 2758IOperation RightOperand { get; } 2826IOperation? Initializer { get; } 2890IOperation? LeftOperand { get; } 2894IOperation? RightOperand { get; } 2954IOperation Operand { get; } 2958ImmutableArray<IOperation> DimensionSizes { get; } 3033IOperation Value { get; } 3063IOperation? Guard { get; } 3067IOperation Value { get; } 3091IOperation Member { get; } 3106IOperation Group { get; } 3107IOperation Aggregation { get; } 3129IOperation Body { get; } 3178IOperation Pointer { get; } 3196IOperation Body { get; } 3200IOperation Value { get; } 3327IOperation Value { get; } 3349IOperation Operand { get; } 3376IOperation HandlerCreation { get; } 3398IOperation Content { get; } 3417IOperation Left { get; } 3422IOperation Right { get; } 3443IOperation AppendCall { get; } 3484IOperation Target { get; } 3564IOperation Instance { get; } 3568IOperation Argument { get; } 3621IOperation Operation { get; } 3628internal BlockOperation(ImmutableArray<IOperation> operations, ImmutableArray<ILocalSymbol> locals, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 3634public ImmutableArray<IOperation> Operations { get; } 3638internal override IOperation GetCurrent(int slot, int index) 3693internal override IOperation GetCurrent(int slot, int index) 3740internal SwitchOperation(ImmutableArray<ILocalSymbol> locals, IOperation value, ImmutableArray<ISwitchCaseOperation> cases, ILabelSymbol exitLabel, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 3749public IOperation Value { get; } 3755internal override IOperation GetCurrent(int slot, int index) 3810protected BaseLoopOperation(IOperation body, ImmutableArray<ILocalSymbol> locals, ILabelSymbol continueLabel, ILabelSymbol exitLabel, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 3819public IOperation Body { get; } 3826internal ForEachLoopOperation(IOperation loopControlVariable, IOperation collection, ImmutableArray<IOperation> nextVariables, ForEachLoopOperationInfo? info, bool isAsynchronous, IOperation body, ImmutableArray<ILocalSymbol> locals, ILabelSymbol continueLabel, ILabelSymbol exitLabel, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 3835public IOperation LoopControlVariable { get; } 3836public IOperation Collection { get; } 3837public ImmutableArray<IOperation> NextVariables { get; } 3845internal override IOperation GetCurrent(int slot, int index) 3916internal ForLoopOperation(ImmutableArray<IOperation> before, ImmutableArray<ILocalSymbol> conditionLocals, IOperation? condition, ImmutableArray<IOperation> atLoopBottom, IOperation body, ImmutableArray<ILocalSymbol> locals, ILabelSymbol continueLabel, ILabelSymbol exitLabel, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 3924public ImmutableArray<IOperation> Before { get; } 3926public IOperation? Condition { get; } 3927public ImmutableArray<IOperation> AtLoopBottom { get; } 3933internal override IOperation GetCurrent(int slot, int index) 4008internal ForToLoopOperation(IOperation loopControlVariable, IOperation initialValue, IOperation limitValue, IOperation stepValue, bool isChecked, ImmutableArray<IOperation> nextVariables, (ILocalSymbol LoopObject, ForToLoopOperationUserDefinedInfo UserDefinedInfo) info, IOperation body, ImmutableArray<ILocalSymbol> locals, ILabelSymbol continueLabel, ILabelSymbol exitLabel, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4019public IOperation LoopControlVariable { get; } 4020public IOperation InitialValue { get; } 4021public IOperation LimitValue { get; } 4022public IOperation StepValue { get; } 4024public ImmutableArray<IOperation> NextVariables { get; } 4033internal override IOperation GetCurrent(int slot, int index) 4120internal WhileLoopOperation(IOperation? condition, bool conditionIsTop, bool conditionIsUntil, IOperation? ignoredCondition, IOperation body, ImmutableArray<ILocalSymbol> locals, ILabelSymbol continueLabel, ILabelSymbol exitLabel, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4128public IOperation? Condition { get; } 4131public IOperation? IgnoredCondition { get; } 4144internal LabeledOperation(ILabelSymbol label, IOperation? operation, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4151public IOperation? Operation { get; } 4154internal override IOperation GetCurrent(int slot, int index) 4206internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 4220internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 4231internal ReturnOperation(IOperation? returnedValue, OperationKind kind, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4237public IOperation? ReturnedValue { get; } 4240internal override IOperation GetCurrent(int slot, int index) 4283internal LockOperation(IOperation lockedValue, IOperation body, ILocalSymbol? lockTakenSymbol, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4290public IOperation LockedValue { get; } 4291public IOperation Body { get; } 4296internal override IOperation GetCurrent(int slot, int index) 4363internal override IOperation GetCurrent(int slot, int index) 4426internal UsingOperation(IOperation resources, IOperation body, ImmutableArray<ILocalSymbol> locals, bool isAsynchronous, DisposeOperationInfo disposeInfo, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4435public IOperation Resources { get; } 4436public IOperation Body { get; } 4443internal override IOperation GetCurrent(int slot, int index) 4494internal ExpressionStatementOperation(IOperation operation, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4499public IOperation Operation { get; } 4502internal override IOperation GetCurrent(int slot, int index) 4558internal override IOperation GetCurrent(int slot, int index) 4612internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 4626internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 4648internal override IOperation GetCurrent(int slot, int index) 4710internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 4721internal ConversionOperation(IOperation operand, IConvertibleConversion conversion, bool isTryCast, bool isChecked, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 4731public IOperation Operand { get; } 4738internal override IOperation GetCurrent(int slot, int index) 4781internal InvocationOperation(IMethodSymbol targetMethod, ITypeSymbol? constrainedToType, IOperation? instance, bool isVirtual, ImmutableArray<IArgumentOperation> arguments, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 4793public IOperation? Instance { get; } 4799internal override IOperation GetCurrent(int slot, int index) 4854internal ArrayElementReferenceOperation(IOperation arrayReference, ImmutableArray<IOperation> indices, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 4861public IOperation ArrayReference { get; } 4862public ImmutableArray<IOperation> Indices { get; } 4866internal override IOperation GetCurrent(int slot, int index) 4932internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 4951internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 4962protected BaseMemberReferenceOperation(IOperation? instance, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4967public IOperation? Instance { get; } 4972internal FieldReferenceOperation(IFieldSymbol field, bool isDeclaration, IOperation? instance, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 4984internal override IOperation GetCurrent(int slot, int index) 5027internal MethodReferenceOperation(IMethodSymbol method, ITypeSymbol? constrainedToType, bool isVirtual, IOperation? instance, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 5040internal override IOperation GetCurrent(int slot, int index) 5083internal PropertyReferenceOperation(IPropertySymbol property, ITypeSymbol? constrainedToType, ImmutableArray<IArgumentOperation> arguments, IOperation? instance, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 5097internal override IOperation GetCurrent(int slot, int index) 5152internal EventReferenceOperation(IEventSymbol @event, ITypeSymbol? constrainedToType, IOperation? instance, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 5163internal override IOperation GetCurrent(int slot, int index) 5206internal UnaryOperation(UnaryOperatorKind operatorKind, IOperation operand, bool isLifted, bool isChecked, IMethodSymbol? operatorMethod, ITypeSymbol? constrainedToType, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5219public IOperation Operand { get; } 5226internal override IOperation GetCurrent(int slot, int index) 5269internal BinaryOperation(BinaryOperatorKind operatorKind, IOperation leftOperand, IOperation rightOperand, bool isLifted, bool isChecked, bool isCompareText, IMethodSymbol? operatorMethod, ITypeSymbol? constrainedToType, IMethodSymbol? unaryOperatorMethod, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5285public IOperation LeftOperand { get; } 5286public IOperation RightOperand { get; } 5296internal override IOperation GetCurrent(int slot, int index) 5347internal ConditionalOperation(IOperation condition, IOperation whenTrue, IOperation? whenFalse, bool isRef, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5357public IOperation Condition { get; } 5358public IOperation WhenTrue { get; } 5359public IOperation? WhenFalse { get; } 5365internal override IOperation GetCurrent(int slot, int index) 5424internal CoalesceOperation(IOperation value, IOperation whenNull, IConvertibleConversion valueConversion, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5433public IOperation Value { get; } 5434public IOperation WhenNull { get; } 5440internal override IOperation GetCurrent(int slot, int index) 5501internal override IOperation GetCurrent(int slot, int index) 5559internal override IOperation GetCurrent(int slot, int index) 5623internal override IOperation GetCurrent(int slot, int index) 5666internal ArrayCreationOperation(ImmutableArray<IOperation> dimensionSizes, IArrayInitializerOperation? initializer, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 5673public ImmutableArray<IOperation> DimensionSizes { get; } 5678internal override IOperation GetCurrent(int slot, int index) 5741internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 5752internal IsTypeOperation(IOperation valueOperand, ITypeSymbol typeOperand, bool isNegated, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 5760public IOperation ValueOperand { get; } 5765internal override IOperation GetCurrent(int slot, int index) 5808internal AwaitOperation(IOperation operation, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 5814public IOperation Operation { get; } 5817internal override IOperation GetCurrent(int slot, int index) 5860protected BaseAssignmentOperation(IOperation target, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 5866public IOperation Target { get; } 5867public IOperation Value { get; } 5871internal SimpleAssignmentOperation(bool isRef, IOperation target, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 5882internal override IOperation GetCurrent(int slot, int index) 5933internal CompoundAssignmentOperation(IConvertibleConversion inConversion, IConvertibleConversion outConversion, BinaryOperatorKind operatorKind, bool isLifted, bool isChecked, IMethodSymbol? operatorMethod, ITypeSymbol? constrainedToType, IOperation target, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 5957internal override IOperation GetCurrent(int slot, int index) 6008internal ParenthesizedOperation(IOperation operand, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 6015public IOperation Operand { get; } 6018internal override IOperation GetCurrent(int slot, int index) 6061internal EventAssignmentOperation(IOperation eventReference, IOperation handlerValue, bool adds, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6069public IOperation EventReference { get; } 6070public IOperation HandlerValue { get; } 6075internal override IOperation GetCurrent(int slot, int index) 6126internal ConditionalAccessOperation(IOperation operation, IOperation whenNotNull, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6133public IOperation Operation { get; } 6134public IOperation WhenNotNull { get; } 6138internal override IOperation GetCurrent(int slot, int index) 6195internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 6216internal override IOperation GetCurrent(int slot, int index) 6263internal AnonymousObjectCreationOperation(ImmutableArray<IOperation> initializers, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6269public ImmutableArray<IOperation> Initializers { get; } 6272internal override IOperation GetCurrent(int slot, int index) 6319internal ObjectOrCollectionInitializerOperation(ImmutableArray<IOperation> initializers, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6325public ImmutableArray<IOperation> Initializers { get; } 6328internal override IOperation GetCurrent(int slot, int index) 6375internal MemberInitializerOperation(IOperation initializedMember, IObjectOrCollectionInitializerOperation initializer, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6382public IOperation InitializedMember { get; } 6387internal override IOperation GetCurrent(int slot, int index) 6438internal NameOfOperation(IOperation argument, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 6445public IOperation Argument { get; } 6448internal override IOperation GetCurrent(int slot, int index) 6491internal TupleOperation(ImmutableArray<IOperation> elements, ITypeSymbol? naturalType, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6498public ImmutableArray<IOperation> Elements { get; } 6502internal override IOperation GetCurrent(int slot, int index) 6549internal DynamicMemberReferenceOperation(IOperation? instance, string memberName, ImmutableArray<ITypeSymbol> typeArguments, ITypeSymbol? containingType, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6558public IOperation? Instance { get; } 6564internal override IOperation GetCurrent(int slot, int index) 6607internal TranslatedQueryOperation(IOperation operation, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6613public IOperation Operation { get; } 6616internal override IOperation GetCurrent(int slot, int index) 6659internal DelegateCreationOperation(IOperation target, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6665public IOperation Target { get; } 6668internal override IOperation GetCurrent(int slot, int index) 6718internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 6737internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 6757internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 6768internal AddressOfOperation(IOperation reference, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6774public IOperation Reference { get; } 6777internal override IOperation GetCurrent(int slot, int index) 6820internal IsPatternOperation(IOperation value, IPatternOperation pattern, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6827public IOperation Value { get; } 6832internal override IOperation GetCurrent(int slot, int index) 6883internal IncrementOrDecrementOperation(bool isPostfix, bool isLifted, bool isChecked, IOperation target, IMethodSymbol? operatorMethod, ITypeSymbol? constrainedToType, OperationKind kind, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6898public IOperation Target { get; } 6903internal override IOperation GetCurrent(int slot, int index) 6946internal ThrowOperation(IOperation? exception, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6952public IOperation? Exception { get; } 6955internal override IOperation GetCurrent(int slot, int index) 6998internal DeconstructionAssignmentOperation(IOperation target, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 7006internal override IOperation GetCurrent(int slot, int index) 7057internal DeclarationExpressionOperation(IOperation expression, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 7063public IOperation Expression { get; } 7066internal override IOperation GetCurrent(int slot, int index) 7115internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 7126protected BaseSymbolInitializerOperation(ImmutableArray<ILocalSymbol> locals, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7133public IOperation Value { get; } 7137internal FieldInitializerOperation(ImmutableArray<IFieldSymbol> initializedFields, ImmutableArray<ILocalSymbol> locals, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7145internal override IOperation GetCurrent(int slot, int index) 7188internal VariableInitializerOperation(ImmutableArray<ILocalSymbol> locals, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7192internal override IOperation GetCurrent(int slot, int index) 7235internal PropertyInitializerOperation(ImmutableArray<IPropertySymbol> initializedProperties, ImmutableArray<ILocalSymbol> locals, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7243internal override IOperation GetCurrent(int slot, int index) 7286internal ParameterInitializerOperation(IParameterSymbol parameter, ImmutableArray<ILocalSymbol> locals, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7294internal override IOperation GetCurrent(int slot, int index) 7337internal ArrayInitializerOperation(ImmutableArray<IOperation> elementValues, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7342public ImmutableArray<IOperation> ElementValues { get; } 7345internal override IOperation GetCurrent(int slot, int index) 7392internal VariableDeclaratorOperation(ILocalSymbol symbol, IVariableInitializerOperation? initializer, ImmutableArray<IOperation> ignoredArguments, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7401public ImmutableArray<IOperation> IgnoredArguments { get; } 7405internal override IOperation GetCurrent(int slot, int index) 7460internal VariableDeclarationOperation(ImmutableArray<IVariableDeclaratorOperation> declarators, IVariableInitializerOperation? initializer, ImmutableArray<IOperation> ignoredDimensions, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7469public ImmutableArray<IOperation> IgnoredDimensions { get; } 7474internal override IOperation GetCurrent(int slot, int index) 7541internal ArgumentOperation(ArgumentKind argumentKind, IParameterSymbol? parameter, IOperation value, IConvertibleConversion inConversion, IConvertibleConversion outConversion, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7552public IOperation Value { get; } 7559internal override IOperation GetCurrent(int slot, int index) 7602internal CatchClauseOperation(IOperation? exceptionDeclarationOrExpression, ITypeSymbol exceptionType, ImmutableArray<ILocalSymbol> locals, IOperation? filter, IBlockOperation handler, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7611public IOperation? ExceptionDeclarationOrExpression { get; } 7614public IOperation? Filter { get; } 7620internal override IOperation GetCurrent(int slot, int index) 7679internal SwitchCaseOperation(ImmutableArray<ICaseClauseOperation> clauses, ImmutableArray<IOperation> body, ImmutableArray<ILocalSymbol> locals, IOperation? condition, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7688public ImmutableArray<IOperation> Body { get; } 7690public IOperation? Condition { get; } 7694internal override IOperation GetCurrent(int slot, int index) 7766internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 7777internal PatternCaseClauseOperation(ILabelSymbol label, IPatternOperation pattern, IOperation? guard, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7785public IOperation? Guard { get; } 7789internal override IOperation GetCurrent(int slot, int index) 7840internal RangeCaseClauseOperation(IOperation minimumValue, IOperation maximumValue, ILabelSymbol? label, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7846public IOperation MinimumValue { get; } 7847public IOperation MaximumValue { get; } 7851internal override IOperation GetCurrent(int slot, int index) 7902internal RelationalCaseClauseOperation(IOperation value, BinaryOperatorKind relation, ILabelSymbol? label, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7908public IOperation Value { get; } 7912internal override IOperation GetCurrent(int slot, int index) 7955internal SingleValueCaseClauseOperation(IOperation value, ILabelSymbol? label, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 7960public IOperation Value { get; } 7963internal override IOperation GetCurrent(int slot, int index) 8011internal InterpolatedStringTextOperation(IOperation text, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 8016public IOperation Text { get; } 8019internal override IOperation GetCurrent(int slot, int index) 8062internal InterpolationOperation(IOperation expression, IOperation? alignment, IOperation? formatString, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 8069public IOperation Expression { get; } 8070public IOperation? Alignment { get; } 8071public IOperation? FormatString { get; } 8076internal override IOperation GetCurrent(int slot, int index) 8146internal ConstantPatternOperation(IOperation value, ITypeSymbol inputType, ITypeSymbol narrowedType, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 8151public IOperation Value { get; } 8154internal override IOperation GetCurrent(int slot, int index) 8208internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 8219internal TupleBinaryOperation(BinaryOperatorKind operatorKind, IOperation leftOperand, IOperation rightOperand, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 8228public IOperation LeftOperand { get; } 8229public IOperation RightOperand { get; } 8233internal override IOperation GetCurrent(int slot, int index) 8300internal override IOperation GetCurrent(int slot, int index) 8351internal ConstructorBodyOperation(ImmutableArray<ILocalSymbol> locals, IOperation? initializer, IBlockOperation? blockBody, IBlockOperation? expressionBody, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 8358public IOperation? Initializer { get; } 8363internal override IOperation GetCurrent(int slot, int index) 8430internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 8441internal FlowCaptureOperation(CaptureId id, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 8448public IOperation Value { get; } 8451internal override IOperation GetCurrent(int slot, int index) 8505internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 8516internal IsNullOperation(IOperation operand, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) 8523public IOperation Operand { get; } 8526internal override IOperation GetCurrent(int slot, int index) 8575internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 8594internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 8605internal CoalesceAssignmentOperation(IOperation target, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 8613internal override IOperation GetCurrent(int slot, int index) 8664internal RangeOperation(IOperation? leftOperand, IOperation? rightOperand, bool isLifted, IMethodSymbol? method, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 8673public IOperation? LeftOperand { get; } 8674public IOperation? RightOperand { get; } 8680internal override IOperation GetCurrent(int slot, int index) 8741internal override IOperation GetCurrent(int slot, int index) 8788internal ReDimClauseOperation(IOperation operand, ImmutableArray<IOperation> dimensionSizes, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 8794public IOperation Operand { get; } 8795public ImmutableArray<IOperation> DimensionSizes { get; } 8799internal override IOperation GetCurrent(int slot, int index) 8871internal override IOperation GetCurrent(int slot, int index) 8933internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 8944internal SwitchExpressionOperation(IOperation value, ImmutableArray<ISwitchExpressionArmOperation> arms, bool isExhaustive, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 8952public IOperation Value { get; } 8958internal override IOperation GetCurrent(int slot, int index) 9013internal SwitchExpressionArmOperation(IPatternOperation pattern, IOperation? guard, IOperation value, ImmutableArray<ILocalSymbol> locals, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 9022public IOperation? Guard { get; } 9023public IOperation Value { get; } 9029internal override IOperation GetCurrent(int slot, int index) 9088internal PropertySubpatternOperation(IOperation member, IPatternOperation pattern, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 9094public IOperation Member { get; } 9099internal override IOperation GetCurrent(int slot, int index) 9150internal AggregateQueryOperation(IOperation group, IOperation aggregation, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 9157public IOperation Group { get; } 9158public IOperation Aggregation { get; } 9162internal override IOperation GetCurrent(int slot, int index) 9213internal FixedOperation(ImmutableArray<ILocalSymbol> locals, IVariableDeclarationGroupOperation variables, IOperation body, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 9222public IOperation Body { get; } 9226internal override IOperation GetCurrent(int slot, int index) 9286internal override IOperation GetCurrent(int slot, int index) 9337internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 9348internal WithStatementOperation(IOperation body, IOperation value, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 9354public IOperation Body { get; } 9355public IOperation Value { get; } 9359internal override IOperation GetCurrent(int slot, int index) 9422internal override IOperation GetCurrent(int slot, int index) 9473internal override IOperation GetCurrent(int slot, int index) 9529internal override IOperation GetCurrent(int slot, int index) 9587internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 9598internal RelationalPatternOperation(BinaryOperatorKind operatorKind, IOperation value, ITypeSymbol inputType, ITypeSymbol narrowedType, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 9605public IOperation Value { get; } 9608internal override IOperation GetCurrent(int slot, int index) 9651internal WithOperation(IOperation operand, IMethodSymbol? cloneMethod, IObjectOrCollectionInitializerOperation initializer, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 9659public IOperation Operand { get; } 9665internal override IOperation GetCurrent(int slot, int index) 9716internal InterpolatedStringHandlerCreationOperation(IOperation handlerCreation, bool handlerCreationHasSuccessParameter, bool handlerAppendCallsReturnBool, IOperation content, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 9725public IOperation HandlerCreation { get; } 9728public IOperation Content { get; } 9732internal override IOperation GetCurrent(int slot, int index) 9783internal InterpolatedStringAdditionOperation(IOperation left, IOperation right, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 9789public IOperation Left { get; } 9790public IOperation Right { get; } 9794internal override IOperation GetCurrent(int slot, int index) 9845internal InterpolatedStringAppendOperation(IOperation appendCall, OperationKind kind, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 9851public IOperation AppendCall { get; } 9854internal override IOperation GetCurrent(int slot, int index) 9906internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 9917internal FunctionPointerInvocationOperation(IOperation target, ImmutableArray<IArgumentOperation> arguments, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 9924public IOperation Target { get; } 9929internal override IOperation GetCurrent(int slot, int index) 9998internal override IOperation GetCurrent(int slot, int index) 10055internal override IOperation GetCurrent(int slot, int index) 10098internal ImplicitIndexerReferenceOperation(IOperation instance, IOperation argument, ISymbol lengthSymbol, ISymbol indexerSymbol, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 10107public IOperation Instance { get; } 10108public IOperation Argument { get; } 10114internal override IOperation GetCurrent(int slot, int index) 10173internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 10184internal AttributeOperation(IOperation operation, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 10189public IOperation Operation { get; } 10192internal override IOperation GetCurrent(int slot, int index) 10235internal sealed partial class OperationCloner : OperationVisitor<object?, IOperation> 10239public static T CloneOperation<T>(T operation) where T : IOperation => s_instance.Visit(operation); 10242private T? Visit<T>(T? node) where T : IOperation? => (T?)Visit(node, argument: null); 10243public override IOperation DefaultVisit(IOperation operation, object? argument) => throw ExceptionUtilities.Unreachable(); 10244private ImmutableArray<T> VisitArray<T>(ImmutableArray<T> nodes) where T : IOperation => nodes.SelectAsArray((n, @this) => @this.Visit(n), this)!; 10245private ImmutableArray<(ISymbol, T)> VisitArray<T>(ImmutableArray<(ISymbol, T)> nodes) where T : IOperation => nodes.SelectAsArray((n, @this) => (n.Item1, @this.Visit(n.Item2)), this)!; 10246public override IOperation VisitBlock(IBlockOperation operation, object? argument) 10251public override IOperation VisitVariableDeclarationGroup(IVariableDeclarationGroupOperation operation, object? argument) 10256public override IOperation VisitSwitch(ISwitchOperation operation, object? argument) 10261public override IOperation VisitForEachLoop(IForEachLoopOperation operation, object? argument) 10266public override IOperation VisitForLoop(IForLoopOperation operation, object? argument) 10271public override IOperation VisitForToLoop(IForToLoopOperation operation, object? argument) 10276public override IOperation VisitWhileLoop(IWhileLoopOperation operation, object? argument) 10281public override IOperation VisitLabeled(ILabeledOperation operation, object? argument) 10286public override IOperation VisitBranch(IBranchOperation operation, object? argument) 10291public override IOperation VisitEmpty(IEmptyOperation operation, object? argument) 10296public override IOperation VisitReturn(IReturnOperation operation, object? argument) 10301public override IOperation VisitLock(ILockOperation operation, object? argument) 10306public override IOperation VisitTry(ITryOperation operation, object? argument) 10311public override IOperation VisitUsing(IUsingOperation operation, object? argument) 10316public override IOperation VisitExpressionStatement(IExpressionStatementOperation operation, object? argument) 10321public override IOperation VisitLocalFunction(ILocalFunctionOperation operation, object? argument) 10326public override IOperation VisitStop(IStopOperation operation, object? argument) 10331public override IOperation VisitEnd(IEndOperation operation, object? argument) 10336public override IOperation VisitRaiseEvent(IRaiseEventOperation operation, object? argument) 10341public override IOperation VisitLiteral(ILiteralOperation operation, object? argument) 10346public override IOperation VisitConversion(IConversionOperation operation, object? argument) 10351public override IOperation VisitInvocation(IInvocationOperation operation, object? argument) 10356public override IOperation VisitArrayElementReference(IArrayElementReferenceOperation operation, object? argument) 10361public override IOperation VisitLocalReference(ILocalReferenceOperation operation, object? argument) 10366public override IOperation VisitParameterReference(IParameterReferenceOperation operation, object? argument) 10371public override IOperation VisitFieldReference(IFieldReferenceOperation operation, object? argument) 10376public override IOperation VisitMethodReference(IMethodReferenceOperation operation, object? argument) 10381public override IOperation VisitPropertyReference(IPropertyReferenceOperation operation, object? argument) 10386public override IOperation VisitEventReference(IEventReferenceOperation operation, object? argument) 10391public override IOperation VisitUnaryOperator(IUnaryOperation operation, object? argument) 10396public override IOperation VisitBinaryOperator(IBinaryOperation operation, object? argument) 10401public override IOperation VisitConditional(IConditionalOperation operation, object? argument) 10406public override IOperation VisitCoalesce(ICoalesceOperation operation, object? argument) 10411public override IOperation VisitAnonymousFunction(IAnonymousFunctionOperation operation, object? argument) 10416public override IOperation VisitObjectCreation(IObjectCreationOperation operation, object? argument) 10421public override IOperation VisitTypeParameterObjectCreation(ITypeParameterObjectCreationOperation operation, object? argument) 10426public override IOperation VisitArrayCreation(IArrayCreationOperation operation, object? argument) 10431public override IOperation VisitInstanceReference(IInstanceReferenceOperation operation, object? argument) 10436public override IOperation VisitIsType(IIsTypeOperation operation, object? argument) 10441public override IOperation VisitAwait(IAwaitOperation operation, object? argument) 10446public override IOperation VisitSimpleAssignment(ISimpleAssignmentOperation operation, object? argument) 10451public override IOperation VisitCompoundAssignment(ICompoundAssignmentOperation operation, object? argument) 10456public override IOperation VisitParenthesized(IParenthesizedOperation operation, object? argument) 10461public override IOperation VisitEventAssignment(IEventAssignmentOperation operation, object? argument) 10466public override IOperation VisitConditionalAccess(IConditionalAccessOperation operation, object? argument) 10471public override IOperation VisitConditionalAccessInstance(IConditionalAccessInstanceOperation operation, object? argument) 10476public override IOperation VisitInterpolatedString(IInterpolatedStringOperation operation, object? argument) 10481public override IOperation VisitAnonymousObjectCreation(IAnonymousObjectCreationOperation operation, object? argument) 10486public override IOperation VisitObjectOrCollectionInitializer(IObjectOrCollectionInitializerOperation operation, object? argument) 10491public override IOperation VisitMemberInitializer(IMemberInitializerOperation operation, object? argument) 10496public override IOperation VisitNameOf(INameOfOperation operation, object? argument) 10501public override IOperation VisitTuple(ITupleOperation operation, object? argument) 10506public override IOperation VisitDynamicMemberReference(IDynamicMemberReferenceOperation operation, object? argument) 10511public override IOperation VisitTranslatedQuery(ITranslatedQueryOperation operation, object? argument) 10516public override IOperation VisitDelegateCreation(IDelegateCreationOperation operation, object? argument) 10521public override IOperation VisitDefaultValue(IDefaultValueOperation operation, object? argument) 10526public override IOperation VisitTypeOf(ITypeOfOperation operation, object? argument) 10531public override IOperation VisitSizeOf(ISizeOfOperation operation, object? argument) 10536public override IOperation VisitAddressOf(IAddressOfOperation operation, object? argument) 10541public override IOperation VisitIsPattern(IIsPatternOperation operation, object? argument) 10546public override IOperation VisitIncrementOrDecrement(IIncrementOrDecrementOperation operation, object? argument) 10551public override IOperation VisitThrow(IThrowOperation operation, object? argument) 10556public override IOperation VisitDeconstructionAssignment(IDeconstructionAssignmentOperation operation, object? argument) 10561public override IOperation VisitDeclarationExpression(IDeclarationExpressionOperation operation, object? argument) 10566public override IOperation VisitOmittedArgument(IOmittedArgumentOperation operation, object? argument) 10571public override IOperation VisitFieldInitializer(IFieldInitializerOperation operation, object? argument) 10576public override IOperation VisitVariableInitializer(IVariableInitializerOperation operation, object? argument) 10581public override IOperation VisitPropertyInitializer(IPropertyInitializerOperation operation, object? argument) 10586public override IOperation VisitParameterInitializer(IParameterInitializerOperation operation, object? argument) 10591public override IOperation VisitArrayInitializer(IArrayInitializerOperation operation, object? argument) 10596public override IOperation VisitVariableDeclarator(IVariableDeclaratorOperation operation, object? argument) 10601public override IOperation VisitVariableDeclaration(IVariableDeclarationOperation operation, object? argument) 10606public override IOperation VisitArgument(IArgumentOperation operation, object? argument) 10611public override IOperation VisitCatchClause(ICatchClauseOperation operation, object? argument) 10616public override IOperation VisitSwitchCase(ISwitchCaseOperation operation, object? argument) 10621public override IOperation VisitDefaultCaseClause(IDefaultCaseClauseOperation operation, object? argument) 10626public override IOperation VisitPatternCaseClause(IPatternCaseClauseOperation operation, object? argument) 10631public override IOperation VisitRangeCaseClause(IRangeCaseClauseOperation operation, object? argument) 10636public override IOperation VisitRelationalCaseClause(IRelationalCaseClauseOperation operation, object? argument) 10641public override IOperation VisitSingleValueCaseClause(ISingleValueCaseClauseOperation operation, object? argument) 10646public override IOperation VisitInterpolatedStringText(IInterpolatedStringTextOperation operation, object? argument) 10651public override IOperation VisitInterpolation(IInterpolationOperation operation, object? argument) 10656public override IOperation VisitConstantPattern(IConstantPatternOperation operation, object? argument) 10661public override IOperation VisitDeclarationPattern(IDeclarationPatternOperation operation, object? argument) 10666public override IOperation VisitTupleBinaryOperator(ITupleBinaryOperation operation, object? argument) 10671public override IOperation VisitMethodBodyOperation(IMethodBodyOperation operation, object? argument) 10676public override IOperation VisitConstructorBodyOperation(IConstructorBodyOperation operation, object? argument) 10681public override IOperation VisitDiscardOperation(IDiscardOperation operation, object? argument) 10686public override IOperation VisitFlowCaptureReference(IFlowCaptureReferenceOperation operation, object? argument) 10691public override IOperation VisitCoalesceAssignment(ICoalesceAssignmentOperation operation, object? argument) 10696public override IOperation VisitRangeOperation(IRangeOperation operation, object? argument) 10701public override IOperation VisitReDim(IReDimOperation operation, object? argument) 10706public override IOperation VisitReDimClause(IReDimClauseOperation operation, object? argument) 10711public override IOperation VisitRecursivePattern(IRecursivePatternOperation operation, object? argument) 10716public override IOperation VisitDiscardPattern(IDiscardPatternOperation operation, object? argument) 10721public override IOperation VisitSwitchExpression(ISwitchExpressionOperation operation, object? argument) 10726public override IOperation VisitSwitchExpressionArm(ISwitchExpressionArmOperation operation, object? argument) 10731public override IOperation VisitPropertySubpattern(IPropertySubpatternOperation operation, object? argument) 10736internal override IOperation VisitAggregateQuery(IAggregateQueryOperation operation, object? argument) 10741internal override IOperation VisitFixed(IFixedOperation operation, object? argument) 10746internal override IOperation VisitNoPiaObjectCreation(INoPiaObjectCreationOperation operation, object? argument) 10751internal override IOperation VisitPlaceholder(IPlaceholderOperation operation, object? argument) 10756internal override IOperation VisitWithStatement(IWithStatementOperation operation, object? argument) 10761public override IOperation VisitUsingDeclaration(IUsingDeclarationOperation operation, object? argument) 10766public override IOperation VisitNegatedPattern(INegatedPatternOperation operation, object? argument) 10771public override IOperation VisitBinaryPattern(IBinaryPatternOperation operation, object? argument) 10776public override IOperation VisitTypePattern(ITypePatternOperation operation, object? argument) 10781public override IOperation VisitRelationalPattern(IRelationalPatternOperation operation, object? argument) 10786public override IOperation VisitWith(IWithOperation operation, object? argument) 10791public override IOperation VisitInterpolatedStringHandlerCreation(IInterpolatedStringHandlerCreationOperation operation, object? argument) 10796public override IOperation VisitInterpolatedStringAddition(IInterpolatedStringAdditionOperation operation, object? argument) 10801public override IOperation VisitInterpolatedStringAppend(IInterpolatedStringAppendOperation operation, object? argument) 10806public override IOperation VisitInterpolatedStringHandlerArgumentPlaceholder(IInterpolatedStringHandlerArgumentPlaceholderOperation operation, object? argument) 10811public override IOperation VisitFunctionPointerInvocation(IFunctionPointerInvocationOperation operation, object? argument) 10816public override IOperation VisitListPattern(IListPatternOperation operation, object? argument) 10821public override IOperation VisitSlicePattern(ISlicePatternOperation operation, object? argument) 10826public override IOperation VisitImplicitIndexerReference(IImplicitIndexerReferenceOperation operation, object? argument) 10831public override IOperation VisitUtf8String(IUtf8StringOperation operation, object? argument) 10836public override IOperation VisitAttribute(IAttributeOperation operation, object? argument) 10847public virtual void Visit(IOperation? operation) => operation?.Accept(this); 10848public virtual void DefaultVisit(IOperation operation) { /* no-op */ } 10849internal virtual void VisitNoneOperation(IOperation operation) { /* no-op */ } 10983public virtual TResult? Visit(IOperation? operation, TArgument argument) => operation is null ? default(TResult) : operation.Accept(this, argument); 10984public virtual TResult? DefaultVisit(IOperation operation, TArgument argument) => default(TResult); 10985internal virtual TResult? VisitNoneOperation(IOperation operation, TArgument argument) => default(TResult);
Operations\BasicBlock.cs (4)
30ImmutableArray<IOperation> operations, 31IOperation? branchValue, 54public ImmutableArray<IOperation> Operations { get; } 63public IOperation? BranchValue { get; }
Operations\ControlFlowGraph.cs (4)
32internal ControlFlowGraph(IOperation originalOperation, 95IOperation? operation = semanticModel.GetOperation(node, cancellationToken); 171internal static ControlFlowGraph CreateCore(IOperation operation, string argumentNameForException, CancellationToken cancellationToken) 200public IOperation OriginalOperation { get; }
Operations\ControlFlowGraphBuilder.BasicBlockBuilder.cs (6)
19private ArrayBuilder<IOperation>? _statements; 27public IOperation? BranchValue; 47public ArrayBuilder<IOperation>? StatementsOpt => _statements; 49public void AddStatement(IOperation operation) 55_statements = ArrayBuilder<IOperation>.GetInstance(); 83_statements?.ToImmutableAndFree() ?? ImmutableArray<IOperation>.Empty,
Operations\ControlFlowGraphBuilder.ConditionalAccessOperationTracker.cs (2)
21public readonly ArrayBuilder<IOperation>? Operations; 28public ConditionalAccessOperationTracker(ArrayBuilder<IOperation> operations, BasicBlockBuilder whenNull)
Operations\ControlFlowGraphBuilder.Context.cs (5)
20public readonly IOperation? ImplicitInstance; 22public readonly ImmutableArray<KeyValuePair<IPropertySymbol, IOperation>> AnonymousTypePropertyValues; 24internal Context(IOperation? implicitInstance, INamedTypeSymbol? anonymousType, ImmutableArray<KeyValuePair<IPropertySymbol, IOperation>> anonymousTypePropertyValues) 38ImmutableArray<KeyValuePair<IPropertySymbol, IOperation>>.Empty);
Operations\ControlFlowGraphBuilder.cs (493)
27internal sealed partial class ControlFlowGraphBuilder : OperationVisitor<int?, IOperation> 40private IOperation? _currentStatement; 41private readonly ArrayBuilder<(EvalStackFrame? frameOpt, IOperation? operationOpt)> _evalStack; 46private IOperation? _currentSwitchOperationExpression; 47private IOperation? _forToLoopBinaryOperatorLeftOperand; 48private IOperation? _forToLoopBinaryOperatorRightOperand; 49private IOperation? _currentAggregationGroup; 70_evalStack = ArrayBuilder<(EvalStackFrame? frameOpt, IOperation? operationOpt)>.GetInstance(); 82private bool IsImplicit(IOperation operation) 87public static ControlFlowGraph Create(IOperation body, ControlFlowGraph? parent = null, ControlFlowRegion? enclosing = null, CaptureIdDispenser? captureIdDispenser = null, in Context context = default) 836IOperation? value = block.BranchValue; 1233private void VisitStatement(IOperation? operation) 1244IOperation? saveCurrentStatement = _currentStatement; 1271IOperation? statement 1352foreach ((EvalStackFrame? frameOpt, IOperation? operationOpt) in _evalStack) 1383public override IOperation? VisitBlock(IBlockOperation operation, int? captureIdForResult) 1393private void StartVisitingStatement(IOperation operation) 1401private IOperation? FinishVisitingStatement(IOperation originalOperation, IOperation? result = null) 1412return result ?? MakeInvalidOperation(originalOperation.Syntax, originalOperation.Type, ImmutableArray<IOperation>.Empty); 1415private void VisitStatements(ImmutableArray<IOperation> statements) 1438private bool VisitStatementsOneOrAll(IOperation? operation, ImmutableArray<IOperation> statements, int startIndex) 1454var savedCurrentStatement = _currentStatement; 1467internal override IOperation? VisitWithStatement(IWithStatementOperation operation, int? captureIdForResult) 1480public override IOperation? VisitConstructorBodyOperation(IConstructorBodyOperation operation, int? captureIdForResult) 1497public override IOperation? VisitMethodBodyOperation(IMethodBodyOperation operation, int? captureIdForResult) 1535public override IOperation? VisitConditional(IConditionalOperation operation, int? captureIdForResult) 1609IOperation result; 1615IOperation? rewrittenThrow = BaseVisitRequired(whenTrueConversion.Operand, null); 1633IOperation rewrittenThrow = BaseVisitRequired(whenFalseConversion.Operand, null); 1661private void VisitAndCapture(IOperation operation, int captureId) 1664IOperation result = BaseVisitRequired(operation, captureId); 1670private IOperation VisitAndCapture(IOperation operation) 1678private void CaptureResultIfNotAlready(SyntaxNode syntax, int captureId, IOperation result) 1734(EvalStackFrame? frameOpt, IOperation? operationOpt) = _evalStack.Pop(); 1828(EvalStackFrame? frameOpt, IOperation? operationOpt) = _evalStack[i]; 1866IOperation? operation = _evalStack[j].operationOpt; 1930(EvalStackFrame? frameOpt, IOperation? operationOpt) = _evalStack[i]; 1944private void PushOperand(IOperation operation) 1954private IOperation PopOperand() 1964(EvalStackFrame? frameOpt, IOperation? operationOpt) = _evalStack.Pop(); 1971private IOperation PeekOperand() 1975(EvalStackFrame? frameOpt, IOperation? operationOpt) = _evalStack.Peek(); 1982private void VisitAndPushArray<T>(ImmutableArray<T> array, Func<T, IOperation>? unwrapper = null) where T : IOperation 1984Debug.Assert(unwrapper != null || typeof(T) == typeof(IOperation)); 1991private ImmutableArray<T> PopArray<T>(ImmutableArray<T> originalArray, Func<IOperation, int, ImmutableArray<T>, T>? wrapper = null) where T : IOperation 1993Debug.Assert(wrapper != null || typeof(T) == typeof(IOperation)); 2005IOperation visitedElement = PopOperand(); 2013private ImmutableArray<T> VisitArray<T>(ImmutableArray<T> originalArray, Func<T, IOperation>? unwrapper = null, Func<IOperation, int, ImmutableArray<T>, T>? wrapper = null) where T : IOperation 2072var argument = arguments[i].Value switch 2084private IArgumentOperation RewriteArgumentFromArray(IOperation visitedArgument, int index, ImmutableArray<IArgumentOperation> args) 2093public override IOperation VisitSimpleAssignment(ISimpleAssignmentOperation operation, int? captureIdForResult) 2097IOperation value = VisitRequired(operation.Value); 2101public override IOperation VisitCompoundAssignment(ICompoundAssignmentOperation operation, int? captureIdForResult) 2106IOperation value = VisitRequired(compoundAssignment.Value); 2113public override IOperation VisitArrayElementReference(IArrayElementReferenceOperation operation, int? captureIdForResult) 2117ImmutableArray<IOperation> visitedIndices = VisitArray(operation.Indices); 2118IOperation visitedArrayReference = PopOperand(); 2124public override IOperation VisitImplicitIndexerReference(IImplicitIndexerReferenceOperation operation, int? captureIdForResult) 2128IOperation argument = VisitRequired(operation.Argument); 2129IOperation instance = PopOperand(); 2147public override IOperation VisitBinaryOperator(IBinaryOperation operation, int? captureIdForResult) 2188IOperation leftOperand; 2211IOperation rightOperand = VisitRequired(operation.RightOperand); 2225public override IOperation VisitTupleBinaryOperator(ITupleBinaryOperation operation, int? captureIdForResult) 2227(IOperation visitedLeft, IOperation visitedRight) = VisitPreservingTupleOperations(operation.LeftOperand, operation.RightOperand); 2232public override IOperation VisitUnaryOperator(IUnaryOperation operation, int? captureIdForResult) 2268private IOperation VisitBinaryConditionalOperator(IBinaryOperation binOp, bool sense, int? captureIdForResult, 2284private IOperation VisitNullableBinaryConditionalOperator(IBinaryOperation binOp, int? captureIdForResult) 2288IOperation left = binOp.LeftOperand; 2289IOperation right = binOp.RightOperand; 2290IOperation condition; 2336IOperation capturedLeft = VisitAndCapture(left); 2354IOperation capturedRight = VisitAndCapture(right); 2381IOperation negateNullable(IOperation operand) 2390private IOperation VisitObjectBinaryConditionalOperator(IBinaryOperation binOp) 2395IOperation left = binOp.LeftOperand; 2396IOperation right = binOp.RightOperand; 2397IOperation condition; 2439private IOperation CreateConversion(IOperation operand, ITypeSymbol type) 2445private IOperation VisitDynamicBinaryConditionalOperator(IBinaryOperation binOp, int? captureIdForResult) 2453IOperation left = binOp.LeftOperand; 2454IOperation right = binOp.RightOperand; 2458IOperation condition; 2467IOperation capturedLeft = VisitAndCapture(left); 2506IOperation resultFromLeft = OperationCloner.CloneOperation(capturedLeft); 2520IOperation visitedRight = VisitRequired(right); 2545private IOperation VisitUserDefinedBinaryConditionalOperator(IBinaryOperation binOp, int? captureIdForResult) 2555IOperation left = binOp.LeftOperand; 2556IOperation right = binOp.RightOperand; 2559IOperation condition; 2564IOperation capturedLeft = VisitAndCapture(left); 2609IOperation visitedRight = VisitRequired(right); 2634private IOperation VisitShortCircuitingOperator(IBinaryOperation condition, bool sense, bool stopSense, bool stopValue, 2662IOperation resultFromRight = VisitConditionalExpression(condition.RightOperand, sense, captureId, fallToTrueOpt, fallToFalseOpt); 2685private IOperation VisitConditionalExpression(IOperation condition, bool sense, int? captureIdForResult, BasicBlockBuilder? fallToTrueOpt, BasicBlockBuilder? fallToFalseOpt) 2741private void VisitConditionalBranch(IOperation condition, [NotNull] ref BasicBlockBuilder? dest, bool jumpIfTrue) 2756private void VisitConditionalBranchCore(IOperation condition, [NotNull] ref BasicBlockBuilder? dest, bool jumpIfTrue) 2763void visitConditionalBranchCore(IOperation condition, [NotNull] ref BasicBlockBuilder? dest, bool jumpIfTrue) 2777var stack = ArrayBuilder<(IOperation? condition, BasicBlockBuilder dest, bool jumpIfTrue)>.GetInstance(); 2782(IOperation? condition, BasicBlockBuilder dest, bool jumpIfTrue) top = stack.Pop(); 2884IOperation convertedTestExpression = NullCheckAndConvertCoalesceValue(coalesce, whenNull); 2910IOperation? rewrittenThrow = BaseVisitRequired(conversion.Operand, null); 2933static IOperation skipParenthesized(IOperation condition) 2945private void ConditionalBranch(IOperation condition, bool jumpIfTrue, BasicBlockBuilder destination) 2964private IOperation NullCheckAndConvertCoalesceValue(ICoalesceOperation operation, BasicBlockBuilder whenNull) 2969IOperation operationValue = operation.Value; 2975IOperation testExpression = PopOperand(); 2983IOperation capturedValue = OperationCloner.CloneOperation(testExpression); 2984IOperation? convertedTestExpression = null; 2988IOperation? possiblyUnwrappedValue; 3023public override IOperation VisitCoalesce(ICoalesceOperation operation, int? captureIdForResult) 3035IOperation convertedTestExpression = NullCheckAndConvertCoalesceValue(operation, whenNull); 3037IOperation result; 3052IOperation? rewrittenThrow = BaseVisitRequired(conversion.Operand, null); 3080public override IOperation? VisitCoalesceAssignment(ICoalesceAssignmentOperation operation, int? captureIdForResult) 3096IOperation locationCapture = PopOperand(); 3105IOperation valueCapture = GetCaptureReference(valueCaptureId, locationCapture); 3197IOperation whenNullValue = VisitRequired(operation.Value); 3249IOperation whenNullValue = VisitRequired(operation.Value); 3250IOperation whenNullAssignment = new SimpleAssignmentOperation(isRef: false, OperationCloner.CloneOperation(locationCapture), whenNullValue, semanticModel: null, 3271private static IOperation MakeInvalidOperation(ITypeSymbol? type, IOperation child) 3273return new InvalidOperation(ImmutableArray.Create<IOperation>(child), 3278private static IOperation MakeInvalidOperation(SyntaxNode syntax, ITypeSymbol? type, IOperation child1, IOperation child2) 3280return MakeInvalidOperation(syntax, type, ImmutableArray.Create<IOperation>(child1, child2)); 3283private static IOperation MakeInvalidOperation(SyntaxNode syntax, ITypeSymbol? type, ImmutableArray<IOperation> children) 3290private IsNullOperation MakeIsNullOperation(IOperation operand) 3295private static IsNullOperation MakeIsNullOperation(IOperation operand, ITypeSymbol booleanType) 3306private IOperation? TryCallNullableMember(IOperation value, SpecialMember nullableMember) 3336private IOperation CallNullableMember(IOperation value, SpecialMember nullableMember) 3343public override IOperation? VisitConditionalAccess(IConditionalAccessOperation operation, int? captureIdForResult) 3352var operations = ArrayBuilder<IOperation>.GetInstance(); 3360IOperation testExpression; 3393IOperation result = VisitRequired(currentConditionalAccess.WhenNotNull); 3415IOperation access = VisitRequired(currentConditionalAccess.WhenNotNull); 3459static bool isConditionalAccessInstancePresentInChildren(IOperation operation) 3490foreach (var child in operation.ChildOperations) 3502public override IOperation VisitConditionalAccessInstance(IConditionalAccessInstanceOperation operation, int? captureIdForResult) 3506IOperation testExpression = _currentConditionalAccessTracker.Operations.Pop(); 3510private IOperation VisitConditionalAccessTestExpression(IOperation testExpression) 3519IOperation spilledTestExpression = PopOperand(); 3527IOperation receiver = OperationCloner.CloneOperation(spilledTestExpression); 3537public override IOperation? VisitExpressionStatement(IExpressionStatementOperation operation, int? captureIdForResult) 3541IOperation? underlying = Visit(operation.Operation); 3556public override IOperation? VisitWhileLoop(IWhileLoopOperation operation, int? captureIdForResult) 3629public override IOperation? VisitTry(ITryOperation operation, int? captureIdForResult) 3673IOperation? exceptionDeclarationOrExpression = catchClause.ExceptionDeclarationOrExpression; 3674IOperation? filter = catchClause.Filter; 3768private void AddExceptionStore(ITypeSymbol exceptionType, IOperation? exceptionDeclarationOrExpression) 3772IOperation exceptionTarget; 3805public override IOperation VisitCatchClause(ICatchClauseOperation operation, int? captureIdForResult) 3810public override IOperation? VisitReturn(IReturnOperation operation, int? captureIdForResult) 3813IOperation? returnedValue = Visit(operation.ReturnedValue); 3838public override IOperation? VisitLabeled(ILabeledOperation operation, int? captureIdForResult) 3882public override IOperation? VisitBranch(IBranchOperation operation, int? captureIdForResult) 3889public override IOperation? VisitEmpty(IEmptyOperation operation, int? captureIdForResult) 3895public override IOperation? VisitThrow(IThrowOperation operation, int? captureIdForResult) 3915return new NoneOperation(children: ImmutableArray<IOperation>.Empty, semanticModel: null, operation.Syntax, constantValue: null, isImplicit: true, type: null); 3919private void LinkThrowStatement(IOperation? exception) 3930public override IOperation? VisitUsing(IUsingOperation operation, int? captureIdForResult) 3938private void HandleUsingOperationParts(IOperation resources, IOperation body, IMethodSymbol? disposeMethod, ImmutableArray<IArgumentOperation> disposeArguments, ImmutableArray<ILocalSymbol> locals, bool isAsynchronous) 3969IOperation resource = VisitRequired(resources); 4005bool shouldConvertToIDisposableBeforeTry(IOperation resource) 4010void processResource(IOperation resource, ArrayBuilder<(IVariableDeclarationOperation, IVariableDeclaratorOperation)>? resourceQueueOpt) 4092private void AddDisposingFinally(IOperation resource, bool requiresRuntimeConversion, ITypeSymbol iDisposable, IMethodSymbol? disposeMethod, ImmutableArray<IArgumentOperation> disposeArguments, bool isAsynchronous) 4114IOperation condition = MakeIsNullOperation(OperationCloner.CloneOperation(resource)); 4137IOperation? tryDispose(IOperation value) 4180private IOperation ConvertToIDisposable(IOperation operand, ITypeSymbol iDisposable, bool isTryCast = false) 4188public override IOperation? VisitLock(ILockOperation operation, int? captureIdForResult) 4234IOperation lockedValue = VisitRequired(operation.LockedValue); 4281IOperation? lockTaken = null; 4328IOperation condition = new LocalReferenceOperation(lockStatement.LockTakenSymbol, isDeclaration: false, semanticModel: null, lockedValue.Syntax, 4372public override IOperation? VisitForEachLoop(IForEachLoopOperation operation, int? captureIdForResult) 4397foreach (IOperation op in operation.Collection.DescendantsAndSelf()) 4408IOperation enumerator = getEnumerator(); 4478IOperation applyConversion(IConvertibleConversion? conversionOpt, IOperation operand, ITypeSymbol? targetType) 4489IOperation getEnumerator() 4491IOperation result; 4496IOperation invocation = makeInvocation(operation.Collection.Syntax, 4510result = new InvalidOperation(ImmutableArray<IOperation>.Empty, semanticModel: null, operation.Collection.Syntax, 4518IOperation getCondition(IOperation enumeratorRef) 4536IOperation getCurrent(IOperation enumeratorRef) 4540var instance = info.CurrentProperty.IsStatic ? null : enumeratorRef; 4557IOperation getLoopControlVariableAssignment(IOperation current) 4598InvocationOperation makeInvocationDroppingInstanceForStaticMethods(IMethodSymbol method, IOperation instance, ImmutableArray<IArgumentOperation> arguments) 4603InvocationOperation makeInvocation(SyntaxNode syntax, IMethodSymbol method, IOperation? instanceOpt, ImmutableArray<IArgumentOperation> arguments) 4613ImmutableArray<IArgumentOperation> makeArguments(ImmutableArray<IArgumentOperation> arguments, ref IOperation? instance) 4632public override IOperation? VisitForToLoop(IForToLoopOperation operation, int? captureIdForResult) 4681IOperation tryCallObjectForLoopControlHelper(SyntaxNode syntax, WellKnownMember helper) 4696var builder = ArrayBuilder<IOperation>.GetInstance(--parametersCount, fillWithValue: null!); 4725IOperation value = PopOperand(); 4776IOperation condition = tryCallObjectForLoopControlHelper(operation.LoopControlVariable.Syntax, 4793IOperation stepValue = GetCaptureReference(stepValueId, operation.StepValue); 4804IOperation subtraction = VisitRequired(userDefinedInfo.Subtraction); 4821IOperation? stepValueIsNull = null; 4839IOperation isUp; 4859IOperation literal = new LiteralOperation(semanticModel: null, stepValue.Syntax, stepValue.Type, 4891IOperation initialValue = PopOperand(); 4931IOperation condition = tryCallObjectForLoopControlHelper(operation.LimitValue.Syntax, 4950IOperation controlVariableReferenceForCondition = PopOperand(); 4982IOperation limitReference = GetCaptureReference(limitValueId, operation.LimitValue); 5013IOperation condition; 5050IOperation? eitherLimitOrControlVariableIsNull = null; 5089IOperation controlVariableReferenceforCondition = PopOperand(); 5142IOperation negateIfStepNegative(IOperation operand) 5193IOperation controlVariableReferenceForAssignment = visitLoopControlVariableReference(forceImplicit: true); // Yes we are going to evaluate it again 5202IOperation increment = VisitRequired(userDefinedInfo.Addition); 5222IOperation controlVariableReferenceForAssignment; 5236IOperation condition = new BinaryOperation(BinaryOperatorKind.Or, 5278IOperation controlVariableReferenceForIncrement = visitLoopControlVariableReference(forceImplicit: true); // Yes we are going to evaluate it again 5279IOperation stepValueForIncrement = GetCaptureReference(stepValueId, operation.StepValue); 5288IOperation increment = new BinaryOperation(BinaryOperatorKind.Add, 5326IOperation visitLoopControlVariableReference(bool forceImplicit) 5340IOperation result = VisitRequired(operation.LoopControlVariable); 5347private static FlowCaptureReferenceOperation GetCaptureReference(int id, IOperation underlying) 5352internal override IOperation VisitAggregateQuery(IAggregateQueryOperation operation, int? captureIdForResult) 5356IOperation? previousAggregationGroup = _currentAggregationGroup; 5359IOperation result = VisitRequired(operation.Aggregation); 5365public override IOperation? VisitSwitch(ISwitchOperation operation, int? captureIdForResult) 5370IOperation switchValue = VisitAndCapture(operation.Value); 5412IOperation? condition = ((SwitchCaseOperation)section).Condition; 5444IOperation condition; 5454void handleEqualityCheck(IOperation compareWith) 5462IOperation rightOperand = VisitRequired(compareWith); 5463IOperation leftOperand = PopOperand(); 5565private IOperation MakeNullable(IOperation operand, ITypeSymbol type) 5573public override IOperation VisitSwitchCase(ISwitchCaseOperation operation, int? captureIdForResult) 5578public override IOperation VisitSingleValueCaseClause(ISingleValueCaseClauseOperation operation, int? captureIdForResult) 5583public override IOperation VisitDefaultCaseClause(IDefaultCaseClauseOperation operation, int? captureIdForResult) 5588public override IOperation VisitRelationalCaseClause(IRelationalCaseClauseOperation operation, int? captureIdForResult) 5593public override IOperation VisitRangeCaseClause(IRangeCaseClauseOperation operation, int? captureIdForResult) 5598public override IOperation VisitPatternCaseClause(IPatternCaseClauseOperation operation, int? captureIdForResult) 5603public override IOperation? VisitEnd(IEndOperation operation, int? captureIdForResult) 5616public override IOperation? VisitForLoop(IForLoopOperation operation, int? captureIdForResult) 5640ImmutableArray<IOperation> initialization = operation.Before; 5679internal override IOperation? VisitFixed(IFixedOperation operation, int? captureIdForResult) 5692public override IOperation? VisitVariableDeclarationGroup(IVariableDeclarationGroupOperation operation, int? captureIdForResult) 5745IOperation? initializer = null; 5755IOperation operationInitializer = VisitRequired(declaration.Initializer.Value); 5792public override IOperation VisitVariableDeclaration(IVariableDeclarationOperation operation, int? captureIdForResult) 5798public override IOperation VisitVariableDeclarator(IVariableDeclaratorOperation operation, int? captureIdForResult) 5804public override IOperation VisitVariableInitializer(IVariableInitializerOperation operation, int? captureIdForResult) 5810public override IOperation VisitFlowCapture(IFlowCaptureOperation operation, int? captureIdForResult) 5815public override IOperation VisitFlowCaptureReference(IFlowCaptureReferenceOperation operation, int? captureIdForResult) 5820public override IOperation VisitIsNull(IIsNullOperation operation, int? captureIdForResult) 5825public override IOperation VisitCaughtException(ICaughtExceptionOperation operation, int? captureIdForResult) 5830public override IOperation VisitInvocation(IInvocationOperation operation, int? captureIdForResult) 5833IOperation? instance = operation.TargetMethod.IsStatic ? null : operation.Instance; 5834(IOperation? visitedInstance, ImmutableArray<IArgumentOperation> visitedArguments) = VisitInstanceWithArguments(instance, operation.Arguments); 5840public override IOperation? VisitFunctionPointerInvocation(IFunctionPointerInvocationOperation operation, int? argument) 5843var target = operation.Target; 5849(IOperation visitedInstance, ImmutableArray<IArgumentOperation> visitedArguments) handlePointerAndArguments( 5850IOperation targetPointer, ImmutableArray<IArgumentOperation> arguments) 5855IOperation visitedInstance = PopOperand(); 5861private (IOperation? visitedInstance, ImmutableArray<IArgumentOperation> visitedArguments) VisitInstanceWithArguments(IOperation? instance, ImmutableArray<IArgumentOperation> arguments) 5870IOperation? visitedInstance = hasInstance ? PopOperand() : null; 5875internal override IOperation VisitNoPiaObjectCreation(INoPiaObjectCreationOperation operation, int? argument) 5879IOperation initializedInstance = new NoPiaObjectCreationOperation(initializer: null, semanticModel: null, operation.Syntax, operation.Type, IsImplicit(operation)); 5883public override IOperation VisitObjectCreation(IObjectCreationOperation operation, int? captureIdForResult) 5890IOperation initializedInstance = new ObjectCreationOperation(operation.Constructor, initializer: null, visitedArgs, semanticModel: null, 5896public override IOperation VisitTypeParameterObjectCreation(ITypeParameterObjectCreationOperation operation, int? captureIdForResult) 5903public override IOperation VisitDynamicObjectCreation(IDynamicObjectCreationOperation operation, int? captureIdForResult) 5907ImmutableArray<IOperation> visitedArguments = VisitArray(operation.Arguments); 5911IOperation initializedInstance = new DynamicObjectCreationOperation(initializer: null, visitedArguments, hasDynamicArguments.ArgumentNames, 5918private IOperation HandleObjectOrCollectionInitializer(IObjectOrCollectionInitializerOperation? initializer, IOperation objectCreation) 5935void visitInitializer(IObjectOrCollectionInitializerOperation initializerOperation, IOperation initializedInstance) 5940foreach (IOperation innerInitializer in initializerOperation.Initializers) 5948void handleInitializer(IOperation innerInitializer) 5982IOperation result; 5995IOperation right = VisitRequired(assignmentOperation.Value); 5996IOperation left = popTarget(assignmentOperation.Target); 6047IOperation instance = pushSuccess ? popTarget(memberInitializer.InitializedMember) : VisitRequired(memberInitializer.InitializedMember); 6052bool tryPushTarget(IOperation instance) 6112IOperation popTarget(IOperation originalTarget) 6114IOperation? instance; 6136ImmutableArray<IOperation> indices = PopArray(arrayElementReference.Indices); 6141ImmutableArray<IOperation> arguments = PopArray(dynamicAccess.Arguments); 6158public override IOperation VisitObjectOrCollectionInitializer(IObjectOrCollectionInitializerOperation operation, int? captureIdForResult) 6161return MakeInvalidOperation(operation.Syntax, operation.Type, ImmutableArray<IOperation>.Empty); 6164public override IOperation VisitMemberInitializer(IMemberInitializerOperation operation, int? captureIdForResult) 6167return MakeInvalidOperation(operation.Syntax, operation.Type, ImmutableArray<IOperation>.Empty); 6170public override IOperation VisitAnonymousObjectCreation(IAnonymousObjectCreationOperation operation, int? captureIdForResult) 6174return new AnonymousObjectCreationOperation(initializers: ImmutableArray<IOperation>.Empty, semanticModel: null, 6187var initializerBuilder = ArrayBuilder<IOperation>.GetInstance(operation.Initializers.Length); 6201IOperation visitedTarget = new PropertyReferenceOperation(propertyReference.Property, propertyReference.ConstrainedToType, ImmutableArray<IArgumentOperation>.Empty, visitedPropertyInstance, 6203IOperation visitedValue = visitAndCaptureInitializer(propertyReference.Property, simpleAssignment.Value); 6221IOperation visitAndCaptureInitializer(IPropertySymbol initializedProperty, IOperation initializer) 6225IOperation captured = PeekOperand(); // Keep it on the stack so that we know it is still used. 6237public override IOperation? VisitLocalFunction(ILocalFunctionOperation operation, int? captureIdForResult) 6253private IOperation? VisitLocalFunctionAsRoot(ILocalFunctionOperation operation) 6260public override IOperation VisitAnonymousFunction(IAnonymousFunctionOperation operation, int? captureIdForResult) 6266public override IOperation VisitFlowAnonymousFunction(IFlowAnonymousFunctionOperation operation, int? captureIdForResult) 6271public override IOperation VisitArrayCreation(IArrayCreationOperation operation, int? captureIdForResult) 6290ImmutableArray<IOperation> visitedDimensions = PopArray(operation.DimensionSizes); 6296public override IOperation VisitArrayInitializer(IArrayInitializerOperation operation, int? captureIdForResult) 6304foreach (IOperation elementValue in initializer.ElementValues) 6320var builder = ArrayBuilder<IOperation>.GetInstance(initializer.ElementValues.Length); 6323IOperation elementValue = initializer.ElementValues[i]; 6325IOperation visitedElementValue; 6343public override IOperation VisitInstanceReference(IInstanceReferenceOperation operation, int? captureIdForResult) 6358return MakeInvalidOperation(operation.Syntax, operation.Type, ImmutableArray<IOperation>.Empty); 6370public override IOperation VisitDynamicInvocation(IDynamicInvocationOperation operation, int? captureIdForResult) 6376var instance = ((IDynamicMemberReferenceOperation)operation.Operation).Instance; 6387ImmutableArray<IOperation> rewrittenArguments = VisitArray(operation.Arguments); 6389IOperation rewrittenOperation; 6393IOperation? rewrittenInstance = dynamicMemberReference.Instance != null ? PopOperand() : null; 6407public override IOperation VisitDynamicIndexerAccess(IDynamicIndexerAccessOperation operation, int? captureIdForResult) 6411ImmutableArray<IOperation> rewrittenArguments = VisitArray(operation.Arguments); 6412IOperation rewrittenOperation = PopOperand(); 6418public override IOperation VisitDynamicMemberReference(IDynamicMemberReferenceOperation operation, int? captureIdForResult) 6424public override IOperation VisitDeconstructionAssignment(IDeconstructionAssignmentOperation operation, int? captureIdForResult) 6426(IOperation visitedTarget, IOperation visitedValue) = VisitPreservingTupleOperations(operation.Target, operation.Value); 6433private void PushTargetAndUnwrapTupleIfNecessary(IOperation value) 6439foreach (IOperation element in tuple.Elements) 6453private IOperation PopTargetAndWrapTupleIfNecessary(IOperation value) 6459var elementBuilder = ArrayBuilder<IOperation>.GetInstance(numElements); 6473public override IOperation VisitDeclarationExpression(IDeclarationExpressionOperation operation, int? captureIdForResult) 6478private IOperation VisitPreservingTupleOperations(IOperation operation) 6485private (IOperation visitedLeft, IOperation visitedRight) VisitPreservingTupleOperations(IOperation left, IOperation right) 6496IOperation visitedRight = VisitRequired(right); 6497IOperation visitedLeft = PopTargetAndWrapTupleIfNecessary(left); 6502public override IOperation VisitTuple(ITupleOperation operation, int? captureIdForResult) 6507internal override IOperation VisitNoneOperation(IOperation operation, int? captureIdForResult) 6519private IOperation VisitNoneOperationStatement(IOperation operation) 6523return new NoneOperation(ImmutableArray<IOperation>.Empty, semanticModel: null, operation.Syntax, operation.Type, operation.GetConstantValue(), IsImplicit(operation)); 6526private IOperation VisitNoneOperationExpression(IOperation operation) 6532public override IOperation? VisitInterpolatedStringHandlerCreation(IInterpolatedStringHandlerCreationOperation operation, int? captureIdForResult) 6619IOperation visitedAppendCall = VisitRequired(appendCall.AppendCall); 6716public override IOperation? VisitInterpolatedStringAddition(IInterpolatedStringAdditionOperation operation, int? captureIdForResult) 6721public override IOperation? VisitInterpolatedStringAppend(IInterpolatedStringAppendOperation operation, int? captureIdForResult) 6726public override IOperation? VisitInterpolatedStringHandlerArgumentPlaceholder(IInterpolatedStringHandlerArgumentPlaceholderOperation operation, int? captureIdForResult) 6738if (_currentInterpolatedStringHandlerArgumentContext.HasReceiver && tryGetArgumentOrReceiver(-1) is IOperation receiverCapture) 6745return new InvalidOperation(ImmutableArray<IOperation>.Empty, semanticModel: null, operation.Syntax, operation.Type, operation.GetConstantValue(), isImplicit: true); 6751if (tryGetArgumentOrReceiver(operation.ArgumentIndex) is IOperation argumentCapture) 6758return new InvalidOperation(ImmutableArray<IOperation>.Empty, semanticModel: null, operation.Syntax, operation.Type, operation.GetConstantValue(), isImplicit: true); 6765IOperation? tryGetArgumentOrReceiver(int argumentIndex) 6787public override IOperation VisitInterpolatedString(IInterpolatedStringOperation operation, int? captureIdForResult) 6815IOperation? rewrittenFormatString; 6826var rewrittenAlignment = interpolation.Alignment != null ? PopOperand() : null; 6827var rewrittenExpression = PopOperand(); 6832var rewrittenInterpolationText = VisitRequired(interpolatedStringText.Text, argument: null); 6848public override IOperation VisitInterpolatedStringText(IInterpolatedStringTextOperation operation, int? captureIdForResult) 6853public override IOperation VisitInterpolation(IInterpolationOperation operation, int? captureIdForResult) 6858public override IOperation VisitNameOf(INameOfOperation operation, int? captureIdForResult) 6864public override IOperation VisitLiteral(ILiteralOperation operation, int? captureIdForResult) 6869public override IOperation? VisitUtf8String(IUtf8StringOperation operation, int? captureIdForResult) 6874public override IOperation VisitLocalReference(ILocalReferenceOperation operation, int? captureIdForResult) 6880public override IOperation VisitParameterReference(IParameterReferenceOperation operation, int? captureIdForResult) 6886public override IOperation VisitFieldReference(IFieldReferenceOperation operation, int? captureIdForResult) 6888IOperation? visitedInstance = operation.Field.IsStatic ? null : Visit(operation.Instance); 6893public override IOperation VisitMethodReference(IMethodReferenceOperation operation, int? captureIdForResult) 6895IOperation? visitedInstance = operation.Method.IsStatic ? null : Visit(operation.Instance); 6900public override IOperation VisitPropertyReference(IPropertyReferenceOperation operation, int? captureIdForResult) 6909if (_currentImplicitInstance.AnonymousTypePropertyValues.TryGetValue(operation.Property, out IOperation? captured)) 6917return MakeInvalidOperation(operation.Syntax, operation.Type, ImmutableArray<IOperation>.Empty); 6922IOperation? instance = operation.Property.IsStatic ? null : operation.Instance; 6923(IOperation? visitedInstance, ImmutableArray<IArgumentOperation> visitedArguments) = VisitInstanceWithArguments(instance, operation.Arguments); 6929public override IOperation VisitEventReference(IEventReferenceOperation operation, int? captureIdForResult) 6931IOperation? visitedInstance = operation.Event.IsStatic ? null : Visit(operation.Instance); 6936public override IOperation VisitTypeOf(ITypeOfOperation operation, int? captureIdForResult) 6941public override IOperation VisitParenthesized(IParenthesizedOperation operation, int? captureIdForResult) 6946public override IOperation VisitAwait(IAwaitOperation operation, int? captureIdForResult) 6951public override IOperation VisitSizeOf(ISizeOfOperation operation, int? captureIdForResult) 6956public override IOperation VisitStop(IStopOperation operation, int? captureIdForResult) 6961public override IOperation VisitIsType(IIsTypeOperation operation, int? captureIdForResult) 6966public override IOperation? VisitParameterInitializer(IParameterInitializerOperation operation, int? captureIdForResult) 6976public override IOperation? VisitFieldInitializer(IFieldInitializerOperation operation, int? captureIdForResult) 6994public override IOperation? VisitPropertyInitializer(IPropertyInitializerOperation operation, int? captureIdForResult) 7012var value = new InvalidOperation(ImmutableArray<IOperation>.Empty, semanticModel: null, 7028IOperation propertyRef = new PropertyReferenceOperation(propertySymbol, constrainedToType: null, arguments, instance, 7036private void VisitInitializer(IOperation rewrittenTarget, ISymbolInitializerOperation initializer) 7049public override IOperation VisitEventAssignment(IEventAssignmentOperation operation, int? captureIdForResult) 7052IOperation visitedEventReference, visitedHandler; 7060var eventReferenceInstance = eventReference.Event.IsStatic ? null : eventReference.Instance; 7068IOperation? visitedInstance = eventReferenceInstance == null ? null : PopOperand(); 7087IOperation current = operation.EventReference; 7107public override IOperation VisitRaiseEvent(IRaiseEventOperation operation, int? captureIdForResult) 7113(IOperation? visitedInstance, ImmutableArray<IArgumentOperation> visitedArguments) = 7123public override IOperation VisitAddressOf(IAddressOfOperation operation, int? captureIdForResult) 7128public override IOperation VisitIncrementOrDecrement(IIncrementOrDecrementOperation operation, int? captureIdForResult) 7135public override IOperation VisitDiscardOperation(IDiscardOperation operation, int? captureIdForResult) 7140public override IOperation VisitDiscardPattern(IDiscardPatternOperation pat, int? captureIdForResult) 7145public override IOperation VisitOmittedArgument(IOmittedArgumentOperation operation, int? captureIdForResult) 7150internal override IOperation VisitPlaceholder(IPlaceholderOperation operation, int? captureIdForResult) 7184public override IOperation VisitConversion(IConversionOperation operation, int? captureIdForResult) 7189public override IOperation VisitDefaultValue(IDefaultValueOperation operation, int? captureIdForResult) 7194public override IOperation VisitIsPattern(IIsPatternOperation operation, int? captureIdForResult) 7199IOperation visitedValue = PopOperand(); 7205public override IOperation VisitInvalid(IInvalidOperation operation, int? captureIdForResult) 7207var children = ArrayBuilder<IOperation>.GetInstance(); 7222foreach (var argument in children) 7234IOperation initializedInstance = new InvalidOperation(children.ToImmutableAndFree(), semanticModel: null, operation.Syntax, operation.Type, 7242IOperation result; 7254IOperation visitInvalidOperationStatement(IInvalidOperation invalidOperation) 7258return new InvalidOperation(ImmutableArray<IOperation>.Empty, semanticModel: null, invalidOperation.Syntax, invalidOperation.Type, invalidOperation.GetConstantValue(), IsImplicit(invalidOperation)); 7261IOperation visitInvalidOperationExpression(IInvalidOperation invalidOperation) 7269public override IOperation? VisitReDim(IReDimOperation operation, int? argument) 7295var visitedOperand = PopOperand(); 7300public override IOperation VisitReDimClause(IReDimClauseOperation operation, int? argument) 7305public override IOperation VisitTranslatedQuery(ITranslatedQueryOperation operation, int? captureIdForResult) 7310public override IOperation VisitConstantPattern(IConstantPatternOperation operation, int? captureIdForResult) 7316public override IOperation VisitRelationalPattern(IRelationalPatternOperation operation, int? argument) 7328public override IOperation VisitBinaryPattern(IBinaryPatternOperation operation, int? argument) 7341public override IOperation VisitNegatedPattern(INegatedPatternOperation operation, int? argument) 7352public override IOperation VisitTypePattern(ITypePatternOperation operation, int? argument) 7363public override IOperation VisitDeclarationPattern(IDeclarationPatternOperation operation, int? captureIdForResult) 7376public override IOperation VisitSlicePattern(ISlicePatternOperation operation, int? argument) 7388public override IOperation VisitListPattern(IListPatternOperation operation, int? argument) 7402public override IOperation VisitRecursivePattern(IRecursivePatternOperation operation, int? argument) 7417public override IOperation VisitPropertySubpattern(IPropertySubpatternOperation operation, int? argument) 7427public override IOperation VisitDelegateCreation(IDelegateCreationOperation operation, int? captureIdForResult) 7433public override IOperation VisitRangeOperation(IRangeOperation operation, int? argument) 7440IOperation? visitedRightOperand = null; 7446IOperation? visitedLeftOperand = operation.LeftOperand is null ? null : PopOperand(); 7451public override IOperation VisitSwitchExpression(ISwitchExpressionOperation operation, int? captureIdForResult) 7478var capturedInput = VisitAndCapture(operation.Value); 7528var makeException = (matchFailureCtor is null) 7529? MakeInvalidOperation(operation.Syntax, type: _compilation.GetSpecialType(SpecialType.System_Object), ImmutableArray<IOperation>.Empty) 7543private void VisitUsingVariableDeclarationOperation(IUsingDeclarationOperation operation, ReadOnlySpan<IOperation> statements) 7545IOperation? saveCurrentStatement = _currentStatement; 7552ArrayBuilder<IOperation> statementsBuilder = ArrayBuilder<IOperation>.GetInstance(statements.Length); 7553ArrayBuilder<IOperation>? localFunctionsBuilder = null; 7555foreach (var statement in statements) 7559(localFunctionsBuilder ??= ArrayBuilder<IOperation>.GetInstance()).Add(statement); 7588public IOperation? Visit(IOperation? operation) 7597public IOperation? VisitRequired(IOperation? operation, int? argument = null) 7600var result = Visit(operation, argument); 7607public IOperation? BaseVisitRequired(IOperation? operation, int? argument) 7611var result = base.Visit(operation, argument); 7618public override IOperation? Visit(IOperation? operation, int? argument) 7627var result = PopStackFrame(PushStackFrame(), base.Visit(operation, argument)); 7633public override IOperation DefaultVisit(IOperation operation, int? captureIdForResult) 7639public override IOperation VisitArgument(IArgumentOperation operation, int? captureIdForResult) 7644public override IOperation VisitUsingDeclaration(IUsingDeclarationOperation operation, int? captureIdForResult) 7649public override IOperation VisitWith(IWithOperation operation, int? captureIdForResult) 7658IOperation visitedInstance = VisitRequired(operation.Operand); 7659IOperation cloned; 7676IOperation handleAnonymousTypeWithExpression(WithOperation operation, int? captureIdForResult) 7709var explicitProperties = new Dictionary<IPropertySymbol, IOperation>(SymbolEqualityComparer.IgnoreAll); 7710var initializerBuilder = ArrayBuilder<IOperation>.GetInstance(initializers.Length); 7713foreach (IOperation initializer in initializers) 7758if (explicitProperties.TryGetValue(property, out var assignment)) 7790SimpleAssignmentOperation makeAssignment(IPropertySymbol property, IOperation capturedValue, WithOperation operation) 7805static bool setsAllProperties(ImmutableArray<IOperation> initializers, IEnumerable<IPropertySymbol> properties) 7808foreach (var initializer in initializers) 7829public override IOperation VisitAttribute(IAttributeOperation operation, int? captureIdForResult)
Operations\ControlFlowGraphBuilder.ImplicitInstanceInfo.cs (6)
23public IOperation? ImplicitInstance { get; } 33public PooledDictionary<IPropertySymbol, IOperation>? AnonymousTypePropertyValues { get; } 35public ImplicitInstanceInfo(IOperation currentImplicitInstance) 49AnonymousTypePropertyValues = PooledDictionary<IPropertySymbol, IOperation>.GetInstance(); 66AnonymousTypePropertyValues = PooledDictionary<IPropertySymbol, IOperation>.GetInstance(); 68foreach (KeyValuePair<IPropertySymbol, IOperation> pair in context.AnonymousTypePropertyValues)
Operations\ControlFlowGraphBuilder.InterpolatedStringContext.cs (2)
47private void AssertContainingContextIsForThisCreation(IOperation placeholderOperation, bool assertArgumentContext) 52IOperation? operation = placeholderOperation.Parent;
Operations\ControlFlowGraphBuilder.RegionBuilder.cs (9)
311foreach ((IMethodSymbol method, IOperation _) in LocalFunctions) 387foreach (IOperation o in block.StatementsOpt) 399OperationVisitor<(ImmutableDictionary<IFlowAnonymousFunctionOperation, (ControlFlowRegion region, int ordinal)>.Builder map, ControlFlowRegion region), IOperation> 403public override IOperation? VisitFlowAnonymousFunction( 411internal override IOperation? VisitNoneOperation(IOperation operation, (ImmutableDictionary<IFlowAnonymousFunctionOperation, (ControlFlowRegion region, int ordinal)>.Builder map, ControlFlowRegion region) argument) 416public override IOperation? DefaultVisit( 417IOperation operation, 420foreach (IOperation child in ((Operation)operation).ChildOperations)
Operations\IOperation.cs (2)
25IOperation? Parent { get; } 51IEnumerable<IOperation> Children { get; }
Operations\IOperation.OperationList.cs (14)
23public readonly partial struct OperationList : IReadOnlyCollection<IOperation> 36public ImmutableArray<IOperation> ToImmutableArray() 41return ImmutableArray<IOperation>.Empty; 47var builder = ArrayBuilder<IOperation>.GetInstance(Count); 48foreach (var child in this) 56IEnumerator<IOperation> IEnumerable<IOperation>.GetEnumerator() 60return SpecializedCollections.EmptyEnumerator<IOperation>(); 66IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable<IOperation>)this).GetEnumerator(); 70public IOperation First() 83public IOperation Last() 121public IOperation Current 144private sealed class EnumeratorImpl : IEnumerator<IOperation> 153public IOperation Current => _enumerator.Current;
Operations\IOperation.OperationList.Reversed.cs (15)
25public readonly struct Reversed : IReadOnlyCollection<IOperation> 38public ImmutableArray<IOperation> ToImmutableArray() 44return ImmutableArray<IOperation>.Empty; 50var builder = ArrayBuilder<IOperation>.GetInstance(Count); 51foreach (var child in this) 58static ImmutableArray<IOperation> reverseArray(ImmutableArray<IOperation> input) 60var builder = ArrayBuilder<IOperation>.GetInstance(input.Length); 70IEnumerator<IOperation> IEnumerable<IOperation>.GetEnumerator() 74return SpecializedCollections.EmptyEnumerator<IOperation>(); 80IEnumerator IEnumerable.GetEnumerator() => ((IEnumerable<IOperation>)this).GetEnumerator(); 101public IOperation Current 124private sealed class EnumeratorImpl : IEnumerator<IOperation> 133public IOperation Current => _enumerator.Current;
Operations\Loops\ForToLoopOperationInfo.cs (4)
13public readonly IOperation LessThanOrEqual; 14public readonly IOperation GreaterThanOrEqual; 16public ForToLoopOperationUserDefinedInfo(IBinaryOperation addition, IBinaryOperation subtraction, IOperation lessThanOrEqual, IOperation greaterThanOrEqual)
Operations\Operation.cs (22)
21protected static readonly IOperation s_unset = new EmptyOperation(semanticModel: null, syntax: null!, isImplicit: true); 26private IOperation? _parentDoNotAccessDirectly; 49public IOperation? Parent 108IEnumerable<IOperation> IOperation.Children => this.ChildOperations; 111public IOperation.OperationList ChildOperations => new IOperation.OperationList(this); 114internal abstract IOperation GetCurrent(int slot, int index); 124SemanticModel? IOperation.SemanticModel => _owningSemanticModelOpt?.ContainingPublicModelOrSelf; 128/// Note that this may be different than <see cref="IOperation.SemanticModel"/>, which 138protected void SetParentOperation(IOperation? parent) 149public static T? SetParentOperation<T>(T? operation, IOperation? parent) where T : IOperation 157public static ImmutableArray<T> SetParentOperation<T>(ImmutableArray<T> operations, IOperation? parent) where T : IOperation 175internal static void VerifyParentOperation(IOperation? parent, IOperation child) 184internal static void VerifyParentOperation<T>(IOperation? parent, ImmutableArray<T> children) where T : IOperation 193private static readonly ObjectPool<Queue<IOperation>> s_queuePool = 194new ObjectPool<Queue<IOperation>>(() => new Queue<IOperation>(), 10);
Operations\OperationCloner.cs (14)
11internal sealed partial class OperationCloner : OperationVisitor<object?, IOperation> 14public IOperation? Visit(IOperation? operation) 19internal override IOperation VisitNoneOperation(IOperation operation, object? argument) 24public override IOperation VisitFlowAnonymousFunction(IFlowAnonymousFunctionOperation operation, object? argument) 30public override IOperation VisitDynamicObjectCreation(IDynamicObjectCreationOperation operation, object? argument) 35public override IOperation VisitDynamicInvocation(IDynamicInvocationOperation operation, object? argument) 40public override IOperation VisitDynamicIndexerAccess(IDynamicIndexerAccessOperation operation, object? argument) 45public override IOperation VisitInvalid(IInvalidOperation operation, object? argument) 50public override IOperation VisitFlowCapture(IFlowCaptureOperation operation, object? argument) 55public override IOperation VisitIsNull(IIsNullOperation operation, object? argument) 60public override IOperation VisitCaughtException(ICaughtExceptionOperation operation, object? argument) 65public override IOperation VisitStaticLocalInitializationSemaphore(IStaticLocalInitializationSemaphoreOperation operation, object? argument)
Operations\OperationExtensions.cs (15)
28internal static bool HasErrors(this IOperation operation, Compilation compilation, CancellationToken cancellationToken = default(CancellationToken)) 70public static IEnumerable<IOperation> Descendants(this IOperation? operation) 79public static IEnumerable<IOperation> DescendantsAndSelf(this IOperation? operation) 84private static IEnumerable<IOperation> Descendants(IOperation? operation, bool includeSelf) 96var stack = ArrayBuilder<IOperation.OperationList.Enumerator>.GetInstance(); 108var current = iterator.Current; 329/// Gets the root operation for the <see cref="IOperation"/> tree containing the given <paramref name="operation"/>. 332internal static IOperation GetRootOperation(this IOperation operation) 351public static IOperation? GetCorrespondingOperation(this IBranchOperation operation) 373for (IOperation current = operation; current.Parent != null; current = current.Parent) 388internal static ConstantValue? GetConstantValue(this IOperation operation)
Operations\OperationFactory.cs (1)
11public static IInvalidOperation CreateInvalidOperation(SemanticModel semanticModel, SyntaxNode syntax, ImmutableArray<IOperation> children, bool isImplicit)
Operations\OperationMapBuilder.cs (11)
18internal static void AddToMap(IOperation root, Dictionary<SyntaxNode, IOperation> dictionary) 24private sealed class Walker : OperationWalker<Dictionary<SyntaxNode, IOperation>> 28public override object? DefaultVisit(IOperation operation, Dictionary<SyntaxNode, IOperation> argument) 34public override object? VisitBinaryOperator([DisallowNull] IBinaryOperation? operation, Dictionary<SyntaxNode, IOperation> argument) 56internal override object? VisitNoneOperation(IOperation operation, Dictionary<SyntaxNode, IOperation> argument) 63private static void RecordOperation(IOperation operation, Dictionary<SyntaxNode, IOperation> argument) 69$"Duplicate operation node for {operation.Syntax}. Existing node is {(argument.TryGetValue(operation.Syntax, out var original) ? original.Kind : null)}, new node is {operation.Kind}.");
Operations\OperationNodes.cs (26)
18public NoneOperation(ImmutableArray<IOperation> children, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) : 26internal ImmutableArray<IOperation> Children { get; } 28internal override IOperation GetCurrent(int slot, int index) 87public InvalidOperation(ImmutableArray<IOperation> children, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, ConstantValue? constantValue, bool isImplicit) : 97internal ImmutableArray<IOperation> Children { get; } 99internal override IOperation GetCurrent(int slot, int index) 163internal override IOperation GetCurrent(int slot, int index) => throw ExceptionUtilities.UnexpectedValue((slot, index)); 235protected HasDynamicArgumentsExpression(ImmutableArray<IOperation> arguments, ImmutableArray<string> argumentNames, ImmutableArray<RefKind> argumentRefKinds, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) : 246public ImmutableArray<IOperation> Arguments { get; } 252public DynamicObjectCreationOperation(IObjectOrCollectionInitializerOperation? initializer, ImmutableArray<IOperation> arguments, ImmutableArray<string> argumentNames, ImmutableArray<RefKind> argumentRefKinds, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) : 264internal override IOperation GetCurrent(int slot, int index) 334public DynamicInvocationOperation(IOperation operation, ImmutableArray<IOperation> arguments, ImmutableArray<string> argumentNames, ImmutableArray<RefKind> argumentRefKinds, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) : 342internal override IOperation GetCurrent(int slot, int index) 400public IOperation Operation { get; } 416public DynamicIndexerAccessOperation(IOperation operation, ImmutableArray<IOperation> arguments, ImmutableArray<string> argumentNames, ImmutableArray<RefKind> argumentRefKinds, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) : 422public IOperation Operation { get; } 428internal override IOperation GetCurrent(int slot, int index) 513internal override IOperation GetCurrent(int slot, int index) 517IOperation getCurrentSwitchTop() 529IOperation getCurrentSwitchBottom() 649public FlowCaptureOperation(int id, SyntaxNode syntax, IOperation value) : 658public IsNullOperation(SyntaxNode syntax, IOperation operand, ITypeSymbol type, ConstantValue? constantValue) : 688public static BlockOperation CreateTemporaryBlock(ImmutableArray<IOperation> statements, SemanticModel semanticModel, SyntaxNode syntax) 691private BlockOperation(ImmutableArray<IOperation> statements, SemanticModel semanticModel, SyntaxNode syntax)
Operations\OperationVisitor.cs (2)
8/// Represents a <see cref="IOperation"/> visitor that visits only the single IOperation 21/// Represents a <see cref="IOperation"/> visitor that visits only the single IOperation
Operations\OperationWalker.cs (12)
8/// Represents a <see cref="OperationVisitor"/> that descends an entire <see cref="IOperation"/> tree 15private void VisitChildOperations(IOperation operation) 17foreach (var child in ((Operation)operation).ChildOperations) 23public override void Visit(IOperation? operation) 40public override void DefaultVisit(IOperation operation) 45internal override void VisitNoneOperation(IOperation operation) 52/// Represents a <see cref="OperationVisitor{TArgument, TResult}"/> that descends an entire <see cref="IOperation"/> tree 59private void VisitChildrenOperations(IOperation operation, TArgument argument) 61foreach (var child in ((Operation)operation).ChildOperations) 67public override object? Visit(IOperation? operation, TArgument argument) 86public override object? DefaultVisit(IOperation operation, TArgument argument) 92internal override object? VisitNoneOperation(IOperation operation, TArgument argument)
Microsoft.CodeAnalysis.CodeStyle (233)
AbstractConvertTypeOfToNameOfDiagnosticAnalyzer.cs (1)
57private static bool IsValidOperation(IOperation operation)
AbstractPopulateSwitchDiagnosticAnalyzer.cs (3)
17where TSwitchOperation : IOperation 36protected abstract IOperation GetValueOfSwitchOperation(TSwitchOperation operation); 95var value = GetValueOfSwitchOperation(operation);
AbstractPopulateSwitchExpressionDiagnosticAnalyzer.cs (1)
23protected override IOperation GetValueOfSwitchOperation(ISwitchExpressionOperation operation)
AbstractPopulateSwitchStatementDiagnosticAnalyzer.cs (1)
23protected override IOperation GetValueOfSwitchOperation(ISwitchOperation operation)
AbstractQualifyMemberAccessDiagnosticAnalyzer.cs (4)
58protected abstract Location GetLocation(IOperation operation); 83private void AnalyzeOperation(OperationAnalysisContext context, IOperation operation, IOperation? instanceOperation) 144private static bool IsStaticMemberOrIsLocalFunction(IOperation operation)
AbstractRemoveRedundantEqualityDiagnosticAnalyzer.cs (3)
52var rightOperand = operation.RightOperand; 53var leftOperand = operation.LeftOperand; 88static bool? TryGetLiteralValue(IOperation operand)
AbstractRemoveUnnecessaryAttributeSuppressionsDiagnosticAnalyzer.cs (1)
90out var targetSymbolString, out var targetValueOperation, out var resolvedSymbols))
AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (1)
352var nameofArgument = ((INameOfOperation)operationContext.Operation).Argument;
AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (2)
103protected abstract Location GetDefinitionLocationToFade(IOperation unusedDefinition); 117protected virtual bool ShouldBailOutFromRemovableAssignmentAnalysis(IOperation unusedSymbolWriteOperation)
AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (17)
31/// We use this value in <see cref="ShouldAnalyze(IOperation, ISymbol, ref bool)"/> to determine whether to bail from analysis or not. 44/// We use this value in <see cref="ShouldAnalyze(IOperation, ISymbol, ref bool)"/> to determine whether to bail from analysis or not. 50/// We use this value in <see cref="ShouldAnalyze(IOperation, ISymbol, ref bool)"/> to determine whether to bail from analysis or not. 79var firstBlock = context.OperationBlocks[0]; 105foreach (var operationBlock in context.OperationBlocks) 116foreach (var operationBlock in context.OperationBlocks) 137var value = expressionStatement.Operation; 219/// delegate escape, and corresponding bail out from flow analysis in <see cref="ShouldAnalyze(IOperation, ISymbol, ref bool)"/>. 223private static bool IsHandledDelegateCreationOrAnonymousFunctionTreeShape(IOperation operation) 267/// delegate escape, and corresponding bail out from flow analysis in <see cref="ShouldAnalyze(IOperation, ISymbol, ref bool)"/>. 272private static bool IsHandledLocalOrParameterReferenceTreeShape(IOperation operation) 332private bool ShouldAnalyze(IOperation operationBlock, ISymbol owningSymbol, ref bool hasOperationNoneDescendant) 343foreach (var operation in operationBlock.Descendants()) 453foreach (var operationBlock in context.OperationBlocks) 552IOperation unreadWriteOperation, 595bool IsRemovableAssignmentWithoutSideEffects(IOperation unusedSymbolWriteOperation) 619static bool IsRemovableAssignmentValueWithoutSideEffects(IOperation assignmentValue)
AbstractSimplifyInterpolationHelpers.cs (17)
24protected abstract SyntaxNode GetPreservedInterpolationExpressionSyntax(IOperation operation); 39var expression = Unwrap(interpolation.Expression); 54private static IOperation? Unwrap(IOperation? expression, bool towardsParent = false) 76IVirtualCharService virtualCharService, ISyntaxFacts syntaxFacts, IOperation expression, out IOperation unwrapped, 82HasNonImplicitInstance(invocation, out var instance) && 137private static bool IsInvariantCultureReference(IOperation operation) 156private static bool IsInsideFormattableStringInvariant(IOperation operation) 177private static IEnumerable<IOperation> AncestorsAndSelf(IOperation operation) 179for (var current = operation; current is not null; current = current.Parent) 192IOperation expression, out IOperation unwrapped, 197HasNonImplicitInstance(invocation, out var instance)) 208var alignmentOp = invocation.Arguments[0].Value; 235private static bool HasNonImplicitInstance(IInvocationOperation invocation, [NotNullWhen(true)] out IOperation? instance)
AbstractUseConditionalExpressionForAssignmentDiagnosticAnalyzer.cs (2)
31GetSyntaxFacts(), ifOperation, out var isRef, out var trueStatement, out var falseStatement, out var trueAssignment, out var falseAssignment))
AbstractUseConditionalExpressionForReturnDiagnosticAnalyzer.cs (2)
31GetSyntaxFacts(), ifOperation, containingSymbol, out var isRef, out var trueStatement, out var falseStatement, out var trueReturn, out var falseReturn))
AbstractUseThrowExpressionDiagnosticAnalyzer.cs (4)
215var condition = ifStatement.Condition; 242IOperation operation, 264private static bool IsNull(IOperation operation) 275var containingOperation = semanticModel.GetOperation(throwStatement.GetRequiredParent(), cancellationToken);
BasicBlockExtensions.cs (4)
12public static IEnumerable<IOperation> DescendantOperations(this BasicBlock basicBlock) 14foreach (var statement in basicBlock.Operations) 16foreach (var operation in statement.DescendantsAndSelf()) 24foreach (var operation in basicBlock.BranchValue.DescendantsAndSelf())
ControlFlowGraphExtensions.cs (2)
27public static IEnumerable<IOperation> DescendantOperations(this ControlFlowGraph cfg) 31where T : IOperation
HashCodeAnalyzer.cs (10)
58public (bool accessesBase, ImmutableArray<ISymbol> members, ImmutableArray<IOperation> statements) GetHashedMembers(ISymbol? owningSymbol, IOperation? operation) 90IMethodSymbol method, ImmutableArray<IOperation> statements) 113IMethodSymbol method, ImmutableArray<IOperation> statements) 152var initializerValue = declaration.Initializer?.Value ?? declarator.Initializer?.Value; 198var statement = statements[i]; 224private static bool IsLocalReference(IOperation value, ILocalSymbol accumulatorVariable) 230private static bool IsLiteralNumber(IOperation value) 238private static IOperation Unwrap(IOperation value)
HashCodeAnalyzer.OperationDeconstructor.cs (4)
17/// Breaks down complex <see cref="IOperation"/> trees, looking for particular 54public bool TryAddHashedSymbol(IOperation value, bool seenHash) 161foreach (var element in tupleOperation.Elements) 177private static bool TryGetFieldOrProperty(IOperation operation, [NotNullWhen(true)] out ISymbol? symbol)
OperationExtensions.cs (32)
18public static bool IsTargetOfObjectMemberInitializer(this IOperation operation) 27public static ValueUsageInfo GetValueUsageInfo(this IOperation operation, ISymbol containingSymbol) 230public static IMethodSymbol? TryGetContainingAnonymousFunctionOrLocalFunction(this IOperation? operation) 250public static bool IsInLeftOfDeconstructionAssignment(this IOperation operation, [NotNullWhen(true)] out IDeconstructionAssignmentOperation? deconstructionAssignment) 254var previousOperation = operation; 255var current = operation.Parent; 286public static bool IsAnyCompoundAssignment(this IOperation operation) 299public static bool IsInsideCatchRegion(this IOperation operation, ControlFlowGraph cfg) 319foreach (var descendant in block.DescendantOperations()) 332public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, Func<IOperation, bool> predicate) 334foreach (var operationBlock in operationBlocks) 345public static bool HasAnyOperationDescendant(this IOperation operationBlock, Func<IOperation, bool> predicate) 348public static bool HasAnyOperationDescendant(this IOperation operationBlock, Func<IOperation, bool> predicate, [NotNullWhen(true)] out IOperation? foundOperation) 352foreach (var descendant in operationBlock.DescendantsAndSelf()) 365public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, OperationKind kind) 368public static bool IsNumericLiteral(this IOperation operation) 371public static bool IsNullLiteral(this IOperation operand) 380public static IOperation? WalkDownConversion(this IOperation? operation) 390public static bool IsSingleThrowNotImplementedOperation([NotNullWhen(true)] this IOperation? firstBlock) 406var firstOp = block.Operations.Length == 1 428static IOperation? TryGetSingleExplicitStatement(ImmutableArray<IOperation> operations) 430IOperation? firstOp = null; 431foreach (var operation in operations) 445static bool IsThrowNotImplementedOperation(INamedTypeSymbol notImplementedExceptionType, IOperation? operation) 452public static IOperation? UnwrapImplicitConversion(this IOperation? value)
PopulateSwitchExpressionHelpers.cs (2)
19var switchExpression = operation.Value; 77private static void RemoveIfConstantPatternHasValue(IOperation operation, Dictionary<long, ISymbol> enumMembers)
PopulateSwitchStatementHelpers.cs (2)
46var switchExpression = switchStatement.Value; 107var value = ((ISingleValueCaseClauseOperation)clause).Value;
SemanticModelExtensions.cs (1)
53public static IOperation GetRequiredOperation(this SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
SuppressMessageAttributeState.cs (10)
55out ImmutableArray<(string name, IOperation value)> namedAttributeArguments) 57var operation = (model.GetOperation(attributeSyntax, cancellationToken) as IAttributeOperation)?.Operation; 60namedAttributeArguments = ImmutableArray<(string name, IOperation value)>.Empty; 64using var _ = ArrayBuilder<(string name, IOperation value)>.GetInstance(out var builder); 65foreach (var initializer in initializerOperation.Initializers) 79public static bool HasValidScope(ImmutableArray<(string name, IOperation value)> namedAttributeArguments, out TargetScope targetScope) 97ImmutableArray<(string name, IOperation value)> namedAttributeArguments, 101out IOperation? targetValueOperation, 137ImmutableArray<(string name, IOperation value)> namedAttributeArguments, 140[NotNullWhen(returnValue: true)] out IOperation? argumentValueOperation)
SymbolUsageAnalysis.AnalysisData.cs (15)
61protected abstract PooledDictionary<(ISymbol symbol, IOperation operation), bool> SymbolsWriteBuilder { get; } 132public abstract void OnLValueCaptureFound(ISymbol symbol, IOperation operation, CaptureId captureId); 137public abstract void SetTargetsFromSymbolForDelegate(IOperation write, ISymbol symbol); 138public abstract void SetLambdaTargetForDelegate(IOperation write, IFlowAnonymousFunctionOperation lambdaTarget); 139public abstract void SetLocalFunctionTargetForDelegate(IOperation write, IMethodReferenceOperation localFunctionTarget); 140public abstract void SetEmptyInvocationTargetsForDelegate(IOperation write); 141public abstract bool TryGetDelegateInvocationTargets(IOperation write, out ImmutableHashSet<IOperation> targets); 143protected static PooledDictionary<(ISymbol Symbol, IOperation Write), bool> CreateSymbolsWriteMap( 146var symbolsWriteMap = PooledDictionary<(ISymbol Symbol, IOperation Write), bool>.GetInstance(); 150protected static PooledDictionary<(ISymbol Symbol, IOperation Write), bool> UpdateSymbolsWriteMap( 151PooledDictionary<(ISymbol Symbol, IOperation Write), bool> symbolsWriteMap, 158(ISymbol, IOperation) key = (parameter, null); 189foreach (var write in currentWrites) 199public void OnWriteReferenceFound(ISymbol symbol, IOperation operation, bool maybeWritten, bool isRef)
SymbolUsageAnalysis.BasicBlockAnalysisData.cs (8)
30private readonly Dictionary<ISymbol, PooledHashSet<IOperation>> _reachingWrites; 33=> _reachingWrites = new Dictionary<ISymbol, PooledHashSet<IOperation>>(); 76public IEnumerable<IOperation> GetCurrentWrites(ISymbol symbol) 80foreach (var value in values) 91public void OnWriteReferenceFound(ISymbol symbol, IOperation operation, bool maybeWritten) 95values = PooledHashSet<IOperation>.GetInstance(); 195private static void AddEntries(Dictionary<ISymbol, PooledHashSet<IOperation>> result, BasicBlockAnalysisData source) 203values = PooledHashSet<IOperation>.GetInstance();
SymbolUsageAnalysis.cs (2)
32public static SymbolUsageResult Run(IOperation rootOperation, ISymbol owningSymbol, CancellationToken cancellationToken) 45var localFunctionOperation = rootOperation.Descendants()
SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (36)
41private readonly PooledDictionary<CaptureId, PooledHashSet<(ISymbol, IOperation)>> _lValueFlowCapturesMap; 48private readonly PooledDictionary<IOperation, PooledHashSet<IOperation>> _reachingDelegateCreationTargets; 69private readonly PooledDictionary<(int firstBlockOrdinal, int lastBlockOrdinal), PooledHashSet<(ISymbol, IOperation)>> _symbolWritesInsideBlockRangeMap; 77PooledDictionary<(ISymbol symbol, IOperation operation), bool> symbolsWriteMap, 81PooledDictionary<IOperation, PooledHashSet<IOperation>> reachingDelegateCreationTargets, 99_lValueFlowCapturesMap = PooledDictionary<CaptureId, PooledHashSet<(ISymbol, IOperation)>>.GetInstance(); 103_symbolWritesInsideBlockRangeMap = PooledDictionary<(int firstBlockOrdinal, int lastBlockOrdinal), PooledHashSet<(ISymbol, IOperation)>>.GetInstance(); 110protected override PooledDictionary<(ISymbol symbol, IOperation operation), bool> SymbolsWriteBuilder { get; } 134reachingDelegateCreationTargets: PooledDictionary<IOperation, PooledHashSet<IOperation>>.GetInstance(), 190foreach (var operation in cfg.OriginalOperation.Descendants()) 216private PooledHashSet<(ISymbol, IOperation)> GetOrCreateSymbolWritesInBlockRange(int firstBlockOrdinal, int lastBlockOrdinal, CancellationToken cancellationToken) 221var operations = PooledHashSet<IOperation>.GetInstance(); 225writesInBlockRange = PooledHashSet<(ISymbol, IOperation)>.GetInstance(); 242PooledHashSet<IOperation> operationsBuilder, 249foreach (var operation in cfg.Blocks[i].DescendantOperations()) 274void AddDescendantOperationsFromDelegateCreationTargets(PooledHashSet<IOperation> targets) 276foreach (var target in targets) 444foreach (var write in currentWrites) 461public override void OnLValueCaptureFound(ISymbol symbol, IOperation operation, CaptureId captureId) 465captures = PooledHashSet<(ISymbol, IOperation)>.GetInstance(); 513public override void SetTargetsFromSymbolForDelegate(IOperation write, ISymbol symbol) 521var targetsBuilder = PooledHashSet<IOperation>.GetInstance(); 522foreach (var symbolWrite in CurrentBlockAnalysisData.GetCurrentWrites(symbol)) 538foreach (var target in targetsBuilderForSymbolWrite) 548public override void SetLambdaTargetForDelegate(IOperation write, IFlowAnonymousFunctionOperation lambdaTarget) 558public override void SetLocalFunctionTargetForDelegate(IOperation write, IMethodReferenceOperation localFunctionTarget) 570public override void SetEmptyInvocationTargetsForDelegate(IOperation write) 573private void SetReachingDelegateTargetCore(IOperation write, IOperation targetOpt) 575var targetsBuilder = PooledHashSet<IOperation>.GetInstance(); 584public override bool TryGetDelegateInvocationTargets(IOperation write, out ImmutableHashSet<IOperation> targets) 593targets = ImmutableHashSet<IOperation>.Empty;
SymbolUsageAnalysis.OperationTreeAnalysisData.cs (9)
24PooledDictionary<(ISymbol symbol, IOperation operation), bool> symbolsWriteMap, 37protected override PooledDictionary<(ISymbol symbol, IOperation operation), bool> SymbolsWriteBuilder { get; } 66public override void OnLValueCaptureFound(ISymbol symbol, IOperation operation, CaptureId captureId) 72public override void SetLambdaTargetForDelegate(IOperation write, IFlowAnonymousFunctionOperation lambdaTarget) 74public override void SetLocalFunctionTargetForDelegate(IOperation write, IMethodReferenceOperation localFunctionTarget) 76public override void SetEmptyInvocationTargetsForDelegate(IOperation write) 78public override void SetTargetsFromSymbolForDelegate(IOperation write, ISymbol symbol) 80public override bool TryGetDelegateInvocationTargets(IOperation write, out ImmutableHashSet<IOperation> targets)
SymbolUsageAnalysis.Walker.cs (20)
28private IOperation _currentRootOperation; 30private PooledDictionary<IAssignmentOperation, PooledHashSet<(ISymbol, IOperation)>> _pendingWritesMap; 37IEnumerable<IOperation> operations, 52private void Visit(ISymbol containingSymbol, IEnumerable<IOperation> operations, AnalysisData analysisData, CancellationToken cancellationToken) 59_pendingWritesMap = PooledDictionary<IAssignmentOperation, PooledHashSet<(ISymbol, IOperation)>>.GetInstance(); 66foreach (var operation in operations) 94private void OnWriteReferenceFound(ISymbol symbol, IOperation operation, ValueUsageInfo valueUsageInfo) 102private void OnLValueCaptureFound(ISymbol symbol, IOperation operation, CaptureId captureId) 108private void OnReferenceFound(ISymbol symbol, IOperation operation) 160private bool MakePendingWrite(IOperation operation, ISymbol symbolOpt) 167var set = PooledHashSet<(ISymbol, IOperation)>.GetInstance(); 176set = PooledHashSet<(ISymbol, IOperation)>.GetInstance(); 380private void ProcessPossibleDelegateCreationAssignment(ISymbol symbol, IOperation write) 388IOperation initializerValue = null; 404private void ProcessPossibleDelegateCreation(IOperation creation, IOperation write) 406var currentOperation = creation; 470private void AnalyzePossibleDelegateInvocation(IOperation operation) 507foreach (var target in targets) 522void AnalyzeDelegateInvocation(IOperation target)
SymbolUsageResult.cs (3)
17ImmutableDictionary<(ISymbol symbol, IOperation write), bool> symbolWritesMap, 40public ImmutableDictionary<(ISymbol symbol, IOperation write), bool> SymbolWritesMap { get; } 54public IEnumerable<(ISymbol Symbol, IOperation WriteOperation)> GetUnreadSymbolWrites()
UseConditionalExpressionForAssignmentHelpers.cs (3)
17[NotNullWhen(true)] out IOperation trueStatement, 18[NotNullWhen(true)] out IOperation? falseStatement, 58[NotNullWhen(true)] IOperation? statement,
UseConditionalExpressionForReturnHelpers.cs (3)
18[NotNullWhen(true)] out IOperation? trueStatement, 19[NotNullWhen(true)] out IOperation? falseStatement, 127private static bool IsReturnExprOrThrow(IOperation? statement)
UseConditionalExpressionHelpers.cs (7)
21IOperation whenTrue, IOperation whenFalse) 59public static IOperation? UnwrapSingleStatementBlock(IOperation? statement) 104public static bool IsBooleanLiteral(IOperation trueValue, bool val) 107public static bool CanSimplify(IOperation trueValue, IOperation falseValue, bool isRef, out bool negate)
UseSystemHashCodeDiagnosticAnalyzer.cs (1)
46var operation = context.OperationBlocks[0];
Microsoft.CodeAnalysis.CodeStyle.Fixes (23)
AbstractPopulateSwitchCodeFixProvider.cs (1)
29where TSwitchOperation : IOperation
AbstractUseConditionalExpressionCodeFixProvider.cs (6)
99IOperation trueStatement, IOperation falseStatement, 100IOperation trueValue, IOperation falseValue, 167SyntaxGenerator generator, IOperation statement, IOperation value)
AbstractUseConditionalExpressionForAssignmentCodeFixProvider.cs (5)
72out var trueStatement, out var falseStatement, 234var unwrapped = variableInitializer.Value.UnwrapImplicitConversion(); 249private bool ReferencesLocalVariable(IOperation operation, ILocalSymbol variable) 257foreach (var child in operation.ChildOperations)
AbstractUseConditionalExpressionForReturnCodeFixProvider.cs (2)
59out var trueStatement, out var falseStatement,
SyntaxGeneratorExtensions_Negate.cs (8)
149var operation = semanticModel.GetOperation(expressionNode, cancellationToken); 247var operation = semanticModel.GetOperation(isExpression, cancellationToken); 389var rightOperand = RemoveImplicitConversion(binaryOperation.RightOperand); 390var leftOperand = RemoveImplicitConversion(binaryOperation.LeftOperand); 402private static IOperation RemoveImplicitConversion(IOperation operation) 410IOperation variableExpression, ILiteralOperation numericLiteralExpression) 448var operation = semanticModel.GetOperation(expression);
UseSystemHashCodeCodeFixProvider.cs (1)
61var operation = semanticModel.GetOperation(operationLocation, cancellationToken);
Microsoft.CodeAnalysis.CSharp (248)
Compilation\CSharpCompilation.cs (1)
2153internal override IConvertibleConversion ClassifyConvertibleConversion(IOperation source, ITypeSymbol? destination, out ConstantValue? constantValue)
Compilation\CSharpSemanticModel.cs (2)
474protected override IOperation GetOperationCore(SyntaxNode node, CancellationToken cancellationToken) 482internal virtual IOperation GetOperationWorker(CSharpSyntaxNode node, CancellationToken cancellationToken)
Compilation\MemberSemanticModel.cs (8)
32private readonly Dictionary<SyntaxNode, IOperation> _guardedIOperationNodeMap = new Dictionary<SyntaxNode, IOperation>(); 1147internal override IOperation? GetOperationWorker(CSharpSyntaxNode node, CancellationToken cancellationToken) 1157IOperation rootOperation = GetRootOperation(); 1169IOperation? guardedGetIOperation() 1172return _guardedIOperationNodeMap.TryGetValue(node, out var operation) ? operation : null; 1176private IOperation GetRootOperation() 1192IOperation operation = _operationFactory.Value.Create(highestBoundNode);
Compilation\SpeculativeSemanticModelWithMemberModel.cs (1)
441internal override IOperation? GetOperationWorker(CSharpSyntaxNode node, CancellationToken cancellationToken)
Compilation\SyntaxTreeSemanticModel.cs (1)
165internal override IOperation GetOperationWorker(CSharpSyntaxNode node, CancellationToken cancellationToken)
Operations\CSharpOperationFactory.cs (222)
28public IOperation? Create(BoundNode? boundNode) 316ImmutableArray<IOperation> children = GetIOperationChildren(boundNode); 334public ImmutableArray<TOperation> CreateFromArray<TBoundNode, TOperation>(ImmutableArray<TBoundNode> boundNodes) where TBoundNode : BoundNode where TOperation : class, IOperation 370internal ImmutableArray<IOperation> GetIOperationChildren(IBoundNodeWithIOperationChildren boundNodeWithChildren) 375return ImmutableArray<IOperation>.Empty; 378var builder = ArrayBuilder<IOperation>.GetInstance(children.Length); 386IOperation operation = Create(childNode); 427IOperation target = Create(boundDeconstructionAssignmentOperator.Left); 430IOperation value = Create(boundDeconstructionAssignmentOperator.Right.Operand); 437private IOperation CreateBoundCallOperation(BoundCall boundCall) 447ImmutableArray<IOperation> children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundCall).InvalidNodeChildren); 453IOperation? receiver = CreateReceiverOperation(boundCall.ReceiverOpt, targetMethod); 469private IOperation CreateBoundFunctionPointerInvocationOperation(BoundFunctionPointerInvocation boundFunctionPointerInvocation) 477ImmutableArray<IOperation> children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundFunctionPointerInvocation).InvalidNodeChildren); 481var pointer = Create(boundFunctionPointerInvocation.InvokedExpression); 486private IOperation CreateBoundUnconvertedAddressOfOperatorOperation(BoundUnconvertedAddressOfOperator boundUnconvertedAddressOf) 496private IOperation CreateBoundAttributeOperation(BoundAttribute boundAttribute) 508var namedArguments = CreateFromArray<BoundAssignmentOperator, IOperation>(boundAttribute.NamedArguments); 517internal ImmutableArray<IOperation> CreateIgnoredDimensions(BoundNode declaration) 525return CreateFromArray<BoundExpression, IOperation>(declaredTypeOpt.BoundDimensionsOpt); 542return CreateFromArray<BoundExpression, IOperation>(dimensions); 549internal IOperation CreateBoundLocalOperation(BoundLocal boundLocal, bool createDeclaration = true) 562IOperation localReference = CreateBoundLocalOperation(boundLocal, createDeclaration: false); 569internal IOperation CreateBoundFieldAccessOperation(BoundFieldAccess boundFieldAccess, bool createDeclaration = true) 583IOperation fieldAccess = CreateBoundFieldAccessOperation(boundFieldAccess, createDeclaration: false); 588IOperation? instance = CreateReceiverOperation(boundFieldAccess.ReceiverOpt, boundFieldAccess.FieldSymbol); 592internal IOperation? CreateBoundPropertyReferenceInstance(BoundNode boundNode) 611IOperation? instance = CreateReceiverOperation(boundPropertyAccess.ReceiverOpt, boundPropertyAccess.PropertySymbol); 621private IOperation CreateBoundIndexerAccessOperation(BoundIndexerAccess boundIndexerAccess) 630var children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundIndexerAccess).InvalidNodeChildren); 635IOperation? instance = CreateReceiverOperation(boundIndexerAccess.ReceiverOpt, boundIndexerAccess.ExpressionSymbol); 643IOperation? instance = CreateReceiverOperation(boundEventAccess.ReceiverOpt, boundEventAccess.EventSymbol); 653IOperation eventReference = CreateBoundEventAccessOperation(boundEventAssignmentOperator); 654IOperation handlerValue = Create(boundEventAssignmentOperator.Argument); 694ImmutableArray<IOperation> initializers = GetAnonymousObjectCreationInitializers(boundAnonymousObjectCreationExpression.Arguments, boundAnonymousObjectCreationExpression.Declarations, syntax, type, isImplicit); 698private IOperation CreateBoundObjectCreationExpressionOperation(BoundObjectCreationExpression boundObjectCreationExpression) 710var children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundObjectCreationExpression).InvalidNodeChildren); 718ImmutableArray<IOperation> initializers = GetAnonymousObjectCreationInitializers( 733private IOperation CreateBoundWithExpressionOperation(BoundWithExpression boundWithExpression) 735IOperation operand = Create(boundWithExpression.Receiver); 747ImmutableArray<IOperation> arguments = CreateFromArray<BoundExpression, IOperation>(boundDynamicObjectCreationExpression.Arguments); 756internal IOperation CreateBoundDynamicInvocationExpressionReceiver(BoundNode receiver) 775IOperation operation = CreateBoundDynamicInvocationExpressionReceiver(boundDynamicInvocation.Expression); 776ImmutableArray<IOperation> arguments = CreateFromArray<BoundExpression, IOperation>(boundDynamicInvocation.Arguments); 785internal IOperation CreateBoundDynamicIndexerAccessExpressionReceiver(BoundExpression indexer) 800internal ImmutableArray<IOperation> CreateBoundDynamicIndexerAccessArguments(BoundExpression indexer) 805return CreateFromArray<BoundExpression, IOperation>(boundDynamicAccess.Arguments); 808return CreateFromArray<BoundExpression, IOperation>(boundObjectInitializerMember.Arguments); 817IOperation operation = CreateBoundDynamicIndexerAccessExpressionReceiver(boundDynamicIndexerAccess); 818ImmutableArray<IOperation> arguments = CreateBoundDynamicIndexerAccessArguments(boundDynamicIndexerAccess); 829ImmutableArray<IOperation> initializers = CreateFromArray<BoundExpression, IOperation>(BoundObjectCreationExpression.GetChildInitializers(boundObjectInitializerExpression)); 838ImmutableArray<IOperation> initializers = CreateFromArray<BoundExpression, IOperation>(BoundObjectCreationExpression.GetChildInitializers(boundCollectionInitializerExpression)); 845private IOperation CreateBoundObjectInitializerMemberOperation(BoundObjectInitializerMember boundObjectInitializerMember, bool isObjectOrCollectionInitializer = false) 856IOperation operation = CreateBoundDynamicIndexerAccessExpressionReceiver(boundObjectInitializerMember); 857ImmutableArray<IOperation> arguments = CreateBoundDynamicIndexerAccessArguments(boundObjectInitializerMember); 883var children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundObjectInitializerMember).InvalidNodeChildren); 899IOperation? createReceiver() => memberSymbol?.IsStatic == true ? 904private IOperation CreateBoundDynamicObjectInitializerMemberOperation(BoundDynamicObjectInitializerMember boundDynamicObjectInitializerMember) 906IOperation instanceReceiver = CreateImplicitReceiver(boundDynamicObjectInitializerMember.Syntax, boundDynamicObjectInitializerMember.ReceiverType); 917private IOperation CreateBoundCollectionElementInitializerOperation(BoundCollectionElementInitializer boundCollectionElementInitializer) 920IOperation? receiver = CreateReceiverOperation(boundCollectionElementInitializer.ImplicitReceiverOpt, addMethod); 929var children = CreateFromArray<BoundNode, IOperation>(((IBoundInvalidNode)boundCollectionElementInitializer).InvalidNodeChildren); 964IOperation? instance = Create(receiver); 970IOperation operation = CreateBoundDynamicInvocationExpressionReceiver(boundCollectionElementInitializer.Expression); 971ImmutableArray<IOperation> arguments = CreateFromArray<BoundExpression, IOperation>(boundCollectionElementInitializer.Arguments); 978private IOperation CreateUnboundLambdaOperation(UnboundLambda unboundLambda) 1009private IOperation CreateBoundConversionOperation(BoundConversion boundConversion, bool forceOperandImplicitLiteral = false) 1039IOperation target = CreateDelegateTargetOperation(boundConversion); 1117IOperation target = CreateDelegateTargetOperation(correctedConversionNode); 1125IOperation operand = forceOperandImplicitLiteral 1135IOperation operand = Create(boundAsOperator.Operand); 1147IOperation target = CreateDelegateTargetOperation(boundDelegateCreationExpression); 1158IOperation? instance = CreateReceiverOperation(boundMethodGroup.ReceiverOpt, methodSymbol); 1167IOperation value = Create(boundIsOperator.Operand); 1200ImmutableArray<IOperation> dimensionSizes = CreateFromArray<BoundExpression, IOperation>(boundArrayCreation.Bounds); 1211ImmutableArray<IOperation> elementValues = CreateFromArray<BoundExpression, IOperation>(boundArrayInitialization.Initializers); 1252private IOperation CreateBoundAssignmentOperatorOrMemberInitializerOperation(BoundAssignmentOperator boundAssignmentOperator) 1255(IOperation)CreateBoundMemberInitializerOperation(boundAssignmentOperator) : 1267IOperation target = Create(boundAssignmentOperator.Left); 1268IOperation value = Create(boundAssignmentOperator.Right); 1280IOperation initializedMember = CreateMemberInitializerInitializedMember(boundAssignmentOperator.Left); 1290IOperation target = Create(boundCompoundAssignmentOperator.Left); 1291IOperation value = Create(boundCompoundAssignmentOperator.Right); 1324IOperation target = Create(boundIncrementOperator.Operand); 1342var children = CreateFromArray<BoundExpression, IOperation>(boundBadExpression.ChildBoundNodes); 1367IOperation operand = Create(boundUnaryOperator.Operand); 1379private IOperation CreateBoundBinaryOperatorBase(BoundBinaryOperatorBase boundBinaryOperatorBase) 1398IOperation? left = null; 1403IOperation right = Create(currentBinary.Right); 1416IBinaryOperation createBoundUserDefinedConditionalLogicalOperator(BoundUserDefinedConditionalLogicalOperator boundBinaryOperator, IOperation left, IOperation right) 1440private IBinaryOperation CreateBoundBinaryOperatorOperation(BoundBinaryOperator boundBinaryOperator, IOperation left, IOperation right) 1469private IOperation CreateBoundInterpolatedStringBinaryOperator(BoundBinaryOperator boundBinaryOperator) 1472Func<BoundInterpolatedString, int, (CSharpOperationFactory, InterpolatedStringHandlerData), IOperation> createInterpolatedString 1475Func<BoundBinaryOperator, IOperation, IOperation, (CSharpOperationFactory, InterpolatedStringHandlerData), IOperation> createBinaryOperator 1488IOperation left, 1489IOperation right, 1496IOperation left = Create(boundTupleBinaryOperator.Left); 1497IOperation right = Create(boundTupleBinaryOperator.Right); 1507IOperation condition = Create(boundConditionalOperator.Condition); 1508IOperation whenTrue = Create(boundConditionalOperator.Consequence); 1509IOperation whenFalse = Create(boundConditionalOperator.Alternative); 1520IOperation value = Create(boundNullCoalescingOperator.LeftOperand); 1521IOperation whenNull = Create(boundNullCoalescingOperator.RightOperand); 1537private IOperation CreateBoundNullCoalescingAssignmentOperatorOperation(BoundNullCoalescingAssignmentOperator boundNode) 1539IOperation target = Create(boundNode.LeftOperand); 1540IOperation value = Create(boundNode.RightOperand); 1550IOperation awaitedValue = Create(boundAwaitExpression.Expression); 1559IOperation arrayReference = Create(boundArrayAccess.Expression); 1560ImmutableArray<IOperation> indices = CreateFromArray<BoundExpression, IOperation>(boundArrayAccess.Indices); 1568private IOperation CreateBoundImplicitIndexerAccessOperation(BoundImplicitIndexerAccess boundIndexerAccess) 1570IOperation instance = Create(boundIndexerAccess.Receiver); 1571IOperation argument = Create(boundIndexerAccess.Argument); 1592IOperation argument = Create(boundNameOfOperator.Argument); 1602IOperation expression = Create(boundThrowExpression.Expression); 1611IOperation reference = Create(boundAddressOfOperator.Operand); 1629IOperation operation = Create(boundConditionalAccess.Receiver); 1630IOperation whenNotNull = Create(boundConditionalAccess.AccessExpression); 1649IOperation value = Create(boundFieldEqualsValue.Value); 1658IOperation value = Create(boundPropertyEqualsValue.Value); 1667IOperation value = Create(boundParameterEqualsValue.Value); 1675ImmutableArray<IOperation> operations = CreateFromArray<BoundStatement, IOperation>(boundBlock.Statements); 1702IOperation? returnedValue = null; 1726IOperation condition = Create(boundIfStatement.Condition); 1727IOperation whenTrue = Create(boundIfStatement.Consequence); 1728IOperation? whenFalse = Create(boundIfStatement.AlternativeOpt); 1739IOperation condition = Create(boundWhileStatement.Condition); 1740IOperation body = Create(boundWhileStatement.Body); 1753IOperation condition = Create(boundDoStatement.Condition); 1754IOperation body = Create(boundDoStatement.Body); 1767ImmutableArray<IOperation> before = CreateFromArray<BoundStatement, IOperation>(ToStatements(boundForStatement.Initializer)); 1768IOperation? condition = Create(boundForStatement.Condition); 1769ImmutableArray<IOperation> atLoopBottom = CreateFromArray<BoundStatement, IOperation>(ToStatements(boundForStatement.Increment)); 1770IOperation body = Create(boundForStatement.Body); 1846internal IOperation CreateBoundForEachStatementLoopControlVariable(BoundForEachStatement boundForEachStatement) 1862return new VariableDeclaratorOperation(local.GetPublicSymbol(), initializer: null, ignoredArguments: ImmutableArray<IOperation>.Empty, semanticModel: _semanticModel, syntax: declaratorSyntax, isImplicit: false); 1868IOperation loopControlVariable = CreateBoundForEachStatementLoopControlVariable(boundForEachStatement); 1869IOperation collection = Create(boundForEachStatement.Expression); 1870var nextVariables = ImmutableArray<IOperation>.Empty; 1871IOperation body = Create(boundForEachStatement.Body); 1896IOperation? exceptionDeclarationOrExpression = CreateVariableDeclarator((BoundLocal?)boundCatchBlock.ExceptionSourceOpt); 1899IOperation? filter = Create(boundCatchBlock.ExceptionFilterOpt); 1911IOperation body = Create(boundFixedStatement.Body); 1922IOperation resources = Create(boundUsingStatement.DeclarationsOpt ?? (BoundNode)boundUsingStatement.ExpressionOpt!); 1923IOperation body = Create(boundUsingStatement.Body); 1938IOperation? thrownObject = Create(boundThrowStatement.ExpressionOpt); 1947IOperation? returnedValue = Create(boundReturnStatement.ExpressionOpt); 1955IOperation returnedValue = Create(boundYieldReturnStatement.Expression); 1970IOperation lockedValue = Create(boundLockStatement.Argument); 1971IOperation body = Create(boundLockStatement.Body); 1984var children = CreateFromArray<BoundNode, IOperation>(boundBadStatement.ChildBoundNodes); 1988private IOperation CreateBoundLocalDeclarationOperation(BoundLocalDeclaration boundLocalDeclaration) 2031ImmutableArray<IOperation> ignoredDimensions = CreateIgnoredDimensions(boundLocalDeclaration); 2039private IOperation CreateBoundMultipleLocalDeclarationsBaseOperation(BoundMultipleLocalDeclarationsBase boundMultipleLocalDeclarations) 2051ImmutableArray<IOperation> ignoredDimensions = CreateIgnoredDimensions(boundMultipleLocalDeclarations); 2089IOperation labeledStatement = Create(boundLabeledStatement.Body); 2105IOperation expression = Create(boundExpressionStatement.Expression); 2115internal IOperation CreateBoundTupleOperation(BoundTupleExpression boundTupleExpression, bool createDeclaration = true) 2126var tupleOperation = CreateBoundTupleOperation(boundTupleExpression, createDeclaration: false); 2139ImmutableArray<IOperation> elements = CreateFromArray<BoundExpression, IOperation>(boundTupleExpression.Arguments); 2235IOperation valueOperation = value switch 2248IOperation valueOperation = Create(value); 2249IOperation? alignmentOperation = Create(alignment); 2250IOperation? formatOperation = Create(format); 2284IOperation expression = Create(boundStringInsert.Value); 2285IOperation? alignment = Create(boundStringInsert.Alignment); 2286IOperation? formatString = Create(boundStringInsert.Format); 2294IOperation text = CreateBoundLiteralOperation(boundNode, @implicit: true); 2305var construction = Create(interpolationData.Construction); 2306var content = createContent(conversion.Operand); 2318IOperation createContent(BoundExpression current) 2323var left = createContent(binaryOperator.Left); 2324var right = createContent(binaryOperator.Right); 2364private IOperation CreateBoundInterpolatedStringArgumentPlaceholder(BoundInterpolatedStringArgumentPlaceholder placeholder) 2372return new InvalidOperation(ImmutableArray<IOperation>.Empty, _semanticModel, syntax, type, placeholder.ConstantValueOpt, isImplicit); 2388private IOperation CreateBoundInterpolatedStringHandlerPlaceholder(BoundInterpolatedStringHandlerPlaceholder placeholder) 2400IOperation value = Create(boundConstantPattern.Value); 2408private IOperation CreateBoundRelationalPatternOperation(BoundRelationalPattern boundRelationalPattern) 2411IOperation value = Create(boundRelationalPattern.Value); 2477private IOperation CreateBoundTypePatternOperation(BoundTypePattern boundTypePattern) 2488private IOperation CreateBoundSlicePatternOperation(BoundSlicePattern boundNode) 2501private IOperation CreateBoundListPatternOperation(BoundListPattern boundNode) 2515private IOperation CreateBoundNegatedPatternOperation(BoundNegatedPattern boundNegatedPattern) 2526private IOperation CreateBoundBinaryPatternOperation(BoundBinaryPattern boundBinaryPattern) 2541IOperation value = Create(boundSwitchStatement.Expression); 2553ImmutableArray<IOperation> body = CreateFromArray<BoundStatement, IOperation>(boundSwitchSection.Statements); 2561IOperation value = Create(boundSwitchExpression.Expression); 2588IOperation? guard = Create(boundSwitchExpressionArm.WhenClause); 2589IOperation value = Create(boundSwitchExpressionArm.Value); 2621IOperation? guard = Create(boundSwitchLabel.WhenClause); 2628IOperation value = Create(boundIsPatternExpression.Expression); 2636private IOperation CreateBoundQueryClauseOperation(BoundQueryClause boundQueryClause) 2644IOperation operation = Create(boundQueryClause.Value); 2651private IOperation CreateBoundRangeVariableOperation(BoundRangeVariable boundRangeVariable) 2657private IOperation CreateBoundDiscardExpressionOperation(BoundDiscardExpression boundNode) 2667private IOperation CreateFromEndIndexExpressionOperation(BoundFromEndIndexExpression boundIndex) 2683private IOperation CreateRangeExpressionOperation(BoundRangeExpression boundRange) 2685IOperation? left = Create(boundRange.LeftOperandOpt); 2686IOperation? right = Create(boundRange.RightOperandOpt); 2697private IOperation CreateBoundDiscardPatternOperation(BoundDiscardPattern boundNode) 2716var reference = OperationFactory.CreateInvalidOperation(_semanticModel, subpatternSyntax, ImmutableArray<IOperation>.Empty, isImplicit: true); 2750IOperation reference; 2770reference = OperationFactory.CreateInvalidOperation(_semanticModel, nameSyntax, ImmutableArray<IOperation>.Empty, isImplicit: false); 2778IOperation? createReceiver()
Operations\CSharpOperationFactory_Methods.cs (13)
39IOperation value = Create(expression); 74IOperation value = Create(boundLocalDeclaration.InitializerOpt); 87ImmutableArray<IOperation> ignoredDimensions = CreateFromArray<BoundExpression, IOperation>(boundLocalDeclaration.ArgumentsOpt); 95return boundLocal == null ? null : new VariableDeclaratorOperation(boundLocal.LocalSymbol.GetPublicSymbol(), initializer: null, ignoredArguments: ImmutableArray<IOperation>.Empty, semanticModel: _semanticModel, syntax: boundLocal.Syntax, isImplicit: false); 98internal IOperation? CreateReceiverOperation(BoundNode? instance, Symbol? symbol) 133IOperation? instance = CreateReceiverOperation(boundEventAssignmentOperator.ReceiverOpt, boundEventAssignmentOperator.Event); 141internal IOperation CreateDelegateTargetOperation(BoundNode delegateNode) 180internal IOperation CreateMemberInitializerInitializedMember(BoundNode initializedMember) 327internal ImmutableArray<IOperation> GetAnonymousObjectCreationInitializers( 337var builder = ArrayBuilder<IOperation>.GetInstance(arguments.Length); 341IOperation value = Create(arguments[i]); 343IOperation target;
Microsoft.CodeAnalysis.CSharp.CodeStyle (54)
AnalyzedPattern.cs (12)
17public readonly IOperation Target; 19private AnalyzedPattern(IOperation target) 75private Type(TypeSyntax type, IOperation target) : base(target) 86public Source(PatternSyntax patternSyntax, IOperation target) : base(target) 97public Constant(ExpressionSyntax expression, IOperation target) : base(target) 109public Relational(BinaryOperatorKind operatorKind, ExpressionSyntax value, IOperation target) : base(target) 126private Binary(AnalyzedPattern leftPattern, AnalyzedPattern rightPattern, bool isDisjunctive, SyntaxToken token, IOperation target) : base(target) 136var leftTarget = leftPattern.Target; 137var rightTarget = rightPattern.Target; 142var target = (leftConv, rightConv) switch 163var compareTarget = target == leftTarget ? rightTarget : leftTarget; 178private Not(AnalyzedPattern pattern, IOperation target) : base(target)
CastSimplifier.cs (9)
87var castExpressionOperation = semanticModel.GetOperation(cast.Expression, cancellationToken); 196var originalOperation = originalSemanticModel.GetOperation(castNode, cancellationToken); 255var rewrittenOperation = rewrittenSemanticModel.GetOperation(rewrittenExpression.WalkDownParentheses(), cancellationToken); 647var rewrittenOperation = rewrittenSemanticModel.GetOperation(rewrittenBitwiseNotExpression, cancellationToken); 766var operation = semanticModel.GetOperation(parentBinary, cancellationToken); 789private static bool ConvertedHasUserDefinedEquals(BinaryOperatorKind operatorKind, IOperation operation) 828private static bool IsConstantNull(IOperation operation) 963var operation = semanticModel.GetOperation(expression.WalkDownParentheses(), cancellationToken); 1230var operation = semanticModel.GetOperation(expression, cancellationToken);
CSharpMakeStructMemberReadOnlyAnalyzer.cs (6)
84foreach (var blockOperation in context.OperationBlocks) 124IOperation blockOperation, 129foreach (var operation in blockOperation.DescendantsAndSelf()) 145private static bool IsPotentiallyValueType(IOperation? instance) 168for (var operation = instanceOperation.Parent; operation != null; operation = operation.Parent) 237IOperation? instance,
CSharpQualifyMemberAccessDiagnosticAnalyzer.cs (1)
61protected override Location GetLocation(IOperation operation) => operation.Syntax.GetLocation();
CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (2)
56protected override bool ShouldBailOutFromRemovableAssignmentAnalysis(IOperation unusedSymbolWriteOperation) 86protected override Location GetDefinitionLocationToFade(IOperation unusedDefinition)
CSharpSimplifyInterpolationHelpers.cs (1)
18protected override SyntaxNode GetPreservedInterpolationExpressionSyntax(IOperation operation)
CSharpUseIndexOperatorDiagnosticAnalyzer.cs (2)
160IOperation? instance, 162IOperation argumentValue,
CSharpUseNullCheckOverTypeCheckDiagnosticAnalyzer.cs (1)
87var operation = context.Operation;
CSharpUsePatternCombinatorsAnalyzer.cs (3)
16public static AnalyzedPattern? Analyze(IOperation operation) 40private static AnalyzedPattern? ParsePattern(IOperation operation) 159private static bool IsConstant(IOperation operation)
CSharpUsePatternCombinatorsDiagnosticAnalyzer.cs (1)
77var operation = semanticModel.GetOperation(expression, cancellationToken);
CSharpUseRangeOperatorDiagnosticAnalyzer.cs (5)
83var operation = context.Operation; 132var startOperation = invocation.Arguments[0].Value; 181var startOperation = invocation.Arguments[0].Value; 220var startOperation = invocation.Arguments[0].Value; 270private static bool IsConstantInt32(IOperation operation, int? value = null)
CSharpUseRangeOperatorDiagnosticAnalyzer.Result.cs (4)
29public readonly IOperation Op1; 34public readonly IOperation? Op2; 42IOperation op1, 43IOperation? op2)
Helpers.cs (3)
41public static bool IsInstanceLengthCheck(IPropertySymbol lengthLikeProperty, IOperation instance, IOperation operation) 51public static bool IsSubtraction(IOperation operation, [NotNullWhen(true)] out IBinaryOperation? subtraction)
UseUtf8StringLiteralDiagnosticAnalyzer.cs (4)
118private void ReportParameterArrayDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, ImmutableArray<IOperation> elements, ReportDiagnostic severity, ArrayCreationOperationLocation operationLocation) 150internal static bool TryConvertToUtf8String(StringBuilder? builder, ImmutableArray<IOperation> arrayCreationElements) 193private static bool TryGetNextRune(ImmutableArray<IOperation> arrayCreationElements, int startIndex, out Rune rune, out int bytesConsumed) 204var element = arrayCreationElements[startIndex + i];
Microsoft.CodeAnalysis.CSharp.CodeStyle.Fixes (63)
ConvertToRecordHelpers.cs (46)
46Arguments: [IArgumentOperation { Value: IOperation arg }] 117Operations: [IReturnOperation { ReturnedValue: IOperation returnedValue }] 140Operand: IOperation operand 159LeftOperand: IOperation leftOperand, 160RightOperand: IOperation rightOperand, 378foreach (var assignment in initializer.Initializers) 383Value: IOperation { Syntax: ExpressionSyntax syntax } 419Func<IOperation, T?> captureAssignedSymbol) 431foreach (var operation in body.Operations) 437Target: IOperation assignee, 438Value: IOperation assignment 474private static bool IsSafeAssignment(IOperation operation) 506IEnumerable<IOperation>? statementsToCheck = null; 529if (bodyOps is [IReturnOperation { ReturnedValue: IOperation value }] && 566IOperation? operation, 605private static IParameterSymbol? GetParamFromArgument(IOperation operation) 608private static ISymbol? GetReferencedSymbolObject(IOperation reference) 624private static bool IsDotEqualsInvocation(IOperation operation) 630Instance: IOperation instance, 631Arguments: [IArgumentOperation { Value: IOperation arg }] 654IOperation operation, 698private static bool ReturnsFalseImmediately(IEnumerable<IOperation> operation) 723IOperation condition, 733(_, IUnaryOperation { OperatorKind: UnaryOperatorKind.Not, Operand: IOperation newCondition }) 782IOperation condition, 787IEnumerable<IOperation>? additionalConditions = null) 790additionalConditions ??= Enumerable.Empty<IOperation>(); 793(_, IUnaryOperation { OperatorKind: UnaryOperatorKind.Not, Operand: IOperation newCondition }) 804LeftOperand: IOperation leftOperation, 805RightOperand: IOperation rightOperation, 816LeftOperand: IOperation leftOperation, 817RightOperand: IOperation rightOperation, 878IEnumerable<IOperation> statementsToCheck, 894IReturnOperation { ReturnedValue: IOperation value } => TryAddEqualizedFieldsForCondition( 898Condition: IOperation condition, 899WhenTrue: IOperation whenTrue, 955ImmutableArray<IOperation> bodyOps, 960[NotNullWhen(true)] out IEnumerable<IOperation>? statementsToCheck) 968Condition: IOperation condition, 969WhenTrue: IOperation whenTrue, 1049IOperation whenTrue, 1050IOperation? whenFalse, 1051IEnumerable<IOperation> otherOps, 1053out IEnumerable<IOperation> remainingStatements) 1058remainingStatements = Enumerable.Empty<IOperation>(); 1068: ImmutableArray<IOperation>.Empty))
CSharpUsePatternCombinatorsCodeFixProvider.cs (1)
87var operation = semanticModel.GetOperation(expression, cancellationToken);
CSharpUseRangeOperatorCodeFixProvider.cs (6)
142var startOperation = result.Op1; 143var endOperation = result.Op2; 146var instance = result.InvocationOperation.Instance; 213private static int GetInt32Value(IOperation operation) 221IPropertySymbol lengthLikeProperty, IOperation instance, ref IOperation rangeOperation)
MakeLocalFunctionStaticCodeFixHelper.cs (2)
153var localFunctionBodyOperation = semanticModel.GetOperation(localFunction.Body ?? (SyntaxNode)localFunction.ExpressionBody!.Expression, cancellationToken); 154foreach (var descendent in localFunctionBodyOperation.DescendantsAndSelf())
NullableHelpers.cs (6)
18/// <see cref="IsSymbolAssignedPossiblyNullValue(SemanticModel, IOperation, ISymbol)"/>. Note 25var declaredOperation = semanticModel.GetRequiredOperation(declarationSyntax, cancellationToken); 27var rootOperation = declaredOperation; 45public static bool? IsSymbolAssignedPossiblyNullValue(SemanticModel semanticModel, IOperation operation, ISymbol symbol) 52foreach (var reference in references) 98private static bool IsSymbolReferencedByOperation(IOperation operation, ISymbol symbol)
UseUtf8StringLiteralCodeFixProvider.cs (2)
101var operation = semanticModel.GetRequiredOperation(node, cancellationToken); 129static IArrayCreationOperation FindArrayCreationOperationAncestor(IOperation operation)
Microsoft.CodeAnalysis.CSharp.Emit.UnitTests (1)
CodeGen\CodeGenLocalFunctionTests.cs (1)
149var objectCreationOperation = model.GetOperation(creation);
Microsoft.CodeAnalysis.CSharp.Emit2.UnitTests (10)
Attributes\AttributeTests.cs (6)
715var operation = semanticModel.GetOperation(attrSyntax); 757var speculativeOperation = speculativeModel.GetOperation(newAttrSyntax); 822var speculativeOperation = speculativeModel.GetOperation(newAttrSyntax); 863var speculativeOperation = speculativeModel.GetOperation(newAttrSyntax); 904var speculativeOperation = speculativeModel.GetOperation(newAttrSyntax); 943var speculativeOperation = speculativeModel.GetOperation(newAttrSyntax);
Diagnostics\DiagnosticAnalyzerTests.cs (1)
2345private void ReportOperationDiagnostics(IOperation operation, string name, Action<Diagnostic> addDiagnostic)
Diagnostics\GetDiagnosticsTests.cs (1)
927foreach (var operationBlock in blockEndContext.OperationBlocks)
Semantics\PatternMatchingTests.cs (2)
11408var operation = model.GetOperation(syntax); 11465var operation = model.GetOperation(syntax);
Microsoft.CodeAnalysis.CSharp.Features (111)
AnalyzedPattern.cs (12)
17public readonly IOperation Target; 19private AnalyzedPattern(IOperation target) 75private Type(TypeSyntax type, IOperation target) : base(target) 86public Source(PatternSyntax patternSyntax, IOperation target) : base(target) 97public Constant(ExpressionSyntax expression, IOperation target) : base(target) 109public Relational(BinaryOperatorKind operatorKind, ExpressionSyntax value, IOperation target) : base(target) 126private Binary(AnalyzedPattern leftPattern, AnalyzedPattern rightPattern, bool isDisjunctive, SyntaxToken token, IOperation target) : base(target) 136var leftTarget = leftPattern.Target; 137var rightTarget = rightPattern.Target; 142var target = (leftConv, rightConv) switch 163var compareTarget = target == leftTarget ? rightTarget : leftTarget; 178private Not(AnalyzedPattern pattern, IOperation target) : base(target)
ConvertIfToSwitch\CSharpConvertIfToSwitchCodeRefactoringProvider.Analyzer.cs (1)
23public override bool HasUnreachableEndPoint(IOperation operation)
ConvertIfToSwitch\CSharpConvertIfToSwitchCodeRefactoringProvider.Rewriting.cs (2)
59private static ExpressionSyntax AsExpressionSyntax(IOperation operation) 107public override IEnumerable<SyntaxNode> AsSwitchSectionStatements(IOperation operation)
ConvertLinq\CSharpConvertLinqQueryToForEachProvider.cs (1)
917private static bool IsLocalOrParameterSymbol(IOperation operation)
ConvertToRecordHelpers.cs (46)
46Arguments: [IArgumentOperation { Value: IOperation arg }] 117Operations: [IReturnOperation { ReturnedValue: IOperation returnedValue }] 140Operand: IOperation operand 159LeftOperand: IOperation leftOperand, 160RightOperand: IOperation rightOperand, 378foreach (var assignment in initializer.Initializers) 383Value: IOperation { Syntax: ExpressionSyntax syntax } 419Func<IOperation, T?> captureAssignedSymbol) 431foreach (var operation in body.Operations) 437Target: IOperation assignee, 438Value: IOperation assignment 474private static bool IsSafeAssignment(IOperation operation) 506IEnumerable<IOperation>? statementsToCheck = null; 529if (bodyOps is [IReturnOperation { ReturnedValue: IOperation value }] && 566IOperation? operation, 605private static IParameterSymbol? GetParamFromArgument(IOperation operation) 608private static ISymbol? GetReferencedSymbolObject(IOperation reference) 624private static bool IsDotEqualsInvocation(IOperation operation) 630Instance: IOperation instance, 631Arguments: [IArgumentOperation { Value: IOperation arg }] 654IOperation operation, 698private static bool ReturnsFalseImmediately(IEnumerable<IOperation> operation) 723IOperation condition, 733(_, IUnaryOperation { OperatorKind: UnaryOperatorKind.Not, Operand: IOperation newCondition }) 782IOperation condition, 787IEnumerable<IOperation>? additionalConditions = null) 790additionalConditions ??= Enumerable.Empty<IOperation>(); 793(_, IUnaryOperation { OperatorKind: UnaryOperatorKind.Not, Operand: IOperation newCondition }) 804LeftOperand: IOperation leftOperation, 805RightOperand: IOperation rightOperation, 816LeftOperand: IOperation leftOperation, 817RightOperand: IOperation rightOperation, 878IEnumerable<IOperation> statementsToCheck, 894IReturnOperation { ReturnedValue: IOperation value } => TryAddEqualizedFieldsForCondition( 898Condition: IOperation condition, 899WhenTrue: IOperation whenTrue, 955ImmutableArray<IOperation> bodyOps, 960[NotNullWhen(true)] out IEnumerable<IOperation>? statementsToCheck) 968Condition: IOperation condition, 969WhenTrue: IOperation whenTrue, 1049IOperation whenTrue, 1050IOperation? whenFalse, 1051IEnumerable<IOperation> otherOps, 1053out IEnumerable<IOperation> remainingStatements) 1058remainingStatements = Enumerable.Empty<IOperation>(); 1068: ImmutableArray<IOperation>.Empty))
CSharpMakeStructMemberReadOnlyAnalyzer.cs (6)
84foreach (var blockOperation in context.OperationBlocks) 124IOperation blockOperation, 129foreach (var operation in blockOperation.DescendantsAndSelf()) 145private static bool IsPotentiallyValueType(IOperation? instance) 168for (var operation = instanceOperation.Parent; operation != null; operation = operation.Parent) 237IOperation? instance,
CSharpQualifyMemberAccessDiagnosticAnalyzer.cs (1)
61protected override Location GetLocation(IOperation operation) => operation.Syntax.GetLocation();
CSharpRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (2)
56protected override bool ShouldBailOutFromRemovableAssignmentAnalysis(IOperation unusedSymbolWriteOperation) 86protected override Location GetDefinitionLocationToFade(IOperation unusedDefinition)
CSharpSimplifyInterpolationHelpers.cs (1)
18protected override SyntaxNode GetPreservedInterpolationExpressionSyntax(IOperation operation)
CSharpUseIndexOperatorDiagnosticAnalyzer.cs (2)
160IOperation? instance, 162IOperation argumentValue,
CSharpUseNullCheckOverTypeCheckDiagnosticAnalyzer.cs (1)
87var operation = context.Operation;
CSharpUsePatternCombinatorsAnalyzer.cs (3)
16public static AnalyzedPattern? Analyze(IOperation operation) 40private static AnalyzedPattern? ParsePattern(IOperation operation) 159private static bool IsConstant(IOperation operation)
CSharpUsePatternCombinatorsCodeFixProvider.cs (1)
87var operation = semanticModel.GetOperation(expression, cancellationToken);
CSharpUsePatternCombinatorsDiagnosticAnalyzer.cs (1)
77var operation = semanticModel.GetOperation(expression, cancellationToken);
CSharpUseRangeOperatorCodeFixProvider.cs (6)
142var startOperation = result.Op1; 143var endOperation = result.Op2; 146var instance = result.InvocationOperation.Instance; 213private static int GetInt32Value(IOperation operation) 221IPropertySymbol lengthLikeProperty, IOperation instance, ref IOperation rangeOperation)
CSharpUseRangeOperatorDiagnosticAnalyzer.cs (5)
83var operation = context.Operation; 132var startOperation = invocation.Arguments[0].Value; 181var startOperation = invocation.Arguments[0].Value; 220var startOperation = invocation.Arguments[0].Value; 270private static bool IsConstantInt32(IOperation operation, int? value = null)
CSharpUseRangeOperatorDiagnosticAnalyzer.Result.cs (4)
29public readonly IOperation Op1; 34public readonly IOperation? Op2; 42IOperation op1, 43IOperation? op2)
ExtractMethod\CSharpMethodExtractor.Analyzer.cs (1)
137var selectionOperation = semanticModel.GetOperation(SelectionResult.GetContainingScope());
ExtractMethod\CSharpMethodExtractor.CSharpCodeGenerator.cs (1)
797var methodOperation = semanticModel.GetOperation(node, cancellationToken);
ImplementInterface\CSharpImplementExplicitlyCodeRefactoringProvider.cs (2)
110var operation = semanticModel.GetOperation(node, cancellationToken); 111var instance = operation switch
InitializeParameter\CSharpInitializeMemberFromParameterCodeRefactoringProvider.cs (1)
171foreach (var operation in blockOperation.Operations)
J\s\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\Helpers.cs\Helpers.cs (3)
41public static bool IsInstanceLengthCheck(IPropertySymbol lengthLikeProperty, IOperation instance, IOperation operation) 51public static bool IsSubtraction(IOperation operation, [NotNullWhen(true)] out IBinaryOperation? subtraction)
MakeLocalFunctionStaticCodeFixHelper.cs (2)
153var localFunctionBodyOperation = semanticModel.GetOperation(localFunction.Body ?? (SyntaxNode)localFunction.ExpressionBody!.Expression, cancellationToken); 154foreach (var descendent in localFunctionBodyOperation.DescendantsAndSelf())
UseUtf8StringLiteralCodeFixProvider.cs (2)
101var operation = semanticModel.GetRequiredOperation(node, cancellationToken); 129static IArrayCreationOperation FindArrayCreationOperationAncestor(IOperation operation)
UseUtf8StringLiteralDiagnosticAnalyzer.cs (4)
118private void ReportParameterArrayDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, ImmutableArray<IOperation> elements, ReportDiagnostic severity, ArrayCreationOperationLocation operationLocation) 150internal static bool TryConvertToUtf8String(StringBuilder? builder, ImmutableArray<IOperation> arrayCreationElements) 193private static bool TryGetNextRune(ImmutableArray<IOperation> arrayCreationElements, int startIndex, out Rune rune, out int bytesConsumed) 204var element = arrayCreationElements[startIndex + i];
Microsoft.CodeAnalysis.CSharp.IOperation.UnitTests (48)
IOperation\IOperationTests.cs (9)
465IOperation operation1 = model.GetOperation(assignments[0]); 471IOperation operation2 = model.GetOperation(assignments[1]); 477IOperation operation3 = model.GetOperation(assignments[2]); 511var operation = model.GetOperation(statement); 560var operation = model.GetOperation(expr); 591IOperation operation = model.GetOperation(literal); 626IOperation operation = speculativeModel.GetOperation(localDecl); 670var blockOperation = semanticModel.GetOperation(exceptionBlock); 676IOperation operation,
IOperation\IOperationTests_IAnonymousFunctionExpression.cs (2)
413var variableTreeLambdaOperation = ((IDelegateCreationOperation)variableDeclarationGroupOperation.Declarations.Single().Declarators.Single().Initializer.Value).Target; 421var variableTreeLambdaOperationSecondRequest = ((IDelegateCreationOperation)variableDeclarationGroupOperationSecondRequest.Declarations.Single().Declarators.Single().Initializer.Value).Target;
IOperation\IOperationTests_IArgument.cs (2)
4083var operation = VerifyOperationTreeForTest<StatementSyntax>(comp, expectedOperationTree); 4131public static void Verify(IOperation operation, Compilation compilation, SyntaxNode syntaxNode)
IOperation\IOperationTests_IBranchOperation.Extensions.cs (4)
373private (IOperation outer, IOperation corresponding) GetOuterOperationAndCorrespondingInnerOperation<TOuterSyntax, TInnerSyntax>(string source) 379var outer = GetOperationAndSyntaxForTest<TOuterSyntax>(compilation).operation; 381var correspondingOfInner = inner?.GetCorrespondingOperation();
IOperation\IOperationTests_ICompoundAssignmentOperation.cs (2)
45(IOperation operation, _) = GetOperationAndSyntaxForTest<AssignmentExpressionSyntax>(compilation); 81(IOperation operation, SyntaxNode node) = GetOperationAndSyntaxForTest<AssignmentExpressionSyntax>(compilation);
IOperation\IOperationTests_IConversionExpression.cs (22)
181var initializerOperation = ((IVariableDeclaratorOperation)operation).Initializer.Value; 379var initializer = ((IVariableDeclaratorOperation)operation).Initializer.Value; 5229public static IOperation IVariableDeclarationStatementSelector(IOperation operation) => 5232public static IOperation IVariableDeclarationSelector(IOperation operation) => 5235public static IOperation IVariableDeclaratorSelector(IOperation operation) => 5238public static IOperation IReturnDeclarationStatementSelector(IOperation operation) => 5241public static IOperation NestedConversionChildSelector(IOperation operation) => 5244private static IOperation ConversionOrDelegateChildSelector(IOperation operation) 5256public Func<IOperation, IConversionOperation> OperationSelector { get; set; } 5258public Func<IOperation, IOperation> ConversionChildSelector { get; set; } = ConversionOrDelegateChildSelector; 5272public void Verify(IOperation variableDeclaration, Compilation compilation, SyntaxNode syntaxNode) 5278var initializer = GetAndInvokeOperationSelector(variableDeclaration); 5280var conversion = initializer; 5307private IOperation GetAndInvokeOperationSelector(IOperation operation)
IOperation\IOperationTests_IFieldReferenceExpression.cs (1)
712var methodBlockOperation = model.GetOperation(methodDecl);
IOperation\IOperationTests_IVariableDeclaration.cs (6)
611(var operation, _) = GetOperationAndSyntaxForTest<VariableDeclaratorSyntax>(compilation); 633(var operation, _) = GetOperationAndSyntaxForTest<VariableDeclaratorSyntax>(compilation); 654(var operation, _) = GetOperationAndSyntaxForTest<VariableDeclaratorSyntax>(compilation); 675(var operation, _) = GetOperationAndSyntaxForTest<VariableDeclaratorSyntax>(compilation); 849(var operation, _) = GetOperationAndSyntaxForTest<VariableDeclarationSyntax>(compilation); 871(var operation, _) = GetOperationAndSyntaxForTest<VariableDeclarationSyntax>(compilation);
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (25)
Semantics\ConstantTests.cs (1)
3503var literalOperation = model.GetOperation(initializer);
Semantics\DelegateTypeTests.cs (1)
11418var value = ((IConversionOperation)operation.Initializer!.Value).Operand;
Semantics\OperatorTests.cs (3)
11423foreach (var initializerOp in fieldInitializerOperations) 11430void enumerateChildren(IOperation iop) 11434foreach (var child in iop.ChildOperations)
Semantics\OutVarTests.cs (5)
3514var initializerOperation = model.GetOperation(initializer); 35939IOperation initializerOperation = model.GetOperation(initializerSyntax); 35962IOperation blockBodyOperation = model.GetOperation(blockBodySyntax); 36083IOperation expressionBodyOperation = model.GetOperation(expressionBodySyntax); 36108IOperation blockBodyOperation = model.GetOperation(blockBodySyntax);
Semantics\PrimaryConstructorTests.cs (1)
1001var operation = model.GetOperation(baseWithargs);
Semantics\RecordStructTests.cs (2)
6899var operation = model.GetOperation(with); 8772var operation = model.GetOperation(withExpr);
Semantics\RecordTests.cs (1)
21193var operation = model.GetOperation(baseWithargs);
Semantics\StructConstructorTests.cs (3)
1051var operation = model.GetOperation(syntax); 1146var operation = model.GetOperation(syntax); 1243var operation = model.GetOperation(syntax);
Semantics\TopLevelStatementsTests.cs (8)
200var operation1 = model1.GetOperation(localRef.Parent); 243var operation2 = model1.GetOperation(localDecl); 328var operation1 = model1.GetOperation(localRef.Parent); 366var operation2 = model2.GetOperation(localDecl); 488var operation1 = model1.GetOperation(localDecl); 508var operation2 = model2.GetOperation(localRef); 580var operation1 = model1.GetOperation(localDecl); 597var operation2 = model1.GetOperation(localRef);
Microsoft.CodeAnalysis.CSharp.Symbol.UnitTests (2)
Symbols\Source\NullablePublicAPITests.cs (1)
4968var operation = model.GetOperation(ternary);
Symbols\SymbolEqualityTests.cs (1)
963var operation = model.GetOperation(syntaxNode);
Microsoft.CodeAnalysis.CSharp.Test.Utilities (14)
CompilationTestUtils.cs (3)
356var iop = getOperation(model, expression); 392static IOperation getOperation(SemanticModel model, SyntaxNode expression) 419static void assertTypeInfoNull(IOperation iop, TypeInfo typeInfo)
CSharpTestBase.cs (11)
1936protected static (IOperation operation, SyntaxNode node) GetOperationAndSyntaxForTest<TSyntaxNode>(CSharpCompilation compilation) 1947var operation = model.GetOperation(syntaxNode); 1962protected static string GetOperationTreeForTest(CSharpCompilation compilation, IOperation operation) 1979protected static IOperation VerifyOperationTreeForTest<TSyntaxNode>(CSharpCompilation compilation, string expectedOperationTree, Action<IOperation, Compilation, SyntaxNode> additionalOperationTreeVerifier = null) 1995protected static void VerifyOperationTree(CSharpCompilation compilation, IOperation operation, string expectedOperationTree) 2034Action<IOperation, Compilation, SyntaxNode> additionalOperationTreeVerifier = null) 2060Action<IOperation, Compilation, SyntaxNode> additionalOperationTreeVerifier = null, 2081Action<IOperation, Compilation, SyntaxNode> additionalOperationTreeVerifier = null) 2099Action<IOperation, Compilation, SyntaxNode> additionalOperationTreeVerifier = null, 2157Action<IOperation, Compilation, SyntaxNode> additionalOperationTreeVerifier = null,
Microsoft.CodeAnalysis.CSharp.Workspaces (15)
CastSimplifier.cs (9)
87var castExpressionOperation = semanticModel.GetOperation(cast.Expression, cancellationToken); 196var originalOperation = originalSemanticModel.GetOperation(castNode, cancellationToken); 255var rewrittenOperation = rewrittenSemanticModel.GetOperation(rewrittenExpression.WalkDownParentheses(), cancellationToken); 647var rewrittenOperation = rewrittenSemanticModel.GetOperation(rewrittenBitwiseNotExpression, cancellationToken); 766var operation = semanticModel.GetOperation(parentBinary, cancellationToken); 789private static bool ConvertedHasUserDefinedEquals(BinaryOperatorKind operatorKind, IOperation operation) 828private static bool IsConstantNull(IOperation operation) 963var operation = semanticModel.GetOperation(expression.WalkDownParentheses(), cancellationToken); 1230var operation = semanticModel.GetOperation(expression, cancellationToken);
NullableHelpers.cs (6)
18/// <see cref="IsSymbolAssignedPossiblyNullValue(SemanticModel, IOperation, ISymbol)"/>. Note 25var declaredOperation = semanticModel.GetRequiredOperation(declarationSyntax, cancellationToken); 27var rootOperation = declaredOperation; 45public static bool? IsSymbolAssignedPossiblyNullValue(SemanticModel semanticModel, IOperation operation, ISymbol symbol) 52foreach (var reference in references) 98private static bool IsSymbolReferencedByOperation(IOperation operation, ISymbol symbol)
Microsoft.CodeAnalysis.Features (208)
AbstractConvertTypeOfToNameOfDiagnosticAnalyzer.cs (1)
57private static bool IsValidOperation(IOperation operation)
AbstractPopulateSwitchCodeFixProvider.cs (1)
29where TSwitchOperation : IOperation
AbstractPopulateSwitchDiagnosticAnalyzer.cs (3)
17where TSwitchOperation : IOperation 36protected abstract IOperation GetValueOfSwitchOperation(TSwitchOperation operation); 95var value = GetValueOfSwitchOperation(operation);
AbstractPopulateSwitchExpressionDiagnosticAnalyzer.cs (1)
23protected override IOperation GetValueOfSwitchOperation(ISwitchExpressionOperation operation)
AbstractPopulateSwitchStatementDiagnosticAnalyzer.cs (1)
23protected override IOperation GetValueOfSwitchOperation(ISwitchOperation operation)
AbstractQualifyMemberAccessDiagnosticAnalyzer.cs (4)
58protected abstract Location GetLocation(IOperation operation); 83private void AnalyzeOperation(OperationAnalysisContext context, IOperation operation, IOperation? instanceOperation) 144private static bool IsStaticMemberOrIsLocalFunction(IOperation operation)
AbstractRemoveRedundantEqualityDiagnosticAnalyzer.cs (3)
52var rightOperand = operation.RightOperand; 53var leftOperand = operation.LeftOperand; 88static bool? TryGetLiteralValue(IOperation operand)
AbstractRemoveUnnecessaryAttributeSuppressionsDiagnosticAnalyzer.cs (1)
90out var targetSymbolString, out var targetValueOperation, out var resolvedSymbols))
AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (1)
352var nameofArgument = ((INameOfOperation)operationContext.Operation).Argument;
AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.cs (2)
103protected abstract Location GetDefinitionLocationToFade(IOperation unusedDefinition); 117protected virtual bool ShouldBailOutFromRemovableAssignmentAnalysis(IOperation unusedSymbolWriteOperation)
AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (17)
31/// We use this value in <see cref="ShouldAnalyze(IOperation, ISymbol, ref bool)"/> to determine whether to bail from analysis or not. 44/// We use this value in <see cref="ShouldAnalyze(IOperation, ISymbol, ref bool)"/> to determine whether to bail from analysis or not. 50/// We use this value in <see cref="ShouldAnalyze(IOperation, ISymbol, ref bool)"/> to determine whether to bail from analysis or not. 79var firstBlock = context.OperationBlocks[0]; 105foreach (var operationBlock in context.OperationBlocks) 116foreach (var operationBlock in context.OperationBlocks) 137var value = expressionStatement.Operation; 219/// delegate escape, and corresponding bail out from flow analysis in <see cref="ShouldAnalyze(IOperation, ISymbol, ref bool)"/>. 223private static bool IsHandledDelegateCreationOrAnonymousFunctionTreeShape(IOperation operation) 267/// delegate escape, and corresponding bail out from flow analysis in <see cref="ShouldAnalyze(IOperation, ISymbol, ref bool)"/>. 272private static bool IsHandledLocalOrParameterReferenceTreeShape(IOperation operation) 332private bool ShouldAnalyze(IOperation operationBlock, ISymbol owningSymbol, ref bool hasOperationNoneDescendant) 343foreach (var operation in operationBlock.Descendants()) 453foreach (var operationBlock in context.OperationBlocks) 552IOperation unreadWriteOperation, 595bool IsRemovableAssignmentWithoutSideEffects(IOperation unusedSymbolWriteOperation) 619static bool IsRemovableAssignmentValueWithoutSideEffects(IOperation assignmentValue)
AbstractSimplifyInterpolationHelpers.cs (17)
24protected abstract SyntaxNode GetPreservedInterpolationExpressionSyntax(IOperation operation); 39var expression = Unwrap(interpolation.Expression); 54private static IOperation? Unwrap(IOperation? expression, bool towardsParent = false) 76IVirtualCharService virtualCharService, ISyntaxFacts syntaxFacts, IOperation expression, out IOperation unwrapped, 82HasNonImplicitInstance(invocation, out var instance) && 137private static bool IsInvariantCultureReference(IOperation operation) 156private static bool IsInsideFormattableStringInvariant(IOperation operation) 177private static IEnumerable<IOperation> AncestorsAndSelf(IOperation operation) 179for (var current = operation; current is not null; current = current.Parent) 192IOperation expression, out IOperation unwrapped, 197HasNonImplicitInstance(invocation, out var instance)) 208var alignmentOp = invocation.Arguments[0].Value; 235private static bool HasNonImplicitInstance(IInvocationOperation invocation, [NotNullWhen(true)] out IOperation? instance)
AbstractUseConditionalExpressionCodeFixProvider.cs (6)
99IOperation trueStatement, IOperation falseStatement, 100IOperation trueValue, IOperation falseValue, 167SyntaxGenerator generator, IOperation statement, IOperation value)
AbstractUseConditionalExpressionForAssignmentCodeFixProvider.cs (5)
72out var trueStatement, out var falseStatement, 234var unwrapped = variableInitializer.Value.UnwrapImplicitConversion(); 249private bool ReferencesLocalVariable(IOperation operation, ILocalSymbol variable) 257foreach (var child in operation.ChildOperations)
AbstractUseConditionalExpressionForAssignmentDiagnosticAnalyzer.cs (2)
31GetSyntaxFacts(), ifOperation, out var isRef, out var trueStatement, out var falseStatement, out var trueAssignment, out var falseAssignment))
AbstractUseConditionalExpressionForReturnCodeFixProvider.cs (2)
59out var trueStatement, out var falseStatement,
AbstractUseConditionalExpressionForReturnDiagnosticAnalyzer.cs (2)
31GetSyntaxFacts(), ifOperation, containingSymbol, out var isRef, out var trueStatement, out var falseStatement, out var trueReturn, out var falseReturn))
AbstractUseThrowExpressionDiagnosticAnalyzer.cs (4)
215var condition = ifStatement.Condition; 242IOperation operation, 264private static bool IsNull(IOperation operation) 275var containingOperation = semanticModel.GetOperation(throwStatement.GetRequiredParent(), cancellationToken);
ConvertForEachToFor\AbstractConvertForEachToForCodeRefactoringProvider.cs (5)
173var foreachCollection = RemoveImplicitConversion(operation.Collection); 193SemanticModel model, ILocalSymbol foreachVariable, IOperation foreachCollection, 361private static bool CheckRequireCollectionStatement(IOperation operation) 387private IOperation RemoveImplicitConversion(IOperation collection)
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.AnalyzedNodes.cs (2)
27public readonly IOperation Body; 30public AnalyzedSwitchSection(ImmutableArray<AnalyzedSwitchLabel> labels, IOperation body, SyntaxNode syntaxToRemove)
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.Analyzer.cs (20)
51public abstract bool HasUnreachableEndPoint(IOperation operation); 78public (ImmutableArray<AnalyzedSwitchSection>, SyntaxNode TargetExpression) AnalyzeIfStatementSequence(ReadOnlySpan<IOperation> operations) 81if (!ParseIfStatementSequence(operations, sections, out var defaultBodyOpt)) 102private bool ParseIfStatementSequence(ReadOnlySpan<IOperation> operations, ArrayBuilder<AnalyzedSwitchSection> sections, out IOperation? defaultBodyOpt) 125var nextStatement = operations[current]; 145private bool ParseIfStatement(IOperation operation, ArrayBuilder<AnalyzedSwitchSection> sections, out IOperation? defaultBodyOpt) 174private bool ParseIfStatementOrBlock(IOperation op, ArrayBuilder<AnalyzedSwitchSection> sections, out IOperation? defaultBodyOpt) 198private bool ParseSwitchLabels(IOperation operation, ArrayBuilder<AnalyzedSwitchLabel> labels) 220private AnalyzedSwitchLabel? ParseSwitchLabel(IOperation operation) 269private AnalyzedPattern? ParsePattern(IOperation operation, ArrayBuilder<TExpressionSyntax> guards) 384bool CheckTargetExpression(IOperation left, IOperation right) 388private static (BoundKind Kind, IOperation Expression, IOperation Value) GetRangeBound(IBinaryOperation op) 434private static bool IsConstant(IOperation operation) 442private bool CheckTargetExpression(IOperation operation) 461private bool CheckConstantType(IOperation operation)
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.cs (2)
87var ifOperation = semanticModel.GetOperation(ifStatement); 139static OperationKind GetSwitchArmKind(IOperation op)
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.Rewriting.cs (1)
24public abstract IEnumerable<SyntaxNode> AsSwitchSectionStatements(IOperation operation);
HashCodeAnalyzer.cs (10)
58public (bool accessesBase, ImmutableArray<ISymbol> members, ImmutableArray<IOperation> statements) GetHashedMembers(ISymbol? owningSymbol, IOperation? operation) 90IMethodSymbol method, ImmutableArray<IOperation> statements) 113IMethodSymbol method, ImmutableArray<IOperation> statements) 152var initializerValue = declaration.Initializer?.Value ?? declarator.Initializer?.Value; 198var statement = statements[i]; 224private static bool IsLocalReference(IOperation value, ILocalSymbol accumulatorVariable) 230private static bool IsLiteralNumber(IOperation value) 238private static IOperation Unwrap(IOperation value)
HashCodeAnalyzer.OperationDeconstructor.cs (4)
17/// Breaks down complex <see cref="IOperation"/> trees, looking for particular 54public bool TryAddHashedSymbol(IOperation value, bool seenHash) 161foreach (var element in tupleOperation.Elements) 177private static bool TryGetFieldOrProperty(IOperation operation, [NotNullWhen(true)] out ISymbol? symbol)
InitializeParameter\AbstractAddParameterCheckCodeRefactoringProvider.cs (13)
189IOperation statement, IParameterSymbol parameter, 198var operation = semanticModel.GetOperation(coalesceNode, cancellationToken); 212private static bool IsIfNullCheck(IOperation statement, IParameterSymbol parameter) 216var condition = ifStatement.Condition; 278foreach (var statement in blockStatementOpt.Operations) 295private static bool IsStringCheck(IOperation condition, IParameterSymbol parameter) 309private static bool IsNullCheck(IOperation operand1, IOperation operand2, IParameterSymbol parameter) 422var checkStatement = TryFindParameterCheckStatement( 432var checkStatement = TryFindParameterCheckStatement( 450private static IOperation? TryFindParameterCheckStatement( 458foreach (var statement in blockStatement.Operations) 502foreach (var statement in blockStatement.Operations)
InitializeParameter\AbstractInitializeMemberFromParameterCodeRefactoringProviderMemberCreation.cs (12)
79var assignmentStatement = TryFindFieldOrPropertyAssignmentStatement(parameter, blockStatement); 233var assignmentOp = TryFindFieldOrPropertyAssignmentStatement(parameter, blockStatement); 569var statement = TryFindFieldOrPropertyAssignmentStatement( 626var statement = TryFindFieldOrPropertyAssignmentStatement(sibling, blockStatement); 646private static IOperation? TryFindFieldOrPropertyAssignmentStatement(IParameterSymbol parameter, IBlockOperation? blockStatement) 650IOperation operation, 674private static IOperation? TryFindFieldOrPropertyAssignmentStatement( 680foreach (var statement in blockStatement.Operations) 694var target = targetTuple.Elements[i]; 695var value = valueTuple.Elements[i]; 791foreach (var statement in blockStatement.Operations) 823var operation = semanticModel.GetOperation(accessorBody, cancellationToken);
InitializeParameter\AbstractInitializeParameterCodeRefactoringProvider.cs (8)
165var operation = semanticModel.GetOperation( 187protected static bool IsParameterReference(IOperation operation, IParameterSymbol parameter) 193IOperation condition, 199var childOperation = semanticModel.GetOperation(child, cancellationToken); 207protected static bool IsFieldOrPropertyAssignment(IOperation statement, INamedTypeSymbol containingType, [NotNullWhen(true)] out IAssignmentOperation? assignmentExpression) 211IOperation statement, INamedTypeSymbol containingType, 227protected static bool IsFieldOrPropertyReference(IOperation operation, INamedTypeSymbol containingType) 231IOperation? operation, INamedTypeSymbol containingType,
InlineMethod\AbstractInlineMethodRefactoringProvider.InlineContext.cs (2)
402var operation = semanticModel.GetOperation(methodDeclarationSyntax, cancellationToken); 408public override void Visit(IOperation? operation)
InlineMethod\AbstractInlineMethodRefactoringProvider.MethodParametersInfo.cs (1)
509var argumentExpressionOperation = argumentOperation.Value;
IntroduceParameter\AbstractIntroduceParameterCodeRefactoringProvider.cs (1)
216var operation = semanticModel.GetOperation(expression, cancellationToken);
IntroduceUsingStatement\AbstractIntroduceUsingStatementCodeRefactoringProvider.cs (1)
88var initializer = (localDeclaration.Initializer ?? declarator.Initializer)?.Value;
IntroduceVariable\AbstractIntroduceVariableService.cs (3)
351var originalOperation = originalSemanticModel.GetOperation(expressionInOriginal, cancellationToken); 354var currentOperation = currentSemanticModel.GetOperation(nodeInCurrent, cancellationToken); 371static bool IsInstanceMemberReference(IOperation operation)
J\s\src\Analyzers\Core\Analyzers\UseConditionalExpression\UseConditionalExpressionHelpers.cs\UseConditionalExpressionHelpers.cs (7)
21IOperation whenTrue, IOperation whenFalse) 59public static IOperation? UnwrapSingleStatementBlock(IOperation? statement) 104public static bool IsBooleanLiteral(IOperation trueValue, bool val) 107public static bool CanSimplify(IOperation trueValue, IOperation falseValue, bool isRef, out bool negate)
PopulateSwitchExpressionHelpers.cs (2)
19var switchExpression = operation.Value; 77private static void RemoveIfConstantPatternHasValue(IOperation operation, Dictionary<long, ISymbol> enumMembers)
PopulateSwitchStatementHelpers.cs (2)
46var switchExpression = switchStatement.Value; 107var value = ((ISingleValueCaseClauseOperation)clause).Value;
SuppressMessageAttributeState.cs (10)
55out ImmutableArray<(string name, IOperation value)> namedAttributeArguments) 57var operation = (model.GetOperation(attributeSyntax, cancellationToken) as IAttributeOperation)?.Operation; 60namedAttributeArguments = ImmutableArray<(string name, IOperation value)>.Empty; 64using var _ = ArrayBuilder<(string name, IOperation value)>.GetInstance(out var builder); 65foreach (var initializer in initializerOperation.Initializers) 79public static bool HasValidScope(ImmutableArray<(string name, IOperation value)> namedAttributeArguments, out TargetScope targetScope) 97ImmutableArray<(string name, IOperation value)> namedAttributeArguments, 101out IOperation? targetValueOperation, 137ImmutableArray<(string name, IOperation value)> namedAttributeArguments, 140[NotNullWhen(returnValue: true)] out IOperation? argumentValueOperation)
UseConditionalExpressionForAssignmentHelpers.cs (3)
17[NotNullWhen(true)] out IOperation trueStatement, 18[NotNullWhen(true)] out IOperation? falseStatement, 58[NotNullWhen(true)] IOperation? statement,
UseConditionalExpressionForReturnHelpers.cs (3)
18[NotNullWhen(true)] out IOperation? trueStatement, 19[NotNullWhen(true)] out IOperation? falseStatement, 127private static bool IsReturnExprOrThrow(IOperation? statement)
UseSystemHashCodeCodeFixProvider.cs (1)
61var operation = semanticModel.GetOperation(operationLocation, cancellationToken);
UseSystemHashCodeDiagnosticAnalyzer.cs (1)
46var operation = context.OperationBlocks[0];
ValueTracking\ValueTracker.cs (3)
142var operation = semanticModel.GetOperation(lhsNode, cancellationToken); 213var operation = semanticModel.GetOperation(node, cancellationToken); 300var operation = semanticModel.GetOperation(node, cancellationToken);
ValueTracking\ValueTracker.FindReferencesProgress.cs (5)
80var operation = semanticModel.GetOperation(node, cancellationToken); 111var argumentOperation = semanticModel.GetOperation(argument, cancellationToken); 129var expressionOperation = semanticModel.GetOperation(expression, cancellationToken); 154var operation = semanticModel.GetOperation(originalNode.Parent, cancellationToken); 184var operation = semanticModel.GetOperation(invocationSyntax, cancellationToken);
ValueTracking\ValueTracker.OperationCollector.cs (13)
29public Task VisitAsync(IOperation operation, CancellationToken cancellationToken) 50private async Task VisitReturnDescendentsAsync(IOperation operation, bool allowImplicit, CancellationToken cancellationToken) 53foreach (var returnOperation in returnOperations) 60private async Task VisitDefaultAsync(IOperation operation, CancellationToken cancellationToken) 93private async Task<bool> TryVisitChildrenAsync(IOperation operation, CancellationToken cancellationToken) 95foreach (var child in operation.ChildOperations) 115private Task VisitReferenceAsync(IOperation operation, CancellationToken cancellationToken) 146Task AddReference(IOperation operation, CancellationToken cancellationToken) 177private async Task AddOperationAsync(IOperation operation, ISymbol symbol, CancellationToken cancellationToken) 281private static bool IsContainedIn<TContainingOperation>(IOperation? operation) where TContainingOperation : IOperation 284private static bool IsContainedIn<TContainingOperation>(IOperation? operation, [NotNullWhen(returnValue: true)] out TContainingOperation? containingOperation) where TContainingOperation : IOperation
Microsoft.CodeAnalysis.Test.Utilities (153)
CommonTestBase.cs (21)
560private static Dictionary<IOperation, IOperation> GetParentOperationsMap(SemanticModel model) 563var topOperations = new HashSet<IOperation>(); 569var map = new Dictionary<IOperation, IOperation>(); 570foreach (var topOperation in topOperations) 581private static void CollectParentOperations(IOperation operation, Dictionary<IOperation, IOperation> map) 584foreach (var child in operation.ChildOperations) 592private static void CollectTopOperations(SemanticModel model, SyntaxNode node, HashSet<IOperation> topOperations) 596var operation = model.GetOperation(child); 615var operation = model.GetOperation(node); 621var clonedOperation = OperationCloner.CloneOperation(operation); 635var originalSet = new HashSet<IOperation>(operation.DescendantsAndSelf()); 636var clonedSet = new HashSet<IOperation>(clonedOperation.DescendantsAndSelf()); 643private static void VerifyOperationTreeContracts(IOperation root) 646var set = new HashSet<IOperation>(root.DescendantsAndSelf()); 648foreach (var child in root.DescendantsAndSelf()) 660SemanticModel semanticModel, HashSet<IOperation> set, SyntaxNode node) 664var operation = semanticModel.GetOperation(node);
Compilation\CompilationExtensions.cs (5)
277var roots = ArrayBuilder<(IOperation operation, ISymbol associatedSymbol)>.GetInstance(); 299var operation = semanticModel.GetOperation(node); 323var explicitNodeMap = new Dictionary<SyntaxNode, IOperation>(); 328foreach (var operation in root.DescendantsAndSelf()) 356void checkControlFlowGraph(IOperation root, ISymbol associatedSymbol)
Compilation\ControlFlowGraphVerifier.cs (19)
30IOperation operationRoot = model.GetOperation(syntaxNode); 235foreach (var statement in statements) 262IOperation value = block.BranchValue; 301IOperation value = block.ConditionKind == ControlFlowConditionKind.None ? block.BranchValue : null; 412var operation = block.Operations[j]; 485IOperation lastOperation = null; 719bool isAggregateGroupCapture(IOperation operation, ControlFlowRegion region, BasicBlock block, CaptureId id) 808PooledHashSet<CaptureId> state, IOperation operation, BasicBlock block, int operationIndex, 934IOperation containingArgument = reference; 1076bool isConditionalAccessCaptureUsedAfterNullCheck(IOperation operation, ControlFlowRegion region, BasicBlock block, CaptureId id) 1349foreach (IOperation operation in block.Operations) 1653void validateRoot(IOperation root) 1661foreach (var operation in root.Descendants()) 1676foreach (IOperation operation in block.Operations) 1720void recordReferences(IOperation operation) 1722foreach (IOperation node in operation.DescendantsAndSelf()) 1804string getOperationTree(IOperation operation) 1830Compilation compilation, IOperation root, int initialIndent, ISymbol associatedSymbol) : 1858private static bool CanBeInControlFlowGraph(IOperation n)
Compilation\OperationTreeVerifier.cs (16)
26protected readonly IOperation _root; 28private readonly Dictionary<SyntaxNode, IOperation> _explicitNodeMap; 36public OperationTreeVerifier(Compilation compilation, IOperation root, int initialIndent) 45_explicitNodeMap = new Dictionary<SyntaxNode, IOperation>(); 49public static string GetOperationTree(Compilation compilation, IOperation operation, int initialIndent = 0) 55foreach (var op in operation.DescendantsAndSelf()) 92private void LogCommonPropertiesAndNewLine(IOperation operation) 98private void LogCommonProperties(IOperation operation) 178private static bool ShouldLogType(IOperation operation) 298public override void Visit(IOperation operation) 337private void Visit(IOperation operation, string header) 395private void VisitChildren(IOperation operation) 407where T : IOperation 427private void VisitInstance(IOperation instance) 432internal override void VisitNoneOperation(IOperation operation) 1447foreach (var initializer in operation.Initializers)
Compilation\SemanticModelExtensions.cs (1)
22IOperation operation = model.GetOperation(node);
Compilation\TestOperationVisitor.cs (41)
29public override void DefaultVisit(IOperation operation) 34internal override void VisitNoneOperation(IOperation operation) 42public override void Visit(IOperation operation) 66var builder = count == 0 ? null : ArrayBuilder<IOperation>.GetInstance(count); 67foreach (IOperation child in operation.ChildOperations) 82var first = forwards.Current; 89var last = reversed.Current; 100foreach (IOperation child in operation.ChildOperations.Reverse()) 135IEnumerable<IOperation> children = operation.IgnoredArguments; 149IEnumerable<IOperation> children = operation.IgnoredDimensions.Concat(operation.Declarators); 177internal static void VerifySubTree(IOperation root, bool hasNonNullParent = false) 192var explicitNodeMap = new Dictionary<SyntaxNode, IOperation>(); 194foreach (IOperation descendant in root.DescendantsAndSelf()) 258IEnumerable<IOperation> children; 295IEnumerable<IOperation> children = operation.Before; 323IEnumerable<IOperation> children; 334IEnumerable<IOperation> children = new[] { operation.Collection, operation.LoopControlVariable, operation.Body }.Concat(operation.NextVariables); 428IEnumerable<IOperation> children = new[] { operation.Body }; 445IEnumerable<IOperation> children = Array.Empty<IOperation>(); 529IEnumerable<IOperation> children; 555IEnumerable<IOperation> children = new[] { operation.Target }.Concat(operation.Arguments); 631VisitMemberReference(operation, Array.Empty<IOperation>()); 634private void VisitMemberReference(IMemberReferenceOperation operation, IEnumerable<IOperation> additionalChildren) 639IEnumerable<IOperation> children; 1018IEnumerable<IOperation> children = operation.Arguments; 1031foreach (var initializer in operation.Initializers) 1045IEnumerable<IOperation> children = operation.Arguments; 1122IEnumerable<IOperation> children = operation.DimensionSizes; 1282IEnumerable<IOperation> children = new[] { operation.Expression }; 1303IEnumerable<IOperation> children = new[] { operation.HandlerCreation, operation.Content }; 1455IEnumerable<IOperation> children = operation.Patterns.Cast<IOperation>(); 1497IEnumerable<IOperation> children = operation.DeconstructionSubpatterns.Cast<IOperation>(); 1506var children = new IOperation[] { operation.Member, operation.Pattern }; 1535var children = operation.Arms.Cast<IOperation>().Prepend(operation.Value); 1602AssertEx.Equal(new IOperation[] { operation.EventReference }.Concat(operation.Arguments), operation.ChildOperations); 1618var builder = ArrayBuilder<IOperation>.GetInstance(); 1747IOperation[] children = operation.ChildOperations.ToArray(); 1802IEnumerable<IOperation> children = SpecializedCollections.SingletonEnumerable(operation.Operand).Concat(operation.Initializer);
Diagnostics\BoxingOperationAnalyzer.cs (1)
43IOperation operation = operationContext.Operation;
Diagnostics\CommonDiagnosticAnalyzers.cs (10)
1120private readonly ConcurrentDictionary<IOperation, (ControlFlowGraph Graph, ISymbol AssociatedSymbol)> _controlFlowGraphMapOpt; 1142_controlFlowGraphMapOpt = verifyGetControlFlowGraph ? new ConcurrentDictionary<IOperation, (ControlFlowGraph, ISymbol)>() : null; 1157private void CacheAndVerifyControlFlowGraph(ImmutableArray<IOperation> operationBlocks, Func<IOperation, (ControlFlowGraph Graph, ISymbol AssociatedSymbol)> getControlFlowGraph) 1161foreach (var operationBlock in operationBlocks) 1204var rootOperation = operationContext.Operation.GetRootOperation(); 1280foreach (var operationRoot in c.OperationBlocks) 1313foreach (var operationBlock in operationBlockAnalysisContext.OperationBlocks) 2661public readonly List<IOperation> AnalyzedOperations = new(); 2663public readonly List<IOperation> AnalyzedOperationsInsideOperationBlock = new();
Diagnostics\CouldHaveMoreSpecificTypeAnalyzer.cs (5)
232private static void AssignTo(IOperation target, Dictionary<ILocalSymbol, HashSet<INamedTypeSymbol>> localsSourceTypes, Dictionary<IFieldSymbol, HashSet<INamedTypeSymbol>> fieldsSourceTypes, IOperation sourceValue) 237private static void AssignTo(IOperation target, Dictionary<ILocalSymbol, HashSet<INamedTypeSymbol>> localsSourceTypes, Dictionary<IFieldSymbol, HashSet<INamedTypeSymbol>> fieldsSourceTypes, ITypeSymbol sourceType) 252private static void AssignTo<SymbolType>(SymbolType target, ITypeSymbol targetType, Dictionary<SymbolType, HashSet<INamedTypeSymbol>> sourceTypes, IOperation sourceValue) 279private static ITypeSymbol OriginalType(IOperation value)
Diagnostics\FieldCouldBeReadOnlyAnalyzer.cs (1)
111private static void AssignTo(IOperation target, bool inConstructor, ITypeSymbol staticConstructorType, HashSet<IFieldSymbol> assignedToFields, HashSet<IFieldSymbol> mightBecomeReadOnlyFields)
Diagnostics\LocalCouldBeConstAnalyzer.cs (1)
114private static void AssignTo(IOperation target, HashSet<ILocalSymbol> assignedToLocals, HashSet<ILocalSymbol> mightBecomeConstLocals)
Diagnostics\OperationTestAnalyzer.cs (31)
150IOperation forCondition = forLoop.Condition; 155IOperation conditionLeft = condition.LeftOperand; 156IOperation conditionRight = condition.RightOperand; 169IOperation setup = forLoop.Before[0]; 184IOperation advance = forLoop.AtLoopBottom[0]; 187IOperation advanceExpression = ((IExpressionStatementOperation)advance).Operation; 228ILocalSymbol testVariable, IOperation advanceExpression, 354IOperation singleValueExpression = singleValueClause.Value; 373IOperation rangeMinExpression = rangeClause.MinimumValue; 374IOperation rangeMaxExpression = rangeClause.MaximumValue; 397IOperation relationalValueExpression = relationalClause.Value; 572foreach (IOperation element in initializer.ElementValues) 584private static void TestAscendingArgument(OperationAnalysisContext operationContext, IOperation argument, ref long priorArgumentValue) 715var initializer = operationContext.Operation; 1326foreach (var statement in block.Operations) 1378var operation = operationContext.Operation; 1380IOperation receiver; 1609var left = binary.LeftOperand; 1610var right = binary.RightOperand; 1641var operand = unary.Operand; 1693var nullList = new List<IOperation>(); 1694var paramsList = new List<IOperation>(); 1698foreach (var nullSyntaxOperation in nullList) 1703foreach (var paramsarrayArgumentOperation in paramsList) 1718private readonly List<IOperation> _nullList; 1719private readonly List<IOperation> _paramsList; 1721public Walker(List<IOperation> nullList, List<IOperation> paramsList) 1727public override void Visit(IOperation operation) 1785var operation = operationContext.Operation; 1930var forCondition = forLoop.LimitValue;
Extensions\OperationExtensions.cs (1)
11public static bool MustHaveNullType(this IOperation operation)
Microsoft.CodeAnalysis.UnitTests (13)
Diagnostics\OperationTests.cs (13)
26private static void TestCore(Func<ImmutableArray<IOperation>, ImmutableArray<string>, ImmutableArray<RefKind>, HasDynamicArgumentsExpression> createDynamicExpression) 29ImmutableArray<IOperation> arguments = ImmutableArray<IOperation>.Empty; 37arguments = ImmutableArray.Create((IOperation)null); 45arguments = ImmutableArray.Create((IOperation)null); 55arguments = ImmutableArray.Create((IOperation)null); 80Func<ImmutableArray<IOperation>, ImmutableArray<string>, ImmutableArray<RefKind>, HasDynamicArgumentsExpression> createDynamicExpression = 95Func<ImmutableArray<IOperation>, ImmutableArray<string>, ImmutableArray<RefKind>, HasDynamicArgumentsExpression> createDynamicExpression = 110Func<ImmutableArray<IOperation>, ImmutableArray<string>, ImmutableArray<RefKind>, HasDynamicArgumentsExpression> createDynamicExpression = 132IOperation parent = new BlockOperation(ImmutableArray<IOperation>.Empty, ImmutableArray<ILocalSymbol>.Empty, 145private void TestGetFlowGraphInvalidArgumentCore(string argumentExceptionMessage, IOperation parent) 151ImmutableArray<IOperation>.Empty, ImmutableArray<ILocalSymbol>.Empty,
Microsoft.CodeAnalysis.VisualBasic (172)
Binding\MemberSemanticModel.vb (4)
839Friend Overrides Function GetOperationWorker(node As VisualBasicSyntaxNode, cancellationToken As CancellationToken) As IOperation 841Dim result As IOperation = Nothing 853Dim rootOperation As IOperation = _operationFactory.Value.Create(rootNode) 1210Private ReadOnly _guardedIOperationNodeMap As New Dictionary(Of SyntaxNode, IOperation)
Compilation\SemanticModel.vb (2)
136Protected Overrides Function GetOperationCore(node As SyntaxNode, cancellationToken As CancellationToken) As IOperation 143Friend Overridable Function GetOperationWorker(node As VisualBasicSyntaxNode, cancellationToken As CancellationToken) As IOperation
Compilation\SpeculativeSemanticModelWithMemberModel.vb (1)
233Friend Overrides Function GetOperationWorker(node As VisualBasicSyntaxNode, cancellationToken As CancellationToken) As IOperation
Compilation\SyntaxTreeSemanticModel.vb (1)
355Friend Overrides Function GetOperationWorker(node As VisualBasicSyntaxNode, cancellationToken As CancellationToken) As IOperation
Compilation\VisualBasicCompilation.vb (1)
1890Friend Overrides Function ClassifyConvertibleConversion(source As IOperation, destination As ITypeSymbol, ByRef constantValue As ConstantValue) As IConvertibleConversion
Operations\VisualBasicOperationFactory.vb (141)
55Public Function Create(boundNode As BoundNode) As IOperation 321Dim children As ImmutableArray(Of IOperation) = GetIOperationChildren(boundNode) 331Public Function CreateFromArray(Of TBoundNode As BoundNode, TOperation As {Class, IOperation})(nodeArray As ImmutableArray(Of TBoundNode)) As ImmutableArray(Of TOperation) 340Friend Function GetIOperationChildren(boundNode As BoundNode) As ImmutableArray(Of IOperation) 343Return ImmutableArray(Of IOperation).Empty 346Dim builder = ArrayBuilder(Of IOperation).GetInstance(boundNodeWithChildren.Children.Length) 359Private Function CreateBoundAssignmentOperatorOperation(boundAssignmentOperator As BoundAssignmentOperator) As IOperation 365Dim children As ImmutableArray(Of IOperation) = GetIOperationChildren(boundAssignmentOperator) 370Dim target As IOperation = Create(boundAssignmentOperator.Left) 371Dim value As IOperation = Create(boundAssignmentOperator.Right) 414Dim awaitedValue As IOperation = Create(boundAwaitOperator.Operand) 422Dim argument As IOperation = Create(boundNameOfOperator.Argument) 448Dim receiver as IOperation = CreateReceiverOperation(boundReceiver, targetMethod) 465Dim operand As IOperation = Create(boundParenthesized.Expression) 474Dim arrayReference as IOperation = Create(boundArrayAccess.Expression) 475Dim indices = CreateFromArray(Of BoundExpression, IOperation)(boundArrayAccess.Indices) 482Friend Function CreateBoundUnaryOperatorChild(boundOperator As BoundExpression) As IOperation 499Dim operand As IOperation = CreateBoundUnaryOperatorChild(boundUnaryOperator) 512Dim operand As IOperation = CreateBoundUnaryOperatorChild(boundUserDefinedUnaryOperator) 528Friend Function CreateBoundBinaryOperatorChild(binaryOperator As BoundExpression, isLeft As Boolean) As IOperation 549Private Function CreateBoundBinaryOperatorOperation(boundBinaryOperator As BoundBinaryOperator) As IOperation 561Dim left As IOperation = Nothing 565Dim right As IOperation = Create(currentBinary.Right) 584Dim left As IOperation = CreateBoundBinaryOperatorChild(boundUserDefinedBinaryOperator, isLeft:=True) 585Dim right As IOperation = CreateBoundBinaryOperatorChild(boundUserDefinedBinaryOperator, isLeft:=False) 597Dim value As IOperation = Create(boundBinaryConditionalExpression.TestExpression) 598Dim whenFalse As IOperation = Create(boundBinaryConditionalExpression.ElseExpression) 622Dim left As IOperation = CreateBoundBinaryOperatorChild(boundUserDefinedShortCircuitingOperator, isLeft:=True) 623Dim right As IOperation = CreateBoundBinaryOperatorChild(boundUserDefinedShortCircuitingOperator, isLeft:=False) 656Dim children = CreateFromArray(Of BoundExpression, IOperation)(boundBadExpression.ChildBoundNodes) 671Dim children As ImmutableArray(Of IOperation) = ImmutableArray(Of IOperation).Empty 685Dim namedArguments = CreateFromArray(Of BoundExpression, IOperation)(boundAttribute.NamedArguments) 693Private Function CreateBoundTryCastOperation(boundTryCast As BoundTryCast) As IOperation 697Private Function CreateBoundDirectCastOperation(boundDirectCast As BoundDirectCast) As IOperation 701Private Function CreateBoundConversionOperation(boundConversion As BoundConversion) As IOperation 719Private Function CreateBoundConversionOrCastOperation(boundConversionOrCast As BoundConversionOrCast, isTryCast As Boolean) As IOperation 749Dim target As IOperation = CreateBoundDelegateCreationExpressionChildOperation(boundDelegateCreationExpression) 765Dim receiverOpt As IOperation = CreateReceiverOperation( 778Dim condition As IOperation = Create(boundTernaryConditionalExpression.Condition) 779Dim whenTrue As IOperation = Create(boundTernaryConditionalExpression.WhenTrue) 780Dim whenFalse As IOperation = Create(boundTernaryConditionalExpression.WhenFalse) 807Private Function CreateBoundLateInvocationOperation(boundLateInvocation As BoundLateInvocation) As IOperation 808Dim operation As IOperation = Create(boundLateInvocation.Member) 809Dim arguments As ImmutableArray(Of IOperation) = CreateFromArray(Of BoundExpression, IOperation)(boundLateInvocation.ArgumentsOpt) 832Dim initializers As ImmutableArray(Of IOperation) = CreateFromArray(Of BoundExpression, IOperation)(boundObjectInitializerExpression.Initializers) 840Dim initializers As ImmutableArray(Of IOperation) = CreateFromArray(Of BoundExpression, IOperation)(boundCollectionInitializerExpression.Initializers) 864Dim dimensionSizes As ImmutableArray(Of IOperation) = CreateFromArray(Of BoundExpression, IOperation)(boundArrayCreation.Bounds) 873Dim elementValues As ImmutableArray(Of IOperation) = CreateFromArray(Of BoundExpression, IOperation)(boundArrayInitialization.Initializers) 881Dim instance As IOperation = CreateReceiverOperation( 910Dim instance As IOperation = CreateReceiverOperation(boundEventAccess.ReceiverOpt, [event]) 921Dim instance As IOperation = CreateReceiverOperation(boundFieldAccess.ReceiverOpt, field) 932Dim operation As IOperation = Create(boundConditionalAccess.Receiver) 933Dim whenNotNull As IOperation = Create(boundConditionalAccess.AccessExpression) 955Private Function CreateBoundLocalOperation(boundLocal As BoundLocal) As IOperation 968Dim instance As IOperation = Create(boundLateMemberAccess.ReceiverOpt) 992Dim value As IOperation = Create(boundFieldInitializer.InitialValue) 1000Dim value As IOperation = Create(boundPropertyInitializer.InitialValue) 1008Dim value As IOperation = Create(boundParameterEqualsValue.Value) 1014Private Function CreateBoundLValueToRValueWrapper(boundNode As BoundLValueToRValueWrapper) As IOperation 1021Private Function CreateBoundRValuePlaceholderOperation(boundRValuePlaceholder As BoundRValuePlaceholder) As IOperation 1061Dim condition as IOperation = Create(boundIfStatement.Condition) 1062Dim whenTrue as IOperation = Create(boundIfStatement.Consequence) 1063Dim whenFalse as IOperation = Create(boundIfStatement.AlternativeOpt) 1074Dim value As IOperation = Create(boundSelectStatement.ExpressionStatement.Expression) 1098Friend Function CreateBoundCaseBlockBody(boundCaseBlock As BoundCaseBlock) As ImmutableArray(Of IOperation) 1102Friend Function CreateBoundCaseBlockCondition(boundCaseBlock As BoundCaseBlock) As IOperation 1108Dim body As ImmutableArray(Of IOperation) = ImmutableArray.Create(Create(boundCaseBlock.Body)) 1109Dim condition As IOperation = CreateBoundCaseBlockCondition(boundCaseBlock) 1117Dim clauseValue As IOperation = Create(GetSingleValueCaseClauseValue(boundSimpleCaseClause)) 1124Dim minimumValue As IOperation = Create(GetCaseClauseValue(boundRangeCaseClause.LowerBoundOpt, boundRangeCaseClause.LowerBoundConditionOpt)) 1125Dim maximumValue As IOperation = Create(GetCaseClauseValue(boundRangeCaseClause.UpperBoundOpt, boundRangeCaseClause.UpperBoundConditionOpt)) 1133Dim valueExpression As IOperation = Create(GetSingleValueCaseClauseValue(boundRelationalCaseClause)) 1141Dim condition As IOperation = Create(boundDoLoopStatement.ConditionOpt) 1142Dim body As IOperation = Create(boundDoLoopStatement.Body) 1143Dim ignoredCondition As IOperation = If(boundDoLoopStatement.TopConditionOpt IsNot Nothing AndAlso boundDoLoopStatement.BottomConditionOpt IsNot Nothing, 1156Dim loopControlVariable As IOperation = CreateBoundControlVariableOperation(boundForToStatement) 1157Dim initialValue As IOperation = Create(boundForToStatement.InitialValue) 1158Dim limitValue As IOperation = Create(boundForToStatement.LimitValue) 1159Dim stepValue As IOperation = Create(boundForToStatement.StepValue) 1160Dim body As IOperation = Create(boundForToStatement.Body) 1161Dim nextVariables As ImmutableArray(Of IOperation) = If(boundForToStatement.NextVariablesOpt.IsDefault, 1162ImmutableArray(Of IOperation).Empty, 1163CreateFromArray(Of BoundExpression, IOperation)(boundForToStatement.NextVariablesOpt)) 1237Dim controlVariable As IOperation = CreateBoundControlVariableOperation(boundForEachStatement) 1238Dim collection As IOperation = Create(boundForEachStatement.Collection) 1240ImmutableArray(Of IOperation).Empty, 1241CreateFromArray(Of BoundExpression, IOperation)(boundForEachStatement.NextVariablesOpt)) 1242Dim body As IOperation = Create(boundForEachStatement.Body) 1253Friend Function CreateBoundControlVariableOperation(boundForStatement As BoundForStatement) As IOperation 1257New VariableDeclaratorOperation(localOpt, initializer:=Nothing, ignoredArguments:=ImmutableArray(Of IOperation).Empty, semanticModel:=_semanticModel, syntax:=controlVariable.Syntax, isImplicit:=boundForStatement.WasCompilerGenerated), 1271Friend Function CreateBoundCatchBlockExceptionDeclarationOrExpression(boundCatchBlock As BoundCatchBlock) As IOperation 1275Return New VariableDeclaratorOperation(boundCatchBlock.LocalOpt, initializer:=Nothing, ignoredArguments:=ImmutableArray(Of IOperation).Empty, semanticModel:=_semanticModel, syntax:=boundCatchBlock.ExceptionSourceOpt.Syntax, isImplicit:=False) 1282Dim exceptionDeclarationOrExpression as IOperation = CreateBoundCatchBlockExceptionDeclarationOrExpression(boundCatchBlock) 1283Dim filter As IOperation = Create(boundCatchBlock.ExceptionFilterOpt) 1295Dim operations As ImmutableArray(Of IOperation) = CreateFromArray(Of BoundStatement, IOperation)(boundBlock.Statements) 1316Dim children = CreateFromArray(Of BoundNode, IOperation)(boundBadStatement.ChildBoundNodes) 1322Dim returnedValue As IOperation = Create(boundReturnStatement.ExpressionOpt) 1334Dim thrownObject As IOperation = Create(boundThrowStatement.ExpressionOpt) 1342Dim condition As IOperation = Create(boundWhileStatement.Condition) 1343Dim body As IOperation = Create(boundWhileStatement.Body) 1344Dim ignoredCondition As IOperation = Nothing 1372Dim returnedValue As IOperation = Create(boundYieldStatement.Expression) 1380Dim statement As IOperation = Nothing 1418Dim lockedValue as IOperation = Create(boundSyncLockStatement.LockExpression) 1419Dim body as IOperation = Create(boundSyncLockStatement.Body) 1446Dim value As IOperation = Create(boundWithStatement.OriginalExpression) 1447Dim body As IOperation = Create(boundWithStatement.Body) 1453Friend Function CreateBoundUsingStatementResources(boundUsingStatement As BoundUsingStatement) As IOperation 1462Dim resources As IOperation = CreateBoundUsingStatementResources(boundUsingStatement) 1463Dim body As IOperation = Create(boundUsingStatement.Body) 1471Dim expression As IOperation = Create(boundExpressionStatement.Expression) 1506Private Function CreateBoundRaiseEventStatementOperation(boundRaiseEventStatement As BoundRaiseEventStatement) As IOperation 1516Dim children = CreateFromArray(Of BoundNode, IOperation)(DirectCast(boundRaiseEventStatement, IBoundInvalidNode).InvalidNodeChildren) 1527Dim expression As IOperation = GetAddRemoveHandlerStatementExpression(boundAddHandlerStatement) 1534Dim expression As IOperation = GetAddRemoveHandlerStatementExpression(boundRemoveHandlerStatement) 1551Dim elements As ImmutableArray(Of IOperation) = CreateFromArray(Of BoundExpression, IOperation)(boundTupleExpression.Arguments) 1580Dim expression As IOperation = Create(boundInterpolation.Expression) 1581Dim alignment As IOperation = Create(boundInterpolation.AlignmentOpt) 1582Dim formatString As IOperation = Create(boundInterpolation.FormatStringOpt) 1589Dim text As IOperation = CreateBoundLiteralOperation(boundLiteral, implicit:=True) 1596Dim initializers As ImmutableArray(Of IOperation) = GetAnonymousTypeCreationInitializers(boundAnonymousTypeCreationExpression) 1605Dim instance As IOperation = CreateAnonymousTypePropertyAccessImplicitReceiverOperation([property], boundAnonymousTypePropertyAccess.Syntax.FirstAncestorOrSelf(Of AnonymousObjectCreationExpressionSyntax)) 1624Private Function CreateBoundQueryExpressionOperation(boundQueryExpression As BoundQueryExpression) As IOperation 1625Dim operation As IOperation = Create(boundQueryExpression.LastOperator) 1632Private Function CreateBoundAggregateClauseOperation(boundAggregateClause As BoundAggregateClause) As IOperation 1641Dim group As IOperation = Create(boundAggregateClause.CapturedGroupOpt) 1642Dim aggregation As IOperation = Create(boundAggregateClause.UnderlyingExpression) 1649Private Function CreateBoundNullableIsTrueOperator(boundNullableIsTrueOperator As BoundNullableIsTrueOperator) As IOperation 1661Dim receiver as IOperation = CreateReceiverOperation(boundNullableIsTrueOperator.Operand, method) 1671Dim children = CreateFromArray(Of BoundNode, IOperation)(DirectCast(boundNullableIsTrueOperator, IBoundInvalidNode).InvalidNodeChildren) 1690Dim operand As IOperation = Create(boundRedimClause.Operand) 1691Dim dimensionSizes As ImmutableArray(Of IOperation) = CreateFromArray(Of BoundExpression, IOperation)(boundRedimClause.Indices)
Operations\VisualBasicOperationFactory_Methods.vb (22)
26Friend Function CreateCompoundAssignmentRightOperand(boundAssignment As BoundAssignmentOperator) As IOperation 88Dim target As IOperation = Create(boundAssignment.Left) 89Dim value As IOperation = CreateCompoundAssignmentRightOperand(boundAssignment) 147Private Function GetUserDefinedBinaryOperatorChild([operator] As BoundUserDefinedBinaryOperator, child As BoundExpression) As IOperation 152Return OperationFactory.CreateInvalidOperation(_semanticModel, [operator].UnderlyingExpression.Syntax, ImmutableArray(Of IOperation).Empty, isImplicit) 275Friend Function CreateReceiverOperation(node As BoundNode, symbol As ISymbol) As IOperation 292Private Function GetChildOfBadExpression(parent As BoundNode, index As Integer) As IOperation 298Return OperationFactory.CreateInvalidOperation(_semanticModel, parent.Syntax, ImmutableArray(Of IOperation).Empty, isImplicit) 310Friend Function GetAnonymousTypeCreationInitializers(expression As BoundAnonymousTypeCreationExpression) As ImmutableArray(Of IOperation) 317Dim builder = ArrayBuilder(Of IOperation).GetInstance(expression.Arguments.Length) 320Dim value As IOperation = Create(expression.Arguments(i)) 322Dim target As IOperation 438Dim initializerValue As IOperation = Create(asNewDeclarations.Initializer) 446ImmutableArray(Of IOperation).Empty, 459Dim initializerValue As IOperation = Create(boundLocalDeclaration.IdentifierInitializerOpt) 463Dim ignoredArguments = ImmutableArray(Of IOperation).Empty 476Friend Function GetAddRemoveHandlerStatementExpression(statement As BoundAddRemoveHandlerStatement) As IOperation 477Dim eventReference As IOperation = Create(statement.EventAccess) 478Dim handlerValue As IOperation = Create(statement.Handler) 490) As (Operation As IOperation, Conversion As Conversion, IsDelegateCreation As Boolean) 510) As (Operation As IOperation, Conversion As Conversion, IsDelegateCreation As Boolean) 560Private Function CreateDelegateCreationConversionOperand(operand As BoundExpression) As IOperation
Microsoft.CodeAnalysis.VisualBasic.CodeStyle (3)
VisualBasicQualifyMemberAccessDiagnosticAnalyzer.vb (1)
40Protected Overrides Function GetLocation(operation As IOperation) As Location
VisualBasicRemoveUnusedParametersAndValuesDiagnosticAnalyzer.vb (1)
71Protected Overrides Function GetDefinitionLocationToFade(unusedDefinition As IOperation) As Location
VisualBasicSimplifyInterpolationHelpers.vb (1)
18Protected Overrides Function GetPreservedInterpolationExpressionSyntax(operation As IOperation) As SyntaxNode
Microsoft.CodeAnalysis.VisualBasic.Features (5)
ConvertIfToSwitch\VisualBasicConvertIfToSwitchCodeRefactoringProvider.Analyzer.vb (1)
18Public Overrides Function HasUnreachableEndPoint(operation As IOperation) As Boolean
ConvertIfToSwitch\VisualBasicConvertIfToSwitchCodeRefactoringProvider.Rewriting.vb (1)
30Public Overrides Function AsSwitchSectionStatements(operation As IOperation) As IEnumerable(Of SyntaxNode)
VisualBasicQualifyMemberAccessDiagnosticAnalyzer.vb (1)
40Protected Overrides Function GetLocation(operation As IOperation) As Location
VisualBasicRemoveUnusedParametersAndValuesDiagnosticAnalyzer.vb (1)
71Protected Overrides Function GetDefinitionLocationToFade(unusedDefinition As IOperation) As Location
VisualBasicSimplifyInterpolationHelpers.vb (1)
18Protected Overrides Function GetPreservedInterpolationExpressionSyntax(operation As IOperation) As SyntaxNode
Microsoft.CodeAnalysis.VisualBasic.Semantic.UnitTests (1)
Semantics\BinaryOperators.vb (1)
1518Private Sub EnumerateChildren(iop As IOperation, ByRef numChildren as Integer)
Microsoft.CodeAnalysis.VisualBasic.Test.Utilities (7)
BasicTestBase.vb (7)
782Friend Shared Function GetOperationTreeForTest(Of TSyntaxNode As SyntaxNode)(compilation As VisualBasicCompilation, fileName As String, Optional which As Integer = 0) As (tree As String, syntax As SyntaxNode, operation As IOperation) 804Optional useLatestFrameworkReferences As Boolean = False) As (tree As String, syntax As SyntaxNode, operation As IOperation, compilation As Compilation) 815Friend Shared Sub VerifyOperationTreeForTest(Of TSyntaxNode As SyntaxNode)(compilation As VisualBasicCompilation, fileName As String, expectedOperationTree As String, Optional which As Integer = 0, Optional additionalOperationTreeVerifier As Action(Of IOperation, Compilation, SyntaxNode) = Nothing) 841Optional additionalOperationTreeVerifier As Action(Of IOperation, Compilation, SyntaxNode) = Nothing, 862Friend Shared Sub VerifyOperationTreeAndDiagnosticsForTest(Of TSyntaxNode As SyntaxNode)(compilation As VisualBasicCompilation, fileName As String, expectedOperationTree As String, expectedDiagnostics As String, Optional which As Integer = 0, Optional additionalOperationTreeVerifier As Action(Of IOperation, Compilation, SyntaxNode) = Nothing) 880Optional additionalOperationTreeVerifier As Action(Of IOperation, Compilation, SyntaxNode) = Nothing, 916Friend Shared Function GetOperationAndSyntaxForTest(Of TSyntaxNode As SyntaxNode)(compilation As Compilation, fileName As String, Optional which As Integer = 0) As (operation As IOperation, syntaxNode As SyntaxNode)
Microsoft.CodeAnalysis.Workspaces (144)
BasicBlockExtensions.cs (4)
12public static IEnumerable<IOperation> DescendantOperations(this BasicBlock basicBlock) 14foreach (var statement in basicBlock.Operations) 16foreach (var operation in statement.DescendantsAndSelf()) 24foreach (var operation in basicBlock.BranchValue.DescendantsAndSelf())
ControlFlowGraphExtensions.cs (2)
27public static IEnumerable<IOperation> DescendantOperations(this ControlFlowGraph cfg) 31where T : IOperation
FindSymbols\FindReferences\Finders\AbstractReferenceFinder.cs (1)
666var operation = semanticModel.GetOperation(node, cancellationToken);
OperationExtensions.cs (32)
18public static bool IsTargetOfObjectMemberInitializer(this IOperation operation) 27public static ValueUsageInfo GetValueUsageInfo(this IOperation operation, ISymbol containingSymbol) 230public static IMethodSymbol? TryGetContainingAnonymousFunctionOrLocalFunction(this IOperation? operation) 250public static bool IsInLeftOfDeconstructionAssignment(this IOperation operation, [NotNullWhen(true)] out IDeconstructionAssignmentOperation? deconstructionAssignment) 254var previousOperation = operation; 255var current = operation.Parent; 286public static bool IsAnyCompoundAssignment(this IOperation operation) 299public static bool IsInsideCatchRegion(this IOperation operation, ControlFlowGraph cfg) 319foreach (var descendant in block.DescendantOperations()) 332public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, Func<IOperation, bool> predicate) 334foreach (var operationBlock in operationBlocks) 345public static bool HasAnyOperationDescendant(this IOperation operationBlock, Func<IOperation, bool> predicate) 348public static bool HasAnyOperationDescendant(this IOperation operationBlock, Func<IOperation, bool> predicate, [NotNullWhen(true)] out IOperation? foundOperation) 352foreach (var descendant in operationBlock.DescendantsAndSelf()) 365public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, OperationKind kind) 368public static bool IsNumericLiteral(this IOperation operation) 371public static bool IsNullLiteral(this IOperation operand) 380public static IOperation? WalkDownConversion(this IOperation? operation) 390public static bool IsSingleThrowNotImplementedOperation([NotNullWhen(true)] this IOperation? firstBlock) 406var firstOp = block.Operations.Length == 1 428static IOperation? TryGetSingleExplicitStatement(ImmutableArray<IOperation> operations) 430IOperation? firstOp = null; 431foreach (var operation in operations) 445static bool IsThrowNotImplementedOperation(INamedTypeSymbol notImplementedExceptionType, IOperation? operation) 452public static IOperation? UnwrapImplicitConversion(this IOperation? value)
SemanticModelExtensions.cs (1)
53public static IOperation GetRequiredOperation(this SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
Shared\Extensions\SemanticEquivalence.cs (3)
89var originalOperation = semanticModel1.GetOperation(node1); 92var currentOperation = semanticModel2.GetOperation(node2); 128private static bool IsInstanceMemberReference(IOperation operation)
SymbolUsageAnalysis.AnalysisData.cs (15)
61protected abstract PooledDictionary<(ISymbol symbol, IOperation operation), bool> SymbolsWriteBuilder { get; } 132public abstract void OnLValueCaptureFound(ISymbol symbol, IOperation operation, CaptureId captureId); 137public abstract void SetTargetsFromSymbolForDelegate(IOperation write, ISymbol symbol); 138public abstract void SetLambdaTargetForDelegate(IOperation write, IFlowAnonymousFunctionOperation lambdaTarget); 139public abstract void SetLocalFunctionTargetForDelegate(IOperation write, IMethodReferenceOperation localFunctionTarget); 140public abstract void SetEmptyInvocationTargetsForDelegate(IOperation write); 141public abstract bool TryGetDelegateInvocationTargets(IOperation write, out ImmutableHashSet<IOperation> targets); 143protected static PooledDictionary<(ISymbol Symbol, IOperation Write), bool> CreateSymbolsWriteMap( 146var symbolsWriteMap = PooledDictionary<(ISymbol Symbol, IOperation Write), bool>.GetInstance(); 150protected static PooledDictionary<(ISymbol Symbol, IOperation Write), bool> UpdateSymbolsWriteMap( 151PooledDictionary<(ISymbol Symbol, IOperation Write), bool> symbolsWriteMap, 158(ISymbol, IOperation) key = (parameter, null); 189foreach (var write in currentWrites) 199public void OnWriteReferenceFound(ISymbol symbol, IOperation operation, bool maybeWritten, bool isRef)
SymbolUsageAnalysis.BasicBlockAnalysisData.cs (8)
30private readonly Dictionary<ISymbol, PooledHashSet<IOperation>> _reachingWrites; 33=> _reachingWrites = new Dictionary<ISymbol, PooledHashSet<IOperation>>(); 76public IEnumerable<IOperation> GetCurrentWrites(ISymbol symbol) 80foreach (var value in values) 91public void OnWriteReferenceFound(ISymbol symbol, IOperation operation, bool maybeWritten) 95values = PooledHashSet<IOperation>.GetInstance(); 195private static void AddEntries(Dictionary<ISymbol, PooledHashSet<IOperation>> result, BasicBlockAnalysisData source) 203values = PooledHashSet<IOperation>.GetInstance();
SymbolUsageAnalysis.cs (2)
32public static SymbolUsageResult Run(IOperation rootOperation, ISymbol owningSymbol, CancellationToken cancellationToken) 45var localFunctionOperation = rootOperation.Descendants()
SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (36)
41private readonly PooledDictionary<CaptureId, PooledHashSet<(ISymbol, IOperation)>> _lValueFlowCapturesMap; 48private readonly PooledDictionary<IOperation, PooledHashSet<IOperation>> _reachingDelegateCreationTargets; 69private readonly PooledDictionary<(int firstBlockOrdinal, int lastBlockOrdinal), PooledHashSet<(ISymbol, IOperation)>> _symbolWritesInsideBlockRangeMap; 77PooledDictionary<(ISymbol symbol, IOperation operation), bool> symbolsWriteMap, 81PooledDictionary<IOperation, PooledHashSet<IOperation>> reachingDelegateCreationTargets, 99_lValueFlowCapturesMap = PooledDictionary<CaptureId, PooledHashSet<(ISymbol, IOperation)>>.GetInstance(); 103_symbolWritesInsideBlockRangeMap = PooledDictionary<(int firstBlockOrdinal, int lastBlockOrdinal), PooledHashSet<(ISymbol, IOperation)>>.GetInstance(); 110protected override PooledDictionary<(ISymbol symbol, IOperation operation), bool> SymbolsWriteBuilder { get; } 134reachingDelegateCreationTargets: PooledDictionary<IOperation, PooledHashSet<IOperation>>.GetInstance(), 190foreach (var operation in cfg.OriginalOperation.Descendants()) 216private PooledHashSet<(ISymbol, IOperation)> GetOrCreateSymbolWritesInBlockRange(int firstBlockOrdinal, int lastBlockOrdinal, CancellationToken cancellationToken) 221var operations = PooledHashSet<IOperation>.GetInstance(); 225writesInBlockRange = PooledHashSet<(ISymbol, IOperation)>.GetInstance(); 242PooledHashSet<IOperation> operationsBuilder, 249foreach (var operation in cfg.Blocks[i].DescendantOperations()) 274void AddDescendantOperationsFromDelegateCreationTargets(PooledHashSet<IOperation> targets) 276foreach (var target in targets) 444foreach (var write in currentWrites) 461public override void OnLValueCaptureFound(ISymbol symbol, IOperation operation, CaptureId captureId) 465captures = PooledHashSet<(ISymbol, IOperation)>.GetInstance(); 513public override void SetTargetsFromSymbolForDelegate(IOperation write, ISymbol symbol) 521var targetsBuilder = PooledHashSet<IOperation>.GetInstance(); 522foreach (var symbolWrite in CurrentBlockAnalysisData.GetCurrentWrites(symbol)) 538foreach (var target in targetsBuilderForSymbolWrite) 548public override void SetLambdaTargetForDelegate(IOperation write, IFlowAnonymousFunctionOperation lambdaTarget) 558public override void SetLocalFunctionTargetForDelegate(IOperation write, IMethodReferenceOperation localFunctionTarget) 570public override void SetEmptyInvocationTargetsForDelegate(IOperation write) 573private void SetReachingDelegateTargetCore(IOperation write, IOperation targetOpt) 575var targetsBuilder = PooledHashSet<IOperation>.GetInstance(); 584public override bool TryGetDelegateInvocationTargets(IOperation write, out ImmutableHashSet<IOperation> targets) 593targets = ImmutableHashSet<IOperation>.Empty;
SymbolUsageAnalysis.OperationTreeAnalysisData.cs (9)
24PooledDictionary<(ISymbol symbol, IOperation operation), bool> symbolsWriteMap, 37protected override PooledDictionary<(ISymbol symbol, IOperation operation), bool> SymbolsWriteBuilder { get; } 66public override void OnLValueCaptureFound(ISymbol symbol, IOperation operation, CaptureId captureId) 72public override void SetLambdaTargetForDelegate(IOperation write, IFlowAnonymousFunctionOperation lambdaTarget) 74public override void SetLocalFunctionTargetForDelegate(IOperation write, IMethodReferenceOperation localFunctionTarget) 76public override void SetEmptyInvocationTargetsForDelegate(IOperation write) 78public override void SetTargetsFromSymbolForDelegate(IOperation write, ISymbol symbol) 80public override bool TryGetDelegateInvocationTargets(IOperation write, out ImmutableHashSet<IOperation> targets)
SymbolUsageAnalysis.Walker.cs (20)
28private IOperation _currentRootOperation; 30private PooledDictionary<IAssignmentOperation, PooledHashSet<(ISymbol, IOperation)>> _pendingWritesMap; 37IEnumerable<IOperation> operations, 52private void Visit(ISymbol containingSymbol, IEnumerable<IOperation> operations, AnalysisData analysisData, CancellationToken cancellationToken) 59_pendingWritesMap = PooledDictionary<IAssignmentOperation, PooledHashSet<(ISymbol, IOperation)>>.GetInstance(); 66foreach (var operation in operations) 94private void OnWriteReferenceFound(ISymbol symbol, IOperation operation, ValueUsageInfo valueUsageInfo) 102private void OnLValueCaptureFound(ISymbol symbol, IOperation operation, CaptureId captureId) 108private void OnReferenceFound(ISymbol symbol, IOperation operation) 160private bool MakePendingWrite(IOperation operation, ISymbol symbolOpt) 167var set = PooledHashSet<(ISymbol, IOperation)>.GetInstance(); 176set = PooledHashSet<(ISymbol, IOperation)>.GetInstance(); 380private void ProcessPossibleDelegateCreationAssignment(ISymbol symbol, IOperation write) 388IOperation initializerValue = null; 404private void ProcessPossibleDelegateCreation(IOperation creation, IOperation write) 406var currentOperation = creation; 470private void AnalyzePossibleDelegateInvocation(IOperation operation) 507foreach (var target in targets) 522void AnalyzeDelegateInvocation(IOperation target)
SymbolUsageResult.cs (3)
17ImmutableDictionary<(ISymbol symbol, IOperation write), bool> symbolWritesMap, 40public ImmutableDictionary<(ISymbol symbol, IOperation write), bool> SymbolWritesMap { get; } 54public IEnumerable<(ISymbol Symbol, IOperation WriteOperation)> GetUnreadSymbolWrites()
SyntaxGeneratorExtensions_Negate.cs (8)
149var operation = semanticModel.GetOperation(expressionNode, cancellationToken); 247var operation = semanticModel.GetOperation(isExpression, cancellationToken); 389var rightOperand = RemoveImplicitConversion(binaryOperation.RightOperand); 390var leftOperand = RemoveImplicitConversion(binaryOperation.LeftOperand); 402private static IOperation RemoveImplicitConversion(IOperation operation) 410IOperation variableExpression, ILiteralOperation numericLiteralExpression) 448var operation = semanticModel.GetOperation(expression);
Microsoft.VisualStudio.LanguageServices (1)
PullMemberUp\SymbolDependentsBuilder.cs (1)
69public override void Visit(IOperation operation)
Roslyn.Compilers.VisualBasic.IOperation.UnitTests (34)
IOperation\IOperationTests.vb (15)
60Dim statement1 As IOperation = model.GetOperation(nodes(0)) 62Dim expression1 As IOperation = DirectCast(statement1, IExpressionStatementOperation).Operation 69Dim left1 As IOperation = add1.LeftOperand 72Dim right1 As IOperation = add1.RightOperand 93Dim statement2 As IOperation = model.GetOperation(nodes(1)) 95Dim expression2 As IOperation = DirectCast(statement2, IExpressionStatementOperation).Operation 103Dim left2 As IOperation = add2.LeftOperand 106Dim right2 As IOperation = add2.RightOperand 126Dim statement3 As IOperation = model.GetOperation(nodes(2)) 128Dim expression3 As IOperation = DirectCast(statement3, IExpressionStatementOperation).Operation 135Dim operand3 As IOperation = negate3.Operand 185Dim statement1 As IOperation = model.GetOperation(nodes(0)) 187Dim expression1 As IOperation = DirectCast(statement1, IExpressionStatementOperation).Operation 213Dim statement2 As IOperation = model.GetOperation(nodes(1)) 215Dim expression2 As IOperation = DirectCast(statement2, IExpressionStatementOperation).Operation
IOperation\IOperationTests_IBranchOperation.Extensions.vb (6)
326Dim result As (expected As IOperation, actual As IOperation) 333Dim result As (expected As IOperation, actual As IOperation) 340source As string) As (outer As IOperation, corresponding As IOperation)
IOperation\IOperationTests_IConversionExpression.vb (13)
2598Function(operation As IOperation) As IConversionOperation 2600Dim initializerValue As IOperation = initializer.Value 3346Public Shared Function ConversionOrDelegateChildSelector(conv As IOperation) As IOperation 3354Private ReadOnly _operationSelector As Func(Of IOperation, IConversionOperation) 3356Private ReadOnly _operationChildSelector As Func(Of IOperation, IOperation) 3360Public Sub New(Optional operationSelector As Func(Of IOperation, IConversionOperation) = Nothing, 3361Optional operationChildSelector As Func(Of IOperation, IOperation) = Nothing, 3369Public Sub Verify(operation As IOperation, compilation As Compilation, syntaxNode As SyntaxNode) 3395Private Function GetAndInvokeOperationSelector(operation As IOperation) As IOperation