1349 references to OperationKind
Microsoft.CodeAnalysis (517)
DiagnosticAnalyzer\AnalyzerDriver.cs (4)
2832case OperationKind.MethodBody: 2833case OperationKind.ConstructorBody: 2838case OperationKind.ExpressionStatement: 2840Debug.Assert(operationBlock.Kind == OperationKind.Invocation);
DiagnosticAnalyzer\AnalyzerDriver.GroupedAnalyzerActions.cs (1)
16/// <see cref="AnalyzerActions"/> grouped by <see cref="DiagnosticAnalyzer"/>, and possibly other entities, such as <see cref="OperationKind"/>, <see cref="SymbolKind"/>, etc.
DiagnosticAnalyzer\AnalyzerDriver.GroupedAnalyzerActionsForAnalyzer.cs (3)
20private ImmutableSegmentedDictionary<OperationKind, ImmutableArray<OperationAnalyzerAction>> _lazyOperationActionsByKind; 87public ImmutableSegmentedDictionary<OperationKind, ImmutableArray<OperationAnalyzerAction>> OperationActionsByAnalyzerAndKind 97ImmutableSegmentedDictionary<OperationKind, ImmutableArray<OperationAnalyzerAction>>.Empty;
DiagnosticAnalyzer\AnalyzerExecutor.cs (5)
1022internal static ImmutableSegmentedDictionary<OperationKind, ImmutableArray<OperationAnalyzerAction>> GetOperationActionsByKind(IEnumerable<OperationAnalyzerAction> operationActions) 1026var operationActionsByKind = PooledDictionary<OperationKind, ArrayBuilder<OperationAnalyzerAction>>.GetInstance(); 1029foreach (var kind in operationAction.Kinds) 1055ImmutableSegmentedDictionary<OperationKind, ImmutableArray<OperationAnalyzerAction>> operationActionsByKind, 1077ImmutableSegmentedDictionary<OperationKind, ImmutableArray<OperationAnalyzerAction>> operationActionsByKind,
DiagnosticAnalyzer\DiagnosticAnalysisContext.cs (8)
182public void RegisterOperationAction(Action<OperationAnalysisContext> action, params OperationKind[] operationKinds) 194public virtual void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 456public void RegisterOperationAction(Action<OperationAnalysisContext> action, params OperationKind[] operationKinds) 468public virtual void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 892public void RegisterOperationAction(Action<OperationAnalysisContext> action, params OperationKind[] operationKinds) 904public abstract void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds); 1191public void RegisterOperationAction(Action<OperationAnalysisContext> action, params OperationKind[] operationKinds) 1203public abstract void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds);
DiagnosticAnalyzer\DiagnosticAnalysisContextHelpers.cs (2)
37internal static void VerifyArguments<TContext>(Action<TContext> action, ImmutableArray<OperationKind> operationKinds) 144private static void VerifyOperationKinds(ImmutableArray<OperationKind> operationKinds)
DiagnosticAnalyzer\DiagnosticAnalyzerAction.cs (2)
96public ImmutableArray<OperationKind> Kinds { get; } 98public OperationAnalyzerAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> kinds, DiagnosticAnalyzer analyzer)
DiagnosticAnalyzer\DiagnosticStartAnalysisScope.cs (6)
90public override void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 208public override void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 278public override void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 349public override void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 485public void RegisterOperationAction(DiagnosticAnalyzer analyzer, Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 638public void RegisterOperationAction(DiagnosticAnalyzer analyzer, Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds)
Generated\FlowAnalysis.Generated.cs (6)
21/// <item><description><see cref="OperationKind.FlowCapture"/></description></item> 45/// <item><description><see cref="OperationKind.FlowCaptureReference"/></description></item> 71/// <item><description><see cref="OperationKind.IsNull"/></description></item> 90/// <item><description><see cref="OperationKind.CaughtException"/></description></item> 107/// <item><description><see cref="OperationKind.StaticLocalInitializationSemaphore"/></description></item> 132/// <item><description><see cref="OperationKind.FlowAnonymousFunction"/></description></item>
Generated\Operations.Generated.cs (367)
29/// <item><description><see cref="OperationKind.Invalid"/></description></item> 48/// <item><description><see cref="OperationKind.Block"/></description></item> 79/// <item><description><see cref="OperationKind.VariableDeclarationGroup"/></description></item> 105/// <item><description><see cref="OperationKind.Switch"/></description></item> 314/// <item><description><see cref="OperationKind.Labeled"/></description></item> 341/// <item><description><see cref="OperationKind.Branch"/></description></item> 367/// <item><description><see cref="OperationKind.Empty"/></description></item> 386/// <item><description><see cref="OperationKind.Return"/></description></item> 387/// <item><description><see cref="OperationKind.YieldBreak"/></description></item> 388/// <item><description><see cref="OperationKind.YieldReturn"/></description></item> 411/// <item><description><see cref="OperationKind.Lock"/></description></item> 438/// <item><description><see cref="OperationKind.Try"/></description></item> 473/// <item><description><see cref="OperationKind.Using"/></description></item> 509/// <item><description><see cref="OperationKind.ExpressionStatement"/></description></item> 531/// <item><description><see cref="OperationKind.LocalFunction"/></description></item> 567/// <item><description><see cref="OperationKind.Stop"/></description></item> 585/// <item><description><see cref="OperationKind.End"/></description></item> 603/// <item><description><see cref="OperationKind.RaiseEvent"/></description></item> 634/// <item><description><see cref="OperationKind.Literal"/></description></item> 653/// <item><description><see cref="OperationKind.Conversion"/></description></item> 710/// <item><description><see cref="OperationKind.Invocation"/></description></item> 754/// <item><description><see cref="OperationKind.ArrayElementReference"/></description></item> 781/// <item><description><see cref="OperationKind.LocalReference"/></description></item> 809/// <item><description><see cref="OperationKind.ParameterReference"/></description></item> 860/// <item><description><see cref="OperationKind.FieldReference"/></description></item> 891/// <item><description><see cref="OperationKind.MethodReference"/></description></item> 918/// <item><description><see cref="OperationKind.PropertyReference"/></description></item> 949/// <item><description><see cref="OperationKind.EventReference"/></description></item> 972/// <item><description><see cref="OperationKind.Unary"/></description></item> 973/// <item><description><see cref="OperationKind.UnaryOperator"/></description></item> 1020/// <item><description><see cref="OperationKind.Binary"/></description></item> 1021/// <item><description><see cref="OperationKind.BinaryOperator"/></description></item> 1080/// <item><description><see cref="OperationKind.Conditional"/></description></item> 1117/// <item><description><see cref="OperationKind.Coalesce"/></description></item> 1151/// <item><description><see cref="OperationKind.AnonymousFunction"/></description></item> 1178/// <item><description><see cref="OperationKind.ObjectCreation"/></description></item> 1213/// <item><description><see cref="OperationKind.TypeParameterObjectCreation"/></description></item> 1236/// <item><description><see cref="OperationKind.ArrayCreation"/></description></item> 1265/// <item><description><see cref="OperationKind.InstanceReference"/></description></item> 1288/// <item><description><see cref="OperationKind.IsType"/></description></item> 1321/// <item><description><see cref="OperationKind.Await"/></description></item> 1367/// <item><description><see cref="OperationKind.SimpleAssignment"/></description></item> 1390/// <item><description><see cref="OperationKind.CompoundAssignment"/></description></item> 1438/// <item><description><see cref="OperationKind.Parenthesized"/></description></item> 1461/// <item><description><see cref="OperationKind.EventAssignment"/></description></item> 1493/// <item><description><see cref="OperationKind.ConditionalAccess"/></description></item> 1522/// <item><description><see cref="OperationKind.ConditionalAccessInstance"/></description></item> 1541/// <item><description><see cref="OperationKind.InterpolatedString"/></description></item> 1564/// <item><description><see cref="OperationKind.AnonymousObjectCreation"/></description></item> 1591/// <item><description><see cref="OperationKind.ObjectOrCollectionInitializer"/></description></item> 1615/// <item><description><see cref="OperationKind.MemberInitializer"/></description></item> 1642/// <item><description><see cref="OperationKind.CollectionElementInitializer"/></description></item> 1665/// <item><description><see cref="OperationKind.NameOf"/></description></item> 1688/// <item><description><see cref="OperationKind.Tuple"/></description></item> 1717/// <item><description><see cref="OperationKind.DynamicObjectCreation"/></description></item> 1744/// <item><description><see cref="OperationKind.DynamicMemberReference"/></description></item> 1786/// <item><description><see cref="OperationKind.DynamicInvocation"/></description></item> 1812/// <item><description><see cref="OperationKind.DynamicIndexerAccess"/></description></item> 1844/// <item><description><see cref="OperationKind.TranslatedQuery"/></description></item> 1867/// <item><description><see cref="OperationKind.DelegateCreation"/></description></item> 1889/// <item><description><see cref="OperationKind.DefaultValue"/></description></item> 1908/// <item><description><see cref="OperationKind.TypeOf"/></description></item> 1930/// <item><description><see cref="OperationKind.SizeOf"/></description></item> 1952/// <item><description><see cref="OperationKind.AddressOf"/></description></item> 1974/// <item><description><see cref="OperationKind.IsPattern"/></description></item> 1991/// Represents an <see cref="OperationKind.Increment" /> or <see cref="OperationKind.Decrement" /> operation. 2002/// <item><description><see cref="OperationKind.Increment"/></description></item> 2003/// <item><description><see cref="OperationKind.Decrement"/></description></item> 2051/// <item><description><see cref="OperationKind.Throw"/></description></item> 2073/// <item><description><see cref="OperationKind.DeconstructionAssignment"/></description></item> 2094/// <item><description><see cref="OperationKind.DeclarationExpression"/></description></item> 2116/// <item><description><see cref="OperationKind.OmittedArgument"/></description></item> 2158/// <item><description><see cref="OperationKind.FieldInitializer"/></description></item> 2181/// <item><description><see cref="OperationKind.VariableInitializer"/></description></item> 2200/// <item><description><see cref="OperationKind.PropertyInitializer"/></description></item> 2223/// <item><description><see cref="OperationKind.ParameterInitializer"/></description></item> 2246/// <item><description><see cref="OperationKind.ArrayInitializer"/></description></item> 2273/// <item><description><see cref="OperationKind.VariableDeclarator"/></description></item> 2316/// <item><description><see cref="OperationKind.VariableDeclaration"/></description></item> 2355/// <item><description><see cref="OperationKind.Argument"/></description></item> 2394/// <item><description><see cref="OperationKind.CatchClause"/></description></item> 2437/// <item><description><see cref="OperationKind.SwitchCase"/></description></item> 2610/// <item><description><see cref="OperationKind.InterpolatedStringText"/></description></item> 2633/// <item><description><see cref="OperationKind.Interpolation"/></description></item> 2685/// <item><description><see cref="OperationKind.ConstantPattern"/></description></item> 2707/// <item><description><see cref="OperationKind.DeclarationPattern"/></description></item> 2739/// <item><description><see cref="OperationKind.TupleBinary"/></description></item> 2740/// <item><description><see cref="OperationKind.TupleBinaryOperator"/></description></item> 2792/// <item><description><see cref="OperationKind.MethodBody"/></description></item> 2793/// <item><description><see cref="OperationKind.MethodBodyOperation"/></description></item> 2811/// <item><description><see cref="OperationKind.ConstructorBody"/></description></item> 2812/// <item><description><see cref="OperationKind.ConstructorBodyOperation"/></description></item> 2837/// <item><description><see cref="OperationKind.Discard"/></description></item> 2862/// <item><description><see cref="OperationKind.CoalesceAssignment"/></description></item> 2880/// <item><description><see cref="OperationKind.Range"/></description></item> 2918/// <item><description><see cref="OperationKind.ReDim"/></description></item> 2944/// <item><description><see cref="OperationKind.ReDimClause"/></description></item> 2966/// <item><description><see cref="OperationKind.RecursivePattern"/></description></item> 3005/// <item><description><see cref="OperationKind.DiscardPattern"/></description></item> 3023/// <item><description><see cref="OperationKind.SwitchExpression"/></description></item> 3049/// <item><description><see cref="OperationKind.SwitchExpressionArm"/></description></item> 3080/// <item><description><see cref="OperationKind.PropertySubpattern"/></description></item> 3213/// <item><description><see cref="OperationKind.UsingDeclaration"/></description></item> 3239/// <item><description><see cref="OperationKind.NegatedPattern"/></description></item> 3261/// <item><description><see cref="OperationKind.BinaryPattern"/></description></item> 3291/// <item><description><see cref="OperationKind.TypePattern"/></description></item> 3313/// <item><description><see cref="OperationKind.RelationalPattern"/></description></item> 3339/// <item><description><see cref="OperationKind.With"/></description></item> 3365/// <item><description><see cref="OperationKind.InterpolatedStringHandlerCreation"/></description></item> 3406/// <item><description><see cref="OperationKind.InterpolatedStringAddition"/></description></item> 3430/// <item><description><see cref="OperationKind.InterpolatedStringAppendLiteral"/></description></item> 3431/// <item><description><see cref="OperationKind.InterpolatedStringAppendFormatted"/></description></item> 3432/// <item><description><see cref="OperationKind.InterpolatedStringAppendInvalid"/></description></item> 3451/// <item><description><see cref="OperationKind.InterpolatedStringHandlerArgumentPlaceholder"/></description></item> 3474/// <item><description><see cref="OperationKind.FunctionPointerInvocation"/></description></item> 3496/// <item><description><see cref="OperationKind.ListPattern"/></description></item> 3528/// <item><description><see cref="OperationKind.SlicePattern"/></description></item> 3554/// <item><description><see cref="OperationKind.ImplicitIndexerReference"/></description></item> 3588/// <item><description><see cref="OperationKind.Utf8String"/></description></item> 3611/// <item><description><see cref="OperationKind.Attribute"/></description></item> 3679public override OperationKind Kind => OperationKind.Block; 3734public override OperationKind Kind => OperationKind.VariableDeclarationGroup; 3804public override OperationKind Kind => OperationKind.Switch; 3910public override OperationKind Kind => OperationKind.Loop; 4002public override OperationKind Kind => OperationKind.Loop; 4114public override OperationKind Kind => OperationKind.Loop; 4138public override OperationKind Kind => OperationKind.Loop; 4191public override OperationKind Kind => OperationKind.Labeled; 4211public override OperationKind Kind => OperationKind.Branch; 4225public override OperationKind Kind => OperationKind.Empty; 4231internal ReturnOperation(IOperation? returnedValue, OperationKind kind, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4277public override OperationKind Kind { get; } 4341public override OperationKind Kind => OperationKind.Lock; 4420public override OperationKind Kind => OperationKind.Try; 4488public override OperationKind Kind => OperationKind.Using; 4539public override OperationKind Kind => OperationKind.ExpressionStatement; 4603public override OperationKind Kind => OperationKind.LocalFunction; 4617public override OperationKind Kind => OperationKind.Stop; 4631public override OperationKind Kind => OperationKind.End; 4697public override OperationKind Kind => OperationKind.RaiseEvent; 4715public override OperationKind Kind => OperationKind.Literal; 4775public override OperationKind Kind => OperationKind.Conversion; 4848public override OperationKind Kind => OperationKind.Invocation; 4915public override OperationKind Kind => OperationKind.ArrayElementReference; 4937public override OperationKind Kind => OperationKind.LocalReference; 4956public override OperationKind Kind => OperationKind.ParameterReference; 5021public override OperationKind Kind => OperationKind.FieldReference; 5077public override OperationKind Kind => OperationKind.MethodReference; 5146public override OperationKind Kind => OperationKind.PropertyReference; 5200public override OperationKind Kind => OperationKind.EventReference; 5263public override OperationKind Kind => OperationKind.Unary; 5341public override OperationKind Kind => OperationKind.Binary; 5418public override OperationKind Kind => OperationKind.Conditional; 5485public override OperationKind Kind => OperationKind.Coalesce; 5538public override OperationKind Kind => OperationKind.AnonymousFunction; 5608public override OperationKind Kind => OperationKind.ObjectCreation; 5660public override OperationKind Kind => OperationKind.TypeParameterObjectCreation; 5727public override OperationKind Kind => OperationKind.ArrayCreation; 5746public override OperationKind Kind => OperationKind.InstanceReference; 5802public override OperationKind Kind => OperationKind.IsType; 5854public override OperationKind Kind => OperationKind.Await; 5927public override OperationKind Kind => OperationKind.SimpleAssignment; 6002public override OperationKind Kind => OperationKind.CompoundAssignment; 6055public override OperationKind Kind => OperationKind.Parenthesized; 6120public override OperationKind Kind => OperationKind.EventAssignment; 6183public override OperationKind Kind => OperationKind.ConditionalAccess; 6200public override OperationKind Kind => OperationKind.ConditionalAccessInstance; 6257public override OperationKind Kind => OperationKind.InterpolatedString; 6313public override OperationKind Kind => OperationKind.AnonymousObjectCreation; 6369public override OperationKind Kind => OperationKind.ObjectOrCollectionInitializer; 6432public override OperationKind Kind => OperationKind.MemberInitializer; 6485public override OperationKind Kind => OperationKind.NameOf; 6543public override OperationKind Kind => OperationKind.Tuple; 6601public override OperationKind Kind => OperationKind.DynamicMemberReference; 6653public override OperationKind Kind => OperationKind.TranslatedQuery; 6705public override OperationKind Kind => OperationKind.DelegateCreation; 6723public override OperationKind Kind => OperationKind.DefaultValue; 6742public override OperationKind Kind => OperationKind.TypeOf; 6762public override OperationKind Kind => OperationKind.SizeOf; 6814public override OperationKind Kind => OperationKind.AddressOf; 6877public override OperationKind Kind => OperationKind.IsPattern; 6883internal IncrementOrDecrementOperation(bool isPostfix, bool isLifted, bool isChecked, IOperation target, IMethodSymbol? operatorMethod, ITypeSymbol? constrainedToType, OperationKind kind, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 6940public override OperationKind Kind { get; } 6992public override OperationKind Kind => OperationKind.Throw; 7051public override OperationKind Kind => OperationKind.DeconstructionAssignment; 7103public override OperationKind Kind => OperationKind.DeclarationExpression; 7120public override OperationKind Kind => OperationKind.OmittedArgument; 7182public override OperationKind Kind => OperationKind.FieldInitializer; 7229public override OperationKind Kind => OperationKind.VariableInitializer; 7280public override OperationKind Kind => OperationKind.PropertyInitializer; 7331public override OperationKind Kind => OperationKind.ParameterInitializer; 7386public override OperationKind Kind => OperationKind.ArrayInitializer; 7454public override OperationKind Kind => OperationKind.VariableDeclarator; 7535public override OperationKind Kind => OperationKind.VariableDeclaration; 7596public override OperationKind Kind => OperationKind.Argument; 7673public override OperationKind Kind => OperationKind.CatchClause; 7747public override OperationKind Kind => OperationKind.SwitchCase; 7771public override OperationKind Kind => OperationKind.CaseClause; 7834public override OperationKind Kind => OperationKind.CaseClause; 7896public override OperationKind Kind => OperationKind.CaseClause; 7949public override OperationKind Kind => OperationKind.CaseClause; 8000public override OperationKind Kind => OperationKind.CaseClause; 8056public override OperationKind Kind => OperationKind.InterpolatedStringText; 8129public override OperationKind Kind => OperationKind.Interpolation; 8191public override OperationKind Kind => OperationKind.ConstantPattern; 8213public override OperationKind Kind => OperationKind.DeclarationPattern; 8278public override OperationKind Kind => OperationKind.TupleBinary; 8345public override OperationKind Kind => OperationKind.MethodBody; 8416public override OperationKind Kind => OperationKind.ConstructorBody; 8435public override OperationKind Kind => OperationKind.Discard; 8488public override OperationKind Kind => OperationKind.FlowCapture; 8510public override OperationKind Kind => OperationKind.FlowCaptureReference; 8563public override OperationKind Kind => OperationKind.IsNull; 8580public override OperationKind Kind => OperationKind.CaughtException; 8599public override OperationKind Kind => OperationKind.StaticLocalInitializationSemaphore; 8658public override OperationKind Kind => OperationKind.CoalesceAssignment; 8725public override OperationKind Kind => OperationKind.Range; 8782public override OperationKind Kind => OperationKind.ReDim; 8848public override OperationKind Kind => OperationKind.ReDimClause; 8924public override OperationKind Kind => OperationKind.RecursivePattern; 8938public override OperationKind Kind => OperationKind.DiscardPattern; 9007public override OperationKind Kind => OperationKind.SwitchExpression; 9082public override OperationKind Kind => OperationKind.SwitchExpressionArm; 9144public override OperationKind Kind => OperationKind.PropertySubpattern; 9207public override OperationKind Kind => OperationKind.None; 9271public override OperationKind Kind => OperationKind.None; 9323public override OperationKind Kind => OperationKind.None; 9342public override OperationKind Kind => OperationKind.None; 9404public override OperationKind Kind => OperationKind.None; 9459public override OperationKind Kind => OperationKind.UsingDeclaration; 9510public override OperationKind Kind => OperationKind.NegatedPattern; 9574public override OperationKind Kind => OperationKind.BinaryPattern; 9592public override OperationKind Kind => OperationKind.TypePattern; 9645public override OperationKind Kind => OperationKind.RelationalPattern; 9710public override OperationKind Kind => OperationKind.With; 9777public override OperationKind Kind => OperationKind.InterpolatedStringHandlerCreation; 9839public override OperationKind Kind => OperationKind.InterpolatedStringAddition; 9845internal InterpolatedStringAppendOperation(IOperation appendCall, OperationKind kind, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 9891public override OperationKind Kind { get; } 9911public override OperationKind Kind => OperationKind.InterpolatedStringHandlerArgumentPlaceholder; 9978public override OperationKind Kind => OperationKind.FunctionPointerInvocation; 10039public override OperationKind Kind => OperationKind.ListPattern; 10092public override OperationKind Kind => OperationKind.SlicePattern; 10159public override OperationKind Kind => OperationKind.ImplicitIndexerReference; 10178public override OperationKind Kind => OperationKind.Utf8String; 10229public override OperationKind Kind => OperationKind.Attribute;
Operations\ControlFlowGraph.cs (2)
40Debug.Assert(parent != null == (originalOperation.Kind == OperationKind.LocalFunction || originalOperation.Kind == OperationKind.AnonymousFunction));
Operations\ControlFlowGraphBuilder.cs (95)
96Debug.Assert(body.Kind == OperationKind.Block || 97body.Kind == OperationKind.MethodBody || 98body.Kind == OperationKind.ConstructorBody || 99body.Kind == OperationKind.FieldInitializer || 100body.Kind == OperationKind.PropertyInitializer || 101body.Kind == OperationKind.ParameterInitializer || 102body.Kind == OperationKind.Attribute, 108Debug.Assert(body.Kind == OperationKind.LocalFunction || body.Kind == OperationKind.AnonymousFunction); 126case OperationKind.LocalFunction: 130case OperationKind.AnonymousFunction: 861value.Kind != OperationKind.LocalReference || 1280|| slot.operationOpt.Kind == OperationKind.FlowCaptureReference 1281|| slot.operationOpt.Kind == OperationKind.DeclarationExpression 1282|| slot.operationOpt.Kind == OperationKind.Discard 1283|| slot.operationOpt.Kind == OperationKind.OmittedArgument)); 1613if (operation.WhenTrue is IConversionOperation whenTrueConversion && whenTrueConversion.Operand.Kind == OperationKind.Throw) 1616Debug.Assert(rewrittenThrow!.Kind == OperationKind.None); 1625else if (operation.WhenFalse is IConversionOperation whenFalseConversion && whenFalseConversion.Operand.Kind == OperationKind.Throw) 1634Debug.Assert(rewrittenThrow.Kind == OperationKind.None); 1681if (result.Kind != OperationKind.FlowCaptureReference || 1843if (operationOpt.Kind != OperationKind.FlowCaptureReference 1844&& operationOpt.Kind != OperationKind.DeclarationExpression 1845&& operationOpt.Kind != OperationKind.Discard 1846&& operationOpt.Kind != OperationKind.OmittedArgument) 2708if (condition.Kind == OperationKind.Binary) 2772case OperationKind.Binary: 2837case OperationKind.Unary: 2848case OperationKind.Conditional: 2873case OperationKind.Coalesce: 2905case OperationKind.Conversion: 2908if (conversion.Operand.Kind == OperationKind.Throw) 2912Debug.Assert(rewrittenThrow.Kind == OperationKind.None); 2935while (condition.Kind == OperationKind.Parenthesized) 3028bool alternativeThrows = conversion?.Operand.Kind == OperationKind.Throw; 3054Debug.Assert(rewrittenThrow.Kind == OperationKind.None); 3087bool isStatement = _currentStatement == operation || operation.Parent.Kind == OperationKind.ExpressionStatement; 3350bool isOnStatementLevel = _currentStatement == operation || (_currentStatement == operation.Parent && _currentStatement?.Kind == OperationKind.ExpressionStatement); 3545Debug.Assert(operation.Operation.Kind == OperationKind.ConditionalAccess || operation.Operation.Kind == OperationKind.CoalesceAssignment); 3548else if (operation.Operation.Kind == OperationKind.Throw) 3774if (exceptionDeclarationOrExpression.Kind == OperationKind.VariableDeclarator) 3817case OperationKind.YieldReturn: 3818AddStatement(new ReturnOperation(returnedValue, OperationKind.YieldReturn, semanticModel: null, operation.Syntax, IsImplicit(operation))); 3821case OperationKind.YieldBreak: 3822case OperationKind.Return: 3965Debug.Assert(resources.Kind != OperationKind.VariableDeclaration); 3966Debug.Assert(resources.Kind != OperationKind.VariableDeclarator); 4383if (!operation.Locals.IsEmpty && operation.LoopControlVariable.Kind == OperationKind.VariableDeclarator) 4561case OperationKind.VariableDeclarator: 4581case OperationKind.Tuple: 4582case OperationKind.DeclarationExpression: 5258Debug.Assert(controlVariableReferenceForAssignment.Kind == OperationKind.FlowCaptureReference); 5330case OperationKind.VariableDeclarator: 5642if (initialization.Length == 1 && initialization[0].Kind == OperationKind.VariableDeclarationGroup) 5952case OperationKind.MemberInitializer: 5956case OperationKind.SimpleAssignment: 5966var validKinds = ImmutableArray.Create(OperationKind.Invocation, OperationKind.DynamicInvocation, OperationKind.Increment, OperationKind.Literal, 5967OperationKind.LocalReference, OperationKind.Binary, OperationKind.FieldReference, OperationKind.Invalid); 6056case OperationKind.FieldReference: 6057case OperationKind.EventReference: 6058case OperationKind.PropertyReference: 6061if (memberReference.Kind == OperationKind.PropertyReference) 6080case OperationKind.ArrayElementReference: 6087case OperationKind.DynamicIndexerAccess: 6094case OperationKind.DynamicMemberReference: 6107Debug.Assert(instance.Kind == OperationKind.Invalid || instance.Kind == OperationKind.None); 6117case OperationKind.FieldReference: 6122case OperationKind.EventReference: 6127case OperationKind.PropertyReference: 6133case OperationKind.ArrayElementReference: 6138case OperationKind.DynamicIndexerAccess: 6144case OperationKind.DynamicMemberReference: 6196Debug.Assert(propertyReference.Instance.Kind == OperationKind.InstanceReference); 6307if (elementValue.Kind == OperationKind.ArrayInitializer) 6326if (elementValue.Kind == OperationKind.ArrayInitializer) 6374if (operation.Operation.Kind == OperationKind.DynamicMemberReference) 6390if (operation.Operation.Kind == OperationKind.DynamicMemberReference) 6435if (value.Kind == OperationKind.Tuple) 6455if (value.Kind == OperationKind.Tuple) 6795if (element.Kind == OperationKind.Interpolation) 7093case OperationKind.EventReference: 7096case OperationKind.Parenthesized: 7210if (children.Count != 0 && children.Last().Kind == OperationKind.ObjectOrCollectionInitializer) 7557if (statement.Kind == OperationKind.LocalFunction) 7721if (simpleAssignment.Target.Kind != OperationKind.PropertyReference) 7733Debug.Assert(propertyReference.Instance.Kind == OperationKind.InstanceReference); 7814if (simpleAssignment.Target.Kind != OperationKind.PropertyReference)
Operations\IOperation.cs (1)
30OperationKind Kind { get; }
Operations\Operation.cs (1)
66public abstract OperationKind Kind { get; }
Operations\OperationNodes.cs (14)
66public override OperationKind Kind => OperationKind.None; 137public override OperationKind Kind => OperationKind.Invalid; 168public override OperationKind Kind => OperationKind.FlowAnonymousFunction; 260public override OperationKind Kind => OperationKind.DynamicObjectCreation; 402public override OperationKind Kind => OperationKind.DynamicInvocation; 424public override OperationKind Kind => OperationKind.DynamicIndexerAccess; 699Debug.Assert(statements.All(s => s.Parent != this && s.Parent!.Kind is OperationKind.Block or OperationKind.SwitchCase));
Microsoft.CodeAnalysis.CodeStyle (91)
AbstractConvertTypeOfToNameOfDiagnosticAnalyzer.cs (1)
28context.RegisterOperationAction(AnalyzeAction, OperationKind.TypeOf);
AbstractMakeFieldReadonlyDiagnosticAnalyzer.cs (2)
66context.RegisterOperationAction(AnalyzeOperation, OperationKind.FieldReference); 247if (fieldReference.Instance?.Kind != OperationKind.InstanceReference ||
AbstractPopulateSwitchDiagnosticAnalyzer.cs (1)
33protected abstract OperationKind OperationKind { get; }
AbstractPopulateSwitchExpressionDiagnosticAnalyzer.cs (2)
21protected sealed override OperationKind OperationKind => OperationKind.SwitchExpression;
AbstractPopulateSwitchStatementDiagnosticAnalyzer.cs (2)
21protected sealed override OperationKind OperationKind => OperationKind.Switch;
AbstractQualifyMemberAccessDiagnosticAnalyzer.cs (6)
56=> context.RegisterOperationAction(AnalyzeOperation, OperationKind.FieldReference, OperationKind.PropertyReference, OperationKind.MethodReference, OperationKind.Invocation); 90if (instanceOperation.Kind != OperationKind.InstanceReference) 94if (context.Operation.Parent?.Kind == OperationKind.PropertySubpattern)
AbstractRemoveRedundantEqualityDiagnosticAnalyzer.cs (2)
31=> context.RegisterOperationAction(AnalyzeBinaryOperator, OperationKind.BinaryOperator); 93if (operand.ConstantValue.HasValue && operand.Kind == OperationKind.Literal &&
AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (14)
182symbolStartContext.RegisterOperationAction(AnalyzeMemberReferenceOperation, OperationKind.FieldReference, OperationKind.MethodReference, OperationKind.PropertyReference, OperationKind.EventReference); 183symbolStartContext.RegisterOperationAction(AnalyzeFieldInitializer, OperationKind.FieldInitializer); 184symbolStartContext.RegisterOperationAction(AnalyzeInvocationOperation, OperationKind.Invocation); 185symbolStartContext.RegisterOperationAction(AnalyzeNameOfOperation, OperationKind.NameOf); 186symbolStartContext.RegisterOperationAction(AnalyzeObjectCreationOperation, OperationKind.ObjectCreation); 194symbolStartContext.RegisterOperationAction(_ => hasUnsupportedOperation = true, OperationKind.Invalid, OperationKind.None, 195OperationKind.DynamicIndexerAccess, OperationKind.DynamicInvocation, OperationKind.DynamicMemberReference, OperationKind.DynamicObjectCreation);
AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (24)
94context.RegisterOperationAction(blockAnalyzer.AnalyzeExpressionStatement, OperationKind.ExpressionStatement); 95context.RegisterOperationAction(blockAnalyzer.AnalyzeDelegateCreationOrAnonymousFunction, OperationKind.DelegateCreation, OperationKind.AnonymousFunction); 96context.RegisterOperationAction(blockAnalyzer.AnalyzeLocalOrParameterReference, OperationKind.LocalReference, OperationKind.ParameterReference); 97context.RegisterOperationAction(_ => blockAnalyzer._hasInvalidOperation = true, OperationKind.Invalid); 225Debug.Assert(operation.Kind is OperationKind.DelegateCreation or OperationKind.AnonymousFunction); 241(assignment.Target.Kind == OperationKind.LocalReference || 242assignment.Target.Kind == OperationKind.ParameterReference)) 250if (operation.Kind == OperationKind.AnonymousFunction && 274Debug.Assert(operation.Kind is OperationKind.LocalReference or OperationKind.ParameterReference); 308(assignmentOperation.Target.Kind == OperationKind.LocalReference || 309assignmentOperation.Target.Kind == OperationKind.ParameterReference)) 336case OperationKind.Attribute: 337case OperationKind.ParameterInitializer: 356if (operation.Kind == OperationKind.None) 629case OperationKind.ParameterReference: 630case OperationKind.LocalReference: 634case OperationKind.FieldReference: 638return fieldReference.Instance == null || fieldReference.Instance.Kind == OperationKind.InstanceReference; 640case OperationKind.DefaultValue: 644case OperationKind.Conversion:
AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.cs (1)
110context.RegisterOperationAction(OnMethodReference, OperationKind.MethodReference);
AbstractSimplifyInterpolationDiagnosticAnalyzer.cs (1)
40=> context.RegisterOperationAction(AnalyzeInterpolation, OperationKind.Interpolation);
AbstractSimplifyInterpolationHelpers.cs (1)
212: alignmentOp is { Kind: OperationKind.Literal })
AbstractSimplifyLinqExpressionDiagnosticAnalyzer.cs (1)
68OperationKind.Invocation);
AbstractUseConditionalExpressionDiagnosticAnalyzer.cs (1)
39=> context.RegisterOperationAction(AnalyzeOperation, OperationKind.Conditional);
AbstractUseThrowExpressionDiagnosticAnalyzer.cs (1)
65startContext.RegisterOperationAction(operationContext => AnalyzeOperation(operationContext, expressionTypeOpt), OperationKind.Throw);
ControlFlowGraphExtensions.cs (1)
30public static IEnumerable<T> DescendantOperations<T>(this ControlFlowGraph cfg, OperationKind operationKind)
LValueFlowCaptureProvider.cs (1)
54foreach (var flowCaptureReference in cfg.DescendantOperations<IFlowCaptureReferenceOperation>(OperationKind.FlowCaptureReference))
OperationExtensions.cs (9)
21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 237case OperationKind.AnonymousFunction: 240case OperationKind.LocalFunction: 261case OperationKind.DeconstructionAssignment: 265case OperationKind.Tuple: 266case OperationKind.Conversion: 267case OperationKind.Parenthesized: 365public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, OperationKind kind) 369=> operation.Kind == OperationKind.Literal && operation.Type.IsNumericType();
SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (2)
192if (operation.Kind is OperationKind.LocalFunction or OperationKind.AnonymousFunction)
SymbolUsageAnalysis.Walker.cs (15)
154operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 162Debug.Assert(symbolOpt != null || operation.Kind == OperationKind.FlowCaptureReference); 192operation.Parent?.Kind != OperationKind.ExpressionStatement; 196if (write.Kind != OperationKind.FlowCaptureReference) 411case OperationKind.Conversion: 415case OperationKind.Parenthesized: 419case OperationKind.DelegateCreation: 423case OperationKind.AnonymousFunction: 429case OperationKind.FlowAnonymousFunction: 433case OperationKind.MethodReference: 446case OperationKind.LocalReference: 451case OperationKind.ParameterReference: 456case OperationKind.Literal: 526case OperationKind.FlowAnonymousFunction: 530case OperationKind.MethodReference:
UseConditionalExpressionForReturnHelpers.cs (2)
96if (trueReturn?.Kind == OperationKind.YieldBreak) 103if (trueReturn?.Kind == OperationKind.YieldReturn &&
UseExplicitTupleNameDiagnosticAnalyzer.cs (1)
31=> context.RegisterOperationAction(AnalyzeOperation, OperationKind.FieldReference);
Microsoft.CodeAnalysis.CodeStyle.Fixes (3)
AbstractUseConditionalExpressionForReturnCodeFixProvider.cs (1)
76var returnStatement = anyReturn.Kind == OperationKind.YieldReturn
SyntaxGeneratorExtensions_Negate.cs (2)
451if (operation?.Kind == OperationKind.Literal && operation.ConstantValue.HasValue && operation.ConstantValue.Value is true) 455else if (operation?.Kind == OperationKind.Literal && operation.ConstantValue.HasValue && operation.ConstantValue.Value is false)
Microsoft.CodeAnalysis.CSharp (10)
Operations\CSharpOperationFactory.cs (10)
1320OperationKind operationKind = Helper.IsDecrement(boundIncrementOperator.OperatorKind) ? OperationKind.Decrement : OperationKind.Increment; 1705return new ReturnOperation(returnedValue, OperationKind.YieldBreak, _semanticModel, syntax, isImplicit); 1950return new ReturnOperation(returnedValue, OperationKind.Return, _semanticModel, syntax, isImplicit); 1958return new ReturnOperation(returnedValue, OperationKind.YieldReturn, _semanticModel, syntax, isImplicit); 2339var operationKind = methodName switch 2341"" => OperationKind.InterpolatedStringAppendInvalid, 2342BoundInterpolatedString.AppendLiteralMethod => OperationKind.InterpolatedStringAppendLiteral, 2343BoundInterpolatedString.AppendFormattedMethod => OperationKind.InterpolatedStringAppendFormatted,
Microsoft.CodeAnalysis.CSharp.CodeStyle (10)
CastSimplifier.cs (2)
90Kind: OperationKind.MethodReference, 91Parent.Kind: OperationKind.DelegateCreation,
CSharpMakeStructFieldsWritableDiagnosticAnalyzer.cs (1)
87context.RegisterOperationAction(AnalyzeAssignment, OperationKind.SimpleAssignment);
CSharpUseIndexOperatorDiagnosticAnalyzer.cs (3)
77OperationKind.PropertyReference); 82OperationKind.Invocation); 93OperationKind.ArrayElementReference);
CSharpUseNullCheckOverTypeCheckDiagnosticAnalyzer.cs (2)
40context.RegisterOperationAction(c => AnalyzeIsTypeOperation(c, expressionType), OperationKind.IsType); 41context.RegisterOperationAction(c => AnalyzeNegatedPatternOperation(c), OperationKind.NegatedPattern);
CSharpUseRangeOperatorDiagnosticAnalyzer.cs (1)
72OperationKind.Invocation);
UseUtf8StringLiteralDiagnosticAnalyzer.cs (1)
57context.RegisterOperationAction(c => AnalyzeOperation(c, expressionType), OperationKind.ArrayCreation);
Microsoft.CodeAnalysis.CSharp.EditorFeatures.UnitTests (2)
Diagnostics\Suppression\RemoveUnnecessaryPragmaSuppressionsTests.cs (2)
78}, OperationKind.VariableDeclarator); 93}, OperationKind.LocalReference);
Microsoft.CodeAnalysis.CSharp.Emit.UnitTests (2)
CodeGen\CodeGenLocalFunctionTests.cs (2)
161Assert.Equal(OperationKind.ExpressionStatement, objectCreationOperation.Parent.Kind); 162Assert.Equal(OperationKind.Block, objectCreationOperation.Parent.Parent.Kind);
Microsoft.CodeAnalysis.CSharp.Emit2.UnitTests (16)
Diagnostics\DiagnosticAnalyzerTests.cs (12)
2244var operationKinds = ImmutableArray.Create(OperationKind.VariableDeclarator); 2280private readonly ImmutableArray<OperationKind> _operationKinds; 2298public GeneratedCodeSyntaxAndOperationAnalyzer(GeneratedCodeAnalysisFlags? generatedCodeAnalysisFlagsOpt, ImmutableArray<SyntaxKind> syntaxKinds, ImmutableArray<OperationKind> operationKinds) 3032TestSymbolStartAnalyzerCore(new SymbolStartAnalyzer(topLevelAction: false, SymbolKind.Namespace, OperationKind.VariableDeclarationGroup), 3044TestSymbolStartAnalyzerCore(new SymbolStartAnalyzer(topLevelAction: false, SymbolKind.NamedType, OperationKind.VariableDeclarationGroup), 3061TestSymbolStartAnalyzerCore(new SymbolStartAnalyzer(topLevelAction: true, SymbolKind.Method, OperationKind.VariableDeclarationGroup), 3088analyzers[i] = new SymbolStartAnalyzer(topLevelAction: false, symbolKinds[i], OperationKind.VariableDeclarationGroup, analyzerId: i + 1); 3148analyzers[i] = new SymbolStartAnalyzer(topLevelAction: false, symbolKinds[i], OperationKind.VariableDeclarationGroup, analyzerId: i + 1); 3190var analyzers = new DiagnosticAnalyzer[] { new SymbolStartAnalyzer(topLevelAction: false, SymbolKind.NamedType, OperationKind.Invocation) }; 3222var analyzers = new DiagnosticAnalyzer[] { new SymbolStartAnalyzer(topLevelAction: true, SymbolKind.NamedType, OperationKind.FieldReference) }; 3772OperationKind.Invocation); 3778OperationKind.Binary);
Diagnostics\GetDiagnosticsTests.cs (4)
654var analyzers = ImmutableArray.Create<DiagnosticAnalyzer>(new SymbolStartAnalyzer(topLevelAction: false, SymbolKind.NamedType, OperationKind.VariableDeclaration)); 923OperationKind.Literal); 1257AssertEx.All(analyzer.AnalyzedOperations, operation => operation.Kind == OperationKind.VariableDeclaration); 1261AssertEx.All(analyzer.AnalyzedOperationsInsideOperationBlock, operation => operation.Kind == OperationKind.VariableDeclaration);
Microsoft.CodeAnalysis.CSharp.Features (10)
ConvertLinq\CSharpConvertLinqQueryToForEachProvider.cs (2)
924return operation.Kind is OperationKind.LocalReference or OperationKind.ParameterReference;
CSharpMakeStructFieldsWritableDiagnosticAnalyzer.cs (1)
87context.RegisterOperationAction(AnalyzeAssignment, OperationKind.SimpleAssignment);
CSharpUseIndexOperatorDiagnosticAnalyzer.cs (3)
77OperationKind.PropertyReference); 82OperationKind.Invocation); 93OperationKind.ArrayElementReference);
CSharpUseNullCheckOverTypeCheckDiagnosticAnalyzer.cs (2)
40context.RegisterOperationAction(c => AnalyzeIsTypeOperation(c, expressionType), OperationKind.IsType); 41context.RegisterOperationAction(c => AnalyzeNegatedPatternOperation(c), OperationKind.NegatedPattern);
CSharpUseRangeOperatorDiagnosticAnalyzer.cs (1)
72OperationKind.Invocation);
UseUtf8StringLiteralDiagnosticAnalyzer.cs (1)
57context.RegisterOperationAction(c => AnalyzeOperation(c, expressionType), OperationKind.ArrayCreation);
Microsoft.CodeAnalysis.CSharp.IOperation.UnitTests (18)
IOperation\IOperationTests.cs (8)
467Assert.Equal(OperationKind.DeconstructionAssignment, operation1.Kind); 473Assert.Equal(OperationKind.DeconstructionAssignment, operation2.Kind); 479Assert.Equal(OperationKind.DeconstructionAssignment, operation3.Kind); 513Assert.Equal(OperationKind.ExpressionStatement, operation.Kind); 562Assert.Equal(OperationKind.FieldReference, operation.Kind); 592VerifyRootAndModelForOperationAncestors(operation, model, expectedRootOperationKind: OperationKind.MethodBody, expectedRootSyntax: methodDeclSyntax); 627VerifyRootAndModelForOperationAncestors(operation, speculativeModel, expectedRootOperationKind: OperationKind.Block, expectedRootSyntax: speculatedBlock); 678OperationKind expectedRootOperationKind,
IOperation\IOperationTests_IConversionExpression.cs (2)
183Assert.Equal(OperationKind.Invalid, initializerOperation.Kind); 5246if (operation.Kind == OperationKind.Conversion)
IOperation\IOperationTests_IVariableDeclaration.cs (8)
614Assert.Equal(OperationKind.Literal, declarator.ChildOperations.First().Kind); 615Assert.Equal(OperationKind.VariableInitializer, declarator.ChildOperations.ElementAt(1).Kind); 636Assert.Equal(OperationKind.Literal, declarator.ChildOperations.First().Kind); 657Assert.Equal(OperationKind.VariableInitializer, declarator.ChildOperations.ElementAt(0).Kind); 852Assert.Equal(OperationKind.Literal, declaration.ChildOperations.First().Kind); 853Assert.Equal(OperationKind.VariableDeclarator, declaration.ChildOperations.ElementAt(1).Kind); 874Assert.Equal(OperationKind.Literal, declaration.ChildOperations.First().Kind); 875Assert.Equal(OperationKind.VariableDeclarator, declaration.ChildOperations.ElementAt(1).Kind);
Microsoft.CodeAnalysis.CSharp.Semantic.UnitTests (107)
Semantics\OutVarTests.cs (3)
35940Assert.Equal(OperationKind.ExpressionStatement, initializerOperation.Parent.Kind); 35963Assert.Equal(OperationKind.ConstructorBody, blockBodyOperation.Parent.Kind); 36084Assert.Equal(OperationKind.MethodBody, expressionBodyOperation.Parent.Kind);
Semantics\PrimaryConstructorTests.cs (50)
3732context.RegisterOperationAction(Handle1, OperationKind.ConstructorBody); 3733context.RegisterOperationAction(Handle2, OperationKind.Invocation); 3734context.RegisterOperationAction(Handle3, OperationKind.Literal); 3735context.RegisterOperationAction(Handle4, OperationKind.ParameterInitializer); 3736context.RegisterOperationAction(Handle5, OperationKind.PropertyInitializer); 3737context.RegisterOperationAction(Handle5, OperationKind.FieldInitializer); 3933Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 3936Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 3944Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 3947Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 3950Assert.Equal(OperationKind.Invocation, context.OperationBlocks[2].Kind); 3958Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 3961Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 3964Assert.Equal(OperationKind.Block, context.OperationBlocks[2].Kind); 3966Assert.Equal(OperationKind.Invocation, context.OperationBlocks[3].Kind); 3973Assert.Equal(OperationKind.Block, context.OperationBlocks[0].Kind); 4067Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 4070Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 4080Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 4083Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 4086Assert.Equal(OperationKind.Invocation, context.OperationBlocks[2].Kind); 4096Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 4099Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 4102Assert.Equal(OperationKind.Block, context.OperationBlocks[2].Kind); 4104Assert.Equal(OperationKind.Invocation, context.OperationBlocks[3].Kind); 4113Assert.Equal(OperationKind.Block, context.OperationBlocks[0].Kind); 4125context.RegisterOperationAction(Handle1, OperationKind.ConstructorBody); 4126context.RegisterOperationAction(Handle2, OperationKind.Invocation); 4127context.RegisterOperationAction(Handle3, OperationKind.Literal); 4128context.RegisterOperationAction(Handle4, OperationKind.ParameterInitializer); 4129context.RegisterOperationAction(Handle5, OperationKind.PropertyInitializer); 4130context.RegisterOperationAction(Handle5, OperationKind.FieldInitializer); 4141Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 4144Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 4152Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 4155Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 4158Assert.Equal(OperationKind.Invocation, context.OperationBlocks[2].Kind); 4166Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 4169Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 4172Assert.Equal(OperationKind.Block, context.OperationBlocks[2].Kind); 4174Assert.Equal(OperationKind.Invocation, context.OperationBlocks[3].Kind); 4181Assert.Equal(OperationKind.Block, context.OperationBlocks[0].Kind); 5101context.RegisterOperationAction(HandleConstructorBody, OperationKind.ConstructorBody); 5102context.RegisterOperationAction(HandleInvocation, OperationKind.Invocation); 5103context.RegisterOperationAction(HandleLiteral, OperationKind.Literal); 5104context.RegisterOperationAction(HandleParameterInitializer, OperationKind.ParameterInitializer); 5105context.RegisterOperationAction(Fail, OperationKind.PropertyInitializer); 5106context.RegisterOperationAction(Fail, OperationKind.FieldInitializer); 5209Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 5212Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind);
Semantics\RecordStructTests.cs (8)
6378context.RegisterOperationAction(HandleConstructorBody, OperationKind.ConstructorBody); 6379context.RegisterOperationAction(HandleInvocation, OperationKind.Invocation); 6380context.RegisterOperationAction(HandleLiteral, OperationKind.Literal); 6381context.RegisterOperationAction(HandleParameterInitializer, OperationKind.ParameterInitializer); 6382context.RegisterOperationAction(Fail, OperationKind.PropertyInitializer); 6383context.RegisterOperationAction(Fail, OperationKind.FieldInitializer); 6486Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 6489Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind);
Semantics\RecordTests.cs (42)
26793context.RegisterOperationAction(Handle1, OperationKind.ConstructorBody); 26794context.RegisterOperationAction(Handle2, OperationKind.Invocation); 26795context.RegisterOperationAction(Handle3, OperationKind.Literal); 26796context.RegisterOperationAction(Handle4, OperationKind.ParameterInitializer); 26797context.RegisterOperationAction(Handle5, OperationKind.PropertyInitializer); 26798context.RegisterOperationAction(Handle5, OperationKind.FieldInitializer); 26994Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 26997Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 27005Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 27008Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 27011Assert.Equal(OperationKind.Invocation, context.OperationBlocks[2].Kind); 27019Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 27022Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 27025Assert.Equal(OperationKind.Block, context.OperationBlocks[2].Kind); 27027Assert.Equal(OperationKind.Invocation, context.OperationBlocks[3].Kind); 27034Assert.Equal(OperationKind.Block, context.OperationBlocks[0].Kind); 27128Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 27131Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 27141Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 27144Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 27147Assert.Equal(OperationKind.Invocation, context.OperationBlocks[2].Kind); 27157Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 27160Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 27163Assert.Equal(OperationKind.Block, context.OperationBlocks[2].Kind); 27165Assert.Equal(OperationKind.Invocation, context.OperationBlocks[3].Kind); 27174Assert.Equal(OperationKind.Block, context.OperationBlocks[0].Kind); 27186context.RegisterOperationAction(Handle1, OperationKind.ConstructorBody); 27187context.RegisterOperationAction(Handle2, OperationKind.Invocation); 27188context.RegisterOperationAction(Handle3, OperationKind.Literal); 27189context.RegisterOperationAction(Handle4, OperationKind.ParameterInitializer); 27190context.RegisterOperationAction(Handle5, OperationKind.PropertyInitializer); 27191context.RegisterOperationAction(Handle5, OperationKind.FieldInitializer); 27202Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 27205Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 27213Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 27216Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 27219Assert.Equal(OperationKind.Invocation, context.OperationBlocks[2].Kind); 27227Assert.Equal(OperationKind.ParameterInitializer, context.OperationBlocks[0].Kind); 27230Assert.Equal(OperationKind.Attribute, context.OperationBlocks[1].Kind); 27233Assert.Equal(OperationKind.Block, context.OperationBlocks[2].Kind); 27235Assert.Equal(OperationKind.Invocation, context.OperationBlocks[3].Kind); 27242Assert.Equal(OperationKind.Block, context.OperationBlocks[0].Kind);
Semantics\TopLevelStatementsTests.cs (4)
6702context.RegisterOperationAction(Handle1, OperationKind.Invocation); 6703context.RegisterOperationAction(Handle2, OperationKind.Block); 7402context.RegisterOperationAction(Handle2, OperationKind.Block); 9669Assert.Equal(OperationKind.Literal, model.GetOperation(tree.GetRoot().DescendantNodes().OfType<LiteralExpressionSyntax>().Single()).Kind);
Microsoft.CodeAnalysis.CSharp.Workspaces (2)
CastSimplifier.cs (2)
90Kind: OperationKind.MethodReference, 91Parent.Kind: OperationKind.DelegateCreation,
Microsoft.CodeAnalysis.EditorFeatures2.UnitTests (1)
Diagnostics\DiagnosticServiceTests.vb (1)
2519End Sub, OperationKind.VariableDeclaration)
Microsoft.CodeAnalysis.Features (78)
AbstractConvertTypeOfToNameOfDiagnosticAnalyzer.cs (1)
28context.RegisterOperationAction(AnalyzeAction, OperationKind.TypeOf);
AbstractMakeFieldReadonlyDiagnosticAnalyzer.cs (2)
66context.RegisterOperationAction(AnalyzeOperation, OperationKind.FieldReference); 247if (fieldReference.Instance?.Kind != OperationKind.InstanceReference ||
AbstractPopulateSwitchDiagnosticAnalyzer.cs (1)
33protected abstract OperationKind OperationKind { get; }
AbstractPopulateSwitchExpressionDiagnosticAnalyzer.cs (2)
21protected sealed override OperationKind OperationKind => OperationKind.SwitchExpression;
AbstractPopulateSwitchStatementDiagnosticAnalyzer.cs (2)
21protected sealed override OperationKind OperationKind => OperationKind.Switch;
AbstractQualifyMemberAccessDiagnosticAnalyzer.cs (6)
56=> context.RegisterOperationAction(AnalyzeOperation, OperationKind.FieldReference, OperationKind.PropertyReference, OperationKind.MethodReference, OperationKind.Invocation); 90if (instanceOperation.Kind != OperationKind.InstanceReference) 94if (context.Operation.Parent?.Kind == OperationKind.PropertySubpattern)
AbstractRemoveRedundantEqualityDiagnosticAnalyzer.cs (2)
31=> context.RegisterOperationAction(AnalyzeBinaryOperator, OperationKind.BinaryOperator); 93if (operand.ConstantValue.HasValue && operand.Kind == OperationKind.Literal &&
AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (14)
182symbolStartContext.RegisterOperationAction(AnalyzeMemberReferenceOperation, OperationKind.FieldReference, OperationKind.MethodReference, OperationKind.PropertyReference, OperationKind.EventReference); 183symbolStartContext.RegisterOperationAction(AnalyzeFieldInitializer, OperationKind.FieldInitializer); 184symbolStartContext.RegisterOperationAction(AnalyzeInvocationOperation, OperationKind.Invocation); 185symbolStartContext.RegisterOperationAction(AnalyzeNameOfOperation, OperationKind.NameOf); 186symbolStartContext.RegisterOperationAction(AnalyzeObjectCreationOperation, OperationKind.ObjectCreation); 194symbolStartContext.RegisterOperationAction(_ => hasUnsupportedOperation = true, OperationKind.Invalid, OperationKind.None, 195OperationKind.DynamicIndexerAccess, OperationKind.DynamicInvocation, OperationKind.DynamicMemberReference, OperationKind.DynamicObjectCreation);
AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (24)
94context.RegisterOperationAction(blockAnalyzer.AnalyzeExpressionStatement, OperationKind.ExpressionStatement); 95context.RegisterOperationAction(blockAnalyzer.AnalyzeDelegateCreationOrAnonymousFunction, OperationKind.DelegateCreation, OperationKind.AnonymousFunction); 96context.RegisterOperationAction(blockAnalyzer.AnalyzeLocalOrParameterReference, OperationKind.LocalReference, OperationKind.ParameterReference); 97context.RegisterOperationAction(_ => blockAnalyzer._hasInvalidOperation = true, OperationKind.Invalid); 225Debug.Assert(operation.Kind is OperationKind.DelegateCreation or OperationKind.AnonymousFunction); 241(assignment.Target.Kind == OperationKind.LocalReference || 242assignment.Target.Kind == OperationKind.ParameterReference)) 250if (operation.Kind == OperationKind.AnonymousFunction && 274Debug.Assert(operation.Kind is OperationKind.LocalReference or OperationKind.ParameterReference); 308(assignmentOperation.Target.Kind == OperationKind.LocalReference || 309assignmentOperation.Target.Kind == OperationKind.ParameterReference)) 336case OperationKind.Attribute: 337case OperationKind.ParameterInitializer: 356if (operation.Kind == OperationKind.None) 629case OperationKind.ParameterReference: 630case OperationKind.LocalReference: 634case OperationKind.FieldReference: 638return fieldReference.Instance == null || fieldReference.Instance.Kind == OperationKind.InstanceReference; 640case OperationKind.DefaultValue: 644case OperationKind.Conversion:
AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.cs (1)
110context.RegisterOperationAction(OnMethodReference, OperationKind.MethodReference);
AbstractSimplifyInterpolationDiagnosticAnalyzer.cs (1)
40=> context.RegisterOperationAction(AnalyzeInterpolation, OperationKind.Interpolation);
AbstractSimplifyInterpolationHelpers.cs (1)
212: alignmentOp is { Kind: OperationKind.Literal })
AbstractSimplifyLinqExpressionDiagnosticAnalyzer.cs (1)
68OperationKind.Invocation);
AbstractUseConditionalExpressionDiagnosticAnalyzer.cs (1)
39=> context.RegisterOperationAction(AnalyzeOperation, OperationKind.Conditional);
AbstractUseConditionalExpressionForReturnCodeFixProvider.cs (1)
76var returnStatement = anyReturn.Kind == OperationKind.YieldReturn
AbstractUseThrowExpressionDiagnosticAnalyzer.cs (1)
65startContext.RegisterOperationAction(operationContext => AnalyzeOperation(operationContext, expressionTypeOpt), OperationKind.Throw);
ConvertForEachToFor\AbstractConvertForEachToForCodeRefactoringProvider.cs (5)
376case OperationKind.LocalReference: 377case OperationKind.FieldReference: 378case OperationKind.ParameterReference: 379case OperationKind.PropertyReference: 380case OperationKind.ArrayElementReference:
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.cs (2)
131if (!sections.Any(static section => GetSwitchArmKind(section.Body) == OperationKind.Return)) 139static OperationKind GetSwitchArmKind(IOperation op)
InitializeParameter\AbstractInitializeParameterCodeRefactoringProvider.cs (2)
174case OperationKind.AnonymousFunction: 177case OperationKind.Block:
InlineMethod\AbstractInlineMethodRefactoringProvider.InlineContext.cs (2)
428if (operation.Kind is OperationKind.AnonymousFunction or OperationKind.LocalFunction)
IntroduceParameter\AbstractIntroduceParameterCodeRefactoringProvider.cs (1)
220containsClassSpecificStatement = operation.Descendants().Any(op => op.Kind == OperationKind.InstanceReference);
IntroduceUsingStatement\AbstractIntroduceUsingStatementCodeRefactoringProvider.cs (1)
91if (initializer is null || initializer.Kind == OperationKind.Invalid)
IntroduceVariable\AbstractIntroduceVariableService.cs (1)
373memberReferenceOperation.Instance?.Kind == OperationKind.InstanceReference;
UseConditionalExpressionForReturnHelpers.cs (2)
96if (trueReturn?.Kind == OperationKind.YieldBreak) 103if (trueReturn?.Kind == OperationKind.YieldReturn &&
UseExplicitTupleNameDiagnosticAnalyzer.cs (1)
31=> context.RegisterOperationAction(AnalyzeOperation, OperationKind.FieldReference);
Microsoft.CodeAnalysis.Test.Utilities (424)
Compilation\ControlFlowGraphVerifier.cs (123)
33operationRoot = operationRoot.Kind == OperationKind.Block && 34(operationRoot.Parent?.Kind == OperationKind.ConstructorBody || 35operationRoot.Parent?.Kind == OperationKind.MethodBody) ? 738query.Operation.Kind == OperationKind.AnonymousObjectCreation) 1080if (operation.Parent == null && operation is IsNullOperation isNull && isNull.Operand.Kind == OperationKind.FlowCaptureReference) 1549Assert.Equal(OperationKind.LocalFunction, g.OriginalOperation.Kind); 1851Assert.Equal(OperationKind.AnonymousFunction, g.OriginalOperation.Kind); 1862case OperationKind.Block: 1863case OperationKind.Switch: 1864case OperationKind.Loop: 1865case OperationKind.Branch: 1866case OperationKind.Lock: 1867case OperationKind.Try: 1868case OperationKind.Using: 1869case OperationKind.Conditional: 1870case OperationKind.Coalesce: 1871case OperationKind.ConditionalAccess: 1872case OperationKind.ConditionalAccessInstance: 1873case OperationKind.MemberInitializer: 1874case OperationKind.FieldInitializer: 1875case OperationKind.PropertyInitializer: 1876case OperationKind.ParameterInitializer: 1877case OperationKind.CatchClause: 1878case OperationKind.SwitchCase: 1879case OperationKind.CaseClause: 1880case OperationKind.VariableDeclarationGroup: 1881case OperationKind.VariableDeclaration: 1882case OperationKind.VariableDeclarator: 1883case OperationKind.VariableInitializer: 1884case OperationKind.Return: 1885case OperationKind.YieldBreak: 1886case OperationKind.Labeled: 1887case OperationKind.Throw: 1888case OperationKind.End: 1889case OperationKind.Empty: 1890case OperationKind.NameOf: 1891case OperationKind.AnonymousFunction: 1892case OperationKind.ObjectOrCollectionInitializer: 1893case OperationKind.LocalFunction: 1894case OperationKind.CoalesceAssignment: 1895case OperationKind.SwitchExpression: 1896case OperationKind.SwitchExpressionArm: 1899case OperationKind.Binary: 1908case OperationKind.InstanceReference: 1922simpleAssignment.Parent.Kind == OperationKind.AnonymousObjectCreation); 1924case OperationKind.None: 1927case OperationKind.FunctionPointerInvocation: 1928case OperationKind.Invalid: 1929case OperationKind.YieldReturn: 1930case OperationKind.ExpressionStatement: 1931case OperationKind.Stop: 1932case OperationKind.RaiseEvent: 1933case OperationKind.Literal: 1934case OperationKind.Utf8String: 1935case OperationKind.Conversion: 1936case OperationKind.Invocation: 1937case OperationKind.ArrayElementReference: 1938case OperationKind.LocalReference: 1939case OperationKind.ParameterReference: 1940case OperationKind.FieldReference: 1941case OperationKind.MethodReference: 1942case OperationKind.PropertyReference: 1943case OperationKind.EventReference: 1944case OperationKind.FlowAnonymousFunction: 1945case OperationKind.ObjectCreation: 1946case OperationKind.TypeParameterObjectCreation: 1947case OperationKind.ArrayCreation: 1948case OperationKind.ArrayInitializer: 1949case OperationKind.IsType: 1950case OperationKind.Await: 1951case OperationKind.SimpleAssignment: 1952case OperationKind.CompoundAssignment: 1953case OperationKind.Parenthesized: 1954case OperationKind.EventAssignment: 1955case OperationKind.InterpolatedString: 1956case OperationKind.AnonymousObjectCreation: 1957case OperationKind.Tuple: 1958case OperationKind.TupleBinary: 1959case OperationKind.DynamicObjectCreation: 1960case OperationKind.DynamicMemberReference: 1961case OperationKind.DynamicInvocation: 1962case OperationKind.DynamicIndexerAccess: 1963case OperationKind.TranslatedQuery: 1964case OperationKind.DelegateCreation: 1965case OperationKind.DefaultValue: 1966case OperationKind.TypeOf: 1967case OperationKind.SizeOf: 1968case OperationKind.AddressOf: 1969case OperationKind.IsPattern: 1970case OperationKind.Increment: 1971case OperationKind.Decrement: 1972case OperationKind.DeconstructionAssignment: 1973case OperationKind.DeclarationExpression: 1974case OperationKind.OmittedArgument: 1975case OperationKind.Argument: 1976case OperationKind.InterpolatedStringText: 1977case OperationKind.Interpolation: 1978case OperationKind.ConstantPattern: 1979case OperationKind.DeclarationPattern: 1980case OperationKind.Unary: 1981case OperationKind.FlowCapture: 1982case OperationKind.FlowCaptureReference: 1983case OperationKind.IsNull: 1984case OperationKind.CaughtException: 1985case OperationKind.StaticLocalInitializationSemaphore: 1986case OperationKind.Discard: 1987case OperationKind.ReDim: 1988case OperationKind.ReDimClause: 1989case OperationKind.Range: 1990case OperationKind.RecursivePattern: 1991case OperationKind.DiscardPattern: 1992case OperationKind.PropertySubpattern: 1993case OperationKind.RelationalPattern: 1994case OperationKind.NegatedPattern: 1995case OperationKind.BinaryPattern: 1996case OperationKind.TypePattern: 1997case OperationKind.InterpolatedStringAppendFormatted: 1998case OperationKind.InterpolatedStringAppendLiteral: 1999case OperationKind.InterpolatedStringAppendInvalid: 2000case OperationKind.SlicePattern: 2001case OperationKind.ListPattern: 2002case OperationKind.ImplicitIndexerReference: 2003case OperationKind.Attribute:
Compilation\OperationTreeVerifier.cs (17)
103LogString($"{nameof(OperationKind)}.{GetKindText(operation.Kind)}"); 136string GetKindText(OperationKind kind) 140case OperationKind.Unary: 142case OperationKind.Binary: 144case OperationKind.TupleBinary: 146case OperationKind.MethodBody: 148case OperationKind.ConstructorBody: 400if (!children.IsEmpty || operation.Kind != OperationKind.None) 627Assert.Equal(OperationKind.Loop, operation.Kind); 760Assert.NotEqual(OperationKind.VariableDeclaration, operation.Resources.Kind); 761Assert.NotEqual(OperationKind.VariableDeclarator, operation.Resources.Kind); 1452Assert.Equal(OperationKind.InstanceReference, propertyReference.Instance.Kind); 1785Assert.Equal(OperationKind.CaseClause, operation.Kind); 1873if (operation.Text.Kind != OperationKind.Literal) 1875Assert.Equal(OperationKind.Literal, ((IConversionOperation)operation.Text).Operand.Kind); 1889if (operation.FormatString != null && operation.FormatString.Kind != OperationKind.Literal) 1891Assert.Equal(OperationKind.Literal, ((IConversionOperation)operation.FormatString).Operand.Kind);
Compilation\TestOperationVisitor.cs (149)
39Assert.Equal(OperationKind.None, operation.Kind); 55Assert.Equal(OperationKind.None, operation.Kind); 119Assert.Equal(OperationKind.Block, operation.Kind); 127Assert.Equal(OperationKind.VariableDeclarationGroup, operation.Kind); 133Assert.Equal(OperationKind.VariableDeclarator, operation.Kind); 148Assert.Equal(OperationKind.VariableDeclaration, operation.Kind); 162Assert.Equal(OperationKind.Switch, operation.Kind); 170Assert.Equal(OperationKind.SwitchCase, operation.Kind); 222Assert.Equal(OperationKind.CaseClause, operation.Kind); 359Assert.Equal(OperationKind.Loop, operation.Kind); 367Assert.Equal(OperationKind.Labeled, operation.Kind); 382Assert.Equal(OperationKind.Branch, operation.Kind); 401Assert.Equal(OperationKind.Empty, operation.Kind); 407Assert.Contains(operation.Kind, new[] { OperationKind.Return, OperationKind.YieldReturn, OperationKind.YieldBreak }); 410Assert.NotEqual(OperationKind.YieldReturn, operation.Kind); 421Assert.Equal(OperationKind.Lock, operation.Kind); 427Assert.Equal(OperationKind.Try, operation.Kind); 441Assert.Equal(OperationKind.CatchClause, operation.Kind); 462Assert.Equal(OperationKind.Using, operation.Kind); 465Assert.NotEqual(OperationKind.VariableDeclaration, operation.Resources.Kind); 466Assert.NotEqual(OperationKind.VariableDeclarator, operation.Resources.Kind); 482Assert.Equal(OperationKind.None, operation.Kind); 489Assert.Equal(OperationKind.None, operation.Kind); 495Assert.Equal(OperationKind.ExpressionStatement, operation.Kind); 501Assert.Equal(OperationKind.None, operation.Kind); 507Assert.Equal(OperationKind.Stop, operation.Kind); 513Assert.Equal(OperationKind.End, operation.Kind); 519Assert.Equal(OperationKind.Invocation, operation.Kind); 552Assert.Equal(OperationKind.FunctionPointerInvocation, operation.Kind); 566Assert.Equal(OperationKind.Argument, operation.Kind); 582Assert.Equal(OperationKind.OmittedArgument, operation.Kind); 588Assert.Equal(OperationKind.ArrayElementReference, operation.Kind); 594Assert.Equal(OperationKind.ImplicitIndexerReference, operation.Kind); 603Assert.Equal(OperationKind.None, operation.Kind); 609Assert.Equal(OperationKind.LocalReference, operation.Kind); 617Assert.Equal(OperationKind.ParameterReference, operation.Kind); 624Assert.Equal(OperationKind.InstanceReference, operation.Kind); 663Assert.Equal(OperationKind.FieldReference, operation.Kind); 673Assert.Equal(OperationKind.MethodReference, operation.Kind); 687Assert.Equal(OperationKind.PropertyReference, operation.Kind); 695Assert.Equal(OperationKind.EventReference, operation.Kind); 703Assert.Equal(OperationKind.EventAssignment, operation.Kind); 710Assert.Equal(OperationKind.ConditionalAccess, operation.Kind); 717Assert.Equal(OperationKind.ConditionalAccessInstance, operation.Kind); 723Assert.Equal(OperationKind.None, operation.Kind); 729Assert.Equal(OperationKind.UnaryOperator, operation.Kind); 730Assert.Equal(OperationKind.Unary, operation.Kind); 744Assert.Equal(OperationKind.BinaryOperator, operation.Kind); 745Assert.Equal(OperationKind.Binary, operation.Kind); 813Assert.Equal(OperationKind.TupleBinaryOperator, operation.Kind); 814Assert.Equal(OperationKind.TupleBinary, operation.Kind); 822Assert.Equal(OperationKind.Conversion, operation.Kind); 870Assert.Equal(OperationKind.Conditional, operation.Kind); 885Assert.Equal(OperationKind.Coalesce, operation.Kind); 892Assert.Equal(OperationKind.CoalesceAssignment, operation.Kind); 898Assert.Equal(OperationKind.IsType, operation.Kind); 906Assert.Equal(OperationKind.SizeOf, operation.Kind); 913Assert.Equal(OperationKind.TypeOf, operation.Kind); 920Assert.Equal(OperationKind.AnonymousFunction, operation.Kind); 927Assert.Equal(OperationKind.FlowAnonymousFunction, operation.Kind); 934Assert.Equal(OperationKind.LocalFunction, operation.Kind); 960Assert.Equal(OperationKind.Literal, operation.Kind); 966Assert.Equal(OperationKind.Utf8String, operation.Kind); 973Assert.Equal(OperationKind.Await, operation.Kind); 979Assert.Equal(OperationKind.NameOf, operation.Kind); 985Assert.Equal(OperationKind.Throw, operation.Kind); 998Assert.Equal(OperationKind.AddressOf, operation.Kind); 1004Assert.Equal(OperationKind.ObjectCreation, operation.Kind); 1029Assert.Equal(OperationKind.AnonymousObjectCreation, operation.Kind); 1036Assert.Equal(OperationKind.InstanceReference, propertyReference.Instance.Kind); 1043Assert.Equal(OperationKind.DynamicObjectCreation, operation.Kind); 1056Assert.Equal(OperationKind.DynamicInvocation, operation.Kind); 1062Assert.Equal(OperationKind.DynamicIndexerAccess, operation.Kind); 1068Assert.Equal(OperationKind.ObjectOrCollectionInitializer, operation.Kind); 1074Assert.Equal(OperationKind.MemberInitializer, operation.Kind); 1086Assert.Equal(OperationKind.FieldInitializer, operation.Kind); 1096Assert.Equal(OperationKind.VariableInitializer, operation.Kind); 1103Assert.Equal(OperationKind.PropertyInitializer, operation.Kind); 1113Assert.Equal(OperationKind.ParameterInitializer, operation.Kind); 1120Assert.Equal(OperationKind.ArrayCreation, operation.Kind); 1133Assert.Equal(OperationKind.ArrayInitializer, operation.Kind); 1145Assert.Equal(OperationKind.SimpleAssignment, operation.Kind); 1152Assert.Equal(OperationKind.CompoundAssignment, operation.Kind); 1181Assert.Contains(operation.Kind, new[] { OperationKind.Increment, OperationKind.Decrement }); 1193Assert.Equal(OperationKind.Parenthesized, operation.Kind); 1199Assert.Equal(OperationKind.DynamicMemberReference, operation.Kind); 1221Assert.Equal(OperationKind.DefaultValue, operation.Kind); 1227Assert.Equal(OperationKind.TypeParameterObjectCreation, operation.Kind); 1240Assert.Equal(OperationKind.None, operation.Kind); 1253Assert.Equal(OperationKind.Invalid, operation.Kind); 1258Assert.Equal(OperationKind.Tuple, operation.Kind); 1265Assert.Equal(OperationKind.InterpolatedString, operation.Kind); 1271Assert.Equal(OperationKind.InterpolatedStringText, operation.Kind); 1272if (operation.Text.Kind != OperationKind.Literal) 1274Assert.Equal(OperationKind.Literal, ((IConversionOperation)operation.Text).Operand.Kind); 1281Assert.Equal(OperationKind.Interpolation, operation.Kind); 1290if (operation.FormatString.Kind != OperationKind.Literal) 1292Assert.Equal(OperationKind.Literal, ((IConversionOperation)operation.FormatString).Operand.Kind); 1302Assert.Equal(OperationKind.InterpolatedStringHandlerCreation, operation.Kind); 1313Assert.Equal(OperationKind.InterpolatedStringAddition, operation.Kind); 1321Assert.Equal(OperationKind.InterpolatedStringHandlerArgumentPlaceholder, operation.Kind); 1335Assert.True(operation.Kind is OperationKind.InterpolatedStringAppendFormatted or OperationKind.InterpolatedStringAppendLiteral or OperationKind.InterpolatedStringAppendInvalid); 1349Assert.Equal(OperationKind.ConstantPattern, operation.Kind); 1356Assert.Equal(OperationKind.RelationalPattern, operation.Kind); 1369Assert.Equal(OperationKind.BinaryPattern, operation.Kind); 1380Assert.Equal(OperationKind.NegatedPattern, operation.Kind); 1387Assert.Equal(OperationKind.TypePattern, operation.Kind); 1395Assert.Equal(OperationKind.DeclarationPattern, operation.Kind); 1428Assert.Equal(OperationKind.SlicePattern, operation.Kind); 1443Assert.Equal(OperationKind.ListPattern, operation.Kind); 1461Assert.Equal(OperationKind.RecursivePattern, operation.Kind); 1509if (operation.Member.Kind == OperationKind.Invalid) 1533Assert.Equal(OperationKind.SwitchExpression, operation.Kind); 1555Assert.Equal(OperationKind.IsPattern, operation.Kind); 1577Assert.Equal(OperationKind.TranslatedQuery, operation.Kind); 1583Assert.Equal(OperationKind.DeclarationExpression, operation.Kind); 1589Assert.Equal(OperationKind.DeconstructionAssignment, operation.Kind); 1595Assert.Equal(OperationKind.DelegateCreation, operation.Kind); 1601Assert.Equal(OperationKind.RaiseEvent, operation.Kind); 1614Assert.Equal(OperationKind.ConstructorBodyOperation, operation.Kind); 1615Assert.Equal(OperationKind.ConstructorBody, operation.Kind); 1641Assert.Equal(OperationKind.MethodBodyOperation, operation.Kind); 1642Assert.Equal(OperationKind.MethodBody, operation.Kind); 1667Assert.Equal(OperationKind.Discard, operation.Kind); 1676Assert.Equal(OperationKind.DiscardPattern, operation.Kind); 1683Assert.Equal(OperationKind.FlowCapture, operation.Kind); 1689case OperationKind.Invalid: 1690case OperationKind.None: 1691case OperationKind.AnonymousFunction: 1692case OperationKind.FlowCaptureReference: 1693case OperationKind.DefaultValue: 1694case OperationKind.FlowAnonymousFunction: // must be an error case like in Microsoft.CodeAnalysis.CSharp.UnitTests.ConditionalOperatorTests.TestBothUntyped unit-test 1697case OperationKind.OmittedArgument: 1698case OperationKind.DeclarationExpression: 1699case OperationKind.Discard: 1715Assert.Equal(OperationKind.FlowCaptureReference, operation.Kind); 1722Assert.Equal(OperationKind.IsNull, operation.Kind); 1729Assert.Equal(OperationKind.CaughtException, operation.Kind); 1736Assert.Equal(OperationKind.StaticLocalInitializationSemaphore, operation.Kind); 1745Assert.Equal(OperationKind.Range, operation.Kind); 1766Assert.Equal(OperationKind.ReDim, operation.Kind); 1773Assert.Equal(OperationKind.ReDimClause, operation.Kind); 1800Assert.Equal(OperationKind.With, operation.Kind); 1808Assert.Equal(OperationKind.Attribute, operation.Kind);
Diagnostics\BoxingOperationAnalyzer.cs (4)
45if (operation.Kind == OperationKind.Conversion) 58if (operation.Kind == OperationKind.Invocation) 70OperationKind.Conversion, 71OperationKind.Invocation);
Diagnostics\CommonDiagnosticAnalyzers.cs (14)
884oc.RegisterOperationAction(c => ReportDiagnostic(c.ReportDiagnostic, ActionKind.Operation), OperationKind.VariableDeclarationGroup); 1245}, OperationKind.Literal); 1257}, OperationKind.Literal); 1324context.RegisterOperationAction(AnalyzerOperation, OperationKind.FieldReference); 1358}, OperationKind.MethodBody, OperationKind.ConstructorBody); 1473OperationKind.Invocation); 1763private readonly OperationKind? _operationKind; 1766public SymbolStartAnalyzer(bool topLevelAction, SymbolKind symbolKind, OperationKind? operationKindOpt = null, int? analyzerId = null) 2392analysisContext.RegisterOperationAction(_ => { }, OperationKind.Invocation); 2563OperationKind.VariableDeclaration); 2617context.RegisterOperationAction(context => HandleCallback(context.Operation.Syntax.GetLocation(), context.Compilation, context.ReportDiagnostic, context.CancellationToken), OperationKind.VariableDeclaration); 2691context.RegisterOperationAction(operationContext => AnalyzedOperations.Add(operationContext.Operation), OperationKind.VariableDeclaration); 2719operationBlockStartContext.RegisterOperationAction(operationContext => AnalyzedOperationsInsideOperationBlock.Add(operationContext.Operation), OperationKind.VariableDeclaration);
Diagnostics\CouldHaveMoreSpecificTypeAnalyzer.cs (10)
79OperationKind.SimpleAssignment, 80OperationKind.CompoundAssignment, 81OperationKind.Increment); 96OperationKind.Invocation); 118OperationKind.VariableInitializer); 145OperationKind.FieldInitializer); 239OperationKind targetKind = target.Kind; 240if (targetKind == OperationKind.LocalReference) 245else if (targetKind == OperationKind.FieldReference) 281if (value.Kind == OperationKind.Conversion)
Diagnostics\EmptyArrayAnalyzer.cs (1)
87OperationKind.ArrayCreation);
Diagnostics\FieldCouldBeReadOnlyAnalyzer.cs (7)
67OperationKind.SimpleAssignment, 68OperationKind.CompoundAssignment, 69OperationKind.Increment, 70OperationKind.Decrement); 84OperationKind.Invocation); 113if (target.Kind == OperationKind.FieldReference) 120case OperationKind.InstanceReference:
Diagnostics\LocalCouldBeConstAnalyzer.cs (7)
61OperationKind.SimpleAssignment, 62OperationKind.CompoundAssignment, 63OperationKind.Increment); 77OperationKind.Invocation); 100OperationKind.VariableDeclarationGroup); 116if (target.Kind == OperationKind.LocalReference) 123else if (target.Kind == OperationKind.FieldReference)
Diagnostics\OperationTestAnalyzer.cs (90)
66OperationKind.Invalid); 76OperationKind.Invocation, 77OperationKind.Invalid); 112OperationKind.LocalReference, 113OperationKind.Literal); 141context.RegisterOperationAction(AnalyzeOperation, OperationKind.Loop); 152if (forCondition.Kind == OperationKind.Binary) 160conditionLeft.Kind == OperationKind.LocalReference) 170if (setup.Kind == OperationKind.ExpressionStatement && ((IExpressionStatementOperation)setup).Operation.Kind == OperationKind.SimpleAssignment) 173if (setupAssignment.Target.Kind == OperationKind.LocalReference && 185if (advance.Kind == OperationKind.ExpressionStatement) 234if (advanceExpression.Kind == OperationKind.SimpleAssignment) 238if (advanceAssignment.Target.Kind == OperationKind.LocalReference && 240advanceAssignment.Value.Kind == OperationKind.Binary && 247advanceOperation.LeftOperand.Kind == OperationKind.LocalReference && 258else if (advanceExpression.Kind == OperationKind.CompoundAssignment) 262if (advanceAssignment.Target.Kind == OperationKind.LocalReference && 272else if (advanceExpression.Kind == OperationKind.Increment) 276if (advanceAssignment.Target.Kind == OperationKind.LocalReference && 464OperationKind.Switch); 581OperationKind.Invocation); 638OperationKind.Literal); 673OperationKind.Argument); 716Report(operationContext, initializer.Syntax, initializer.Kind == OperationKind.FieldReference ? DoNotUseFieldInitializerDescriptor : DoNotUsePropertyInitializerDescriptor); 718OperationKind.FieldReference, 719OperationKind.PropertyReference); 753var kind = assignment.Target.Kind; 754if (kind == OperationKind.FieldReference || 755kind == OperationKind.PropertyReference) 760OperationKind.SimpleAssignment); 800OperationKind.ArrayInitializer); 857OperationKind.VariableDeclarationGroup); 901case OperationKind.CaseClause: 908case OperationKind.SwitchCase: 917OperationKind.SwitchCase, 918OperationKind.CaseClause); 957OperationKind.InstanceReference); 1036OperationKind.EventReference); 1044if (eventAssignment.EventReference.Kind == OperationKind.Invalid || eventAssignment.HasErrors(operationContext.Compilation, operationContext.CancellationToken)) 1049OperationKind.EventAssignment); 1056OperationKind.PropertyReference); 1063OperationKind.FieldReference); 1070OperationKind.MethodReference); 1117OperationKind.Invocation); 1144OperationKind.ObjectCreation); 1187OperationKind.FieldInitializer); 1198OperationKind.ParameterInitializer); 1229OperationKind.None); 1264if (addressOfOperation.Reference.Kind == OperationKind.Invalid && addressOfOperation.HasErrors(operationContext.Compilation, operationContext.CancellationToken)) 1269OperationKind.AddressOf); 1328if (statement.Kind == OperationKind.None) 1339OperationKind.AnonymousFunction); 1383case OperationKind.FieldReference: 1387case OperationKind.PropertyReference: 1391case OperationKind.EventReference: 1395case OperationKind.MethodReference: 1399case OperationKind.Invocation: 1416OperationKind.FieldReference, 1417OperationKind.PropertyReference, 1418OperationKind.EventReference, 1419OperationKind.MethodReference, 1420OperationKind.Invocation); 1455OperationKind.Labeled); 1470OperationKind.Branch); 1526OperationKind.Binary); 1547OperationKind.Unary); 1578OperationKind.Binary); 1615if (left.Kind == OperationKind.LocalReference) 1620if (right.Kind == OperationKind.Literal) 1635OperationKind.Binary); 1642if (operand.Kind == OperationKind.LocalReference) 1657OperationKind.Unary); 1710OperationKind.Invocation); 1735if (operation.Kind == OperationKind.Argument) 1786if (operation.Kind == OperationKind.Binary) 1794else if (operation.Kind == OperationKind.Unary) 1802else if (operation.Kind == OperationKind.Increment) 1811OperationKind.Binary, 1812OperationKind.Unary, 1813OperationKind.Increment); 1851OperationKind.ConditionalAccess); 1859OperationKind.ConditionalAccessInstance); 1900OperationKind.Conversion); 1939OperationKind.Loop); 1981OperationKind.Unary); 2017OperationKind.SimpleAssignment); 2054OperationKind.Literal); 2082OperationKind.Literal); 2113OperationKind.Literal);
Extensions\OperationExtensions.cs (2)
16case OperationKind.ArrayInitializer: 17case OperationKind.Argument:
Microsoft.CodeAnalysis.UnitTests (1)
Diagnostics\AnalysisContextInfoTests.cs (1)
76c.RegisterOperationAction(b => ThrowIfMatch(nameof(c.RegisterOperationAction), new AnalysisContextInfo(b.Compilation, b.Operation)), OperationKind.Return);
Microsoft.CodeAnalysis.VisualBasic (2)
Operations\VisualBasicOperationFactory.vb (2)
1325Return New ReturnOperation(returnedValue, OperationKind.Return, _semanticModel, syntax, isImplicit) 1375Return New ReturnOperation(returnedValue, OperationKind.YieldReturn, _semanticModel, syntax, isImplicit)
Microsoft.CodeAnalysis.VisualBasic.Semantic.UnitTests (1)
Diagnostics\GetDiagnosticsTests.vb (1)
613blockStartContext.RegisterOperationAction(AddressOf AnalyzeOperationContext, OperationKind.Literal)
Microsoft.CodeAnalysis.Workspaces (31)
ControlFlowGraphExtensions.cs (1)
30public static IEnumerable<T> DescendantOperations<T>(this ControlFlowGraph cfg, OperationKind operationKind)
LValueFlowCaptureProvider.cs (1)
54foreach (var flowCaptureReference in cfg.DescendantOperations<IFlowCaptureReferenceOperation>(OperationKind.FlowCaptureReference))
OperationExtensions.cs (9)
21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 237case OperationKind.AnonymousFunction: 240case OperationKind.LocalFunction: 261case OperationKind.DeconstructionAssignment: 265case OperationKind.Tuple: 266case OperationKind.Conversion: 267case OperationKind.Parenthesized: 365public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, OperationKind kind) 369=> operation.Kind == OperationKind.Literal && operation.Type.IsNumericType();
Shared\Extensions\SemanticEquivalence.cs (1)
129=> operation is IMemberReferenceOperation { Instance.Kind: OperationKind.InstanceReference };
SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (2)
192if (operation.Kind is OperationKind.LocalFunction or OperationKind.AnonymousFunction)
SymbolUsageAnalysis.Walker.cs (15)
154operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 162Debug.Assert(symbolOpt != null || operation.Kind == OperationKind.FlowCaptureReference); 192operation.Parent?.Kind != OperationKind.ExpressionStatement; 196if (write.Kind != OperationKind.FlowCaptureReference) 411case OperationKind.Conversion: 415case OperationKind.Parenthesized: 419case OperationKind.DelegateCreation: 423case OperationKind.AnonymousFunction: 429case OperationKind.FlowAnonymousFunction: 433case OperationKind.MethodReference: 446case OperationKind.LocalReference: 451case OperationKind.ParameterReference: 456case OperationKind.Literal: 526case OperationKind.FlowAnonymousFunction: 530case OperationKind.MethodReference:
SyntaxGeneratorExtensions_Negate.cs (2)
451if (operation?.Kind == OperationKind.Literal && operation.ConstantValue.HasValue && operation.ConstantValue.Value is true) 455else if (operation?.Kind == OperationKind.Literal && operation.ConstantValue.HasValue && operation.ConstantValue.Value is false)
Roslyn.Compilers.VisualBasic.IOperation.UnitTests (23)
IOperation\IOperationTests.vb (19)
61Assert.Equal(statement1.Kind, OperationKind.ExpressionStatement) 63Assert.Equal(expression1.Kind, OperationKind.SimpleAssignment) 65Assert.Equal(assignment1.Value.Kind, OperationKind.Binary) 70Assert.Equal(left1.Kind, OperationKind.LocalReference) 73Assert.Equal(right1.Kind, OperationKind.Literal) 94Assert.Equal(statement2.Kind, OperationKind.ExpressionStatement) 96Assert.Equal(expression2.Kind, OperationKind.SimpleAssignment) 98Assert.Equal(assignment2.Value.Kind, OperationKind.Binary) 104Assert.Equal(left2.Kind, OperationKind.LocalReference) 107Assert.Equal(right2.Kind, OperationKind.LocalReference) 127Assert.Equal(statement3.Kind, OperationKind.ExpressionStatement) 129Assert.Equal(expression3.Kind, OperationKind.SimpleAssignment) 131Assert.Equal(assignment3.Value.Kind, OperationKind.Unary) 136Assert.Equal(operand3.Kind, OperationKind.LocalReference) 186Assert.Equal(statement1.Kind, OperationKind.ExpressionStatement) 188Assert.Equal(expression1.Kind, OperationKind.CompoundAssignment) 214Assert.Equal(statement2.Kind, OperationKind.ExpressionStatement) 216Assert.Equal(expression2.Kind, OperationKind.CompoundAssignment) 870Assert.Equal(OperationKind.FieldReference, operation.Kind)
IOperation\IOperationTests_IConversionExpression.vb (3)
3347If (conv.Kind = OperationKind.Conversion) Then 3400Case OperationKind.VariableDeclarationGroup 3402Case OperationKind.Return
IOperation\IOperationTests_IUsingStatement.vb (1)
85Assert.Equal(OperationKind.Invalid, op.Resources.Kind)