1676 references to OperationKind
Aspire.Hosting.Analyzers (1)
Aspire.Hosting.Integration.Analyzers (1)
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:
ILLink.RoslynAnalyzer (23)
Microsoft.Analyzers.Extra (24)
Microsoft.Analyzers.Local (4)
Microsoft.AspNetCore.Analyzers (3)
Microsoft.AspNetCore.App.Analyzers (12)
Microsoft.AspNetCore.Components.Analyzers (14)
Microsoft.AspNetCore.Components.SdkAnalyzers (12)
Microsoft.AspNetCore.Mvc.Analyzers (6)
Microsoft.AspNetCore.Mvc.Api.Analyzers (11)
Microsoft.CodeAnalysis (536)
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\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)
Microsoft.CodeAnalysis.Analyzers (174)
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\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:
Microsoft.CodeAnalysis.AnalyzerUtilities (210)
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:
Microsoft.CodeAnalysis.CodeStyle (99)
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);
Microsoft.CodeAnalysis.CodeStyle.Fixes (5)
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)
Microsoft.CodeAnalysis.CSharp.CodeStyle (15)
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\CSharpUseRangeOperatorDiagnosticAnalyzer.cs (1)
66OperationKind.Invocation);
Microsoft.CodeAnalysis.CSharp.Features (15)
src\roslyn\src\Analyzers\CSharp\Analyzers\UseIndexOrRangeOperator\CSharpUseRangeOperatorDiagnosticAnalyzer.cs (1)
66OperationKind.Invocation);
Microsoft.CodeAnalysis.CSharp.Workspaces (2)
Microsoft.CodeAnalysis.Features (84)
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);
Microsoft.CodeAnalysis.ResxSourceGenerator (138)
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:
Microsoft.CodeAnalysis.VisualBasic (2)
Microsoft.CodeAnalysis.Workspaces (33)
Microsoft.Interop.ComInterfaceGenerator (3)
Microsoft.Interop.LibraryImportGenerator (2)
Roslyn.Diagnostics.Analyzers (165)
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:
Roslyn.Diagnostics.CSharp.Analyzers (5)
System.Private.CoreLib.Generators (4)
System.Text.RegularExpressions.Generator (2)