1676 references to OperationKind
Aspire.Hosting.Analyzers (1)
AppHostAnalyzer.cs (1)
43context.RegisterOperationAction(c => DoOperationAnalysis(c, modelNameOperations), OperationKind.Invocation);
Aspire.Hosting.Integration.Analyzers (1)
AspireExportAnalyzer.cs (1)
113OperationKind.Invocation);
GenerateDocumentationAndConfigFiles (60)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (22)
116/// True if this operation has no IOperation API support, i.e. <see cref="OperationKind.None"/> and 122return operation is { Kind: OperationKind.None, Parent: null }; 131public static TOperation? GetAncestor<TOperation>(this IOperation root, OperationKind ancestorKind, Func<TOperation, bool>? predicate = null) 166public static IOperation? GetAncestor(this IOperation root, ImmutableArray<OperationKind> ancestorKinds, Func<IOperation, bool>? predicate = null) 196return operation.GetAncestor(OperationKind.ConditionalAccess, (IConditionalAccessOperation c) => c.Operation.Syntax == operation.Syntax); 211(operation.GetAncestor<IAnonymousObjectCreationOperation>(OperationKind.AnonymousObjectCreation) != null)); 215for (IOperation? current = operation; current != null && current.Kind != OperationKind.Block; current = current.Parent) 223case OperationKind.AnonymousObjectCreation: 320Debug.Assert(operation.Kind is OperationKind.None or OperationKind.Attribute, $"Unexpected root operation kind: {operation.Kind}"); 346case OperationKind.LocalReference: 350case OperationKind.ParameterReference: 354case OperationKind.InstanceReference: 358case OperationKind.AnonymousFunction: 362case OperationKind.LocalFunction: 381private static readonly ImmutableArray<OperationKind> s_LambdaAndLocalFunctionKinds = 382ImmutableArray.Create(OperationKind.AnonymousFunction, OperationKind.LocalFunction); 421case OperationKind.Parenthesized: 422case OperationKind.Conversion: 423case OperationKind.DeclarationExpression: 428case OperationKind.Tuple:
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\OperationKinds.cs (5)
12public static ImmutableArray<OperationKind> MemberReference { get; } 14OperationKind.EventReference, 15OperationKind.FieldReference, 16OperationKind.MethodReference, 17OperationKind.PropertyReference);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ControlFlowGraphExtensions.cs (1)
30public static IEnumerable<T> DescendantOperations<T>(this ControlFlowGraph cfg, OperationKind operationKind)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (9)
21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 246case OperationKind.AnonymousFunction: 249case OperationKind.LocalFunction: 270case OperationKind.DeconstructionAssignment: 274case OperationKind.Tuple: 275case OperationKind.Conversion: 276case OperationKind.Parenthesized: 374public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, OperationKind kind) 378=> operation.Kind == OperationKind.Literal && operation.Type.IsNumericType();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SemanticEquivalence.cs (1)
126=> operation is IMemberReferenceOperation { Instance.Kind: OperationKind.InstanceReference };
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (1)
54foreach (var flowCaptureReference in cfg.DescendantOperations<IFlowCaptureReferenceOperation>(OperationKind.FlowCaptureReference))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (2)
207if (operation.Kind is OperationKind.LocalFunction or OperationKind.AnonymousFunction)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (15)
153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 161Debug.Assert(symbolOpt != null || operation.Kind == OperationKind.FlowCaptureReference); 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 195if (write.Kind != OperationKind.FlowCaptureReference) 438case OperationKind.Conversion: 442case OperationKind.Parenthesized: 446case OperationKind.DelegateCreation: 450case OperationKind.AnonymousFunction: 456case OperationKind.FlowAnonymousFunction: 460case OperationKind.MethodReference: 473case OperationKind.LocalReference: 478case OperationKind.ParameterReference: 483case OperationKind.Literal: 553case OperationKind.FlowAnonymousFunction: 557case OperationKind.MethodReference:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (2)
479operation is { Kind: OperationKind.Literal, ConstantValue: { HasValue: true, Value: true } }) 485operation is { Kind: OperationKind.Literal, ConstantValue: { HasValue: true, Value: false } })
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\AbstractInitializerParameterService.cs (2)
66case OperationKind.AnonymousFunction: 69case OperationKind.Block:
ILLink.RoslynAnalyzer (23)
COMAnalyzer.cs (1)
61}, OperationKind.Invocation);
DataFlow\CapturedReferenceValue.cs (10)
19case OperationKind.PropertyReference: 20case OperationKind.EventReference: 21case OperationKind.LocalReference: 22case OperationKind.FieldReference: 23case OperationKind.ParameterReference: 24case OperationKind.ArrayElementReference: 25case OperationKind.InlineArrayAccess: 26case OperationKind.ImplicitIndexerReference: 28case OperationKind.InstanceReference: 29case OperationKind.Invocation:
DataFlow\ControlFlowGraphExtensions.cs (1)
32public static IEnumerable<T> DescendantOperations<T>(this ControlFlowGraph cfg, OperationKind operationKind)
DataFlow\LValueFlowCaptureProvider.cs (1)
63foreach (var flowCaptureReference in cfg.DescendantOperations<IFlowCaptureReferenceOperation>(OperationKind.FlowCaptureReference))
DataFlow\UnexpectedOperationHandler.cs (3)
22if (operation.Kind is OperationKind.None) 25if (operation.Kind is OperationKind.Invalid) 39if (descendant.Kind is OperationKind.Invalid)
IOperationExtensions.cs (6)
220case OperationKind.AnonymousFunction: 223case OperationKind.LocalFunction: 244case OperationKind.DeconstructionAssignment: 248case OperationKind.Tuple: 249case OperationKind.Conversion: 250case OperationKind.Parenthesized:
TrimAnalysis\HandleCallAction.cs (1)
43_isNewObj = operation.Kind == OperationKind.ObjectCreation;
Microsoft.Analyzers.Extra (24)
AsyncCallInsideUsingBlockAnalyzer.cs (8)
55}, OperationKind.UsingDeclaration); 69}, OperationKind.Using); 89case OperationKind.Await: 93case OperationKind.Invocation: 97case OperationKind.PropertyReference: 101case OperationKind.VariableDeclarator: 105case OperationKind.SimpleAssignment: 112case OperationKind.AnonymousFunction:
CallAnalysis\CallAnalyzer.cs (3)
45compilationStartContext.RegisterOperationAction(handlers.HandleInvocation, OperationKind.Invocation); 46compilationStartContext.RegisterOperationAction(handlers.HandleObjectCreation, OperationKind.ObjectCreation); 47compilationStartContext.RegisterOperationAction(handlers.HandlePropertyReference, OperationKind.PropertyReference);
CallAnalysis\Fixers\LegacyLoggingFixer.cs (1)
368if (invocationOp.Parent?.Kind == OperationKind.ConditionalAccess)
CallAnalysis\Fixers\LegacyLoggingFixer.FixDetails.cs (2)
106var op = invocationOp.Arguments[LogLevelParamIndex].Descendants().SingleOrDefault(x => x.Kind == OperationKind.Literal || x.Kind == OperationKind.FieldReference);
CoalesceAnalyzer.cs (4)
39if (op.Target.Kind == OperationKind.ParameterReference) 55}, OperationKind.CoalesceAssignment); 66if (op.Value.Kind == OperationKind.ParameterReference) 82}, OperationKind.Coalesce);
ConditionalAccessAnalyzer.cs (5)
39case OperationKind.PropertyReference: 52case OperationKind.FieldReference: 64case OperationKind.Invocation: 98if (op.Operation.Kind == OperationKind.ParameterReference) 115}, OperationKind.ConditionalAccess);
UsingToStringInLoggersAnalyzer.cs (1)
33operationBlockContext.RegisterOperationAction(AnalyzeInvocation, OperationKind.Invocation);
Microsoft.Analyzers.Local (4)
CallAnalysis\CallAnalyzer.cs (4)
36compilationStartContext.RegisterOperationAction(handlers.HandleInvocation, OperationKind.Invocation); 37compilationStartContext.RegisterOperationAction(handlers.HandleObjectCreation, OperationKind.ObjectCreation); 38compilationStartContext.RegisterOperationAction(handlers.HandlePropertyReference, OperationKind.PropertyReference); 39compilationStartContext.RegisterOperationAction(handlers.HandleThrow, OperationKind.Throw);
Microsoft.AspNetCore.Analyzers (3)
MiddlewareAnalyzer.cs (1)
40}, OperationKind.Invocation);
OptionsAnalyzer.cs (1)
36}, OperationKind.SimpleAssignment);
ServicesAnalyzer.cs (1)
35}, OperationKind.Invocation);
Microsoft.AspNetCore.App.Analyzers (12)
Authorization\AddAuthorizationBuilderAnalyzer.cs (1)
65}, OperationKind.Invocation);
Http\HeaderDictionaryAddAnalyzer.cs (1)
41}, OperationKind.Invocation);
Http\HeaderDictionaryIndexerAnalyzer.cs (1)
45}, OperationKind.PropertyReference);
Http\RequestDelegateReturnTypeAnalyzer.cs (4)
32parent.Kind == OperationKind.DelegateCreation && 43}, OperationKind.MethodReference); 48parent.Kind == OperationKind.DelegateCreation && 72}, OperationKind.AnonymousFunction);
RenderTreeBuilder\RenderTreeBuilderAnalyzer.cs (1)
55}, OperationKind.Invocation);
RouteHandlers\RouteHandlerAnalyzer.cs (3)
56context.RegisterOperationAction(c => DoOperationAnalysis(c, mapOperations), OperationKind.Invocation); 105if (delegateCreation.Target.Kind == OperationKind.AnonymousFunction) 115else if (delegateCreation.Target.Kind == OperationKind.MethodReference)
WebApplicationBuilder\WebApplicationBuilderAnalyzer.cs (1)
307}, OperationKind.Invocation);
Microsoft.AspNetCore.Components.Analyzers (14)
ComponentParameterUsageAnalyzer.cs (6)
59if (leftHandSide.Kind != OperationKind.PropertyReference) 109}, OperationKind.SimpleAssignment, OperationKind.CompoundAssignment, OperationKind.CoalesceAssignment, OperationKind.Increment, OperationKind.Decrement);
InternalUsageAnalyzer.cs (6)
42OperationKind.ObjectCreation, 43OperationKind.Invocation, 44OperationKind.FieldReference, 45OperationKind.MethodReference, 46OperationKind.PropertyReference, 47OperationKind.EventReference);
InvokeAsyncOfObjectAnalyzer.cs (1)
83}, OperationKind.Invocation);
VirtualizeItemComparerAnalyzer.cs (1)
116}, OperationKind.Invocation);
Microsoft.AspNetCore.Components.SdkAnalyzers (12)
ComponentParameterUsageAnalyzer.cs (6)
59if (leftHandSide.Kind != OperationKind.PropertyReference) 109}, OperationKind.SimpleAssignment, OperationKind.CompoundAssignment, OperationKind.CoalesceAssignment, OperationKind.Increment, OperationKind.Decrement);
InternalUsageAnalyzer.cs (6)
42OperationKind.ObjectCreation, 43OperationKind.Invocation, 44OperationKind.FieldReference, 45OperationKind.MethodReference, 46OperationKind.PropertyReference, 47OperationKind.EventReference);
Microsoft.AspNetCore.Mvc.Analyzers (6)
AvoidHtmlPartialAnalyzer.cs (1)
43}, OperationKind.Invocation);
TagHelpersInCodeBlocksAnalyzer.cs (5)
48if (awaitOperation.Operation.Kind != OperationKind.Invocation) 90}, OperationKind.Await); 115if (operation.Kind == OperationKind.LocalFunction) 120if (operation.Kind == OperationKind.MethodBody) 125if (operation.Kind == OperationKind.AnonymousFunction)
Microsoft.AspNetCore.Mvc.Api.Analyzers (11)
ApiActionsDoNotRequireExplicitModelValidationCheckAnalyzer.cs (10)
58if (parent.Kind == OperationKind.Block && parent.Parent != null) 63if (parent.Kind != OperationKind.MethodBodyOperation) 70if (trueStatement.Kind != OperationKind.Return) 126}, OperationKind.Conditional); 133case OperationKind.UnaryOperator: 137case OperationKind.BinaryOperator: 164if (operation.Kind != OperationKind.Literal) 182if (operation.Kind != OperationKind.PropertyReference) 198if (propertyReference.Instance?.Kind != OperationKind.PropertyReference) 205if (modelStatePropertyReference.Instance?.Kind != OperationKind.InstanceReference)
ApiConventionAnalyzer.cs (1)
92}, OperationKind.MethodBody);
Microsoft.CodeAnalysis (536)
DiagnosticAnalyzer\AnalyzerDriver.cs (5)
2993case OperationKind.MethodBody: 2994case OperationKind.ConstructorBody: 2999case OperationKind.ExpressionStatement: 3002Debug.Assert(operationBlock.Kind is OperationKind.Invocation or OperationKind.Invalid);
DiagnosticAnalyzer\AnalyzerDriver.GroupedAnalyzerActions.cs (1)
18/// <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 (2)
20private ImmutableSegmentedDictionary<OperationKind, ImmutableArray<OperationAnalyzerAction>> _lazyOperationActionsByKind; 99public ImmutableSegmentedDictionary<OperationKind, ImmutableArray<OperationAnalyzerAction>> OperationActionsByAnalyzerAndKind
DiagnosticAnalyzer\AnalyzerExecutor.cs (6)
1179internal static ImmutableSegmentedDictionary<OperationKind, ImmutableArray<OperationAnalyzerAction>> GetOperationActionsByKind( 1183return ImmutableSegmentedDictionary<OperationKind, ImmutableArray<OperationAnalyzerAction>>.Empty; 1185var operationActionsByKind = PooledDictionary<OperationKind, ArrayBuilder<OperationAnalyzerAction>>.GetInstance(); 1188foreach (var kind in operationAction.Kinds) 1206ImmutableSegmentedDictionary<OperationKind, ImmutableArray<OperationAnalyzerAction>> operationActionsByKind, 1241ImmutableSegmentedDictionary<OperationKind, ImmutableArray<OperationAnalyzerAction>> operationActionsByKind,
DiagnosticAnalyzer\DiagnosticAnalysisContext.cs (8)
183public void RegisterOperationAction(Action<OperationAnalysisContext> action, params OperationKind[] operationKinds) 195public virtual void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 478public void RegisterOperationAction(Action<OperationAnalysisContext> action, params OperationKind[] operationKinds) 490public virtual void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 990public void RegisterOperationAction(Action<OperationAnalysisContext> action, params OperationKind[] operationKinds) 1002public abstract void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds); 1336public void RegisterOperationAction(Action<OperationAnalysisContext> action, params OperationKind[] operationKinds) 1348public 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) 207public override void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 282public override void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 357public override void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 488public void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds) 651public void RegisterOperationAction(Action<OperationAnalysisContext> action, ImmutableArray<OperationKind> operationKinds)
Generated\FlowAnalysis.Generated.cs (6)
22/// <item><description><see cref="OperationKind.FlowCapture"/></description></item> 46/// <item><description><see cref="OperationKind.FlowCaptureReference"/></description></item> 72/// <item><description><see cref="OperationKind.IsNull"/></description></item> 91/// <item><description><see cref="OperationKind.CaughtException"/></description></item> 108/// <item><description><see cref="OperationKind.StaticLocalInitializationSemaphore"/></description></item> 135/// <item><description><see cref="OperationKind.FlowAnonymousFunction"/></description></item>
Generated\Operations.Generated.cs (379)
31/// <item><description><see cref="OperationKind.Invalid"/></description></item> 52/// <item><description><see cref="OperationKind.Block"/></description></item> 85/// <item><description><see cref="OperationKind.VariableDeclarationGroup"/></description></item> 113/// <item><description><see cref="OperationKind.Switch"/></description></item> 334/// <item><description><see cref="OperationKind.Labeled"/></description></item> 363/// <item><description><see cref="OperationKind.Branch"/></description></item> 391/// <item><description><see cref="OperationKind.Empty"/></description></item> 412/// <item><description><see cref="OperationKind.Return"/></description></item> 413/// <item><description><see cref="OperationKind.YieldBreak"/></description></item> 414/// <item><description><see cref="OperationKind.YieldReturn"/></description></item> 439/// <item><description><see cref="OperationKind.Lock"/></description></item> 468/// <item><description><see cref="OperationKind.Try"/></description></item> 505/// <item><description><see cref="OperationKind.Using"/></description></item> 543/// <item><description><see cref="OperationKind.ExpressionStatement"/></description></item> 567/// <item><description><see cref="OperationKind.LocalFunction"/></description></item> 605/// <item><description><see cref="OperationKind.Stop"/></description></item> 625/// <item><description><see cref="OperationKind.End"/></description></item> 645/// <item><description><see cref="OperationKind.RaiseEvent"/></description></item> 678/// <item><description><see cref="OperationKind.Literal"/></description></item> 699/// <item><description><see cref="OperationKind.Conversion"/></description></item> 766/// <item><description><see cref="OperationKind.Invocation"/></description></item> 812/// <item><description><see cref="OperationKind.ArrayElementReference"/></description></item> 841/// <item><description><see cref="OperationKind.LocalReference"/></description></item> 871/// <item><description><see cref="OperationKind.ParameterReference"/></description></item> 926/// <item><description><see cref="OperationKind.FieldReference"/></description></item> 959/// <item><description><see cref="OperationKind.MethodReference"/></description></item> 988/// <item><description><see cref="OperationKind.PropertyReference"/></description></item> 1021/// <item><description><see cref="OperationKind.EventReference"/></description></item> 1046/// <item><description><see cref="OperationKind.Unary"/></description></item> 1047/// <item><description><see cref="OperationKind.UnaryOperator"/></description></item> 1096/// <item><description><see cref="OperationKind.Binary"/></description></item> 1097/// <item><description><see cref="OperationKind.BinaryOperator"/></description></item> 1160/// <item><description><see cref="OperationKind.Conditional"/></description></item> 1204/// <item><description><see cref="OperationKind.Coalesce"/></description></item> 1240/// <item><description><see cref="OperationKind.AnonymousFunction"/></description></item> 1269/// <item><description><see cref="OperationKind.ObjectCreation"/></description></item> 1306/// <item><description><see cref="OperationKind.TypeParameterObjectCreation"/></description></item> 1331/// <item><description><see cref="OperationKind.ArrayCreation"/></description></item> 1362/// <item><description><see cref="OperationKind.InstanceReference"/></description></item> 1387/// <item><description><see cref="OperationKind.IsType"/></description></item> 1422/// <item><description><see cref="OperationKind.Await"/></description></item> 1472/// <item><description><see cref="OperationKind.SimpleAssignment"/></description></item> 1497/// <item><description><see cref="OperationKind.CompoundAssignment"/></description></item> 1547/// <item><description><see cref="OperationKind.Parenthesized"/></description></item> 1572/// <item><description><see cref="OperationKind.EventAssignment"/></description></item> 1606/// <item><description><see cref="OperationKind.ConditionalAccess"/></description></item> 1637/// <item><description><see cref="OperationKind.ConditionalAccessInstance"/></description></item> 1656/// <item><description><see cref="OperationKind.InterpolatedString"/></description></item> 1681/// <item><description><see cref="OperationKind.AnonymousObjectCreation"/></description></item> 1714/// <item><description><see cref="OperationKind.ObjectOrCollectionInitializer"/></description></item> 1745/// <item><description><see cref="OperationKind.MemberInitializer"/></description></item> 1772/// <item><description><see cref="OperationKind.CollectionElementInitializer"/></description></item> 1797/// <item><description><see cref="OperationKind.NameOf"/></description></item> 1822/// <item><description><see cref="OperationKind.Tuple"/></description></item> 1853/// <item><description><see cref="OperationKind.DynamicObjectCreation"/></description></item> 1882/// <item><description><see cref="OperationKind.DynamicMemberReference"/></description></item> 1934/// <item><description><see cref="OperationKind.DynamicInvocation"/></description></item> 1962/// <item><description><see cref="OperationKind.DynamicIndexerAccess"/></description></item> 1996/// <item><description><see cref="OperationKind.TranslatedQuery"/></description></item> 2021/// <item><description><see cref="OperationKind.DelegateCreation"/></description></item> 2045/// <item><description><see cref="OperationKind.DefaultValue"/></description></item> 2066/// <item><description><see cref="OperationKind.TypeOf"/></description></item> 2090/// <item><description><see cref="OperationKind.SizeOf"/></description></item> 2114/// <item><description><see cref="OperationKind.AddressOf"/></description></item> 2138/// <item><description><see cref="OperationKind.IsPattern"/></description></item> 2155/// Represents an <see cref="OperationKind.Increment" /> or <see cref="OperationKind.Decrement" /> operation. 2168/// <item><description><see cref="OperationKind.Increment"/></description></item> 2169/// <item><description><see cref="OperationKind.Decrement"/></description></item> 2219/// <item><description><see cref="OperationKind.Throw"/></description></item> 2243/// <item><description><see cref="OperationKind.DeconstructionAssignment"/></description></item> 2272/// <item><description><see cref="OperationKind.DeclarationExpression"/></description></item> 2296/// <item><description><see cref="OperationKind.OmittedArgument"/></description></item> 2342/// <item><description><see cref="OperationKind.FieldInitializer"/></description></item> 2367/// <item><description><see cref="OperationKind.VariableInitializer"/></description></item> 2388/// <item><description><see cref="OperationKind.PropertyInitializer"/></description></item> 2413/// <item><description><see cref="OperationKind.ParameterInitializer"/></description></item> 2438/// <item><description><see cref="OperationKind.ArrayInitializer"/></description></item> 2467/// <item><description><see cref="OperationKind.VariableDeclarator"/></description></item> 2512/// <item><description><see cref="OperationKind.VariableDeclaration"/></description></item> 2553/// <item><description><see cref="OperationKind.Argument"/></description></item> 2594/// <item><description><see cref="OperationKind.CatchClause"/></description></item> 2639/// <item><description><see cref="OperationKind.SwitchCase"/></description></item> 2826/// <item><description><see cref="OperationKind.InterpolatedStringText"/></description></item> 2851/// <item><description><see cref="OperationKind.Interpolation"/></description></item> 2907/// <item><description><see cref="OperationKind.ConstantPattern"/></description></item> 2931/// <item><description><see cref="OperationKind.DeclarationPattern"/></description></item> 2965/// <item><description><see cref="OperationKind.TupleBinary"/></description></item> 2966/// <item><description><see cref="OperationKind.TupleBinaryOperator"/></description></item> 3022/// <item><description><see cref="OperationKind.MethodBody"/></description></item> 3023/// <item><description><see cref="OperationKind.MethodBodyOperation"/></description></item> 3043/// <item><description><see cref="OperationKind.ConstructorBody"/></description></item> 3044/// <item><description><see cref="OperationKind.ConstructorBodyOperation"/></description></item> 3072/// <item><description><see cref="OperationKind.Discard"/></description></item> 3101/// <item><description><see cref="OperationKind.CoalesceAssignment"/></description></item> 3121/// <item><description><see cref="OperationKind.Range"/></description></item> 3161/// <item><description><see cref="OperationKind.ReDim"/></description></item> 3189/// <item><description><see cref="OperationKind.ReDimClause"/></description></item> 3211/// <item><description><see cref="OperationKind.RecursivePattern"/></description></item> 3253/// <item><description><see cref="OperationKind.DiscardPattern"/></description></item> 3273/// <item><description><see cref="OperationKind.SwitchExpression"/></description></item> 3299/// <item><description><see cref="OperationKind.SwitchExpressionArm"/></description></item> 3330/// <item><description><see cref="OperationKind.PropertySubpattern"/></description></item> 3471/// <item><description><see cref="OperationKind.UsingDeclaration"/></description></item> 3499/// <item><description><see cref="OperationKind.NegatedPattern"/></description></item> 3523/// <item><description><see cref="OperationKind.BinaryPattern"/></description></item> 3555/// <item><description><see cref="OperationKind.TypePattern"/></description></item> 3579/// <item><description><see cref="OperationKind.RelationalPattern"/></description></item> 3607/// <item><description><see cref="OperationKind.With"/></description></item> 3633/// <item><description><see cref="OperationKind.InterpolatedStringHandlerCreation"/></description></item> 3674/// <item><description><see cref="OperationKind.InterpolatedStringAddition"/></description></item> 3698/// <item><description><see cref="OperationKind.InterpolatedStringAppendLiteral"/></description></item> 3699/// <item><description><see cref="OperationKind.InterpolatedStringAppendFormatted"/></description></item> 3700/// <item><description><see cref="OperationKind.InterpolatedStringAppendInvalid"/></description></item> 3719/// <item><description><see cref="OperationKind.InterpolatedStringHandlerArgumentPlaceholder"/></description></item> 3742/// <item><description><see cref="OperationKind.FunctionPointerInvocation"/></description></item> 3764/// <item><description><see cref="OperationKind.ListPattern"/></description></item> 3796/// <item><description><see cref="OperationKind.SlicePattern"/></description></item> 3824/// <item><description><see cref="OperationKind.ImplicitIndexerReference"/></description></item> 3860/// <item><description><see cref="OperationKind.Utf8String"/></description></item> 3885/// <item><description><see cref="OperationKind.Attribute"/></description></item> 3909/// <item><description><see cref="OperationKind.InlineArrayAccess"/></description></item> 3937/// <item><description><see cref="OperationKind.CollectionExpression"/></description></item> 3995/// <item><description><see cref="OperationKind.Spread"/></description></item> 4027/// <item><description><see cref="OperationKind.CollectionExpressionElementsPlaceholder"/></description></item> 4092public override OperationKind Kind => OperationKind.Block; 4147public override OperationKind Kind => OperationKind.VariableDeclarationGroup; 4217public override OperationKind Kind => OperationKind.Switch; 4323public override OperationKind Kind => OperationKind.Loop; 4415public override OperationKind Kind => OperationKind.Loop; 4527public override OperationKind Kind => OperationKind.Loop; 4551public override OperationKind Kind => OperationKind.Loop; 4604public override OperationKind Kind => OperationKind.Labeled; 4624public override OperationKind Kind => OperationKind.Branch; 4638public override OperationKind Kind => OperationKind.Empty; 4644internal ReturnOperation(IOperation? returnedValue, OperationKind kind, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 4690public override OperationKind Kind { get; } 4754public override OperationKind Kind => OperationKind.Lock; 4833public override OperationKind Kind => OperationKind.Try; 4901public override OperationKind Kind => OperationKind.Using; 4952public override OperationKind Kind => OperationKind.ExpressionStatement; 5016public override OperationKind Kind => OperationKind.LocalFunction; 5030public override OperationKind Kind => OperationKind.Stop; 5044public override OperationKind Kind => OperationKind.End; 5110public override OperationKind Kind => OperationKind.RaiseEvent; 5128public override OperationKind Kind => OperationKind.Literal; 5188public override OperationKind Kind => OperationKind.Conversion; 5261public override OperationKind Kind => OperationKind.Invocation; 5328public override OperationKind Kind => OperationKind.ArrayElementReference; 5350public override OperationKind Kind => OperationKind.LocalReference; 5369public override OperationKind Kind => OperationKind.ParameterReference; 5434public override OperationKind Kind => OperationKind.FieldReference; 5490public override OperationKind Kind => OperationKind.MethodReference; 5559public override OperationKind Kind => OperationKind.PropertyReference; 5613public override OperationKind Kind => OperationKind.EventReference; 5676public override OperationKind Kind => OperationKind.Unary; 5754public override OperationKind Kind => OperationKind.Binary; 5831public override OperationKind Kind => OperationKind.Conditional; 5898public override OperationKind Kind => OperationKind.Coalesce; 5951public override OperationKind Kind => OperationKind.AnonymousFunction; 6021public override OperationKind Kind => OperationKind.ObjectCreation; 6073public override OperationKind Kind => OperationKind.TypeParameterObjectCreation; 6140public override OperationKind Kind => OperationKind.ArrayCreation; 6159public override OperationKind Kind => OperationKind.InstanceReference; 6215public override OperationKind Kind => OperationKind.IsType; 6267public override OperationKind Kind => OperationKind.Await; 6340public override OperationKind Kind => OperationKind.SimpleAssignment; 6415public override OperationKind Kind => OperationKind.CompoundAssignment; 6468public override OperationKind Kind => OperationKind.Parenthesized; 6533public override OperationKind Kind => OperationKind.EventAssignment; 6596public override OperationKind Kind => OperationKind.ConditionalAccess; 6613public override OperationKind Kind => OperationKind.ConditionalAccessInstance; 6670public override OperationKind Kind => OperationKind.InterpolatedString; 6726public override OperationKind Kind => OperationKind.AnonymousObjectCreation; 6782public override OperationKind Kind => OperationKind.ObjectOrCollectionInitializer; 6845public override OperationKind Kind => OperationKind.MemberInitializer; 6898public override OperationKind Kind => OperationKind.NameOf; 6956public override OperationKind Kind => OperationKind.Tuple; 7014public override OperationKind Kind => OperationKind.DynamicMemberReference; 7066public override OperationKind Kind => OperationKind.TranslatedQuery; 7118public override OperationKind Kind => OperationKind.DelegateCreation; 7136public override OperationKind Kind => OperationKind.DefaultValue; 7155public override OperationKind Kind => OperationKind.TypeOf; 7175public override OperationKind Kind => OperationKind.SizeOf; 7227public override OperationKind Kind => OperationKind.AddressOf; 7290public override OperationKind Kind => OperationKind.IsPattern; 7296internal IncrementOrDecrementOperation(bool isPostfix, bool isLifted, bool isChecked, IOperation target, IMethodSymbol? operatorMethod, ITypeSymbol? constrainedToType, OperationKind kind, SemanticModel? semanticModel, SyntaxNode syntax, ITypeSymbol? type, bool isImplicit) 7353public override OperationKind Kind { get; } 7405public override OperationKind Kind => OperationKind.Throw; 7464public override OperationKind Kind => OperationKind.DeconstructionAssignment; 7516public override OperationKind Kind => OperationKind.DeclarationExpression; 7533public override OperationKind Kind => OperationKind.OmittedArgument; 7595public override OperationKind Kind => OperationKind.FieldInitializer; 7642public override OperationKind Kind => OperationKind.VariableInitializer; 7693public override OperationKind Kind => OperationKind.PropertyInitializer; 7744public override OperationKind Kind => OperationKind.ParameterInitializer; 7799public override OperationKind Kind => OperationKind.ArrayInitializer; 7867public override OperationKind Kind => OperationKind.VariableDeclarator; 7948public override OperationKind Kind => OperationKind.VariableDeclaration; 8009public override OperationKind Kind => OperationKind.Argument; 8086public override OperationKind Kind => OperationKind.CatchClause; 8160public override OperationKind Kind => OperationKind.SwitchCase; 8184public override OperationKind Kind => OperationKind.CaseClause; 8247public override OperationKind Kind => OperationKind.CaseClause; 8309public override OperationKind Kind => OperationKind.CaseClause; 8362public override OperationKind Kind => OperationKind.CaseClause; 8413public override OperationKind Kind => OperationKind.CaseClause; 8469public override OperationKind Kind => OperationKind.InterpolatedStringText; 8542public override OperationKind Kind => OperationKind.Interpolation; 8604public override OperationKind Kind => OperationKind.ConstantPattern; 8626public override OperationKind Kind => OperationKind.DeclarationPattern; 8691public override OperationKind Kind => OperationKind.TupleBinary; 8758public override OperationKind Kind => OperationKind.MethodBody; 8829public override OperationKind Kind => OperationKind.ConstructorBody; 8848public override OperationKind Kind => OperationKind.Discard; 8901public override OperationKind Kind => OperationKind.FlowCapture; 8923public override OperationKind Kind => OperationKind.FlowCaptureReference; 8976public override OperationKind Kind => OperationKind.IsNull; 8993public override OperationKind Kind => OperationKind.CaughtException; 9012public override OperationKind Kind => OperationKind.StaticLocalInitializationSemaphore; 9071public override OperationKind Kind => OperationKind.CoalesceAssignment; 9138public override OperationKind Kind => OperationKind.Range; 9195public override OperationKind Kind => OperationKind.ReDim; 9261public override OperationKind Kind => OperationKind.ReDimClause; 9337public override OperationKind Kind => OperationKind.RecursivePattern; 9351public override OperationKind Kind => OperationKind.DiscardPattern; 9420public override OperationKind Kind => OperationKind.SwitchExpression; 9495public override OperationKind Kind => OperationKind.SwitchExpressionArm; 9557public override OperationKind Kind => OperationKind.PropertySubpattern; 9620public override OperationKind Kind => OperationKind.None; 9684public override OperationKind Kind => OperationKind.None; 9736public override OperationKind Kind => OperationKind.None; 9755public override OperationKind Kind => OperationKind.None; 9817public override OperationKind Kind => OperationKind.None; 9872public override OperationKind Kind => OperationKind.UsingDeclaration; 9923public override OperationKind Kind => OperationKind.NegatedPattern; 9987public override OperationKind Kind => OperationKind.BinaryPattern; 10005public override OperationKind Kind => OperationKind.TypePattern; 10058public override OperationKind Kind => OperationKind.RelationalPattern; 10123public override OperationKind Kind => OperationKind.With; 10190public override OperationKind Kind => OperationKind.InterpolatedStringHandlerCreation; 10252public override OperationKind Kind => OperationKind.InterpolatedStringAddition; 10258internal InterpolatedStringAppendOperation(IOperation appendCall, OperationKind kind, SemanticModel? semanticModel, SyntaxNode syntax, bool isImplicit) 10304public override OperationKind Kind { get; } 10324public override OperationKind Kind => OperationKind.InterpolatedStringHandlerArgumentPlaceholder; 10391public override OperationKind Kind => OperationKind.FunctionPointerInvocation; 10452public override OperationKind Kind => OperationKind.ListPattern; 10505public override OperationKind Kind => OperationKind.SlicePattern; 10572public override OperationKind Kind => OperationKind.ImplicitIndexerReference; 10591public override OperationKind Kind => OperationKind.Utf8String; 10642public override OperationKind Kind => OperationKind.Attribute; 10705public override OperationKind Kind => OperationKind.InlineArrayAccess; 10778public override OperationKind Kind => OperationKind.CollectionExpression; 10834public override OperationKind Kind => OperationKind.Spread; 10851public override OperationKind Kind => OperationKind.CollectionExpressionElementsPlaceholder;
Operations\ControlFlowGraph.cs (2)
40Debug.Assert(parent != null == (originalOperation.Kind == OperationKind.LocalFunction || originalOperation.Kind == OperationKind.AnonymousFunction));
Operations\ControlFlowGraphBuilder.cs (100)
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: 869value.Kind != OperationKind.LocalReference || 1288|| slot.operationOpt.Kind == OperationKind.FlowCaptureReference 1289|| slot.operationOpt.Kind == OperationKind.DeclarationExpression 1290|| slot.operationOpt.Kind == OperationKind.Discard 1291|| slot.operationOpt.Kind == OperationKind.OmittedArgument 1292|| slot.operationOpt.Kind == OperationKind.CollectionExpressionElementsPlaceholder)); 1628if (operation.WhenTrue is IConversionOperation whenTrueConversion && whenTrueConversion.Operand.Kind == OperationKind.Throw) 1631Debug.Assert(rewrittenThrow!.Kind == OperationKind.None); 1640else if (operation.WhenFalse is IConversionOperation whenFalseConversion && whenFalseConversion.Operand.Kind == OperationKind.Throw) 1649Debug.Assert(rewrittenThrow.Kind == OperationKind.None); 1696if (result.Kind != OperationKind.FlowCaptureReference || 1858if (operationOpt.Kind != OperationKind.FlowCaptureReference 1859&& operationOpt.Kind != OperationKind.DeclarationExpression 1860&& operationOpt.Kind != OperationKind.Discard 1861&& operationOpt.Kind != OperationKind.OmittedArgument 1862&& operationOpt.Kind != OperationKind.CollectionExpressionElementsPlaceholder) 2735if (condition.Kind == OperationKind.Binary) 2799case OperationKind.Binary: 2864case OperationKind.Unary: 2875case OperationKind.Conditional: 2900case OperationKind.Coalesce: 2932case OperationKind.Conversion: 2935if (conversion.Operand.Kind == OperationKind.Throw) 2939Debug.Assert(rewrittenThrow.Kind == OperationKind.None); 2962while (condition.Kind == OperationKind.Parenthesized) 3055bool alternativeThrows = conversion?.Operand.Kind == OperationKind.Throw; 3081Debug.Assert(rewrittenThrow.Kind == OperationKind.None); 3114bool isStatement = _currentStatement == operation || operation.Parent.Kind == OperationKind.ExpressionStatement; 3377bool isOnStatementLevel = _currentStatement == operation || (_currentStatement == operation.Parent && _currentStatement?.Kind == OperationKind.ExpressionStatement); 3572Debug.Assert(operation.Operation.Kind == OperationKind.ConditionalAccess || operation.Operation.Kind == OperationKind.CoalesceAssignment); 3575else if (operation.Operation.Kind == OperationKind.Throw) 3801if (exceptionDeclarationOrExpression.Kind == OperationKind.VariableDeclarator) 3844case OperationKind.YieldReturn: 3845AddStatement(new ReturnOperation(returnedValue, OperationKind.YieldReturn, semanticModel: null, operation.Syntax, IsImplicit(operation))); 3848case OperationKind.YieldBreak: 3849case OperationKind.Return: 3996Debug.Assert(resources.Kind != OperationKind.VariableDeclaration); 3997Debug.Assert(resources.Kind != OperationKind.VariableDeclarator); 4475if (!operation.Locals.IsEmpty && operation.LoopControlVariable.Kind == OperationKind.VariableDeclarator) 4669case OperationKind.VariableDeclarator: 4689case OperationKind.Tuple: 4690case OperationKind.DeclarationExpression: 5366Debug.Assert(controlVariableReferenceForAssignment.Kind == OperationKind.FlowCaptureReference); 5438case OperationKind.VariableDeclarator: 5750if (initialization.Length == 1 && initialization[0].Kind == OperationKind.VariableDeclarationGroup) 6060case OperationKind.MemberInitializer: 6064case OperationKind.SimpleAssignment: 6074var validKinds = ImmutableArray.Create(OperationKind.Invocation, OperationKind.DynamicInvocation, OperationKind.Increment, OperationKind.Literal, 6075OperationKind.LocalReference, OperationKind.Binary, OperationKind.FieldReference, OperationKind.Invalid, 6076OperationKind.InterpolatedString); 6173case OperationKind.FieldReference: 6174case OperationKind.EventReference: 6175case OperationKind.PropertyReference: 6178if (memberReference.Kind == OperationKind.PropertyReference) 6197case OperationKind.ArrayElementReference: 6204case OperationKind.ImplicitIndexerReference: 6211case OperationKind.DynamicIndexerAccess: 6218case OperationKind.DynamicMemberReference: 6231Debug.Assert(instance.Kind == OperationKind.Invalid || instance.Kind == OperationKind.None); 6241case OperationKind.FieldReference: 6246case OperationKind.EventReference: 6251case OperationKind.PropertyReference: 6257case OperationKind.ArrayElementReference: 6263case OperationKind.ImplicitIndexerReference: 6270case OperationKind.DynamicIndexerAccess: 6276case OperationKind.DynamicMemberReference: 6406Debug.Assert(propertyReference.Instance.Kind == OperationKind.InstanceReference); 6517if (elementValue.Kind == OperationKind.ArrayInitializer) 6536if (elementValue.Kind == OperationKind.ArrayInitializer) 6645if (operation.Operation.Kind == OperationKind.DynamicMemberReference) 6661if (operation.Operation.Kind == OperationKind.DynamicMemberReference) 6706if (value.Kind == OperationKind.Tuple) 6726if (value.Kind == OperationKind.Tuple) 7069if (element.Kind == OperationKind.Interpolation) 7367case OperationKind.EventReference: 7370case OperationKind.Parenthesized: 7490if (children.Count != 0 && children.Last().Kind == OperationKind.ObjectOrCollectionInitializer) 7865if (statement.Kind == OperationKind.LocalFunction) 8029if (simpleAssignment.Target.Kind != OperationKind.PropertyReference) 8041Debug.Assert(propertyReference.Instance.Kind == OperationKind.InstanceReference); 8122if (simpleAssignment.Target.Kind != OperationKind.PropertyReference)
Operations\IOperation.cs (1)
30OperationKind Kind { get; }
Operations\Operation.cs (1)
65public abstract OperationKind Kind { get; }
Operations\OperationMapBuilder.cs (1)
114$"Duplicate operation node for {operation.Syntax}. Existing node is {(argument.TryGetValue(operation.Syntax, out var original) ? (OperationKind?)original.Kind : null)}, new node is {operation.Kind}.");
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.Analyzers (174)
FixAnalyzers\FixerWithFixAllAnalyzer.cs (2)
188OperationKind.Invocation); 199OperationKind.ObjectCreation);
ImmutableObjectMethodAnalyzer.cs (1)
66context.RegisterOperationAction(context => AnalyzeInvocationForIgnoredReturnValue(context, immutableTypeSymbols), OperationKind.Invocation);
MetaAnalyzers\CompareSymbolsCorrectlyAnalyzer.cs (3)
101OperationKind.BinaryOperator); 109OperationKind.Invocation); 120OperationKind.ObjectCreation);
MetaAnalyzers\ConfigureGeneratedCodeAnalysisAnalyzer.cs (2)
84context.RegisterOperationAction(analyzer.HandleInvocationOperation, OperationKind.Invocation); 116if (invocation.Instance?.Kind != OperationKind.ParameterReference)
MetaAnalyzers\DiagnosticDescriptorCreationAnalyzer.cs (5)
283}, OperationKind.FieldInitializer); 301}, OperationKind.FieldInitializer); 358if (invocation.GetAncestor<IInvocationOperation>(OperationKind.Invocation, 372if (variableInitializer.GetAncestor<IVariableDeclarationOperation>(OperationKind.VariableDeclaration) is { } variableDeclaration) 411}, OperationKind.Invocation);
MetaAnalyzers\DoNotUseCompilationGetSemanticModelAnalyzer.cs (1)
70}, OperationKind.Invocation);
MetaAnalyzers\EnableConcurrentExecutionAnalyzer.cs (2)
84context.RegisterOperationAction(analyzer.HandleInvocationOperation, OperationKind.Invocation); 116if (invocation.Instance?.Kind != OperationKind.ParameterReference)
MetaAnalyzers\Fixers\CompareSymbolsCorrectlyFix.cs (1)
227if (instance.Kind != OperationKind.ConditionalAccessInstance)
MetaAnalyzers\PreferIsKindAnalyzer.cs (1)
65context.RegisterOperationAction(context => HandleBinaryOperation(context, containingTypeMap), OperationKind.Binary);
src\roslyn\src\RoslynAnalyzers\Microsoft.CodeAnalysis.BannedApiAnalyzers\Core\SymbolIsBannedAnalyzerBase.cs (14)
154OperationKind.ObjectCreation, 155OperationKind.Invocation, 156OperationKind.EventReference, 157OperationKind.FieldReference, 158OperationKind.MethodReference, 159OperationKind.PropertyReference, 160OperationKind.ArrayCreation, 161OperationKind.AddressOf, 162OperationKind.Conversion, 163OperationKind.UnaryOperator, 164OperationKind.BinaryOperator, 165OperationKind.Increment, 166OperationKind.Decrement, 167OperationKind.TypeOf);
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (71)
24internal static readonly ComputationalComplexityMetrics Default = new(0, 0, 0, 0, 0, ImmutableHashSet<OperationKind>.Empty, 29private readonly ImmutableHashSet<OperationKind> _distinctOperatorKinds; 42ImmutableHashSet<OperationKind> distinctOperatorKinds, 68ImmutableHashSet<OperationKind> distinctOperatorKinds, 94ImmutableHashSet<OperationKind>.Builder? distinctOperatorKindsBuilder = null; 102if ((operationBlock.Kind is OperationKind.None or OperationKind.Attribute) && 136case OperationKind.LocalReference: 139case OperationKind.ParameterReference: 142case OperationKind.FieldReference: 143case OperationKind.MethodReference: 144case OperationKind.PropertyReference: 145case OperationKind.EventReference: 151case OperationKind.FieldInitializer: 159case OperationKind.PropertyInitializer: 167case OperationKind.ParameterInitializer: 171case OperationKind.VariableInitializer: 175case OperationKind.VariableDeclarator: 185case OperationKind.Invocation: 194case OperationKind.ObjectCreation: 198case OperationKind.DelegateCreation: 199case OperationKind.AnonymousObjectCreation: 200case OperationKind.TypeParameterObjectCreation: 201case OperationKind.DynamicObjectCreation: 202case OperationKind.DynamicInvocation: 207case OperationKind.BinaryOperator: 210case OperationKind.CompoundAssignment: 213case OperationKind.TupleBinaryOperator: 216case OperationKind.UnaryOperator: 219case OperationKind.CaseClause: 235case OperationKind.Increment: 236case OperationKind.Decrement: 237case OperationKind.SimpleAssignment: 238case OperationKind.DeconstructionAssignment: 239case OperationKind.EventAssignment: 240case OperationKind.Coalesce: 241case OperationKind.ConditionalAccess: 242case OperationKind.Conversion: 243case OperationKind.ArrayElementReference: 244case OperationKind.Await: 245case OperationKind.NameOf: 246case OperationKind.SizeOf: 247case OperationKind.TypeOf: 248case OperationKind.AddressOf: 249case OperationKind.MemberInitializer: 250case OperationKind.IsType: 251case OperationKind.IsPattern: 252case OperationKind.Parenthesized: 257case OperationKind.ArrayCreation: 258case OperationKind.ArrayInitializer: 259case OperationKind.DynamicMemberReference: 260case OperationKind.DynamicIndexerAccess: 261case OperationKind.Tuple: 262case OperationKind.Lock: 263case OperationKind.Using: 264case OperationKind.Throw: 265case OperationKind.RaiseEvent: 266case OperationKind.InterpolatedString: 271case OperationKind.Return: 272case OperationKind.YieldBreak: 273case OperationKind.YieldReturn: 289distinctOperatorKindsBuilder != null ? distinctOperatorKindsBuilder.ToImmutable() : ImmutableHashSet<OperationKind>.Empty, 302case OperationKind.Block: 305case OperationKind.FieldInitializer: 306case OperationKind.PropertyInitializer: 307case OperationKind.ParameterInitializer: 316case OperationKind.Conditional: 318return operation.Kind == OperationKind.Conditional && hasAnyExplicitExpression(operation) ? 1 : 0; 328return !operation.DescendantsAndSelf().All(o => o.IsImplicit || (!o.ConstantValue.HasValue && o.Type == null && o.Kind is not (OperationKind.Branch or OperationKind.Attribute))); 334distinctOperatorKindsBuilder ??= ImmutableHashSet.CreateBuilder<OperationKind>();
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (11)
262case OperationKind.Block: 263case OperationKind.MethodBodyOperation: 264case OperationKind.ConstructorBodyOperation: 268case OperationKind.Attribute: 269case OperationKind.None: 328case OperationKind.CaseClause: 329case OperationKind.Coalesce: 330case OperationKind.Conditional: 331case OperationKind.ConditionalAccess: 332case OperationKind.Loop: 335case OperationKind.BinaryOperator:
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (22)
116/// True if this operation has no IOperation API support, i.e. <see cref="OperationKind.None"/> and 122return operation is { Kind: OperationKind.None, Parent: null }; 131public static TOperation? GetAncestor<TOperation>(this IOperation root, OperationKind ancestorKind, Func<TOperation, bool>? predicate = null) 166public static IOperation? GetAncestor(this IOperation root, ImmutableArray<OperationKind> ancestorKinds, Func<IOperation, bool>? predicate = null) 196return operation.GetAncestor(OperationKind.ConditionalAccess, (IConditionalAccessOperation c) => c.Operation.Syntax == operation.Syntax); 211(operation.GetAncestor<IAnonymousObjectCreationOperation>(OperationKind.AnonymousObjectCreation) != null)); 215for (IOperation? current = operation; current != null && current.Kind != OperationKind.Block; current = current.Parent) 223case OperationKind.AnonymousObjectCreation: 320Debug.Assert(operation.Kind is OperationKind.None or OperationKind.Attribute, $"Unexpected root operation kind: {operation.Kind}"); 346case OperationKind.LocalReference: 350case OperationKind.ParameterReference: 354case OperationKind.InstanceReference: 358case OperationKind.AnonymousFunction: 362case OperationKind.LocalFunction: 381private static readonly ImmutableArray<OperationKind> s_LambdaAndLocalFunctionKinds = 382ImmutableArray.Create(OperationKind.AnonymousFunction, OperationKind.LocalFunction); 421case OperationKind.Parenthesized: 422case OperationKind.Conversion: 423case OperationKind.DeclarationExpression: 428case OperationKind.Tuple:
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\OperationKinds.cs (5)
12public static ImmutableArray<OperationKind> MemberReference { get; } 14OperationKind.EventReference, 15OperationKind.FieldReference, 16OperationKind.MethodReference, 17OperationKind.PropertyReference);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ControlFlowGraphExtensions.cs (1)
30public static IEnumerable<T> DescendantOperations<T>(this ControlFlowGraph cfg, OperationKind operationKind)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (9)
21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 246case OperationKind.AnonymousFunction: 249case OperationKind.LocalFunction: 270case OperationKind.DeconstructionAssignment: 274case OperationKind.Tuple: 275case OperationKind.Conversion: 276case OperationKind.Parenthesized: 374public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, OperationKind kind) 378=> operation.Kind == OperationKind.Literal && operation.Type.IsNumericType();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SemanticEquivalence.cs (1)
126=> operation is IMemberReferenceOperation { Instance.Kind: OperationKind.InstanceReference };
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (1)
54foreach (var flowCaptureReference in cfg.DescendantOperations<IFlowCaptureReferenceOperation>(OperationKind.FlowCaptureReference))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (2)
207if (operation.Kind is OperationKind.LocalFunction or OperationKind.AnonymousFunction)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (15)
153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 161Debug.Assert(symbolOpt != null || operation.Kind == OperationKind.FlowCaptureReference); 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 195if (write.Kind != OperationKind.FlowCaptureReference) 438case OperationKind.Conversion: 442case OperationKind.Parenthesized: 446case OperationKind.DelegateCreation: 450case OperationKind.AnonymousFunction: 456case OperationKind.FlowAnonymousFunction: 460case OperationKind.MethodReference: 473case OperationKind.LocalReference: 478case OperationKind.ParameterReference: 483case OperationKind.Literal: 553case OperationKind.FlowAnonymousFunction: 557case OperationKind.MethodReference:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (2)
479operation is { Kind: OperationKind.Literal, ConstantValue: { HasValue: true, Value: true } }) 485operation is { Kind: OperationKind.Literal, ConstantValue: { HasValue: true, Value: false } })
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\AbstractInitializerParameterService.cs (2)
66case OperationKind.AnonymousFunction: 69case OperationKind.Block:
Microsoft.CodeAnalysis.AnalyzerUtilities (210)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (71)
24internal static readonly ComputationalComplexityMetrics Default = new(0, 0, 0, 0, 0, ImmutableHashSet<OperationKind>.Empty, 29private readonly ImmutableHashSet<OperationKind> _distinctOperatorKinds; 42ImmutableHashSet<OperationKind> distinctOperatorKinds, 68ImmutableHashSet<OperationKind> distinctOperatorKinds, 94ImmutableHashSet<OperationKind>.Builder? distinctOperatorKindsBuilder = null; 102if ((operationBlock.Kind is OperationKind.None or OperationKind.Attribute) && 136case OperationKind.LocalReference: 139case OperationKind.ParameterReference: 142case OperationKind.FieldReference: 143case OperationKind.MethodReference: 144case OperationKind.PropertyReference: 145case OperationKind.EventReference: 151case OperationKind.FieldInitializer: 159case OperationKind.PropertyInitializer: 167case OperationKind.ParameterInitializer: 171case OperationKind.VariableInitializer: 175case OperationKind.VariableDeclarator: 185case OperationKind.Invocation: 194case OperationKind.ObjectCreation: 198case OperationKind.DelegateCreation: 199case OperationKind.AnonymousObjectCreation: 200case OperationKind.TypeParameterObjectCreation: 201case OperationKind.DynamicObjectCreation: 202case OperationKind.DynamicInvocation: 207case OperationKind.BinaryOperator: 210case OperationKind.CompoundAssignment: 213case OperationKind.TupleBinaryOperator: 216case OperationKind.UnaryOperator: 219case OperationKind.CaseClause: 235case OperationKind.Increment: 236case OperationKind.Decrement: 237case OperationKind.SimpleAssignment: 238case OperationKind.DeconstructionAssignment: 239case OperationKind.EventAssignment: 240case OperationKind.Coalesce: 241case OperationKind.ConditionalAccess: 242case OperationKind.Conversion: 243case OperationKind.ArrayElementReference: 244case OperationKind.Await: 245case OperationKind.NameOf: 246case OperationKind.SizeOf: 247case OperationKind.TypeOf: 248case OperationKind.AddressOf: 249case OperationKind.MemberInitializer: 250case OperationKind.IsType: 251case OperationKind.IsPattern: 252case OperationKind.Parenthesized: 257case OperationKind.ArrayCreation: 258case OperationKind.ArrayInitializer: 259case OperationKind.DynamicMemberReference: 260case OperationKind.DynamicIndexerAccess: 261case OperationKind.Tuple: 262case OperationKind.Lock: 263case OperationKind.Using: 264case OperationKind.Throw: 265case OperationKind.RaiseEvent: 266case OperationKind.InterpolatedString: 271case OperationKind.Return: 272case OperationKind.YieldBreak: 273case OperationKind.YieldReturn: 289distinctOperatorKindsBuilder != null ? distinctOperatorKindsBuilder.ToImmutable() : ImmutableHashSet<OperationKind>.Empty, 302case OperationKind.Block: 305case OperationKind.FieldInitializer: 306case OperationKind.PropertyInitializer: 307case OperationKind.ParameterInitializer: 316case OperationKind.Conditional: 318return operation.Kind == OperationKind.Conditional && hasAnyExplicitExpression(operation) ? 1 : 0; 328return !operation.DescendantsAndSelf().All(o => o.IsImplicit || (!o.ConstantValue.HasValue && o.Type == null && o.Kind is not (OperationKind.Branch or OperationKind.Attribute))); 334distinctOperatorKindsBuilder ??= ImmutableHashSet.CreateBuilder<OperationKind>();
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (11)
262case OperationKind.Block: 263case OperationKind.MethodBodyOperation: 264case OperationKind.ConstructorBodyOperation: 268case OperationKind.Attribute: 269case OperationKind.None: 328case OperationKind.CaseClause: 329case OperationKind.Coalesce: 330case OperationKind.Conditional: 331case OperationKind.ConditionalAccess: 332case OperationKind.Loop: 335case OperationKind.BinaryOperator:
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (22)
116/// True if this operation has no IOperation API support, i.e. <see cref="OperationKind.None"/> and 122return operation is { Kind: OperationKind.None, Parent: null }; 131public static TOperation? GetAncestor<TOperation>(this IOperation root, OperationKind ancestorKind, Func<TOperation, bool>? predicate = null) 166public static IOperation? GetAncestor(this IOperation root, ImmutableArray<OperationKind> ancestorKinds, Func<IOperation, bool>? predicate = null) 196return operation.GetAncestor(OperationKind.ConditionalAccess, (IConditionalAccessOperation c) => c.Operation.Syntax == operation.Syntax); 211(operation.GetAncestor<IAnonymousObjectCreationOperation>(OperationKind.AnonymousObjectCreation) != null)); 215for (IOperation? current = operation; current != null && current.Kind != OperationKind.Block; current = current.Parent) 223case OperationKind.AnonymousObjectCreation: 320Debug.Assert(operation.Kind is OperationKind.None or OperationKind.Attribute, $"Unexpected root operation kind: {operation.Kind}"); 346case OperationKind.LocalReference: 350case OperationKind.ParameterReference: 354case OperationKind.InstanceReference: 358case OperationKind.AnonymousFunction: 362case OperationKind.LocalFunction: 381private static readonly ImmutableArray<OperationKind> s_LambdaAndLocalFunctionKinds = 382ImmutableArray.Create(OperationKind.AnonymousFunction, OperationKind.LocalFunction); 421case OperationKind.Parenthesized: 422case OperationKind.Conversion: 423case OperationKind.DeclarationExpression: 428case OperationKind.Tuple:
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\OperationKinds.cs (5)
12public static ImmutableArray<OperationKind> MemberReference { get; } 14OperationKind.EventReference, 15OperationKind.FieldReference, 16OperationKind.MethodReference, 17OperationKind.PropertyReference);
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\Extensions\ControlFlowGraphExtensions.cs (3)
22cfg.OriginalOperation.Kind is OperationKind.Attribute or OperationKind.None or OperationKind.ParameterInitializer)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\DisposeAnalysis\DisposeAnalysis.DisposeDataFlowOperationVisitor.cs (3)
243operation.Kind != OperationKind.ObjectCreation && 279if (visitedInstance?.Kind != OperationKind.InstanceReference) 403operation.Instance?.Kind == OperationKind.InstanceReference)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\DisposeAnalysis\DisposeAnalysisHelper.cs (5)
37private static readonly ImmutableHashSet<OperationKind> s_DisposableCreationKinds = ImmutableHashSet.Create( 38OperationKind.ObjectCreation, 39OperationKind.TypeParameterObjectCreation, 40OperationKind.DynamicObjectCreation, 41OperationKind.Invocation);
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\ParameterValidationAnalysis\ParameterValidationAnalysis.ParameterValidationDataFlowOperationVisitor.cs (1)
157if (operation.Kind == OperationKind.ConditionalAccessInstance)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PointsToAnalysis\PointsToAnalysis.PointsToDataFlowOperationVisitor.cs (2)
724target.Kind == OperationKind.ArrayElementReference) 880var arrayCreation = operation.GetAncestor<IArrayCreationOperation>(OperationKind.ArrayCreation);
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PropertySetAnalysis\PropertySetAnalysis.cs (1)
231OperationKind.FlowAnonymousFunction))
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\PropertySetAnalysis\PropertySetAnalysis.PropertySetDataFlowOperationVisitor.cs (10)
225&& (operation.Target.Kind == OperationKind.PropertyReference 226|| operation.Target.Kind == OperationKind.FieldReference 227|| operation.Target.Kind == OperationKind.FlowCaptureReference)) 230if (operation.Target.Kind == OperationKind.FlowCaptureReference) 232if (this.TryUnwrapFlowCaptureReference(operation.Target, out IOperation? lValueOperation, OperationKind.PropertyReference, OperationKind.FieldReference)) 277if (propertyReferenceOperation == null && operation.Target.Kind == OperationKind.FlowCaptureReference) 279this.TryUnwrapFlowCaptureReference(operation.Target, out IOperation? lValue, OperationKind.PropertyReference); 705private bool TryUnwrapFlowCaptureReference(IOperation flowCaptureReferenceOperation, [NotNullWhen(returnValue: true)] out IOperation? unwrappedOperation, params OperationKind[] kinds) 708if (flowCaptureReferenceOperation != null && flowCaptureReferenceOperation.Kind == OperationKind.FlowCaptureReference)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\TaintedDataAnalysis\ITaintedDataInfo.cs (1)
32/// Indicates that <see cref="OperationKind.ParameterReference"/> is required.
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\TaintedDataAnalysis\SanitizerInfo.cs (1)
76/// Indicates that <see cref="OperationKind.ParameterReference"/> is required.
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\TaintedDataAnalysis\SinkInfo.cs (1)
64/// Indicates that <see cref="OperationKind.ParameterReference"/> is required.
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\TaintedDataAnalysis\SourceInfo.cs (1)
189/// Indicates that <see cref="OperationKind.ParameterReference"/> is required.
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\TaintedDataAnalysis\TaintedDataAnalysis.TaintedDataOperationVisitor.cs (1)
504IArrayCreationOperation? arrayCreationOperation = operation.GetAncestor<IArrayCreationOperation>(OperationKind.ArrayCreation);
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\TaintedDataAnalysis\TaintedDataSymbolMap.cs (1)
104/// Indicates that <see cref="OperationKind.ParameterReference"/> is required.
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Analysis\ValueContentAnalysis\ValueContentAnalysis.ValueContentDataFlowOperationVisitor.cs (2)
189return operation.Kind == OperationKind.None ? 245var operationKind = operation.Kind == OperationKind.Increment ? BinaryOperatorKind.Add : BinaryOperatorKind.Subtract;
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowAnalysisResult.cs (5)
118Debug.Assert(operation.GetAncestor<IBlockOperation>(OperationKind.Block, predicate: b => b.Parent == null) == null); 123public TAbstractAnalysisValue this[OperationKind operationKind, SyntaxNode syntax] 170Debug.Assert(lambdaOrLocalFunctionOperation.Kind is OperationKind.AnonymousFunction or OperationKind.LocalFunction); 189if (lambdaOrLocalFunctionOperation.Kind == OperationKind.LocalFunction)
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\DataFlowOperationVisitor.cs (32)
906instance.Kind != OperationKind.InstanceReference && 1256if (sourceOperand.Kind == OperationKind.Throw) 1389Debug.Assert(operation.Kind is OperationKind.BinaryOperator or 1390OperationKind.UnaryOperator or 1391OperationKind.IsNull or 1392OperationKind.Invocation or 1393OperationKind.Argument or 1394OperationKind.FlowCaptureReference or 1395OperationKind.IsPattern); 1408if (operation.Kind == OperationKind.FlowCaptureReference) 1432if (operation.Kind == OperationKind.FlowCaptureReference) 1489if (operation.Kind == OperationKind.Argument) 1500case OperationKind.Conversion: 1501case OperationKind.Parenthesized: 1520case OperationKind.Conversion: 1521case OperationKind.Parenthesized: 1525case OperationKind.FlowCapture: 1565case OperationKind.DeclarationPattern: 1581case OperationKind.DiscardPattern: 1582case OperationKind.RecursivePattern: 1591case OperationKind.ConstantPattern: 1597case OperationKind.NegatedPattern: 1607case OperationKind.RelationalPattern: 1616case OperationKind.BinaryPattern: 2485Debug.Assert(originalOperation.Kind == OperationKind.ObjectCreation); 2578case OperationKind.FlowCapture: 2579case OperationKind.FlowCaptureReference: 2807if (operation.Kind == OperationKind.None) 2898var arrayCreation = operation.GetAncestor<IArrayCreationOperation>(OperationKind.ArrayCreation); 2976.DescendantOperations<IFlowCaptureOperation>(OperationKind.FlowCapture) 3676var deconstructionAncestor = operation.GetAncestor<IDeconstructionAssignmentOperation>(OperationKind.DeconstructionAssignment); 3828Debug.Assert(operation.Kind == OperationKind.YieldReturn, "IReturnOperation must have been lowered in the CFG");
src\roslyn\src\RoslynAnalyzers\Utilities\FlowAnalysis\FlowAnalysis\Framework\DataFlow\LValueFlowCapturesProvider.cs (2)
34foreach (var flowCaptureReference in cfg.DescendantOperations<IFlowCaptureReferenceOperation>(OperationKind.FlowCaptureReference)) 65operations.Single().Parent?.Kind == OperationKind.FlowCapture)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ControlFlowGraphExtensions.cs (1)
30public static IEnumerable<T> DescendantOperations<T>(this ControlFlowGraph cfg, OperationKind operationKind)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (9)
21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 246case OperationKind.AnonymousFunction: 249case OperationKind.LocalFunction: 270case OperationKind.DeconstructionAssignment: 274case OperationKind.Tuple: 275case OperationKind.Conversion: 276case OperationKind.Parenthesized: 374public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, OperationKind kind) 378=> operation.Kind == OperationKind.Literal && operation.Type.IsNumericType();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SemanticEquivalence.cs (1)
126=> operation is IMemberReferenceOperation { Instance.Kind: OperationKind.InstanceReference };
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (1)
54foreach (var flowCaptureReference in cfg.DescendantOperations<IFlowCaptureReferenceOperation>(OperationKind.FlowCaptureReference))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (2)
207if (operation.Kind is OperationKind.LocalFunction or OperationKind.AnonymousFunction)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (15)
153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 161Debug.Assert(symbolOpt != null || operation.Kind == OperationKind.FlowCaptureReference); 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 195if (write.Kind != OperationKind.FlowCaptureReference) 438case OperationKind.Conversion: 442case OperationKind.Parenthesized: 446case OperationKind.DelegateCreation: 450case OperationKind.AnonymousFunction: 456case OperationKind.FlowAnonymousFunction: 460case OperationKind.MethodReference: 473case OperationKind.LocalReference: 478case OperationKind.ParameterReference: 483case OperationKind.Literal: 553case OperationKind.FlowAnonymousFunction: 557case OperationKind.MethodReference:
Microsoft.CodeAnalysis.CodeStyle (99)
src\roslyn\src\Analyzers\Core\Analyzers\ConvertTypeofToNameof\AbstractConvertTypeOfToNameOfDiagnosticAnalyzer.cs (1)
24=> context.RegisterOperationAction(AnalyzeAction, OperationKind.TypeOf);
src\roslyn\src\Analyzers\Core\Analyzers\MakeFieldReadonly\AbstractMakeFieldReadonlyDiagnosticAnalyzer.cs (2)
65context.RegisterOperationAction(AnalyzeOperation, OperationKind.FieldReference); 294if (fieldReference.Instance?.Kind != OperationKind.InstanceReference ||
src\roslyn\src\Analyzers\Core\Analyzers\PopulateSwitch\AbstractPopulateSwitchDiagnosticAnalyzer.cs (1)
26protected abstract OperationKind OperationKind { get; }
src\roslyn\src\Analyzers\Core\Analyzers\PopulateSwitch\AbstractPopulateSwitchExpressionDiagnosticAnalyzer.cs (2)
17protected sealed override OperationKind OperationKind => OperationKind.SwitchExpression;
src\roslyn\src\Analyzers\Core\Analyzers\PopulateSwitch\AbstractPopulateSwitchStatementDiagnosticAnalyzer.cs (2)
17protected sealed override OperationKind OperationKind => OperationKind.Switch;
src\roslyn\src\Analyzers\Core\Analyzers\QualifyMemberAccess\AbstractQualifyMemberAccessDiagnosticAnalyzer.cs (6)
47=> context.RegisterOperationAction(AnalyzeOperation, OperationKind.FieldReference, OperationKind.PropertyReference, OperationKind.MethodReference, OperationKind.Invocation); 81if (instanceOperation.Kind != OperationKind.InstanceReference) 85if (context.Operation.Parent?.Kind == OperationKind.PropertySubpattern)
src\roslyn\src\Analyzers\Core\Analyzers\RemoveRedundantEquality\AbstractRemoveRedundantEqualityDiagnosticAnalyzer.cs (3)
25context.RegisterOperationAction(AnalyzeBinaryOperator, OperationKind.BinaryOperator); 26context.RegisterOperationAction(AnalyzeIsPatternOperator, OperationKind.IsPattern); 126Kind: OperationKind.Literal,
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnusedMembers\AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (20)
237symbolStartContext.RegisterOperationAction(AnalyzeDeconstructionAssignment, OperationKind.DeconstructionAssignment); 238symbolStartContext.RegisterOperationAction(AnalyzeFieldInitializer, OperationKind.FieldInitializer); 239symbolStartContext.RegisterOperationAction(AnalyzeInvocationOperation, OperationKind.Invocation); 240symbolStartContext.RegisterOperationAction(AnalyzeLoopOperation, OperationKind.Loop); 241symbolStartContext.RegisterOperationAction(AnalyzeMemberReferenceOperation, OperationKind.FieldReference, OperationKind.MethodReference, OperationKind.PropertyReference, OperationKind.EventReference); 242symbolStartContext.RegisterOperationAction(AnalyzeParameterInitializerOperation, OperationKind.ParameterInitializer); 243symbolStartContext.RegisterOperationAction(AnalyzeFunctionParameterDefaults, OperationKind.AnonymousFunction, OperationKind.LocalFunction); 244symbolStartContext.RegisterOperationAction(AnalyzeNameOfOperation, OperationKind.NameOf); 245symbolStartContext.RegisterOperationAction(AnalyzeObjectCreationOperation, OperationKind.ObjectCreation); 262if (operation is { Kind: OperationKind.None, Parent: INameOfOperation { Argument: var nameofArgument } } && 270OperationKind.Invalid, 271OperationKind.None, 272OperationKind.DynamicIndexerAccess, 273OperationKind.DynamicInvocation, 274OperationKind.DynamicMemberReference, 275OperationKind.DynamicObjectCreation);
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnusedParametersAndValues\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (24)
73context.RegisterOperationAction(blockAnalyzer.AnalyzeExpressionStatement, OperationKind.ExpressionStatement); 74context.RegisterOperationAction(blockAnalyzer.AnalyzeDelegateCreationOrAnonymousFunction, OperationKind.DelegateCreation, OperationKind.AnonymousFunction); 75context.RegisterOperationAction(blockAnalyzer.AnalyzeLocalOrParameterReference, OperationKind.LocalReference, OperationKind.ParameterReference); 76context.RegisterOperationAction(_ => blockAnalyzer._hasInvalidOperation = true, OperationKind.Invalid); 259Debug.Assert(operation.Kind is OperationKind.DelegateCreation or OperationKind.AnonymousFunction); 275(assignment.Target.Kind == OperationKind.LocalReference || 276assignment.Target.Kind == OperationKind.ParameterReference)) 284if (operation.Kind == OperationKind.AnonymousFunction && 308Debug.Assert(operation.Kind is OperationKind.LocalReference or OperationKind.ParameterReference); 342(assignmentOperation.Target.Kind == OperationKind.LocalReference || 343assignmentOperation.Target.Kind == OperationKind.ParameterReference)) 370case OperationKind.Attribute: 371case OperationKind.ParameterInitializer: 390if (operation.Kind == OperationKind.None) 671case OperationKind.ParameterReference: 672case OperationKind.LocalReference: 676case OperationKind.FieldReference: 680return fieldReference.Instance == null || fieldReference.Instance.Kind == OperationKind.InstanceReference; 682case OperationKind.DefaultValue: 686case OperationKind.Conversion:
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnusedParametersAndValues\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.cs (1)
99context.RegisterOperationAction(OnMethodReference, OperationKind.MethodReference);
src\roslyn\src\Analyzers\Core\Analyzers\SimplifyInterpolation\AbstractSimplifyInterpolationDiagnosticAnalyzer.cs (1)
42context.RegisterOperationAction(context => AnalyzeInterpolation(context, compilation.FormattableStringType(), compilation.IFormattableType(), readOnlySpanOfCharType, knownToStringFormats, handlersAvailable), OperationKind.Interpolation);
src\roslyn\src\Analyzers\Core\Analyzers\SimplifyInterpolation\AbstractSimplifyInterpolationHelpers.cs (1)
287: alignmentOp is { Kind: OperationKind.Literal })
src\roslyn\src\Analyzers\Core\Analyzers\SimplifyLinqExpression\AbstractSimplifyLinqExpressionDiagnosticAnalyzer.cs (1)
68context.RegisterOperationAction(AnalyzeInvocationOperation, OperationKind.Invocation);
src\roslyn\src\Analyzers\Core\Analyzers\UseConditionalExpression\AbstractUseConditionalExpressionDiagnosticAnalyzer.cs (1)
35=> context.RegisterOperationAction(AnalyzeOperation, OperationKind.Conditional);
src\roslyn\src\Analyzers\Core\Analyzers\UseConditionalExpression\ForReturn\UseConditionalExpressionForReturnHelpers.cs (2)
104if (trueReturn?.Kind == OperationKind.YieldBreak) 111if (trueReturn?.Kind == OperationKind.YieldReturn &&
src\roslyn\src\Analyzers\Core\Analyzers\UseExplicitTupleName\UseExplicitTupleNameDiagnosticAnalyzer.cs (1)
31=> context.RegisterOperationAction(AnalyzeOperation, OperationKind.FieldReference);
src\roslyn\src\Analyzers\Core\Analyzers\UseThrowExpression\AbstractUseThrowExpressionDiagnosticAnalyzer.cs (1)
65startContext.RegisterOperationAction(operationContext => AnalyzeOperation(operationContext, expressionType), OperationKind.Throw);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ControlFlowGraphExtensions.cs (1)
30public static IEnumerable<T> DescendantOperations<T>(this ControlFlowGraph cfg, OperationKind operationKind)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (9)
21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 246case OperationKind.AnonymousFunction: 249case OperationKind.LocalFunction: 270case OperationKind.DeconstructionAssignment: 274case OperationKind.Tuple: 275case OperationKind.Conversion: 276case OperationKind.Parenthesized: 374public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, OperationKind kind) 378=> operation.Kind == OperationKind.Literal && operation.Type.IsNumericType();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SemanticEquivalence.cs (1)
126=> operation is IMemberReferenceOperation { Instance.Kind: OperationKind.InstanceReference };
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (1)
54foreach (var flowCaptureReference in cfg.DescendantOperations<IFlowCaptureReferenceOperation>(OperationKind.FlowCaptureReference))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (2)
207if (operation.Kind is OperationKind.LocalFunction or OperationKind.AnonymousFunction)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (15)
153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 161Debug.Assert(symbolOpt != null || operation.Kind == OperationKind.FlowCaptureReference); 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 195if (write.Kind != OperationKind.FlowCaptureReference) 438case OperationKind.Conversion: 442case OperationKind.Parenthesized: 446case OperationKind.DelegateCreation: 450case OperationKind.AnonymousFunction: 456case OperationKind.FlowAnonymousFunction: 460case OperationKind.MethodReference: 473case OperationKind.LocalReference: 478case OperationKind.ParameterReference: 483case OperationKind.Literal: 553case OperationKind.FlowAnonymousFunction: 557case OperationKind.MethodReference:
Microsoft.CodeAnalysis.CodeStyle.Fixes (5)
src\roslyn\src\Analyzers\Core\CodeFixes\UseConditionalExpression\ForReturn\AbstractUseConditionalExpressionForReturnCodeFixProvider.cs (1)
76var returnStatement = anyReturn.Kind == OperationKind.YieldReturn
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (2)
479operation is { Kind: OperationKind.Literal, ConstantValue: { HasValue: true, Value: true } }) 485operation is { Kind: OperationKind.Literal, ConstantValue: { HasValue: true, Value: false } })
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\AbstractInitializerParameterService.cs (2)
66case OperationKind.AnonymousFunction: 69case OperationKind.Block:
Microsoft.CodeAnalysis.CSharp (10)
Operations\CSharpOperationFactory.cs (10)
1462OperationKind operationKind = Helper.IsDecrement(boundIncrementOperator.OperatorKind) ? OperationKind.Decrement : OperationKind.Increment; 1849return new ReturnOperation(returnedValue, OperationKind.YieldBreak, _semanticModel, syntax, isImplicit); 2127return new ReturnOperation(returnedValue, OperationKind.Return, _semanticModel, syntax, isImplicit); 2135return new ReturnOperation(returnedValue, OperationKind.YieldReturn, _semanticModel, syntax, isImplicit); 2522var operationKind = methodName switch 2524"" => OperationKind.InterpolatedStringAppendInvalid, 2525BoundInterpolatedString.AppendLiteralMethod => OperationKind.InterpolatedStringAppendLiteral, 2526BoundInterpolatedString.AppendFormattedMethod => OperationKind.InterpolatedStringAppendFormatted,
Microsoft.CodeAnalysis.CSharp.Analyzers (1)
MetaAnalyzers\CSharpSemanticModelGetDeclaredSymbolAlwaysReturnsNullAnalyzer.cs (1)
68context.RegisterOperationAction(ctx => AnalyzeInvocation(ctx, getDeclaredSymbolMethod, allowedTypes, baseFieldDeclaration, localFunctionStatement, syntaxNode), OperationKind.Invocation);
Microsoft.CodeAnalysis.CSharp.CodeStyle (15)
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructFieldsWritable\CSharpMakeStructFieldsWritableDiagnosticAnalyzer.cs (1)
93context.RegisterOperationAction(AnalyzeAssignment, OperationKind.SimpleAssignment);
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructMemberReadOnly\CSharpMakeStructMemberReadOnlyAnalyzer.cs (1)
284if (operation.Kind == OperationKind.None)
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\CSharpUseIndexOperatorDiagnosticAnalyzer.cs (3)
76OperationKind.PropertyReference); 81OperationKind.Invocation); 92OperationKind.ArrayElementReference);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\CSharpUseRangeOperatorDiagnosticAnalyzer.cs (1)
66OperationKind.Invocation);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIsNullCheck\CSharpUseNullCheckOverTypeCheckDiagnosticAnalyzer.cs (2)
39context.RegisterOperationAction(c => AnalyzeIsTypeOperation(c, expressionType), OperationKind.IsType); 40context.RegisterOperationAction(c => AnalyzeNegatedPatternOperation(c), OperationKind.NegatedPattern);
src\roslyn\src\Analyzers\CSharp\Analyzers\UsePrimaryConstructor\CSharpUsePrimaryConstructorDiagnosticAnalyzer.cs (2)
240OperationKind.FieldReference, OperationKind.PropertyReference);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseSystemThreadingLock\CSharpUseSystemThreadingLockDiagnosticAnalyzer.cs (2)
163}, OperationKind.FieldInitializer); 215}, OperationKind.FieldReference);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseUtf8StringLiteral\UseUtf8StringLiteralDiagnosticAnalyzer.cs (1)
56context.RegisterOperationAction(c => AnalyzeOperation(c, expressionType), OperationKind.ArrayCreation);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (2)
91Kind: OperationKind.MethodReference, 92Parent.Kind: OperationKind.DelegateCreation,
Microsoft.CodeAnalysis.CSharp.Features (15)
ConvertLinq\CSharpConvertLinqQueryToForEachProvider.cs (2)
914return operation.Kind is OperationKind.LocalReference or OperationKind.ParameterReference;
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructFieldsWritable\CSharpMakeStructFieldsWritableDiagnosticAnalyzer.cs (1)
93context.RegisterOperationAction(AnalyzeAssignment, OperationKind.SimpleAssignment);
src\roslyn\src\Analyzers\CSharp\Analyzers\MakeStructMemberReadOnly\CSharpMakeStructMemberReadOnlyAnalyzer.cs (1)
284if (operation.Kind == OperationKind.None)
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\CSharpUseIndexOperatorDiagnosticAnalyzer.cs (3)
76OperationKind.PropertyReference); 81OperationKind.Invocation); 92OperationKind.ArrayElementReference);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\CSharpUseRangeOperatorDiagnosticAnalyzer.cs (1)
66OperationKind.Invocation);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIsNullCheck\CSharpUseNullCheckOverTypeCheckDiagnosticAnalyzer.cs (2)
39context.RegisterOperationAction(c => AnalyzeIsTypeOperation(c, expressionType), OperationKind.IsType); 40context.RegisterOperationAction(c => AnalyzeNegatedPatternOperation(c), OperationKind.NegatedPattern);
src\roslyn\src\Analyzers\CSharp\Analyzers\UsePrimaryConstructor\CSharpUsePrimaryConstructorDiagnosticAnalyzer.cs (2)
240OperationKind.FieldReference, OperationKind.PropertyReference);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseSystemThreadingLock\CSharpUseSystemThreadingLockDiagnosticAnalyzer.cs (2)
163}, OperationKind.FieldInitializer); 215}, OperationKind.FieldReference);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseUtf8StringLiteral\UseUtf8StringLiteralDiagnosticAnalyzer.cs (1)
56context.RegisterOperationAction(c => AnalyzeOperation(c, expressionType), OperationKind.ArrayCreation);
Microsoft.CodeAnalysis.CSharp.Workspaces (2)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (2)
91Kind: OperationKind.MethodReference, 92Parent.Kind: OperationKind.DelegateCreation,
Microsoft.CodeAnalysis.Features (84)
ConvertForEachToFor\AbstractConvertForEachToForCodeRefactoringProvider.cs (5)
376case OperationKind.LocalReference: 377case OperationKind.FieldReference: 378case OperationKind.ParameterReference: 379case OperationKind.PropertyReference: 380case OperationKind.ArrayElementReference:
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.cs (2)
132if (!sections.Any(static section => GetSwitchArmKind(section.Body) == OperationKind.Return)) 140static OperationKind GetSwitchArmKind(IOperation op)
InitializeParameter\AbstractInitializeParameterCodeRefactoringProvider.cs (2)
167case OperationKind.AnonymousFunction: 170case OperationKind.Block:
InlineMethod\AbstractInlineMethodRefactoringProvider.InlineContext.cs (2)
420if (operation.Kind is OperationKind.AnonymousFunction or OperationKind.LocalFunction)
IntroduceParameter\AbstractIntroduceParameterCodeRefactoringProvider.cs (1)
242containsClassSpecificStatement = operation.Descendants().Any(op => op.Kind == OperationKind.InstanceReference);
IntroduceUsingStatement\AbstractIntroduceUsingStatementCodeRefactoringProvider.cs (1)
126if (initializer is null || initializer.Kind == OperationKind.Invalid)
src\roslyn\src\Analyzers\Core\Analyzers\ConvertTypeofToNameof\AbstractConvertTypeOfToNameOfDiagnosticAnalyzer.cs (1)
24=> context.RegisterOperationAction(AnalyzeAction, OperationKind.TypeOf);
src\roslyn\src\Analyzers\Core\Analyzers\MakeFieldReadonly\AbstractMakeFieldReadonlyDiagnosticAnalyzer.cs (2)
65context.RegisterOperationAction(AnalyzeOperation, OperationKind.FieldReference); 294if (fieldReference.Instance?.Kind != OperationKind.InstanceReference ||
src\roslyn\src\Analyzers\Core\Analyzers\PopulateSwitch\AbstractPopulateSwitchDiagnosticAnalyzer.cs (1)
26protected abstract OperationKind OperationKind { get; }
src\roslyn\src\Analyzers\Core\Analyzers\PopulateSwitch\AbstractPopulateSwitchExpressionDiagnosticAnalyzer.cs (2)
17protected sealed override OperationKind OperationKind => OperationKind.SwitchExpression;
src\roslyn\src\Analyzers\Core\Analyzers\PopulateSwitch\AbstractPopulateSwitchStatementDiagnosticAnalyzer.cs (2)
17protected sealed override OperationKind OperationKind => OperationKind.Switch;
src\roslyn\src\Analyzers\Core\Analyzers\QualifyMemberAccess\AbstractQualifyMemberAccessDiagnosticAnalyzer.cs (6)
47=> context.RegisterOperationAction(AnalyzeOperation, OperationKind.FieldReference, OperationKind.PropertyReference, OperationKind.MethodReference, OperationKind.Invocation); 81if (instanceOperation.Kind != OperationKind.InstanceReference) 85if (context.Operation.Parent?.Kind == OperationKind.PropertySubpattern)
src\roslyn\src\Analyzers\Core\Analyzers\RemoveRedundantEquality\AbstractRemoveRedundantEqualityDiagnosticAnalyzer.cs (3)
25context.RegisterOperationAction(AnalyzeBinaryOperator, OperationKind.BinaryOperator); 26context.RegisterOperationAction(AnalyzeIsPatternOperator, OperationKind.IsPattern); 126Kind: OperationKind.Literal,
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnusedMembers\AbstractRemoveUnusedMembersDiagnosticAnalyzer.cs (20)
237symbolStartContext.RegisterOperationAction(AnalyzeDeconstructionAssignment, OperationKind.DeconstructionAssignment); 238symbolStartContext.RegisterOperationAction(AnalyzeFieldInitializer, OperationKind.FieldInitializer); 239symbolStartContext.RegisterOperationAction(AnalyzeInvocationOperation, OperationKind.Invocation); 240symbolStartContext.RegisterOperationAction(AnalyzeLoopOperation, OperationKind.Loop); 241symbolStartContext.RegisterOperationAction(AnalyzeMemberReferenceOperation, OperationKind.FieldReference, OperationKind.MethodReference, OperationKind.PropertyReference, OperationKind.EventReference); 242symbolStartContext.RegisterOperationAction(AnalyzeParameterInitializerOperation, OperationKind.ParameterInitializer); 243symbolStartContext.RegisterOperationAction(AnalyzeFunctionParameterDefaults, OperationKind.AnonymousFunction, OperationKind.LocalFunction); 244symbolStartContext.RegisterOperationAction(AnalyzeNameOfOperation, OperationKind.NameOf); 245symbolStartContext.RegisterOperationAction(AnalyzeObjectCreationOperation, OperationKind.ObjectCreation); 262if (operation is { Kind: OperationKind.None, Parent: INameOfOperation { Argument: var nameofArgument } } && 270OperationKind.Invalid, 271OperationKind.None, 272OperationKind.DynamicIndexerAccess, 273OperationKind.DynamicInvocation, 274OperationKind.DynamicMemberReference, 275OperationKind.DynamicObjectCreation);
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnusedParametersAndValues\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.BlockAnalyzer.cs (24)
73context.RegisterOperationAction(blockAnalyzer.AnalyzeExpressionStatement, OperationKind.ExpressionStatement); 74context.RegisterOperationAction(blockAnalyzer.AnalyzeDelegateCreationOrAnonymousFunction, OperationKind.DelegateCreation, OperationKind.AnonymousFunction); 75context.RegisterOperationAction(blockAnalyzer.AnalyzeLocalOrParameterReference, OperationKind.LocalReference, OperationKind.ParameterReference); 76context.RegisterOperationAction(_ => blockAnalyzer._hasInvalidOperation = true, OperationKind.Invalid); 259Debug.Assert(operation.Kind is OperationKind.DelegateCreation or OperationKind.AnonymousFunction); 275(assignment.Target.Kind == OperationKind.LocalReference || 276assignment.Target.Kind == OperationKind.ParameterReference)) 284if (operation.Kind == OperationKind.AnonymousFunction && 308Debug.Assert(operation.Kind is OperationKind.LocalReference or OperationKind.ParameterReference); 342(assignmentOperation.Target.Kind == OperationKind.LocalReference || 343assignmentOperation.Target.Kind == OperationKind.ParameterReference)) 370case OperationKind.Attribute: 371case OperationKind.ParameterInitializer: 390if (operation.Kind == OperationKind.None) 671case OperationKind.ParameterReference: 672case OperationKind.LocalReference: 676case OperationKind.FieldReference: 680return fieldReference.Instance == null || fieldReference.Instance.Kind == OperationKind.InstanceReference; 682case OperationKind.DefaultValue: 686case OperationKind.Conversion:
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnusedParametersAndValues\AbstractRemoveUnusedParametersAndValuesDiagnosticAnalyzer.SymbolStartAnalyzer.cs (1)
99context.RegisterOperationAction(OnMethodReference, OperationKind.MethodReference);
src\roslyn\src\Analyzers\Core\Analyzers\SimplifyInterpolation\AbstractSimplifyInterpolationDiagnosticAnalyzer.cs (1)
42context.RegisterOperationAction(context => AnalyzeInterpolation(context, compilation.FormattableStringType(), compilation.IFormattableType(), readOnlySpanOfCharType, knownToStringFormats, handlersAvailable), OperationKind.Interpolation);
src\roslyn\src\Analyzers\Core\Analyzers\SimplifyInterpolation\AbstractSimplifyInterpolationHelpers.cs (1)
287: alignmentOp is { Kind: OperationKind.Literal })
src\roslyn\src\Analyzers\Core\Analyzers\SimplifyLinqExpression\AbstractSimplifyLinqExpressionDiagnosticAnalyzer.cs (1)
68context.RegisterOperationAction(AnalyzeInvocationOperation, OperationKind.Invocation);
src\roslyn\src\Analyzers\Core\Analyzers\UseConditionalExpression\AbstractUseConditionalExpressionDiagnosticAnalyzer.cs (1)
35=> context.RegisterOperationAction(AnalyzeOperation, OperationKind.Conditional);
src\roslyn\src\Analyzers\Core\Analyzers\UseConditionalExpression\ForReturn\UseConditionalExpressionForReturnHelpers.cs (2)
104if (trueReturn?.Kind == OperationKind.YieldBreak) 111if (trueReturn?.Kind == OperationKind.YieldReturn &&
src\roslyn\src\Analyzers\Core\Analyzers\UseExplicitTupleName\UseExplicitTupleNameDiagnosticAnalyzer.cs (1)
31=> context.RegisterOperationAction(AnalyzeOperation, OperationKind.FieldReference);
src\roslyn\src\Analyzers\Core\Analyzers\UseThrowExpression\AbstractUseThrowExpressionDiagnosticAnalyzer.cs (1)
65startContext.RegisterOperationAction(operationContext => AnalyzeOperation(operationContext, expressionType), OperationKind.Throw);
src\roslyn\src\Analyzers\Core\CodeFixes\UseConditionalExpression\ForReturn\AbstractUseConditionalExpressionForReturnCodeFixProvider.cs (1)
76var returnStatement = anyReturn.Kind == OperationKind.YieldReturn
Microsoft.CodeAnalysis.ResxSourceGenerator (138)
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (71)
24internal static readonly ComputationalComplexityMetrics Default = new(0, 0, 0, 0, 0, ImmutableHashSet<OperationKind>.Empty, 29private readonly ImmutableHashSet<OperationKind> _distinctOperatorKinds; 42ImmutableHashSet<OperationKind> distinctOperatorKinds, 68ImmutableHashSet<OperationKind> distinctOperatorKinds, 94ImmutableHashSet<OperationKind>.Builder? distinctOperatorKindsBuilder = null; 102if ((operationBlock.Kind is OperationKind.None or OperationKind.Attribute) && 136case OperationKind.LocalReference: 139case OperationKind.ParameterReference: 142case OperationKind.FieldReference: 143case OperationKind.MethodReference: 144case OperationKind.PropertyReference: 145case OperationKind.EventReference: 151case OperationKind.FieldInitializer: 159case OperationKind.PropertyInitializer: 167case OperationKind.ParameterInitializer: 171case OperationKind.VariableInitializer: 175case OperationKind.VariableDeclarator: 185case OperationKind.Invocation: 194case OperationKind.ObjectCreation: 198case OperationKind.DelegateCreation: 199case OperationKind.AnonymousObjectCreation: 200case OperationKind.TypeParameterObjectCreation: 201case OperationKind.DynamicObjectCreation: 202case OperationKind.DynamicInvocation: 207case OperationKind.BinaryOperator: 210case OperationKind.CompoundAssignment: 213case OperationKind.TupleBinaryOperator: 216case OperationKind.UnaryOperator: 219case OperationKind.CaseClause: 235case OperationKind.Increment: 236case OperationKind.Decrement: 237case OperationKind.SimpleAssignment: 238case OperationKind.DeconstructionAssignment: 239case OperationKind.EventAssignment: 240case OperationKind.Coalesce: 241case OperationKind.ConditionalAccess: 242case OperationKind.Conversion: 243case OperationKind.ArrayElementReference: 244case OperationKind.Await: 245case OperationKind.NameOf: 246case OperationKind.SizeOf: 247case OperationKind.TypeOf: 248case OperationKind.AddressOf: 249case OperationKind.MemberInitializer: 250case OperationKind.IsType: 251case OperationKind.IsPattern: 252case OperationKind.Parenthesized: 257case OperationKind.ArrayCreation: 258case OperationKind.ArrayInitializer: 259case OperationKind.DynamicMemberReference: 260case OperationKind.DynamicIndexerAccess: 261case OperationKind.Tuple: 262case OperationKind.Lock: 263case OperationKind.Using: 264case OperationKind.Throw: 265case OperationKind.RaiseEvent: 266case OperationKind.InterpolatedString: 271case OperationKind.Return: 272case OperationKind.YieldBreak: 273case OperationKind.YieldReturn: 289distinctOperatorKindsBuilder != null ? distinctOperatorKindsBuilder.ToImmutable() : ImmutableHashSet<OperationKind>.Empty, 302case OperationKind.Block: 305case OperationKind.FieldInitializer: 306case OperationKind.PropertyInitializer: 307case OperationKind.ParameterInitializer: 316case OperationKind.Conditional: 318return operation.Kind == OperationKind.Conditional && hasAnyExplicitExpression(operation) ? 1 : 0; 328return !operation.DescendantsAndSelf().All(o => o.IsImplicit || (!o.ConstantValue.HasValue && o.Type == null && o.Kind is not (OperationKind.Branch or OperationKind.Attribute))); 334distinctOperatorKindsBuilder ??= ImmutableHashSet.CreateBuilder<OperationKind>();
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (11)
262case OperationKind.Block: 263case OperationKind.MethodBodyOperation: 264case OperationKind.ConstructorBodyOperation: 268case OperationKind.Attribute: 269case OperationKind.None: 328case OperationKind.CaseClause: 329case OperationKind.Coalesce: 330case OperationKind.Conditional: 331case OperationKind.ConditionalAccess: 332case OperationKind.Loop: 335case OperationKind.BinaryOperator:
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (22)
116/// True if this operation has no IOperation API support, i.e. <see cref="OperationKind.None"/> and 122return operation is { Kind: OperationKind.None, Parent: null }; 131public static TOperation? GetAncestor<TOperation>(this IOperation root, OperationKind ancestorKind, Func<TOperation, bool>? predicate = null) 166public static IOperation? GetAncestor(this IOperation root, ImmutableArray<OperationKind> ancestorKinds, Func<IOperation, bool>? predicate = null) 196return operation.GetAncestor(OperationKind.ConditionalAccess, (IConditionalAccessOperation c) => c.Operation.Syntax == operation.Syntax); 211(operation.GetAncestor<IAnonymousObjectCreationOperation>(OperationKind.AnonymousObjectCreation) != null)); 215for (IOperation? current = operation; current != null && current.Kind != OperationKind.Block; current = current.Parent) 223case OperationKind.AnonymousObjectCreation: 320Debug.Assert(operation.Kind is OperationKind.None or OperationKind.Attribute, $"Unexpected root operation kind: {operation.Kind}"); 346case OperationKind.LocalReference: 350case OperationKind.ParameterReference: 354case OperationKind.InstanceReference: 358case OperationKind.AnonymousFunction: 362case OperationKind.LocalFunction: 381private static readonly ImmutableArray<OperationKind> s_LambdaAndLocalFunctionKinds = 382ImmutableArray.Create(OperationKind.AnonymousFunction, OperationKind.LocalFunction); 421case OperationKind.Parenthesized: 422case OperationKind.Conversion: 423case OperationKind.DeclarationExpression: 428case OperationKind.Tuple:
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\OperationKinds.cs (5)
12public static ImmutableArray<OperationKind> MemberReference { get; } 14OperationKind.EventReference, 15OperationKind.FieldReference, 16OperationKind.MethodReference, 17OperationKind.PropertyReference);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ControlFlowGraphExtensions.cs (1)
30public static IEnumerable<T> DescendantOperations<T>(this ControlFlowGraph cfg, OperationKind operationKind)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (9)
21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 246case OperationKind.AnonymousFunction: 249case OperationKind.LocalFunction: 270case OperationKind.DeconstructionAssignment: 274case OperationKind.Tuple: 275case OperationKind.Conversion: 276case OperationKind.Parenthesized: 374public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, OperationKind kind) 378=> operation.Kind == OperationKind.Literal && operation.Type.IsNumericType();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SemanticEquivalence.cs (1)
126=> operation is IMemberReferenceOperation { Instance.Kind: OperationKind.InstanceReference };
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (1)
54foreach (var flowCaptureReference in cfg.DescendantOperations<IFlowCaptureReferenceOperation>(OperationKind.FlowCaptureReference))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (2)
207if (operation.Kind is OperationKind.LocalFunction or OperationKind.AnonymousFunction)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (15)
153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 161Debug.Assert(symbolOpt != null || operation.Kind == OperationKind.FlowCaptureReference); 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 195if (write.Kind != OperationKind.FlowCaptureReference) 438case OperationKind.Conversion: 442case OperationKind.Parenthesized: 446case OperationKind.DelegateCreation: 450case OperationKind.AnonymousFunction: 456case OperationKind.FlowAnonymousFunction: 460case OperationKind.MethodReference: 473case OperationKind.LocalReference: 478case OperationKind.ParameterReference: 483case OperationKind.Literal: 553case OperationKind.FlowAnonymousFunction: 557case OperationKind.MethodReference:
Microsoft.CodeAnalysis.VisualBasic (2)
Operations\VisualBasicOperationFactory.vb (2)
1327Return New ReturnOperation(returnedValue, OperationKind.Return, _semanticModel, syntax, isImplicit) 1377Return New ReturnOperation(returnedValue, OperationKind.YieldReturn, _semanticModel, syntax, isImplicit)
Microsoft.CodeAnalysis.Workspaces (33)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ControlFlowGraphExtensions.cs (1)
30public static IEnumerable<T> DescendantOperations<T>(this ControlFlowGraph cfg, OperationKind operationKind)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (9)
21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 246case OperationKind.AnonymousFunction: 249case OperationKind.LocalFunction: 270case OperationKind.DeconstructionAssignment: 274case OperationKind.Tuple: 275case OperationKind.Conversion: 276case OperationKind.Parenthesized: 374public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, OperationKind kind) 378=> operation.Kind == OperationKind.Literal && operation.Type.IsNumericType();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SemanticEquivalence.cs (1)
126=> operation is IMemberReferenceOperation { Instance.Kind: OperationKind.InstanceReference };
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (1)
54foreach (var flowCaptureReference in cfg.DescendantOperations<IFlowCaptureReferenceOperation>(OperationKind.FlowCaptureReference))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (2)
207if (operation.Kind is OperationKind.LocalFunction or OperationKind.AnonymousFunction)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (15)
153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 161Debug.Assert(symbolOpt != null || operation.Kind == OperationKind.FlowCaptureReference); 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 195if (write.Kind != OperationKind.FlowCaptureReference) 438case OperationKind.Conversion: 442case OperationKind.Parenthesized: 446case OperationKind.DelegateCreation: 450case OperationKind.AnonymousFunction: 456case OperationKind.FlowAnonymousFunction: 460case OperationKind.MethodReference: 473case OperationKind.LocalReference: 478case OperationKind.ParameterReference: 483case OperationKind.Literal: 553case OperationKind.FlowAnonymousFunction: 557case OperationKind.MethodReference:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (2)
479operation is { Kind: OperationKind.Literal, ConstantValue: { HasValue: true, Value: true } }) 485operation is { Kind: OperationKind.Literal, ConstantValue: { HasValue: true, Value: false } })
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\AbstractInitializerParameterService.cs (2)
66case OperationKind.AnonymousFunction: 69case OperationKind.Block:
Microsoft.Interop.ComInterfaceGenerator (3)
Analyzers\ComHostingDoesNotSupportGeneratedComInterfaceAnalyzer.cs (1)
67}, OperationKind.Attribute);
Analyzers\RuntimeComApiUsageWithSourceGeneratedComAnalyzer.cs (2)
131}, OperationKind.Invocation); 198}, OperationKind.Conversion);
Microsoft.Interop.LibraryImportGenerator (2)
Analyzers\CustomMarshallerAttributeAnalyzer.cs (1)
624context.RegisterOperationAction(perCompilationAnalyzer.AnalyzeAttribute, OperationKind.Attribute);
Analyzers\NativeMarshallingAttributeAnalyzer.cs (1)
72context.RegisterOperationAction(perCompilationAnalyzer.AnalyzeAttribute, OperationKind.Attribute);
Roslyn.Diagnostics.Analyzers (165)
AbstractDoNotCopyValue.cs (18)
1127&& target.Kind != OperationKind.Discard 1368case OperationKind.ArrayElementReference: 1371case OperationKind.Await: 1380case OperationKind.Conditional: 1384case OperationKind.Conversion: 1394case OperationKind.DefaultValue: 1397case OperationKind.FieldReference: 1401case OperationKind.InstanceReference: 1404case OperationKind.Invocation: 1412case OperationKind.Literal: 1415case OperationKind.LocalReference: 1419case OperationKind.ObjectCreation: 1422case OperationKind.ParameterReference: 1426case OperationKind.Parenthesized: 1429case OperationKind.PropertyReference: 1438case OperationKind.Throw: 1441case OperationKind.CollectionExpression: 1645var operationKind = operation.Kind;
DoNotCallGetTestAccessor.cs (2)
46context.RegisterOperationAction(HandleInvocation, OperationKind.Invocation); 47context.RegisterOperationAction(HandleObjectCreation, OperationKind.ObjectCreation);
ImmutableArrayBoxingAnalyzer.cs (1)
59OperationKind.Invocation);
PooledArrayBuilderAsRefAnalyzer.cs (1)
53context.RegisterOperationAction(context => AnalyzeInvocation(context, pooledArrayBuilderAsRef), OperationKind.Invocation);
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\ComputationalComplexityMetrics.cs (71)
24internal static readonly ComputationalComplexityMetrics Default = new(0, 0, 0, 0, 0, ImmutableHashSet<OperationKind>.Empty, 29private readonly ImmutableHashSet<OperationKind> _distinctOperatorKinds; 42ImmutableHashSet<OperationKind> distinctOperatorKinds, 68ImmutableHashSet<OperationKind> distinctOperatorKinds, 94ImmutableHashSet<OperationKind>.Builder? distinctOperatorKindsBuilder = null; 102if ((operationBlock.Kind is OperationKind.None or OperationKind.Attribute) && 136case OperationKind.LocalReference: 139case OperationKind.ParameterReference: 142case OperationKind.FieldReference: 143case OperationKind.MethodReference: 144case OperationKind.PropertyReference: 145case OperationKind.EventReference: 151case OperationKind.FieldInitializer: 159case OperationKind.PropertyInitializer: 167case OperationKind.ParameterInitializer: 171case OperationKind.VariableInitializer: 175case OperationKind.VariableDeclarator: 185case OperationKind.Invocation: 194case OperationKind.ObjectCreation: 198case OperationKind.DelegateCreation: 199case OperationKind.AnonymousObjectCreation: 200case OperationKind.TypeParameterObjectCreation: 201case OperationKind.DynamicObjectCreation: 202case OperationKind.DynamicInvocation: 207case OperationKind.BinaryOperator: 210case OperationKind.CompoundAssignment: 213case OperationKind.TupleBinaryOperator: 216case OperationKind.UnaryOperator: 219case OperationKind.CaseClause: 235case OperationKind.Increment: 236case OperationKind.Decrement: 237case OperationKind.SimpleAssignment: 238case OperationKind.DeconstructionAssignment: 239case OperationKind.EventAssignment: 240case OperationKind.Coalesce: 241case OperationKind.ConditionalAccess: 242case OperationKind.Conversion: 243case OperationKind.ArrayElementReference: 244case OperationKind.Await: 245case OperationKind.NameOf: 246case OperationKind.SizeOf: 247case OperationKind.TypeOf: 248case OperationKind.AddressOf: 249case OperationKind.MemberInitializer: 250case OperationKind.IsType: 251case OperationKind.IsPattern: 252case OperationKind.Parenthesized: 257case OperationKind.ArrayCreation: 258case OperationKind.ArrayInitializer: 259case OperationKind.DynamicMemberReference: 260case OperationKind.DynamicIndexerAccess: 261case OperationKind.Tuple: 262case OperationKind.Lock: 263case OperationKind.Using: 264case OperationKind.Throw: 265case OperationKind.RaiseEvent: 266case OperationKind.InterpolatedString: 271case OperationKind.Return: 272case OperationKind.YieldBreak: 273case OperationKind.YieldReturn: 289distinctOperatorKindsBuilder != null ? distinctOperatorKindsBuilder.ToImmutable() : ImmutableHashSet<OperationKind>.Empty, 302case OperationKind.Block: 305case OperationKind.FieldInitializer: 306case OperationKind.PropertyInitializer: 307case OperationKind.ParameterInitializer: 316case OperationKind.Conditional: 318return operation.Kind == OperationKind.Conditional && hasAnyExplicitExpression(operation) ? 1 : 0; 328return !operation.DescendantsAndSelf().All(o => o.IsImplicit || (!o.ConstantValue.HasValue && o.Type == null && o.Kind is not (OperationKind.Branch or OperationKind.Attribute))); 334distinctOperatorKindsBuilder ??= ImmutableHashSet.CreateBuilder<OperationKind>();
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\CodeMetrics\MetricsHelper.cs (11)
262case OperationKind.Block: 263case OperationKind.MethodBodyOperation: 264case OperationKind.ConstructorBodyOperation: 268case OperationKind.Attribute: 269case OperationKind.None: 328case OperationKind.CaseClause: 329case OperationKind.Coalesce: 330case OperationKind.Conditional: 331case OperationKind.ConditionalAccess: 332case OperationKind.Loop: 335case OperationKind.BinaryOperator:
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\IOperationExtensions.cs (22)
116/// True if this operation has no IOperation API support, i.e. <see cref="OperationKind.None"/> and 122return operation is { Kind: OperationKind.None, Parent: null }; 131public static TOperation? GetAncestor<TOperation>(this IOperation root, OperationKind ancestorKind, Func<TOperation, bool>? predicate = null) 166public static IOperation? GetAncestor(this IOperation root, ImmutableArray<OperationKind> ancestorKinds, Func<IOperation, bool>? predicate = null) 196return operation.GetAncestor(OperationKind.ConditionalAccess, (IConditionalAccessOperation c) => c.Operation.Syntax == operation.Syntax); 211(operation.GetAncestor<IAnonymousObjectCreationOperation>(OperationKind.AnonymousObjectCreation) != null)); 215for (IOperation? current = operation; current != null && current.Kind != OperationKind.Block; current = current.Parent) 223case OperationKind.AnonymousObjectCreation: 320Debug.Assert(operation.Kind is OperationKind.None or OperationKind.Attribute, $"Unexpected root operation kind: {operation.Kind}"); 346case OperationKind.LocalReference: 350case OperationKind.ParameterReference: 354case OperationKind.InstanceReference: 358case OperationKind.AnonymousFunction: 362case OperationKind.LocalFunction: 381private static readonly ImmutableArray<OperationKind> s_LambdaAndLocalFunctionKinds = 382ImmutableArray.Create(OperationKind.AnonymousFunction, OperationKind.LocalFunction); 421case OperationKind.Parenthesized: 422case OperationKind.Conversion: 423case OperationKind.DeclarationExpression: 428case OperationKind.Tuple:
src\roslyn\src\RoslynAnalyzers\Utilities\Compiler\Extensions\OperationKinds.cs (5)
12public static ImmutableArray<OperationKind> MemberReference { get; } 14OperationKind.EventReference, 15OperationKind.FieldReference, 16OperationKind.MethodReference, 17OperationKind.PropertyReference);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\ControlFlowGraphExtensions.cs (1)
30public static IEnumerable<T> DescendantOperations<T>(this ControlFlowGraph cfg, OperationKind operationKind)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\OperationExtensions.cs (9)
21assignmentOperation.Parent?.Kind == OperationKind.ObjectOrCollectionInitializer; 246case OperationKind.AnonymousFunction: 249case OperationKind.LocalFunction: 270case OperationKind.DeconstructionAssignment: 274case OperationKind.Tuple: 275case OperationKind.Conversion: 276case OperationKind.Parenthesized: 374public static bool HasAnyOperationDescendant(this ImmutableArray<IOperation> operationBlocks, OperationKind kind) 378=> operation.Kind == OperationKind.Literal && operation.Type.IsNumericType();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SemanticEquivalence.cs (1)
126=> operation is IMemberReferenceOperation { Instance.Kind: OperationKind.InstanceReference };
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\LValueFlowCaptureProvider.cs (1)
54foreach (var flowCaptureReference in cfg.DescendantOperations<IFlowCaptureReferenceOperation>(OperationKind.FlowCaptureReference))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.DataFlowAnalyzer.FlowGraphAnalysisData.cs (2)
207if (operation.Kind is OperationKind.LocalFunction or OperationKind.AnonymousFunction)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\FlowAnalysis\SymbolUsageAnalysis\SymbolUsageAnalysis.Walker.cs (15)
153operation.Parent.Parent?.Kind != OperationKind.ExpressionStatement) 161Debug.Assert(symbolOpt != null || operation.Kind == OperationKind.FlowCaptureReference); 191operation.Parent?.Kind != OperationKind.ExpressionStatement; 195if (write.Kind != OperationKind.FlowCaptureReference) 438case OperationKind.Conversion: 442case OperationKind.Parenthesized: 446case OperationKind.DelegateCreation: 450case OperationKind.AnonymousFunction: 456case OperationKind.FlowAnonymousFunction: 460case OperationKind.MethodReference: 473case OperationKind.LocalReference: 478case OperationKind.ParameterReference: 483case OperationKind.Literal: 553case OperationKind.FlowAnonymousFunction: 557case OperationKind.MethodReference:
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (2)
479operation is { Kind: OperationKind.Literal, ConstantValue: { HasValue: true, Value: true } }) 485operation is { Kind: OperationKind.Literal, ConstantValue: { HasValue: true, Value: false } })
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\AbstractInitializerParameterService.cs (2)
66case OperationKind.AnonymousFunction: 69case OperationKind.Block:
TemporaryArrayAsRefAnalyzer.cs (1)
51context.RegisterOperationAction(context => AnalyzeInvocation(context, temporaryArrayAsRef), OperationKind.Invocation);
Roslyn.Diagnostics.CSharp.Analyzers (5)
CSharpDoNotCapturePrimaryContructorParameters.cs (1)
34context.RegisterOperationAction(AnalyzeOperation, OperationKind.ParameterReference);
CSharpDoNotUseDebugAssertForInterpolatedStrings.cs (1)
72}, OperationKind.Invocation);
PreferNullLiteral.cs (1)
40context.RegisterOperationAction(HandleDefaultValueOperation, OperationKind.DefaultValue);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Simplification\Simplifiers\CastSimplifier.cs (2)
91Kind: OperationKind.MethodReference, 92Parent.Kind: OperationKind.DelegateCreation,
System.Private.CoreLib.Generators (4)
IntrinsicsInSystemPrivateCoreLibAnalyzer.cs (4)
185OperationKind.Invocation, OperationKind.PropertyReference); 493if (operationSearch.Kind == OperationKind.AnonymousFunction) 498if (operationSearch.Kind == OperationKind.LocalFunction)
System.Text.RegularExpressions.Generator (2)
UpgradeToGeneratedRegexAnalyzer.cs (2)
82}, OperationKind.ObjectCreation, OperationKind.Invocation);