src\roslyn\src\Analyzers\CSharp\Analyzers\AddRequiredParentheses\CSharpAddRequiredExpressionParenthesesDiagnosticAnalyzer.cs (26)
18ExpressionSyntax, ExpressionSyntax, SyntaxKind>(CSharpExpressionPrecedenceService.Instance)
20private static readonly ImmutableArray<SyntaxKind> s_kinds =
22SyntaxKind.AddExpression,
23SyntaxKind.SubtractExpression,
24SyntaxKind.MultiplyExpression,
25SyntaxKind.DivideExpression,
26SyntaxKind.ModuloExpression,
27SyntaxKind.LeftShiftExpression,
28SyntaxKind.RightShiftExpression,
29SyntaxKind.LogicalOrExpression,
30SyntaxKind.LogicalAndExpression,
31SyntaxKind.BitwiseOrExpression,
32SyntaxKind.BitwiseAndExpression,
33SyntaxKind.ExclusiveOrExpression,
34SyntaxKind.EqualsExpression,
35SyntaxKind.NotEqualsExpression,
36SyntaxKind.LessThanExpression,
37SyntaxKind.LessThanOrEqualExpression,
38SyntaxKind.GreaterThanExpression,
39SyntaxKind.GreaterThanOrEqualExpression,
40SyntaxKind.IsExpression,
41SyntaxKind.AsExpression,
42SyntaxKind.CoalesceExpression,
43SyntaxKind.IsPatternExpression,
46protected override ImmutableArray<SyntaxKind> GetSyntaxNodeKinds()
81=> node.Kind() == SyntaxKind.AsExpression;
src\roslyn\src\Analyzers\CSharp\Analyzers\ConvertSwitchStatementToExpression\ConvertSwitchStatementToExpressionDiagnosticAnalyzer.Analyzer.cs (33)
20private sealed class Analyzer : CSharpSyntaxVisitor<SyntaxKind>
31public static (SyntaxKind nodeToGenerate, VariableDeclaratorSyntax? declaratorToRemoveOpt) Analyze(
37var nodeToGenerate = analyzer.AnalyzeSwitchStatement(node, out shouldRemoveNextStatement);
39if (nodeToGenerate == SyntaxKind.SimpleAssignmentExpression &&
84if (!_assignmentTargetOpt.IsKind(SyntaxKind.IdentifierName))
104public override SyntaxKind VisitSwitchStatement(SwitchStatementSyntax node)
107private SyntaxKind AnalyzeSwitchStatement(SwitchStatementSyntax switchStatement, out bool shouldRemoveNextStatement)
126var nextStatement = AnalyzeNextStatement(switchStatement, out shouldRemoveNextStatement);
175private SyntaxKind AnalyzeNextStatement(SwitchStatementSyntax switchStatement, out bool shouldRemoveNextStatement)
182return SyntaxKind.ThrowStatement;
190private static SyntaxKind Intersect(SyntaxKind left, SyntaxKind right)
192if (left == SyntaxKind.ThrowStatement)
197if (right == SyntaxKind.ThrowStatement)
210private SyntaxKind AnalyzeNextStatement(StatementSyntax? nextStatement)
213return nextStatement is (kind: SyntaxKind.ThrowStatement or SyntaxKind.ReturnStatement)
218private SyntaxKind AnalyzeSwitchSection(SwitchSectionSyntax section)
223case 2 when section.Statements[1].IsKind(SyntaxKind.BreakStatement) || section.Statements[0].IsKind(SyntaxKind.SwitchStatement):
230private static SyntaxKind Aggregate<T>(SyntaxKind seed, SyntaxList<T> nodes, Func<SyntaxKind, T, SyntaxKind> func)
233var result = seed;
248public override SyntaxKind VisitAssignmentExpression(AssignmentExpressionSyntax node)
268public override SyntaxKind VisitExpressionStatement(ExpressionStatementSyntax node)
271public override SyntaxKind VisitReturnStatement(ReturnStatementSyntax node)
279: SyntaxKind.ReturnStatement;
282public override SyntaxKind VisitThrowStatement(ThrowStatementSyntax node)
286return node.Expression is null ? default : SyntaxKind.ThrowStatement;
289public override SyntaxKind DefaultVisit(SyntaxNode node)
src\roslyn\src\Analyzers\CSharp\Analyzers\SimplifyBooleanExpression\CSharpSimplifyConditionalDiagnosticAnalyzer.cs (1)
18SyntaxKind,
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCoalesceExpression\CSharpUseCoalesceExpressionForNullableTernaryConditionalCheckDiagnosticAnalyzer.cs (1)
17SyntaxKind,
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCoalesceExpression\CSharpUseCoalesceExpressionForTernaryConditionalCheckDiagnosticAnalyzer.cs (1)
17SyntaxKind,
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCollectionInitializer\CSharpUseCollectionInitializerDiagnosticAnalyzer.cs (1)
27SyntaxKind,
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCompoundAssignment\Utilities.cs (30)
11public static readonly ImmutableArray<(SyntaxKind, SyntaxKind, SyntaxKind)> Kinds =
13(SyntaxKind.AddExpression, SyntaxKind.AddAssignmentExpression),
14(SyntaxKind.SubtractExpression, SyntaxKind.SubtractAssignmentExpression),
15(SyntaxKind.MultiplyExpression, SyntaxKind.MultiplyAssignmentExpression),
16(SyntaxKind.DivideExpression, SyntaxKind.DivideAssignmentExpression),
17(SyntaxKind.ModuloExpression, SyntaxKind.ModuloAssignmentExpression),
18(SyntaxKind.BitwiseAndExpression, SyntaxKind.AndAssignmentExpression),
19(SyntaxKind.ExclusiveOrExpression, SyntaxKind.ExclusiveOrAssignmentExpression),
20(SyntaxKind.BitwiseOrExpression, SyntaxKind.OrAssignmentExpression),
21(SyntaxKind.LeftShiftExpression, SyntaxKind.LeftShiftAssignmentExpression),
22(SyntaxKind.RightShiftExpression, SyntaxKind.RightShiftAssignmentExpression),
23(SyntaxKind.CoalesceExpression, SyntaxKind.CoalesceAssignmentExpression)).SelectAsArray(
26private static SyntaxKind FindOperatorToken(SyntaxKind assignmentExpressionKind)
28for (var current = SyntaxKind.None; current <= SyntaxKind.ThrowExpression; current++)
src\roslyn\src\Analyzers\CSharp\Analyzers\UseObjectInitializer\CSharpUseObjectInitializerDiagnosticAnalyzer.cs (1)
17SyntaxKind,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\CodeStyle\CSharpCodeStyleOptions.cs (19)
157private static readonly ImmutableArray<SyntaxKind> s_preferredModifierOrderDefault =
159SyntaxKind.PublicKeyword,
160SyntaxKind.PrivateKeyword,
161SyntaxKind.ProtectedKeyword,
162SyntaxKind.InternalKeyword,
163SyntaxKind.FileKeyword,
164SyntaxKind.StaticKeyword,
165SyntaxKind.ExternKeyword,
166SyntaxKind.NewKeyword,
167SyntaxKind.VirtualKeyword,
168SyntaxKind.AbstractKeyword,
170SyntaxKind.ClosedKeyword,
172SyntaxKind.SealedKeyword,
173SyntaxKind.OverrideKeyword,
174SyntaxKind.ReadOnlyKeyword,
175SyntaxKind.UnsafeKeyword,
176SyntaxKind.RequiredKeyword,
177SyntaxKind.VolatileKeyword,
178SyntaxKind.AsyncKeyword,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\SyntaxTreeExtensions.cs (54)
17public static ISet<SyntaxKind> GetPrecedingModifiers(this SyntaxTree syntaxTree, int position, CancellationToken cancellationToken)
20public static ISet<SyntaxKind> GetPrecedingModifiers(
30var result = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer);
31while (token.IsPotentialModifier(out var modifierKind))
87private static readonly Func<SyntaxKind, bool> s_isDot = k => k is SyntaxKind.DotToken;
88private static readonly Func<SyntaxKind, bool> s_isDotOrArrow = k => k is SyntaxKind.DotToken or SyntaxKind.MinusGreaterThanToken;
89private static readonly Func<SyntaxKind, bool> s_isDotOrArrowOrColonColon =
90k => k is SyntaxKind.DotToken or SyntaxKind.MinusGreaterThanToken or SyntaxKind.ColonColonToken;
95(targetToken.IsKind(SyntaxKind.DotDotToken) && position == targetToken.SpanStart + 1) ||
106this SyntaxTree syntaxTree, int position, Func<SyntaxKind, bool> predicate, CancellationToken cancellationToken)
111if (token.Kind() == SyntaxKind.None)
122return token.Kind() == SyntaxKind.NumericLiteralToken;
125public static bool IsAfterKeyword(this SyntaxTree syntaxTree, int position, SyntaxKind kind, CancellationToken cancellationToken)
202var endsWithNewLine = trivia.GetStructure()!.GetLastToken(includeSkipped: true).Kind() == SyntaxKind.XmlTextLiteralNewLineToken;
263if (trivia.Kind() == SyntaxKind.EndOfLineTrivia)
269return trivia.Kind() == SyntaxKind.ConflictMarkerTrivia;
277if (trivia.Kind() == SyntaxKind.EndOfLineTrivia)
303if (trivia.Kind() == SyntaxKind.EndOfLineTrivia)
324var kind = token.Kind();
326SyntaxKind.StringLiteralToken or
327SyntaxKind.CharacterLiteralToken or
328SyntaxKind.SingleLineRawStringLiteralToken or
329SyntaxKind.MultiLineRawStringLiteralToken or
330SyntaxKind.Utf8StringLiteralToken or
331SyntaxKind.Utf8SingleLineRawStringLiteralToken or
332SyntaxKind.Utf8MultiLineRawStringLiteralToken))
339SyntaxKind.Utf8StringLiteralToken or
340SyntaxKind.Utf8SingleLineRawStringLiteralToken or
341SyntaxKind.Utf8MultiLineRawStringLiteralToken)
349if (kind is SyntaxKind.SingleLineRawStringLiteralToken or SyntaxKind.MultiLineRawStringLiteralToken)
399if (token.Kind() is SyntaxKind.EndOfDirectiveToken or SyntaxKind.EndOfFileToken)
404SyntaxKind.StringLiteralToken or
405SyntaxKind.SingleLineRawStringLiteralToken or
406SyntaxKind.MultiLineRawStringLiteralToken or
407SyntaxKind.Utf8StringLiteralToken or
408SyntaxKind.Utf8SingleLineRawStringLiteralToken or
409SyntaxKind.Utf8MultiLineRawStringLiteralToken)
421SyntaxKind.InterpolatedStringStartToken or
422SyntaxKind.InterpolatedStringEndToken or
423SyntaxKind.InterpolatedRawStringEndToken or
424SyntaxKind.InterpolatedSingleLineRawStringStartToken or
425SyntaxKind.InterpolatedMultiLineRawStringStartToken)
430if (token.Kind() is SyntaxKind.InterpolatedStringTextToken)
455if (token.Kind() == SyntaxKind.CharacterLiteralToken)
497if (trivia.Kind() == SyntaxKind.DisabledTextTrivia)
503if (token.Kind() == SyntaxKind.EndOfFileToken)
553if (token.IsKind(SyntaxKind.HashToken))
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpAccessibilityFacts.cs (53)
24case SyntaxKind.ClassDeclaration:
25case SyntaxKind.RecordDeclaration:
26case SyntaxKind.StructDeclaration:
27case SyntaxKind.RecordStructDeclaration:
28case SyntaxKind.InterfaceDeclaration:
29case SyntaxKind.EnumDeclaration:
30case SyntaxKind.DelegateDeclaration:
31return ignoreDeclarationModifiers || !((MemberDeclarationSyntax)declaration).Modifiers.Any(SyntaxKind.FileKeyword);
33case SyntaxKind.FieldDeclaration:
34case SyntaxKind.EventFieldDeclaration:
35case SyntaxKind.GetAccessorDeclaration:
36case SyntaxKind.SetAccessorDeclaration:
37case SyntaxKind.InitAccessorDeclaration:
38case SyntaxKind.AddAccessorDeclaration:
39case SyntaxKind.RemoveAccessorDeclaration:
42case SyntaxKind.VariableDeclaration:
45case SyntaxKind.VariableDeclarator:
48case SyntaxKind.ConstructorDeclaration:
50return ignoreDeclarationModifiers || !((ConstructorDeclarationSyntax)declaration).Modifiers.Any(SyntaxKind.StaticKeyword);
52case SyntaxKind.PropertyDeclaration:
55case SyntaxKind.IndexerDeclaration:
58case SyntaxKind.OperatorDeclaration:
61case SyntaxKind.ConversionOperatorDeclaration:
64case SyntaxKind.MethodDeclaration:
72if (method.Modifiers.Any(SyntaxKind.PartialKeyword))
80case SyntaxKind.EventDeclaration:
108(SyntaxKind.PublicKeyword, _) => Accessibility.Public,
110(SyntaxKind.PrivateKeyword, Accessibility.Protected) => Accessibility.ProtectedAndInternal,
111(SyntaxKind.PrivateKeyword, _) => Accessibility.Private,
113(SyntaxKind.InternalKeyword, Accessibility.Protected) => Accessibility.ProtectedOrInternal,
114(SyntaxKind.InternalKeyword, _) => Accessibility.Internal,
116(SyntaxKind.ProtectedKeyword, Accessibility.Private) => Accessibility.ProtectedAndInternal,
117(SyntaxKind.ProtectedKeyword, Accessibility.Internal) => Accessibility.ProtectedOrInternal,
118(SyntaxKind.ProtectedKeyword, _) => Accessibility.Protected,
125SyntaxKind.AbstractKeyword => Modifiers.Abstract,
126SyntaxKind.NewKeyword => Modifiers.New,
127SyntaxKind.OverrideKeyword => Modifiers.Override,
128SyntaxKind.VirtualKeyword => Modifiers.Virtual,
129SyntaxKind.StaticKeyword => Modifiers.Static,
130SyntaxKind.AsyncKeyword => Modifiers.Async,
131SyntaxKind.ConstKeyword => Modifiers.Const,
132SyntaxKind.ReadOnlyKeyword => Modifiers.ReadOnly,
133SyntaxKind.SealedKeyword => Modifiers.Sealed,
134SyntaxKind.UnsafeKeyword => Modifiers.Unsafe,
135SyntaxKind.PartialKeyword => Modifiers.Partial,
136SyntaxKind.RefKeyword => Modifiers.Ref,
137SyntaxKind.VolatileKeyword => Modifiers.Volatile,
138SyntaxKind.ExternKeyword => Modifiers.Extern,
139SyntaxKind.FileKeyword => Modifiers.File,
141SyntaxKind.ClosedKeyword => Modifiers.Closed,
143SyntaxKind.RequiredKeyword => Modifiers.Required,
144SyntaxKind.FixedKeyword => Modifiers.Fixed,
148isDefault |= token.Kind() == SyntaxKind.DefaultKeyword;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpSyntaxFacts.cs (175)
101var needsEscaping = SyntaxFacts.GetKeywordKind(identifier) != SyntaxKind.None;
110var kind = token.Kind();
149if (lineDirective.Line.Kind() == SyntaxKind.DefaultKeyword)
154else if (lineDirective.Line.Kind() == SyntaxKind.NumericLiteralToken &&
201=> node is (kind: SyntaxKind.ParameterList or SyntaxKind.BracketedParameterList);
222=> node is LocalDeclarationStatementSyntax { UsingKeyword.RawKind: not (int)SyntaxKind.None };
268=> token.Parent is ConstructorInitializerSyntax(SyntaxKind.ThisConstructorInitializer) constructorInit &&
272=> token.Parent is ConstructorInitializerSyntax(SyntaxKind.BaseConstructorInitializer) constructorInit &&
282case SyntaxKind.FromKeyword:
283case SyntaxKind.JoinKeyword:
284case SyntaxKind.LetKeyword:
285case SyntaxKind.OrderByKeyword:
286case SyntaxKind.WhereKeyword:
287case SyntaxKind.OnKeyword:
288case SyntaxKind.EqualsKeyword:
289case SyntaxKind.InKeyword:
291case SyntaxKind.ByKeyword:
292case SyntaxKind.GroupKeyword:
293case SyntaxKind.SelectKeyword:
295case SyntaxKind.AscendingKeyword:
296case SyntaxKind.DescendingKeyword:
298case SyntaxKind.IntoKeyword:
299return token.Parent is (kind: SyntaxKind.JoinIntoClause or SyntaxKind.QueryContinuation);
326SyntaxKind.BoolKeyword => PredefinedType.Boolean,
327SyntaxKind.ByteKeyword => PredefinedType.Byte,
328SyntaxKind.SByteKeyword => PredefinedType.SByte,
329SyntaxKind.IntKeyword => PredefinedType.Int32,
330SyntaxKind.UIntKeyword => PredefinedType.UInt32,
331SyntaxKind.ShortKeyword => PredefinedType.Int16,
332SyntaxKind.UShortKeyword => PredefinedType.UInt16,
333SyntaxKind.LongKeyword => PredefinedType.Int64,
334SyntaxKind.ULongKeyword => PredefinedType.UInt64,
335SyntaxKind.FloatKeyword => PredefinedType.Single,
336SyntaxKind.DoubleKeyword => PredefinedType.Double,
337SyntaxKind.DecimalKeyword => PredefinedType.Decimal,
338SyntaxKind.StringKeyword => PredefinedType.String,
339SyntaxKind.CharKeyword => PredefinedType.Char,
340SyntaxKind.ObjectKeyword => PredefinedType.Object,
341SyntaxKind.VoidKeyword => PredefinedType.Void,
342SyntaxKind.IdentifierToken => token.Text switch
365switch ((SyntaxKind)token.RawKind)
367case SyntaxKind.PlusToken:
368case SyntaxKind.PlusEqualsToken:
371case SyntaxKind.MinusToken:
372case SyntaxKind.MinusEqualsToken:
375case SyntaxKind.AmpersandAmpersandToken: // overridden bitwise & can be accessed through &&
376case SyntaxKind.AmpersandToken:
377case SyntaxKind.AmpersandEqualsToken:
380case SyntaxKind.BarBarToken: // overridden bitwise | can be accessed through ||
381case SyntaxKind.BarToken:
382case SyntaxKind.BarEqualsToken:
385case SyntaxKind.MinusMinusToken:
388case SyntaxKind.PlusPlusToken:
391case SyntaxKind.SlashToken:
392case SyntaxKind.SlashEqualsToken:
395case SyntaxKind.EqualsEqualsToken:
398case SyntaxKind.CaretToken:
399case SyntaxKind.CaretEqualsToken:
402case SyntaxKind.GreaterThanToken:
405case SyntaxKind.GreaterThanEqualsToken:
408case SyntaxKind.ExclamationEqualsToken:
411case SyntaxKind.LessThanLessThanToken:
412case SyntaxKind.LessThanLessThanEqualsToken:
415case SyntaxKind.LessThanToken:
418case SyntaxKind.LessThanEqualsToken:
421case SyntaxKind.AsteriskToken:
422case SyntaxKind.AsteriskEqualsToken:
425case SyntaxKind.PercentToken:
426case SyntaxKind.PercentEqualsToken:
429case SyntaxKind.ExclamationToken:
430case SyntaxKind.TildeToken:
433case SyntaxKind.GreaterThanGreaterThanToken:
434case SyntaxKind.GreaterThanGreaterThanEqualsToken:
437case SyntaxKind.GreaterThanGreaterThanGreaterThanToken:
438case SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken:
446=> SyntaxFacts.GetText((SyntaxKind)kind);
478case SyntaxKind.NumericLiteralToken:
479case SyntaxKind.CharacterLiteralToken:
480case SyntaxKind.StringLiteralToken:
481case SyntaxKind.Utf8StringLiteralToken:
482case SyntaxKind.SingleLineRawStringLiteralToken:
483case SyntaxKind.Utf8SingleLineRawStringLiteralToken:
484case SyntaxKind.MultiLineRawStringLiteralToken:
485case SyntaxKind.Utf8MultiLineRawStringLiteralToken:
486case SyntaxKind.NullKeyword:
487case SyntaxKind.TrueKeyword:
488case SyntaxKind.FalseKeyword:
489case SyntaxKind.InterpolatedStringStartToken:
490case SyntaxKind.InterpolatedStringEndToken:
491case SyntaxKind.InterpolatedRawStringEndToken:
492case SyntaxKind.InterpolatedVerbatimStringStartToken:
493case SyntaxKind.InterpolatedStringTextToken:
494case SyntaxKind.InterpolatedSingleLineRawStringStartToken:
495case SyntaxKind.InterpolatedMultiLineRawStringStartToken:
503=> token.Kind() is SyntaxKind.StringLiteralToken or SyntaxKind.InterpolatedStringTextToken;
511case SyntaxKind.DelegateKeyword:
512case SyntaxKind.VoidKeyword:
520if (token.Kind() == SyntaxKind.CommaToken && token.Parent.IsKind(SyntaxKind.OrderByClause))
523if (token.Kind() is SyntaxKind.OpenBracketToken or SyntaxKind.CloseBracketToken)
525if (token.Parent.IsKind(SyntaxKind.CollectionExpression))
545=> (node as MemberAccessExpressionSyntax)?.Kind() == SyntaxKind.PointerMemberAccessExpression;
555=> simpleName.IsKind(SyntaxKind.GenericName) ||
556simpleName.GetLastToken().GetNextToken().Kind() == SyntaxKind.LessThanToken;
587=> node.IsKind(SyntaxKind.BaseList);
599=> node.IsKind(SyntaxKind.Argument);
602=> node.IsKind(SyntaxKind.AttributeArgument);
607argument.RefOrOutKeyword.Kind() == SyntaxKind.None &&
635=> node.IsKind(SyntaxKind.IdentifierName) &&
636node.IsParentKind(SyntaxKind.NameColon) &&
637node.Parent.IsParentKind(SyntaxKind.Subpattern);
640=> node.Kind() == SyntaxKind.PropertyPatternClause;
649if (identifier.Parent.IsParentKind(SyntaxKind.WithInitializerExpression))
655else if (identifier.Parent.IsParentKind(SyntaxKind.ObjectInitializerExpression))
663else if (objectInitializer?.Parent is AssignmentExpressionSyntax(SyntaxKind.SimpleAssignmentExpression) assignment)
694=> node.IsKind(SyntaxKind.ElementAccessExpression);
724var kind = node.Kind();
725if ((kind != SyntaxKind.GlobalStatement) && (kind != SyntaxKind.IncompleteMember) && (node is TMemberDeclarationSyntax))
816case SyntaxKind.CompilationUnit:
818case SyntaxKind.IdentifierName:
821case SyntaxKind.IncompleteMember:
823case SyntaxKind.NamespaceDeclaration:
824case SyntaxKind.FileScopedNamespaceDeclaration:
826case SyntaxKind.QualifiedName:
840if (memberDeclaration.Kind() == SyntaxKind.DestructorDeclaration)
865Debug.Assert(memberDeclaration.Kind() == SyntaxKind.IncompleteMember);
1016if (trivia.Kind() == SyntaxKind.DisabledTextTrivia)
1022if (token.Kind() == SyntaxKind.EndOfFileToken)
1091=> node?.Parent?.Kind() is SyntaxKind.PostIncrementExpression or SyntaxKind.PreIncrementExpression;
1094=> node?.Parent?.Kind() is SyntaxKind.PostDecrementExpression or SyntaxKind.PreDecrementExpression;
1107SyntaxKind.SingleLineRawStringLiteralToken or
1108SyntaxKind.MultiLineRawStringLiteralToken or
1109SyntaxKind.Utf8SingleLineRawStringLiteralToken or
1110SyntaxKind.Utf8MultiLineRawStringLiteralToken;
1113=> token.Kind() == SyntaxKind.NumericLiteralToken;
1139=> trivia.Kind() == SyntaxKind.DocumentationCommentExteriorTrivia;
1145=> node?.Kind() is SyntaxKind.UsingDirective or SyntaxKind.ExternAliasDirective;
1148=> IsGlobalAttribute(node, SyntaxKind.AssemblyKeyword);
1151=> IsGlobalAttribute(node, SyntaxKind.ModuleKeyword);
1153private static bool IsGlobalAttribute([NotNullWhen(true)] SyntaxNode? node, SyntaxKind attributeTarget)
1154=> node.IsKind(SyntaxKind.Attribute) &&
1183case SyntaxKind.VariableDeclarator:
1184return node.Parent?.Parent?.Kind() is SyntaxKind.FieldDeclaration or SyntaxKind.EventFieldDeclaration;
1186case SyntaxKind.FieldDeclaration:
1187case SyntaxKind.MethodDeclaration:
1188case SyntaxKind.PropertyDeclaration:
1189case SyntaxKind.GetAccessorDeclaration:
1190case SyntaxKind.SetAccessorDeclaration:
1191case SyntaxKind.EventDeclaration:
1192case SyntaxKind.EventFieldDeclaration:
1193case SyntaxKind.AddAccessorDeclaration:
1194case SyntaxKind.RemoveAccessorDeclaration:
1195case SyntaxKind.IndexerDeclaration:
1196case SyntaxKind.OperatorDeclaration:
1197case SyntaxKind.ConversionOperatorDeclaration:
1198case SyntaxKind.ConstructorDeclaration:
1199case SyntaxKind.DestructorDeclaration:
1211=> node is ExpressionStatementSyntax { Expression: (kind: SyntaxKind.SimpleAssignmentExpression) };
1332if (token.Kind() == SyntaxKind.OverrideKeyword && token.Parent is MemberDeclarationSyntax member)
1440=> node is InterpolatedStringExpressionSyntax { StringStartToken: (kind: SyntaxKind.InterpolatedVerbatimStringStartToken) };
1482=> node is AssignmentExpressionSyntax(SyntaxKind.SimpleAssignmentExpression) { Left: IdentifierNameSyntax };
1485=> node is AssignmentExpressionSyntax(SyntaxKind.SimpleAssignmentExpression) { Left: ImplicitElementAccessSyntax };
1488=> node is InitializerExpressionSyntax(SyntaxKind.ObjectInitializerExpression);
1491=> node is InitializerExpressionSyntax(SyntaxKind.CollectionInitializerExpression);
1687=> node is InitializerExpressionSyntax(SyntaxKind.ObjectInitializerExpression) initExpr ? initExpr.Expressions : default;
1690=> node is InitializerExpressionSyntax(SyntaxKind.CollectionInitializerExpression) initExpr ? initExpr.Expressions : default;
src\roslyn\src\Analyzers\CSharp\CodeFixes\AddInheritdoc\AddInheritdocCodeFixProvider.cs (8)
46if (node.Kind() is not SyntaxKind.MethodDeclaration and not SyntaxKind.PropertyDeclaration and not SyntaxKind.VariableDeclarator)
49if (node.IsKind(SyntaxKind.VariableDeclarator) && node is not { Parent.Parent: EventFieldDeclarationSyntax })
81var xmlSpaceAfterTripleSlash = Token(leading: [DocumentationCommentExterior("///")], SyntaxKind.XmlTextLiteralToken, text: " ", valueText: " ", trailing: default);
85var xmlNewLineToken = Token(leading: default, SyntaxKind.XmlTextLiteralNewLineToken, text: newLine, valueText: newLine, trailing: default);
88kind: SyntaxKind.SingleLineDocumentationCommentTrivia,
107if (finalLeadingTrivia is [.., (kind: SyntaxKind.WhitespaceTrivia)])
src\roslyn\src\Analyzers\CSharp\CodeFixes\ConvertSwitchStatementToExpression\ConvertSwitchStatementToExpressionCodeFixProvider.Rewriter.cs (17)
41SyntaxKind nodeToGenerate,
52var rewriter = new Rewriter(model, isAllThrowStatements: nodeToGenerate == SyntaxKind.ThrowStatement, cancellationToken);
68SyntaxKind nodeToGenerate,
73case SyntaxKind.ReturnStatement:
75Token(leadingTrivia, SyntaxKind.ReturnKeyword, trailing: default),
78case SyntaxKind.ThrowStatement:
80Token(leadingTrivia, SyntaxKind.ThrowKeyword, trailing: default),
93private ExpressionStatementSyntax GenerateAssignment(ExpressionSyntax switchExpression, SyntaxKind assignmentKind, SyntaxTriviaList leadingTrivia)
151totalPattern = BinaryPattern(SyntaxKind.OrPattern, totalPattern.Parenthesize(), nextPatternPart.Parenthesize());
162case SyntaxKind.CasePatternSwitchLabel:
167case SyntaxKind.CaseSwitchLabel:
171case SyntaxKind.DefaultSwitchLabel:
208Debug.Assert(!statements[0].IsKind(SyntaxKind.BreakStatement));
234if (nextStatement is (kind: SyntaxKind.ThrowStatement or SyntaxKind.ReturnStatement))
250Token(leading: default, SyntaxKind.SwitchKeyword, node.CloseParenToken.TrailingTrivia),
251Token(leading: default, SyntaxKind.OpenBraceToken, node.OpenBraceToken.TrailingTrivia),
src\roslyn\src\Analyzers\CSharp\CodeFixes\RemoveUnnecessaryDiscardDesignation\CSharpRemoveUnnecessaryDiscardDesignationCodeFixProvider.cs (1)
53SyntaxKind.IsExpression,
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseCollectionInitializer\CSharpUseCollectionInitializerCodeFixProvider.cs (1)
23SyntaxKind,
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseCompoundAssignment\CSharpUseCompoundAssignmentCodeFixProvider.cs (11)
20: AbstractUseCompoundAssignmentCodeFixProvider<SyntaxKind, AssignmentExpressionSyntax, ExpressionSyntax>(Utilities.Kinds)
22protected override SyntaxToken Token(SyntaxKind kind)
26SyntaxKind assignmentOpKind, ExpressionSyntax left, SyntaxToken syntaxToken, ExpressionSyntax right)
33? Postfix(SyntaxKind.PostIncrementExpression, left)
34: Prefix(SyntaxKind.PreIncrementExpression, left);
38? Postfix(SyntaxKind.PostDecrementExpression, left)
39: Prefix(SyntaxKind.PreDecrementExpression, left);
41private static ExpressionSyntax Postfix(SyntaxKind kind, ExpressionSyntax operand)
44private static ExpressionSyntax Prefix(SyntaxKind kind, ExpressionSyntax operand)
47protected override SyntaxTriviaList PrepareRightExpressionLeadingTrivia(SyntaxTriviaList initialTrivia) => initialTrivia.SkipWhile(el => el.Kind() is SyntaxKind.WhitespaceTrivia or SyntaxKind.EndOfLineTrivia).ToSyntaxTriviaList();
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseNullPropagation\CSharpUseNullPropagationCodeFixProvider.cs (1)
21SyntaxKind,
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseObjectInitializer\CSharpUseObjectInitializerCodeFixProvider.cs (1)
29SyntaxKind,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\CodeGeneration\CSharpDeclarationComparer.cs (78)
15private static readonly Dictionary<SyntaxKind, int> s_kindPrecedenceMap = new(SyntaxFacts.EqualityComparer)
17{ SyntaxKind.FieldDeclaration, 0 },
18{ SyntaxKind.ConstructorDeclaration, 1 },
19{ SyntaxKind.DestructorDeclaration, 2 },
20{ SyntaxKind.IndexerDeclaration, 3 },
21{ SyntaxKind.PropertyDeclaration, 4 },
22{ SyntaxKind.EventFieldDeclaration, 5 },
23{ SyntaxKind.EventDeclaration, 6 },
24{ SyntaxKind.MethodDeclaration, 7 },
25{ SyntaxKind.OperatorDeclaration, 8 },
26{ SyntaxKind.ConversionOperatorDeclaration, 9 },
27{ SyntaxKind.EnumDeclaration, 10 },
28{ SyntaxKind.InterfaceDeclaration, 11 },
29{ SyntaxKind.StructDeclaration, 12 },
30{ SyntaxKind.ClassDeclaration, 13 },
31{ SyntaxKind.RecordDeclaration, 14 },
32{ SyntaxKind.RecordStructDeclaration, 15 },
33{ SyntaxKind.DelegateDeclaration, 16 }
36private static readonly Dictionary<SyntaxKind, int> s_operatorPrecedenceMap = new(SyntaxFacts.EqualityComparer)
38{ SyntaxKind.PlusToken, 0 },
39{ SyntaxKind.MinusToken, 1 },
40{ SyntaxKind.ExclamationToken, 2 },
41{ SyntaxKind.TildeToken, 3 },
42{ SyntaxKind.PlusPlusToken, 4 },
43{ SyntaxKind.MinusMinusToken, 5 },
44{ SyntaxKind.AsteriskToken, 6 },
45{ SyntaxKind.SlashToken, 7 },
46{ SyntaxKind.PercentToken, 8 },
47{ SyntaxKind.AmpersandToken, 9 },
48{ SyntaxKind.BarToken, 10 },
49{ SyntaxKind.CaretToken, 11 },
50{ SyntaxKind.LessThanLessThanToken, 12 },
51{ SyntaxKind.GreaterThanGreaterThanToken, 13 },
52{ SyntaxKind.EqualsEqualsToken, 14 },
53{ SyntaxKind.ExclamationEqualsToken, 15 },
54{ SyntaxKind.LessThanToken, 16 },
55{ SyntaxKind.GreaterThanToken, 17 },
56{ SyntaxKind.LessThanEqualsToken, 18 },
57{ SyntaxKind.GreaterThanEqualsToken, 19 },
58{ SyntaxKind.TrueKeyword, 20 },
59{ SyntaxKind.FalseKeyword, 21 },
60{ SyntaxKind.GreaterThanGreaterThanGreaterThanToken, 22 },
103case SyntaxKind.DelegateDeclaration:
106case SyntaxKind.FieldDeclaration:
107case SyntaxKind.EventFieldDeclaration:
110case SyntaxKind.ConstructorDeclaration:
113case SyntaxKind.DestructorDeclaration:
117case SyntaxKind.MethodDeclaration:
120case SyntaxKind.OperatorDeclaration:
123case SyntaxKind.EventDeclaration:
126case SyntaxKind.IndexerDeclaration:
129case SyntaxKind.PropertyDeclaration:
132case SyntaxKind.EnumDeclaration:
135case SyntaxKind.InterfaceDeclaration:
136case SyntaxKind.StructDeclaration:
137case SyntaxKind.RecordStructDeclaration:
138case SyntaxKind.ClassDeclaration:
139case SyntaxKind.RecordDeclaration:
142case SyntaxKind.ConversionOperatorDeclaration:
145case SyntaxKind.IncompleteMember:
148case SyntaxKind.GlobalStatement:
217return x.ImplicitOrExplicitKeyword.Kind() == SyntaxKind.ImplicitKeyword ? -1 : 1;
301private static bool ContainsToken(SyntaxTokenList list, SyntaxKind kind)
316if (ContainsToken(modifiers, SyntaxKind.PublicKeyword))
320else if (ContainsToken(modifiers, SyntaxKind.ProtectedKeyword))
322if (ContainsToken(modifiers, SyntaxKind.InternalKeyword))
327if (ContainsToken(modifiers, SyntaxKind.PrivateKeyword))
334else if (ContainsToken(modifiers, SyntaxKind.InternalKeyword))
338else if (ContainsToken(modifiers, SyntaxKind.PrivateKeyword))
347if (node.Kind() == SyntaxKind.InterfaceDeclaration)
352else if (node.Kind() is SyntaxKind.StructDeclaration or SyntaxKind.ClassDeclaration or SyntaxKind.RecordDeclaration or SyntaxKind.RecordStructDeclaration)
362private static bool BothHaveModifier(SyntaxTokenList x, SyntaxTokenList y, SyntaxKind modifierKind, out int comparisonResult)
378=> BothHaveModifier(x, y, SyntaxKind.StaticKeyword, out comparisonResult);
381=> BothHaveModifier(x, y, SyntaxKind.ConstKeyword, out comparisonResult);
384=> BothHaveModifier(x, y, SyntaxKind.ReadOnlyKeyword, out comparisonResult);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\CodeGeneration\EventGenerator.cs (7)
28if (eventDeclaration.Kind() == SyntaxKind.EventFieldDeclaration)
36if (eventDeclaration.Kind() == SyntaxKind.EventDeclaration)
53if (eventDeclaration.Kind() == SyntaxKind.FieldDeclaration)
164GenerateAccessorDeclaration(@event, @event.AddMethod, SyntaxKind.AddAccessorDeclaration, destination, info),
165GenerateAccessorDeclaration(@event, @event.RemoveMethod, SyntaxKind.RemoveAccessorDeclaration, destination, info),
174SyntaxKind kind,
186SyntaxKind kind,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\CodeGeneration\ExpressionGenerator.cs (18)
42InitializerExpression(SyntaxKind.ArrayInitializerExpression,
51=> LiteralExpression(SyntaxKind.NullLiteralExpression);
108? SyntaxKind.TrueLiteralExpression
109: SyntaxKind.FalseLiteralExpression);
116SyntaxKind.StringLiteralExpression, Literal(valueString, val));
123SyntaxKind.CharacterLiteralExpression, Literal(literal, val));
186return BinaryExpression(SyntaxKind.DivideExpression,
192return BinaryExpression(SyntaxKind.DivideExpression,
198return BinaryExpression(SyntaxKind.DivideExpression,
199PrefixUnaryExpression(SyntaxKind.UnaryMinusExpression, GenerateDoubleLiteralExpression(null, 1.0, false)),
215return BinaryExpression(SyntaxKind.DivideExpression,
221return BinaryExpression(SyntaxKind.DivideExpression,
227return BinaryExpression(SyntaxKind.DivideExpression,
228PrefixUnaryExpression(SyntaxKind.UnaryMinusExpression, GenerateSingleLiteralExpression(null, 1.0F, false)),
279SyntaxKind.NumericLiteralExpression, tokenFactory(stringValue, nonNegativeValue));
282? PrefixUnaryExpression(SyntaxKind.UnaryMinusExpression, literal)
299var result = MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, memberAccess, IdentifierName(constant.Value));
315: MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, result, name);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\CodeGeneration\PropertyGenerator.cs (8)
185if (accessor.IsKind(SyntaxKind.GetAccessorDeclaration))
252SyntaxKind declarationKind, AccessorDeclarationSyntax accessor, LanguageVersion languageVersion, ExpressionBodyPreference preference, CancellationToken cancellationToken,
279var setAccessorKind = property.SetMethod?.IsInitOnly == true ? SyntaxKind.InitAccessorDeclaration : SyntaxKind.SetAccessorDeclaration;
282GenerateAccessorDeclaration(property, property.GetMethod, SyntaxKind.GetAccessorDeclaration, destination, info, cancellationToken),
294SyntaxKind kind,
308SyntaxKind kind,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\Extensions\ContextQuery\CSharpSyntaxContext.cs (42)
48public readonly ISet<SyntaxKind> PrecedingModifiers;
111ISet<SyntaxKind> precedingModifiers,
213targetToken.IsKind(SyntaxKind.TildeToken) &&
214targetToken.Parent.IsKind(SyntaxKind.DestructorDeclaration) &&
215targetToken.Parent.Parent is (kind: SyntaxKind.ClassDeclaration or SyntaxKind.RecordDeclaration);
224var isOnArgumentListBracketOrComma = targetToken.Parent is (kind: SyntaxKind.ArgumentList or SyntaxKind.AttributeArgumentList or SyntaxKind.ArrayRankSpecifier);
246isCrefContext: syntaxTree.IsCrefContext(position, cancellationToken) && !leftToken.IsKind(SyntaxKind.DotToken),
263isTaskLikeTypeContext: precedingModifiers.Contains(SyntaxKind.AsyncKeyword),
312if (token.Kind() == SyntaxKind.OpenBracketToken &&
313token.Parent.IsKind(SyntaxKind.AttributeList) &&
324ISet<SyntaxKind>? validModifiers = null,
325ISet<SyntaxKind>? validTypeDeclarations = null,
332public bool IsRecordDeclarationContext(ISet<SyntaxKind> validModifiers, CancellationToken cancellationToken)
336if (!previousToken.IsKind(SyntaxKind.RecordKeyword))
346ISet<SyntaxKind> validTypeDeclarations, bool includingRecordParameters, CancellationToken cancellationToken)
352if (token.Kind() == SyntaxKind.OpenBracketToken &&
353token.Parent.IsKind(SyntaxKind.AttributeList))
376if (token.Kind() == SyntaxKind.OpenBracketToken &&
377token.Parent.IsKind(SyntaxKind.AttributeList) &&
392if (token.Kind() == SyntaxKind.OpenBracketToken &&
393token.Parent.IsKind(SyntaxKind.AttributeList) &&
403ISet<SyntaxKind>? validModifiers = null,
404ISet<SyntaxKind>? validTypeDeclarations = null,
439if (targetToken.IsKind(SyntaxKind.AwaitKeyword))
450&& targetToken.IsKind(SyntaxKind.IdentifierToken)
451&& targetToken.HasMatchingText(SyntaxKind.AwaitKeyword))
483if (node.IsKind(SyntaxKind.QueryExpression))
487if (targetToken.IsKind(SyntaxKind.InKeyword))
534SyntaxKind.AssemblyKeyword or SyntaxKind.ModuleKeyword => AttributeTargets.Assembly | AttributeTargets.Module,
535SyntaxKind.TypeKeyword => AttributeTargets.Class | AttributeTargets.Struct | AttributeTargets.Enum | AttributeTargets.Interface | AttributeTargets.Delegate,
536SyntaxKind.MethodKeyword => AttributeTargets.Method,
537SyntaxKind.FieldKeyword => AttributeTargets.Field,
538SyntaxKind.PropertyKeyword => AttributeTargets.Property,
539SyntaxKind.EventKeyword => AttributeTargets.Event,
540SyntaxKind.ParamKeyword => AttributeTargets.Parameter,
541SyntaxKind.ReturnKeyword => AttributeTargets.ReturnValue,
542SyntaxKind.TypeVarKeyword => AttributeTargets.GenericParameter,
555RecordDeclarationSyntax record => record.ClassOrStructKeyword.IsKind(SyntaxKind.StructKeyword)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\Extensions\ContextQuery\SyntaxTreeExtensions.cs (444)
21private static readonly ISet<SyntaxKind> s_validLocalFunctionModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
23SyntaxKind.ExternKeyword,
24SyntaxKind.StaticKeyword,
25SyntaxKind.AsyncKeyword,
26SyntaxKind.UnsafeKeyword,
36if (token.IsKind(SyntaxKind.OpenBracketToken) &&
37token.Parent.IsKind(SyntaxKind.AttributeList))
44if (token.IsKind(SyntaxKind.CommaToken) &&
45token.Parent.IsKind(SyntaxKind.AttributeList))
52if (token.IsKind(SyntaxKind.ColonToken) &&
53token.Parent.IsKind(SyntaxKind.AttributeTargetSpecifier))
60if (token.Parent.IsKind(SyntaxKind.QualifiedName) &&
61token.Parent.IsParentKind(SyntaxKind.Attribute))
68if (token.Parent.IsKind(SyntaxKind.AliasQualifiedName) &&
69token.Parent.IsParentKind(SyntaxKind.Attribute))
80ISet<SyntaxKind> validModifiers,
95if (token.IsKind(SyntaxKind.CloseBracketToken)
115if (parent.IsKind(SyntaxKind.CompilationUnit) ||
116(parent is MemberDeclarationSyntax && parent.IsParentKind(SyntaxKind.CompilationUnit)))
129return kind is ((int)SyntaxKind.AssemblyKeyword)
130or ((int)SyntaxKind.ModuleKeyword);
166if (token.IsKind(SyntaxKind.OpenBraceToken))
177if (token.IsKind(SyntaxKind.SemicolonToken))
194if (token.IsKind(SyntaxKind.CloseBraceToken))
208token.Parent.IsKind(SyntaxKind.Block) &&
220if (token.IsKind(SyntaxKind.CloseBracketToken) &&
221token.Parent.IsKind(SyntaxKind.AttributeList))
243ISet<SyntaxKind>? validModifiers,
244ISet<SyntaxKind>? validTypeDeclarations,
257validTypeDeclarations ??= SpecializedCollections.EmptySet<SyntaxKind>();
285token.IsKindOrHasMatchingText(SyntaxKind.PartialKeyword))
294validModifiers ??= SpecializedCollections.EmptySet<SyntaxKind>();
299if (token.HasMatchingText(SyntaxKind.AsyncKeyword))
322SyntaxKind otherModifier,
330return modifierTokens.Contains(otherModifier) && IsLambdaDeclarationContext(syntaxTree, position, SyntaxKind.None, cancellationToken);
342ISet<SyntaxKind> validModifiers,
359if (token.Kind() == SyntaxKind.CloseBracketToken && token.Parent is AttributeListSyntax)
420(nextToken.Kind() == SyntaxKind.GlobalKeyword && nextToken.GetAncestor<UsingDirectiveSyntax>()?.GlobalKeyword == nextToken))
426if (token.IsKind(SyntaxKind.None))
440if (token.IsKind(SyntaxKind.OpenBraceToken) && token.Parent is NamespaceDeclarationSyntax or TypeDeclarationSyntax)
455if (token.IsKind(SyntaxKind.SemicolonToken))
457if (token.Parent is (kind: SyntaxKind.ExternAliasDirective or SyntaxKind.UsingDirective))
477if (token.IsKind(SyntaxKind.CloseBraceToken))
483else if (token.Parent.IsKind(SyntaxKind.NamespaceDeclaration))
492token.Parent.IsKind(SyntaxKind.Block) &&
507if (token.IsKind(SyntaxKind.CloseBracketToken) &&
508token.Parent.IsKind(SyntaxKind.AttributeList))
511if (token.Parent.IsParentKind(SyntaxKind.CompilationUnit))
532ISet<SyntaxKind>? validModifiers,
533ISet<SyntaxKind>? validTypeDeclarations,
543validTypeDeclarations ??= SpecializedCollections.EmptySet<SyntaxKind>();
576token.IsKindOrHasMatchingText(SyntaxKind.PartialKeyword))
591validModifiers ??= SpecializedCollections.EmptySet<SyntaxKind>();
602return incompleteMember.Type.IsKind(SyntaxKind.RefType);
609if (modifierTokens.Contains(SyntaxKind.FileKeyword))
612if (modifierTokens.Contains(SyntaxKind.ClosedKeyword))
638if (token.IsKind(SyntaxKind.ColonColonToken) &&
639token.GetPreviousToken(includeSkipped: true).IsKind(SyntaxKind.GlobalKeyword))
651if (token.IsKind(SyntaxKind.UsingKeyword))
656if (token.GetNextToken(includeSkipped: true).Kind() != SyntaxKind.EqualsToken &&
701is SyntaxKind.ClassKeyword
702or SyntaxKind.StructKeyword
703or SyntaxKind.InterfaceKeyword &&
704token.GetPreviousToken().IsKind(SyntaxKind.PartialKeyword))
737syntaxTree.IsAfterKeyword(position, SyntaxKind.ConstKeyword, cancellationToken) ||
738syntaxTree.IsAfterKeyword(position, SyntaxKind.RefKeyword, cancellationToken) ||
739syntaxTree.IsAfterKeyword(position, SyntaxKind.ReadOnlyKeyword, cancellationToken) ||
740syntaxTree.IsAfterKeyword(position, SyntaxKind.CaseKeyword, cancellationToken) ||
741syntaxTree.IsAfterKeyword(position, SyntaxKind.EventKeyword, cancellationToken) ||
742syntaxTree.IsAfterKeyword(position, SyntaxKind.StackAllocKeyword, cancellationToken) ||
785if (token.Kind() is SyntaxKind.ColonToken or SyntaxKind.CommaToken &&
801if (token.IsKind(SyntaxKind.EqualsToken) &&
831if (token.IsKind(SyntaxKind.WhereKeyword) &&
832token.Parent.IsKind(SyntaxKind.TypeParameterConstraintClause))
837if (token.IsKind(SyntaxKind.IdentifierToken) &&
838token.HasMatchingText(SyntaxKind.WhereKeyword) &&
839token.Parent.IsKind(SyntaxKind.IdentifierName) &&
840token.Parent.IsParentKind(SyntaxKind.SimpleBaseType) &&
841token.Parent.Parent.IsParentKind(SyntaxKind.BaseList))
858if (token.IsKind(SyntaxKind.ColonToken) &&
859token.GetPreviousToken(includeSkipped: true).IsKind(SyntaxKind.IdentifierToken) &&
860token.GetPreviousToken(includeSkipped: true).GetPreviousToken().IsKind(SyntaxKind.WhereKeyword))
884if (token.IsKind(SyntaxKind.CommaToken) &&
903if (token.IsKind(SyntaxKind.OpenParenToken) && token.Parent.IsKind(SyntaxKind.TypeOfExpression))
915if (token.IsKind(SyntaxKind.OpenParenToken) && token.Parent.IsKind(SyntaxKind.DefaultExpression))
928if (token.IsKind(SyntaxKind.OpenParenToken) && token.Parent.IsKind(SyntaxKind.SizeOfExpression))
947case SyntaxKind.LessThanToken:
948case SyntaxKind.CommaToken:
949return token.Parent.IsKind(SyntaxKind.FunctionPointerParameterList);
955{ Parent.RawKind: (int)SyntaxKind.FunctionPointerParameter } => true,
957{ Parent: TypeSyntax { Parent.RawKind: (int)SyntaxKind.FunctionPointerParameter } } => true,
963=> targetToken.Parent.IsKind(SyntaxKind.TypeParameterConstraintClause) &&
964targetToken.Kind() is SyntaxKind.ColonToken or SyntaxKind.CommaToken;
980if (token.Kind() is not SyntaxKind.LessThanToken and not SyntaxKind.CommaToken)
1015if (name.IsParentKind(SyntaxKind.LessThanExpression) &&
1017conditional.IsParentKind(SyntaxKind.ExpressionStatement) &&
1018conditional.Parent.IsParentKind(SyntaxKind.GlobalStatement))
1060out SyntaxKind previousModifier)
1069previousModifier = SyntaxKind.None;
1071if (token.IsKind(SyntaxKind.OpenParenToken) &&
1079if (token.IsKind(SyntaxKind.LessThanToken) && token.Parent.IsKind(SyntaxKind.FunctionPointerParameterList))
1085if (token.IsKind(SyntaxKind.CommaToken) &&
1095if (token.IsKind(SyntaxKind.CommaToken) &&
1104if (token.IsKind(SyntaxKind.CloseBracketToken) &&
1105token.Parent.IsKind(SyntaxKind.AttributeList) &&
1115if (token.Kind() is SyntaxKind.RefKeyword or SyntaxKind.InKeyword or SyntaxKind.ReadOnlyKeyword or SyntaxKind.OutKeyword or SyntaxKind.ThisKeyword or SyntaxKind.ParamsKeyword or SyntaxKind.ScopedKeyword)
1120else if (token.IsKind(SyntaxKind.IdentifierToken) && token is { Text: "scoped", Parent: IdentifierNameSyntax scopedIdentifierName })
1123previousModifier = SyntaxKind.ScopedKeyword;
1150if (syntaxTree.IsParameterModifierContext(position, tokenOnLeftOfPosition, includeOperators: false, out _, out var previousModifier) &&
1151previousModifier == SyntaxKind.None)
1164if (token.Kind() is SyntaxKind.OpenBracketToken or SyntaxKind.CommaToken)
1166return token.Parent.IsKind(SyntaxKind.BracketedParameterList);
1178if (token.IsKind(SyntaxKind.DelegateKeyword) &&
1179token.Parent.IsKind(SyntaxKind.DelegateDeclaration))
1193if (token.IsKind(SyntaxKind.OperatorKeyword) &&
1194token.GetPreviousToken(includeSkipped: true).Kind() is SyntaxKind.ImplicitKeyword or SyntaxKind.ExplicitKeyword)
1210if (token.Kind() is SyntaxKind.OpenParenToken or SyntaxKind.OpenBracketToken or SyntaxKind.CommaToken &&
1211token.Parent is (kind: SyntaxKind.ParameterList or SyntaxKind.BracketedParameterList))
1225typeDecl.IsKind(SyntaxKind.ClassDeclaration) &&
1226method.Modifiers.Any(SyntaxKind.StaticKeyword) &&
1227typeDecl.Modifiers.Any(SyntaxKind.StaticKeyword);
1236if (token.Kind() is SyntaxKind.OpenParenToken or SyntaxKind.CommaToken)
1238if (token.Parent.IsKind(SyntaxKind.ParameterList) &&
1239token.Parent.IsParentKind(SyntaxKind.ParenthesizedLambdaExpression))
1255if (token.Parent is (kind: SyntaxKind.ParenthesizedExpression or SyntaxKind.TupleExpression or SyntaxKind.CastExpression))
1269if (token.Kind() is SyntaxKind.OpenParenToken or SyntaxKind.CommaToken)
1273else if (token.IsKind(SyntaxKind.ScopedKeyword) && token.Parent.IsKind(SyntaxKind.Parameter))
1277else if (token.IsKind(SyntaxKind.IdentifierToken) && token is { Text: "scoped", Parent: IdentifierNameSyntax scopedIdentifierName } && scopedIdentifierName.Parent.IsKind(SyntaxKind.Parameter))
1286return parent.IsKind(SyntaxKind.ParameterList) && parent.IsParentKind(SyntaxKind.AnonymousMethodExpression);
1295if (token.Kind() is SyntaxKind.RefKeyword or SyntaxKind.InKeyword or SyntaxKind.OutKeyword)
1328if (leftToken.IsKind(SyntaxKind.CloseParenToken))
1331SyntaxKind.ParenthesizedExpression or
1332SyntaxKind.TupleExpression or
1333SyntaxKind.TupleType))
1345if (leftToken.IsKind(SyntaxKind.IdentifierToken))
1356if (leftToken.IsKind(SyntaxKind.IdentifierToken) &&
1357leftToken.Parent.IsKind(SyntaxKind.IdentifierName) &&
1358leftToken.Parent.Parent is (kind: SyntaxKind.QualifiedName or SyntaxKind.SimpleMemberAccessExpression))
1374if (leftToken.IsKind(SyntaxKind.OpenParenToken))
1384if (leftToken.Parent.IsKind(SyntaxKind.ParenthesizedPattern))
1392if (leftToken.Kind() is SyntaxKind.CaseKeyword or SyntaxKind.IsKeyword)
1399if (leftToken.Kind() is SyntaxKind.OpenBraceToken or SyntaxKind.CommaToken && leftToken.Parent.IsKind(SyntaxKind.SwitchExpression))
1406if (leftToken.Kind() is SyntaxKind.OpenParenToken or SyntaxKind.CommaToken && leftToken.Parent.IsKind(SyntaxKind.PositionalPatternClause))
1413if (leftToken.Kind() is SyntaxKind.OpenBracketToken or SyntaxKind.CommaToken && leftToken.Parent.IsKind(SyntaxKind.ListPattern))
1420if (leftToken.IsKind(SyntaxKind.DotDotToken) && leftToken.Parent.IsKind(SyntaxKind.SlicePattern))
1428if (leftToken.IsKind(SyntaxKind.ColonToken) && leftToken.Parent is (kind: SyntaxKind.NameColon or SyntaxKind.ExpressionColon) &&
1429leftToken.Parent.IsParentKind(SyntaxKind.Subpattern))
1439if (leftToken.IsKindOrHasMatchingText(SyntaxKind.AndKeyword) || leftToken.IsKindOrHasMatchingText(SyntaxKind.OrKeyword))
1446if (leftToken.IsKind(SyntaxKind.NotKeyword) && leftToken.Parent.IsKind(SyntaxKind.NotPattern))
1455if (leftToken.Kind() is SyntaxKind.GreaterThanToken or SyntaxKind.GreaterThanEqualsToken or SyntaxKind.LessThanToken or SyntaxKind.LessThanEqualsToken &&
1456leftToken.Parent.IsKind(SyntaxKind.RelationalPattern))
1472if (leftToken.IsKind(SyntaxKind.DotToken) ||
1473leftToken.IsKind(SyntaxKind.MinusGreaterThanToken))
1492return leftToken.Kind() is not (SyntaxKind.OrKeyword
1493or SyntaxKind.AndKeyword
1494or SyntaxKind.NotKeyword
1495or SyntaxKind.OpenParenToken
1496or SyntaxKind.ColonColonToken
1497or SyntaxKind.DotDotToken
1498or SyntaxKind.OpenBraceToken);
1534binaryExpressionSyntax.OperatorToken.IsKind(SyntaxKind.IsKeyword) &&
1576if (possibleCommaOrParen.Kind() is not (SyntaxKind.OpenParenToken or SyntaxKind.CommaToken))
1582SyntaxKind.ParenthesizedExpression or
1583SyntaxKind.TupleExpression or
1584SyntaxKind.TupleType or
1585SyntaxKind.CastExpression))
1591if (possibleCommaOrParen.Parent.IsKind(SyntaxKind.ParameterList) &&
1616if (leftToken.Parent.IsKind(SyntaxKind.ParenthesizedVariableDesignation) ||
1617leftToken.Parent.IsParentKind(SyntaxKind.ParenthesizedVariableDesignation))
1637if (leftToken.IsKind(SyntaxKind.OpenParenToken) && leftToken.Parent.IsKind(SyntaxKind.ParenthesizedExpression))
1647if (leftToken.Kind() is SyntaxKind.OpenParenToken or SyntaxKind.CommaToken && leftToken.Parent.IsKind(SyntaxKind.TupleExpression))
1657if (leftToken.Kind() is SyntaxKind.OpenParenToken or SyntaxKind.CommaToken)
1681if (node.Parent.IsKind(SyntaxKind.ParenthesizedExpression))
1687if (node.Parent.IsKind(SyntaxKind.Argument) && node.Parent.Parent.IsKind(SyntaxKind.TupleExpression))
1699if (leftToken.Kind() is SyntaxKind.OpenParenToken or SyntaxKind.CommaToken &&
1700leftToken.Parent.IsKind(SyntaxKind.ArgumentList) &&
1793if (token.IsKind(SyntaxKind.ConstKeyword) &&
1794token.Parent.IsKind(SyntaxKind.LocalDeclarationStatement))
1803if (token.Kind() is SyntaxKind.RefKeyword or SyntaxKind.ReadOnlyKeyword)
1806if (parent is (kind: SyntaxKind.RefType or SyntaxKind.RefExpression or SyntaxKind.LocalDeclarationStatement))
1808if (parent.IsParentKind(SyntaxKind.VariableDeclaration) &&
1810SyntaxKind.LocalDeclarationStatement or
1811SyntaxKind.ForStatement or
1812SyntaxKind.ForEachVariableStatement))
1817if (parent.Parent is (kind: SyntaxKind.ForEachStatement or SyntaxKind.ForEachVariableStatement))
1825if (token.IsKind(SyntaxKind.OutKeyword) &&
1837if (token.IsKind(SyntaxKind.OpenParenToken))
1840if (previous.Kind() is SyntaxKind.ForKeyword or SyntaxKind.ForEachKeyword or SyntaxKind.UsingKeyword)
1846if (token.IsKind(SyntaxKind.UsingKeyword) &&
1854if (token.IsKindOrHasMatchingText(SyntaxKind.FromKeyword) &&
1861if (CodeAnalysis.CSharpExtensions.IsKind(token, SyntaxKind.JoinKeyword) &&
1873if (token.IsKind(SyntaxKind.IdentifierToken) && token.Text == "scoped" && token.Parent.IsKind(SyntaxKind.IdentifierName) && token.Parent.Parent is VariableDeclarationSyntax or ExpressionStatementSyntax or IncompleteMemberSyntax)
1879if (token.IsKind(SyntaxKind.ScopedKeyword) && token.Parent is IncompleteMemberSyntax or ScopedTypeSyntax)
1896if (token.IsKind(SyntaxKind.OpenParenToken) &&
1897token.GetPreviousToken(includeSkipped: true).IsKind(SyntaxKind.FixedKeyword))
1913if (token.IsKind(SyntaxKind.OpenParenToken) &&
1914token.GetPreviousToken(includeSkipped: true).IsKind(SyntaxKind.CatchKeyword))
1927if (token.Kind() is SyntaxKind.IsKeyword or SyntaxKind.AsKeyword)
1938if (token.IsKind(SyntaxKind.NewKeyword))
1992if (token.IsKind(SyntaxKind.None))
2042if (CodeAnalysis.CSharpExtensions.IsKind(token, SyntaxKind.OpenParenToken) &&
2056if (token.IsKind(SyntaxKind.OpenParenToken) &&
2057token.Parent.IsKind(SyntaxKind.CastExpression))
2076if (token.IsKind(SyntaxKind.CaseKeyword) &&
2077token.Parent.IsKind(SyntaxKind.GotoCaseStatement))
2082if (token.IsKind(SyntaxKind.EqualsToken) &&
2085if (equalsValue.IsParentKind(SyntaxKind.VariableDeclarator) &&
2086equalsValue.Parent.IsParentKind(SyntaxKind.VariableDeclaration))
2092return fieldDeclaration.Modifiers.Any(SyntaxKind.ConstKeyword);
2099return localDeclaration.Modifiers.Any(SyntaxKind.ConstKeyword);
2104if (equalsValue.IsParentKind(SyntaxKind.EnumMemberDeclaration))
2110if (equalsValue.IsParentKind(SyntaxKind.Parameter))
2118if (token.Parent.IsKind(SyntaxKind.AttributeArgumentList) &&
2119token.Kind() is SyntaxKind.CommaToken or SyntaxKind.OpenParenToken)
2125if (token.IsKind(SyntaxKind.ColonToken) &&
2126token.Parent.IsKind(SyntaxKind.NameColon) &&
2127token.Parent.IsParentKind(SyntaxKind.AttributeArgument))
2133if (token.IsKind(SyntaxKind.EqualsToken) &&
2134token.Parent.IsKind(SyntaxKind.NameEquals) &&
2135token.Parent.IsParentKind(SyntaxKind.AttributeArgument))
2205is SyntaxKind.DotToken
2206or SyntaxKind.ColonColonToken
2207or SyntaxKind.MinusGreaterThanToken)
2214if (token.IsKind(SyntaxKind.EqualsToken))
2216if (token.Parent.IsKind(SyntaxKind.NameEquals) &&
2217token.Parent.IsParentKind(SyntaxKind.UsingDirective))
2237is SyntaxKind.EqualsToken
2238or SyntaxKind.MinusEqualsToken
2239or SyntaxKind.AsteriskEqualsToken
2240or SyntaxKind.PlusEqualsToken
2241or SyntaxKind.SlashEqualsToken
2242or SyntaxKind.ExclamationEqualsToken
2243or SyntaxKind.CaretEqualsToken
2244or SyntaxKind.AmpersandEqualsToken
2245or SyntaxKind.BarEqualsToken
2246or SyntaxKind.PercentEqualsToken
2247or SyntaxKind.LessThanLessThanEqualsToken
2248or SyntaxKind.GreaterThanGreaterThanEqualsToken
2249or SyntaxKind.GreaterThanGreaterThanGreaterThanEqualsToken
2250or SyntaxKind.QuestionQuestionEqualsToken)
2256if (token.IsKind(SyntaxKind.OpenParenToken))
2258if (token.Parent.IsKind(SyntaxKind.ParenthesizedExpression))
2331if (token.IsKind(SyntaxKind.AsteriskToken) && semanticModel != null)
2348tokenOnLeftOfPosition.IsKind(SyntaxKind.IdentifierToken))
2351if (previousToken.Kind() is SyntaxKind.AsteriskToken or SyntaxKind.QuestionToken &&
2352previousToken.Parent?.Kind() is SyntaxKind.PointerType or SyntaxKind.NullableType)
2355if (type.IsParentKind(SyntaxKind.VariableDeclaration) &&
2374if (token.Kind() is SyntaxKind.OpenBracketToken or SyntaxKind.CommaToken &&
2375token.Parent.IsKind(SyntaxKind.ArrayRankSpecifier))
2382if (token.IsKind(SyntaxKind.DotDotToken) &&
2383token.Parent.IsKind(SyntaxKind.RangeExpression) &&
2390if (token.IsKind(SyntaxKind.QuestionToken) &&
2399if (token.IsKind(SyntaxKind.ColonToken) &&
2400token.Parent.IsKind(SyntaxKind.ConditionalExpression))
2408if (token.IsKind(SyntaxKind.OpenParenToken))
2410if (token.Parent is (kind: SyntaxKind.TypeOfExpression or SyntaxKind.DefaultExpression or SyntaxKind.SizeOfExpression))
2419if (token.Kind() is SyntaxKind.OpenParenToken or SyntaxKind.CommaToken &&
2430if (token.Kind() is SyntaxKind.OpenParenToken or SyntaxKind.OpenBracketToken or SyntaxKind.CommaToken &&
2431token.Parent is (kind: SyntaxKind.ArgumentList or SyntaxKind.BracketedArgumentList or SyntaxKind.TupleExpression))
2440if (token.Kind() is SyntaxKind.OpenParenToken or SyntaxKind.CommaToken)
2442if (token.Parent.IsKind(SyntaxKind.AttributeArgumentList))
2453if (token.Kind() is SyntaxKind.RefKeyword or SyntaxKind.InKeyword or SyntaxKind.OutKeyword)
2455if (token.Parent.IsKind(SyntaxKind.Argument))
2459else if (token.Parent.IsKind(SyntaxKind.RefExpression))
2463if (token.Parent.IsParentKind(SyntaxKind.ParenthesizedExpression))
2473if (token.IsKind(SyntaxKind.ColonToken) &&
2474token.Parent.IsKind(SyntaxKind.NameColon) &&
2475token.Parent.IsParentKind(SyntaxKind.Argument))
2481if (token.IsKind(SyntaxKind.EqualsGreaterThanToken))
2488if (token.Kind() is SyntaxKind.OpenBraceToken or SyntaxKind.CommaToken)
2494if (token.Parent.IsKind(SyntaxKind.ObjectInitializerExpression) && token.IsKind(SyntaxKind.OpenBraceToken))
2497if (!token.IntersectsWith(position) && token.GetNextToken().GetNextToken().IsKind(SyntaxKind.EqualsToken))
2524if (token.IsKind(SyntaxKind.SemicolonToken) &&
2535if (token.IsKind(SyntaxKind.OpenParenToken) &&
2544if (token.IsKind(SyntaxKind.CommaToken) &&
2545token.Parent.IsKind(SyntaxKind.ForStatement))
2554if (token.IsKind(SyntaxKind.InKeyword))
2557SyntaxKind.ForEachStatement or
2558SyntaxKind.ForEachVariableStatement or
2559SyntaxKind.FromClause or
2560SyntaxKind.JoinClause))
2568if (token.Kind() is SyntaxKind.OnKeyword or SyntaxKind.EqualsKeyword &&
2569token.Parent.IsKind(SyntaxKind.JoinClause))
2575if (token.IsKind(SyntaxKind.WhereKeyword) &&
2576token.Parent.IsKind(SyntaxKind.WhereClause))
2583if (token.Kind() is SyntaxKind.OrderByKeyword or SyntaxKind.CommaToken &&
2584token.Parent.IsKind(SyntaxKind.OrderByClause))
2590if (token.IsKind(SyntaxKind.SelectKeyword) &&
2591token.Parent.IsKind(SyntaxKind.SelectClause))
2598if (token.Kind() is SyntaxKind.GroupKeyword or SyntaxKind.ByKeyword &&
2599token.Parent.IsKind(SyntaxKind.GroupClause))
2607if (token.IsKind(SyntaxKind.ReturnKeyword))
2609if (token.GetPreviousToken(includeSkipped: true).Kind() != SyntaxKind.OpenBracketToken)
2616if (token.IsKind(SyntaxKind.ThrowKeyword))
2622if (token.IsKind(SyntaxKind.OpenParenToken) &&
2623token.GetPreviousToken(includeSkipped: true).IsKind(SyntaxKind.WhileKeyword))
2632if (token.IsKind(SyntaxKind.OpenParenToken) && token.Parent.IsKind(SyntaxKind.UsingStatement))
2638if (token.IsKind(SyntaxKind.OpenParenToken) &&
2639token.GetPreviousToken(includeSkipped: true).IsKind(SyntaxKind.LockKeyword))
2645if (token.IsKind(SyntaxKind.OpenParenToken) &&
2646token.GetPreviousToken(includeSkipped: true).IsKind(SyntaxKind.IfKeyword))
2652if (token.IsKind(SyntaxKind.OpenParenToken) &&
2653token.GetPreviousToken(includeSkipped: true).IsKind(SyntaxKind.SwitchKeyword))
2659if (token.IsKind(SyntaxKind.OpenParenToken) &&
2660token.GetPreviousToken(includeSkipped: true).IsKind(SyntaxKind.CheckedKeyword))
2666if (token.IsKind(SyntaxKind.OpenParenToken) &&
2667token.GetPreviousToken(includeSkipped: true).IsKind(SyntaxKind.UncheckedKeyword))
2673if (token.IsKind(SyntaxKind.OpenParenToken) &&
2674token.GetPreviousToken(includeSkipped: true).IsKind(SyntaxKind.WhenKeyword))
2680if (token.IsKind(SyntaxKind.WhenKeyword) && token.Parent.IsKind(SyntaxKind.WhenClause))
2697if (token.Kind() is SyntaxKind.OpenBraceToken or SyntaxKind.CommaToken &&
2698token.Parent.IsKind(SyntaxKind.AnonymousObjectCreationExpression))
2706if (token.Kind() is SyntaxKind.OpenBracketToken or SyntaxKind.CommaToken &&
2707token.Parent.IsKind(SyntaxKind.ListPattern))
2715if (token.Kind() is SyntaxKind.OpenBracketToken or SyntaxKind.DotDotToken or SyntaxKind.CommaToken &&
2716token.Parent.IsKind(SyntaxKind.CollectionExpression))
2724if (token.Kind() is SyntaxKind.DotDotToken &&
2725token.Parent.IsKind(SyntaxKind.SpreadElement))
2736if (token.IsKind(SyntaxKind.OpenBraceToken))
2757if (token.IsKind(SyntaxKind.DotToken))
2760if (token.Parent.IsKind(SyntaxKind.SimpleMemberAccessExpression))
2763while (parentMemberAccess.Parent.IsKind(SyntaxKind.SimpleMemberAccessExpression))
2768if (parentMemberAccess.Parent.IsKind(SyntaxKind.Argument) &&
2776if (token.Parent.IsKind(SyntaxKind.QualifiedName))
2779while (parentQualifiedName.Parent.IsKind(SyntaxKind.QualifiedName))
2784if (parentQualifiedName.Parent.IsKind(SyntaxKind.Argument) &&
2795if (token.Parent.IsKind(SyntaxKind.ArgumentList) &&
2829if (token.IsKind(SyntaxKind.NumericLiteralToken))
2859if (type.Kind() is SyntaxKind.GenericName or SyntaxKind.AliasQualifiedName or SyntaxKind.PredefinedType)
2874if (token.IsKind(SyntaxKind.IdentifierToken) &&
2875token.Parent.IsKind(SyntaxKind.IdentifierName) &&
2876token.Parent.Parent is (kind: SyntaxKind.ObjectInitializerExpression or SyntaxKind.CollectionInitializerExpression))
2882if (token.Kind() is SyntaxKind.IdentifierToken &&
2883token.Parent.IsKind(SyntaxKind.IdentifierName))
2885if (token.Parent.Parent is ArgumentSyntax { RefOrOutKeyword.RawKind: (int)SyntaxKind.OutKeyword })
2889if (token.Text == SyntaxFacts.GetText(SyntaxKind.AsyncKeyword))
2907if (tokenBeforeName.Kind() == SyntaxKind.CaseKeyword)
2925case SyntaxKind.QualifiedName:
2927case SyntaxKind.AliasQualifiedName:
2929case SyntaxKind.SimpleMemberAccessExpression:
2958if (token.IsKind(SyntaxKind.CloseBraceToken))
2964block.Parent?.Kind() is SyntaxKind.TryStatement or SyntaxKind.CatchClause)
2984if (CodeAnalysis.CSharpExtensions.IsKind(token, SyntaxKind.CatchKeyword))
2989if (CodeAnalysis.CSharpExtensions.IsKind(token, SyntaxKind.CloseParenToken) &&
2990token.Parent.IsKind(SyntaxKind.CatchDeclaration))
3007targetToken is (kind: SyntaxKind.ColonToken or SyntaxKind.CommaToken) &&
3018targetToken.IsKind(SyntaxKind.ColonToken) &&
3019targetToken.Parent.IsKind(SyntaxKind.BaseList) &&
3020targetToken.Parent.IsParentKind(SyntaxKind.EnumDeclaration);
3029if (!token.IsKind(SyntaxKind.DotToken))
3035if (token.Parent.IsKind(SyntaxKind.SimpleMemberAccessExpression))
3041token.Parent?.Parent is BinaryExpressionSyntax(SyntaxKind.IsExpression) binaryExpression &&
3080return targetToken.IsKind(SyntaxKind.AsteriskToken) &&
3081targetToken.GetPreviousToken().IsKind(SyntaxKind.DelegateKeyword);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\Extensions\ExpressionSyntaxExtensions.cs (6)
30if (expression.IsKind(SyntaxKind.RefExpression))
42if (expression.IsKind(SyntaxKind.ThrowExpression))
58Token(SyntaxTriviaList.Empty, SyntaxKind.OpenParenToken, SyntaxTriviaList.Empty),
60Token(SyntaxTriviaList.Empty, SyntaxKind.CloseParenToken, SyntaxTriviaList.Empty));
72Token(SyntaxTriviaList.Empty, SyntaxKind.OpenParenToken, SyntaxTriviaList.Empty),
74Token(SyntaxTriviaList.Empty, SyntaxKind.CloseParenToken, SyntaxTriviaList.Empty));
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpSyntaxGeneratorInternal.cs (19)
67.WithSemicolonToken(SyntaxFactory.Token(SyntaxKind.SemicolonToken));
109=> SyntaxFactory.YieldStatement(SyntaxKind.YieldReturnStatement, (ExpressionSyntax)expression);
126SyntaxKind.InterpolatedStringTextToken,
139SyntaxFactory.Token(default, SyntaxKind.InterpolatedStringTextToken, format, format, default));
216=> SyntaxFactory.BinaryPattern(SyntaxKind.AndPattern, (PatternSyntax)ParenthesizeNonSimple(left), (PatternSyntax)ParenthesizeNonSimple(right));
242=> SyntaxFactory.BinaryPattern(SyntaxKind.OrPattern, (PatternSyntax)ParenthesizeNonSimple(left), (PatternSyntax)ParenthesizeNonSimple(right));
270return SyntaxFactory.LiteralExpression(SyntaxKind.NullLiteralExpression);
276return SyntaxFactory.LiteralExpression(SyntaxKind.FalseLiteralExpression);
289SyntaxKind.NumericLiteralExpression, SyntaxFactory.Literal("0", 0));
313SyntaxKind.SimpleMemberAccessExpression,
325is SyntaxKind.ThisExpression
326or SyntaxKind.BaseExpression
327or SyntaxKind.ParenthesizedExpression
328or SyntaxKind.SimpleMemberAccessExpression
329or SyntaxKind.InvocationExpression
330or SyntaxKind.ElementAccessExpression
331or SyntaxKind.MemberBindingExpression)
340=> CreateBinaryExpression(SyntaxKind.BitwiseOrExpression, left, right);
342public static SyntaxNode CreateBinaryExpression(SyntaxKind syntaxKind, SyntaxNode left, SyntaxNode right)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\Utilities\SyntaxKindSet.cs (101)
11public static readonly ISet<SyntaxKind> AllTypeModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
13SyntaxKind.AbstractKeyword,
15SyntaxKind.ClosedKeyword,
17SyntaxKind.FileKeyword,
18SyntaxKind.InternalKeyword,
19SyntaxKind.NewKeyword,
20SyntaxKind.PublicKeyword,
21SyntaxKind.PrivateKeyword,
22SyntaxKind.ProtectedKeyword,
23SyntaxKind.SealedKeyword,
24SyntaxKind.StaticKeyword,
25SyntaxKind.UnsafeKeyword,
26SyntaxKind.ReadOnlyKeyword,
27SyntaxKind.RefKeyword
30public static readonly ISet<SyntaxKind> AllMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
32SyntaxKind.AbstractKeyword,
33SyntaxKind.AsyncKeyword,
34SyntaxKind.ExternKeyword,
35SyntaxKind.InternalKeyword,
36SyntaxKind.NewKeyword,
37SyntaxKind.OverrideKeyword,
38SyntaxKind.PublicKeyword,
39SyntaxKind.PrivateKeyword,
40SyntaxKind.ProtectedKeyword,
41SyntaxKind.ReadOnlyKeyword,
42SyntaxKind.RequiredKeyword,
43SyntaxKind.SealedKeyword,
44SyntaxKind.StaticKeyword,
45SyntaxKind.UnsafeKeyword,
46SyntaxKind.VirtualKeyword,
47SyntaxKind.VolatileKeyword,
50public static readonly ISet<SyntaxKind> AllGlobalMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
52SyntaxKind.ExternKeyword,
53SyntaxKind.InternalKeyword,
54SyntaxKind.NewKeyword,
55SyntaxKind.OverrideKeyword,
56SyntaxKind.PublicKeyword,
57SyntaxKind.PrivateKeyword,
58SyntaxKind.ReadOnlyKeyword,
59SyntaxKind.StaticKeyword,
60SyntaxKind.UnsafeKeyword,
61SyntaxKind.VolatileKeyword,
64public static readonly ISet<SyntaxKind> AccessibilityModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
66SyntaxKind.PublicKeyword,
67SyntaxKind.PrivateKeyword,
68SyntaxKind.ProtectedKeyword,
69SyntaxKind.InternalKeyword,
72public static readonly ISet<SyntaxKind> AllTypeDeclarations = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
74SyntaxKind.InterfaceDeclaration,
75SyntaxKind.ClassDeclaration,
76SyntaxKind.RecordDeclaration,
77SyntaxKind.StructDeclaration,
78SyntaxKind.RecordStructDeclaration,
80SyntaxKind.UnionDeclaration,
82SyntaxKind.EnumDeclaration,
85public static readonly ISet<SyntaxKind> ClassInterfaceStructRecordTypeDeclarations = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
87SyntaxKind.InterfaceDeclaration,
88SyntaxKind.ClassDeclaration,
89SyntaxKind.RecordDeclaration,
90SyntaxKind.StructDeclaration,
91SyntaxKind.RecordStructDeclaration,
93SyntaxKind.UnionDeclaration,
97public static readonly ISet<SyntaxKind> NonEnumTypeDeclarations = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
99SyntaxKind.ClassDeclaration,
101SyntaxKind.ExtensionBlockDeclaration,
102SyntaxKind.UnionDeclaration,
104SyntaxKind.InterfaceDeclaration,
105SyntaxKind.RecordDeclaration,
106SyntaxKind.RecordStructDeclaration,
107SyntaxKind.StructDeclaration,
110public static readonly ISet<SyntaxKind> ClassInterfaceRecordTypeDeclarations = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
112SyntaxKind.InterfaceDeclaration,
113SyntaxKind.ClassDeclaration,
114SyntaxKind.RecordDeclaration,
117public static readonly ISet<SyntaxKind> ClassRecordTypeDeclarations = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
119SyntaxKind.ClassDeclaration,
120SyntaxKind.RecordDeclaration,
123public static readonly ISet<SyntaxKind> ClassStructRecordTypeDeclarations = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
125SyntaxKind.ClassDeclaration,
126SyntaxKind.RecordDeclaration,
127SyntaxKind.StructDeclaration,
128SyntaxKind.RecordStructDeclaration,
130SyntaxKind.UnionDeclaration,
134public static readonly ISet<SyntaxKind> StructOnlyTypeDeclarations = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
136SyntaxKind.StructDeclaration,
137SyntaxKind.RecordStructDeclaration,
139SyntaxKind.UnionDeclaration,
143public static readonly ISet<SyntaxKind> InterfaceOnlyTypeDeclarations = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
145SyntaxKind.InterfaceDeclaration,
ChangeSignature\CSharpChangeSignatureService.cs (83)
41private static readonly ImmutableArray<SyntaxKind> _declarationKinds =
43SyntaxKind.MethodDeclaration,
44SyntaxKind.ConstructorDeclaration,
45SyntaxKind.IndexerDeclaration,
46SyntaxKind.DelegateDeclaration,
47SyntaxKind.SimpleLambdaExpression,
48SyntaxKind.ParenthesizedLambdaExpression,
49SyntaxKind.LocalFunctionStatement,
50SyntaxKind.RecordStructDeclaration,
51SyntaxKind.RecordDeclaration,
52SyntaxKind.StructDeclaration,
53SyntaxKind.ClassDeclaration,
56private static readonly ImmutableArray<SyntaxKind> _declarationAndInvocableKinds =
58SyntaxKind.InvocationExpression,
59SyntaxKind.ElementAccessExpression,
60SyntaxKind.ThisConstructorInitializer,
61SyntaxKind.BaseConstructorInitializer,
62SyntaxKind.ObjectCreationExpression,
63SyntaxKind.ImplicitObjectCreationExpression,
64SyntaxKind.Attribute,
65SyntaxKind.NameMemberCref];
67private static readonly ImmutableArray<SyntaxKind> _updatableAncestorKinds =
69SyntaxKind.ConstructorDeclaration,
70SyntaxKind.IndexerDeclaration,
71SyntaxKind.InvocationExpression,
72SyntaxKind.ElementAccessExpression,
73SyntaxKind.ThisConstructorInitializer,
74SyntaxKind.BaseConstructorInitializer,
75SyntaxKind.ObjectCreationExpression,
76SyntaxKind.Attribute,
77SyntaxKind.DelegateDeclaration,
78SyntaxKind.SimpleLambdaExpression,
79SyntaxKind.ParenthesizedLambdaExpression,
80SyntaxKind.NameMemberCref,
81SyntaxKind.PrimaryConstructorBaseType,
84private static readonly ImmutableArray<SyntaxKind> _updatableNodeKinds =
86SyntaxKind.MethodDeclaration,
87SyntaxKind.LocalFunctionStatement,
88SyntaxKind.ConstructorDeclaration,
89SyntaxKind.IndexerDeclaration,
90SyntaxKind.InvocationExpression,
91SyntaxKind.ElementAccessExpression,
92SyntaxKind.ThisConstructorInitializer,
93SyntaxKind.BaseConstructorInitializer,
94SyntaxKind.ObjectCreationExpression,
95SyntaxKind.ImplicitObjectCreationExpression,
96SyntaxKind.Attribute,
97SyntaxKind.DelegateDeclaration,
98SyntaxKind.NameMemberCref,
99SyntaxKind.AnonymousMethodExpression,
100SyntaxKind.ParenthesizedLambdaExpression,
101SyntaxKind.SimpleLambdaExpression,
102SyntaxKind.RecordStructDeclaration,
103SyntaxKind.RecordDeclaration,
104SyntaxKind.StructDeclaration,
105SyntaxKind.ClassDeclaration,
106SyntaxKind.PrimaryConstructorBaseType,
124if (token.Kind() == SyntaxKind.SemicolonToken && token.Parent is StatementSyntax)
200current.Kind() == SyntaxKind.Block || current.Kind() == SyntaxKind.ArrowExpressionClause)
264case SyntaxKind.InvocationExpression:
267case SyntaxKind.ElementAccessExpression:
270case SyntaxKind.ObjectCreationExpression:
273case SyntaxKind.PrimaryConstructorBaseType:
274case SyntaxKind.ConstructorDeclaration:
275case SyntaxKind.IndexerDeclaration:
276case SyntaxKind.ThisConstructorInitializer:
277case SyntaxKind.BaseConstructorInitializer:
278case SyntaxKind.Attribute:
279case SyntaxKind.DelegateDeclaration:
280case SyntaxKind.NameMemberCref:
301is SyntaxKind.MethodDeclaration
302or SyntaxKind.ConstructorDeclaration
303or SyntaxKind.IndexerDeclaration
304or SyntaxKind.DelegateDeclaration
305or SyntaxKind.RecordStructDeclaration
306or SyntaxKind.RecordDeclaration
307or SyntaxKind.StructDeclaration
308or SyntaxKind.ClassDeclaration)
695var oldOnlyHasWhitespaceTrivia = oldTrivia.All(t => t.IsKind(SyntaxKind.WhitespaceTrivia));
698var newOnlyHasWhitespaceTrivia = newTrivia.All(t => t.IsKind(SyntaxKind.WhitespaceTrivia));
878if (!node.IsKind(SyntaxKind.IdentifierName) ||
924var initializerExpression = InitializerExpression(SyntaxKind.ArrayInitializerExpression, listOfArguments);
Completion\KeywordRecommenders\AbstractKeywordRecommender.cs (29)
12internal sealed class AbstractKeywordRecommender() : AbstractSyntacticSingleKeywordRecommender(SyntaxKind.AbstractKeyword)
14private static readonly ISet<SyntaxKind> s_validNonInterfaceMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
16SyntaxKind.ExternKeyword,
17SyntaxKind.InternalKeyword,
18SyntaxKind.NewKeyword,
19SyntaxKind.PublicKeyword,
20SyntaxKind.ProtectedKeyword,
21SyntaxKind.UnsafeKeyword,
22SyntaxKind.OverrideKeyword,
25private static readonly ISet<SyntaxKind> s_validInterfaceMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
27SyntaxKind.ExternKeyword,
28SyntaxKind.InternalKeyword,
29SyntaxKind.NewKeyword,
30SyntaxKind.PublicKeyword,
31SyntaxKind.ProtectedKeyword,
32SyntaxKind.StaticKeyword,
33SyntaxKind.UnsafeKeyword,
34SyntaxKind.OverrideKeyword,
37private static readonly ISet<SyntaxKind> s_validTypeModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
39SyntaxKind.InternalKeyword,
40SyntaxKind.NewKeyword,
41SyntaxKind.PublicKeyword,
42SyntaxKind.PrivateKeyword,
43SyntaxKind.ProtectedKeyword,
44SyntaxKind.UnsafeKeyword,
45SyntaxKind.FileKeyword,
Completion\KeywordRecommenders\ClassKeywordRecommender.cs (14)
12internal sealed class ClassKeywordRecommender() : AbstractSyntacticSingleKeywordRecommender(SyntaxKind.ClassKeyword)
14private static readonly ISet<SyntaxKind> s_validModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
16SyntaxKind.NewKeyword,
17SyntaxKind.PublicKeyword,
18SyntaxKind.ProtectedKeyword,
19SyntaxKind.InternalKeyword,
20SyntaxKind.PrivateKeyword,
21SyntaxKind.AbstractKeyword,
22SyntaxKind.ClosedKeyword,
23SyntaxKind.SealedKeyword,
24SyntaxKind.StaticKeyword,
25SyntaxKind.UnsafeKeyword,
26SyntaxKind.FileKeyword,
Completion\KeywordRecommenders\EventKeywordRecommender.cs (18)
13internal sealed class EventKeywordRecommender() : AbstractSyntacticSingleKeywordRecommender(SyntaxKind.EventKeyword)
15private static readonly ISet<SyntaxKind> s_validClassModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
17SyntaxKind.NewKeyword,
18SyntaxKind.PublicKeyword,
19SyntaxKind.ProtectedKeyword,
20SyntaxKind.InternalKeyword,
21SyntaxKind.PrivateKeyword,
22SyntaxKind.StaticKeyword,
23SyntaxKind.VirtualKeyword,
24SyntaxKind.SealedKeyword,
25SyntaxKind.OverrideKeyword,
26SyntaxKind.AbstractKeyword,
27SyntaxKind.ExternKeyword,
28SyntaxKind.UnsafeKeyword
31private static readonly ISet<SyntaxKind> s_validStructModifiers = new HashSet<SyntaxKind>(s_validClassModifiers, SyntaxFacts.EqualityComparer)
33SyntaxKind.ReadOnlyKeyword,
Completion\KeywordRecommenders\ExternKeywordRecommender.cs (32)
13internal sealed class ExternKeywordRecommender() : AbstractSyntacticSingleKeywordRecommender(SyntaxKind.ExternKeyword)
15private static readonly ISet<SyntaxKind> s_validModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
17SyntaxKind.InternalKeyword,
18SyntaxKind.NewKeyword,
19SyntaxKind.OverrideKeyword,
20SyntaxKind.PublicKeyword,
21SyntaxKind.PrivateKeyword,
22SyntaxKind.ProtectedKeyword,
23SyntaxKind.SealedKeyword,
24SyntaxKind.StaticKeyword,
25SyntaxKind.UnsafeKeyword,
26SyntaxKind.VirtualKeyword,
29private static readonly ISet<SyntaxKind> s_validGlobalModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
31SyntaxKind.InternalKeyword,
32SyntaxKind.NewKeyword,
33SyntaxKind.PublicKeyword,
34SyntaxKind.PrivateKeyword,
35SyntaxKind.StaticKeyword,
36SyntaxKind.UnsafeKeyword,
39private static readonly ISet<SyntaxKind> s_validLocalFunctionModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
41SyntaxKind.StaticKeyword,
42SyntaxKind.UnsafeKeyword
79if (token.Kind() == SyntaxKind.None)
85if (token.Kind() == SyntaxKind.OpenBraceToken &&
86token.Parent.IsKind(SyntaxKind.NamespaceDeclaration))
93if (token.Kind() == SyntaxKind.SemicolonToken &&
94token.Parent.IsKind(SyntaxKind.FileScopedNamespaceDeclaration))
101if (token.Kind() == SyntaxKind.SemicolonToken &&
102token.Parent.IsKind(SyntaxKind.ExternAliasDirective))
Completion\KeywordRecommenders\NewKeywordRecommender.cs (27)
15internal sealed class NewKeywordRecommender() : AbstractSyntacticSingleKeywordRecommender(SyntaxKind.NewKeyword)
17private static readonly ISet<SyntaxKind> s_validMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
19SyntaxKind.AbstractKeyword,
20SyntaxKind.ExternKeyword,
21SyntaxKind.InternalKeyword,
22SyntaxKind.PublicKeyword,
23SyntaxKind.PrivateKeyword,
24SyntaxKind.ProtectedKeyword,
25SyntaxKind.ReadOnlyKeyword,
26SyntaxKind.SealedKeyword,
27SyntaxKind.StaticKeyword,
28SyntaxKind.UnsafeKeyword,
29SyntaxKind.VirtualKeyword,
30SyntaxKind.VolatileKeyword,
33private static readonly ISet<SyntaxKind> ValidTypeModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
35SyntaxKind.AbstractKeyword,
36SyntaxKind.InternalKeyword,
37SyntaxKind.PublicKeyword,
38SyntaxKind.PrivateKeyword,
39SyntaxKind.ProtectedKeyword,
40SyntaxKind.SealedKeyword,
41SyntaxKind.StaticKeyword,
42SyntaxKind.UnsafeKeyword
96if (token.Kind() == SyntaxKind.CommaToken &&
101.Any(c => c.ClassOrStructKeyword.Kind() == SyntaxKind.StructKeyword))
Completion\KeywordRecommenders\RecordKeywordRecommender.cs (15)
12internal sealed class RecordKeywordRecommender() : AbstractSyntacticSingleKeywordRecommender(SyntaxKind.RecordKeyword)
14private static readonly ISet<SyntaxKind> s_validModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
16SyntaxKind.NewKeyword,
17SyntaxKind.PublicKeyword,
18SyntaxKind.ProtectedKeyword,
19SyntaxKind.InternalKeyword,
20SyntaxKind.PrivateKeyword,
21SyntaxKind.AbstractKeyword,
22SyntaxKind.ClosedKeyword,
23SyntaxKind.SealedKeyword,
24SyntaxKind.StaticKeyword,
25SyntaxKind.UnsafeKeyword,
26SyntaxKind.ReadOnlyKeyword,
27SyntaxKind.FileKeyword,
Completion\KeywordRecommenders\RefKeywordRecommender.cs (60)
16internal sealed class RefKeywordRecommender() : AbstractSyntacticSingleKeywordRecommender(SyntaxKind.RefKeyword)
21private static readonly ISet<SyntaxKind> RefMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
23SyntaxKind.AbstractKeyword,
25SyntaxKind.ExternKeyword,
26SyntaxKind.InternalKeyword,
27SyntaxKind.NewKeyword,
28SyntaxKind.OverrideKeyword,
29SyntaxKind.PublicKeyword,
30SyntaxKind.PrivateKeyword,
31SyntaxKind.ProtectedKeyword,
33SyntaxKind.SealedKeyword,
34SyntaxKind.StaticKeyword,
35SyntaxKind.UnsafeKeyword,
36SyntaxKind.VirtualKeyword,
43private static readonly ISet<SyntaxKind> RefGlobalMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
46SyntaxKind.ExternKeyword,
47SyntaxKind.InternalKeyword,
48SyntaxKind.NewKeyword,
49SyntaxKind.OverrideKeyword,
50SyntaxKind.PublicKeyword,
51SyntaxKind.PrivateKeyword,
52SyntaxKind.ReadOnlyKeyword,
53SyntaxKind.StaticKeyword,
54SyntaxKind.UnsafeKeyword,
55SyntaxKind.VolatileKeyword,
61private static readonly ISet<SyntaxKind> RefGlobalMemberScriptModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
64SyntaxKind.ExternKeyword,
65SyntaxKind.InternalKeyword,
66SyntaxKind.NewKeyword,
67SyntaxKind.OverrideKeyword,
68SyntaxKind.PublicKeyword,
69SyntaxKind.PrivateKeyword,
71SyntaxKind.StaticKeyword,
72SyntaxKind.UnsafeKeyword,
110if (context.TargetToken.IsKind(SyntaxKind.ColonToken))
115else if (context.TargetToken.Kind() == SyntaxKind.OpenParenToken)
119else if (context.TargetToken.Kind() == SyntaxKind.CommaToken)
147if (token.Kind() == SyntaxKind.IdentifierToken && SyntaxFacts.GetContextualKeywordKind((string)token.Value!) == SyntaxKind.AllowsKeyword &&
154.Any(c => c.ClassOrStructKeyword.Kind() == SyntaxKind.ClassKeyword))
166position, context.LeftToken, includeOperators: false, out var parameterIndex, out var previousModifier))
168if (previousModifier is SyntaxKind.None or SyntaxKind.ScopedKeyword)
173if (previousModifier == SyntaxKind.ThisKeyword &&
222case SyntaxKind.ReturnKeyword:
226case SyntaxKind.ScopedKeyword:
227case SyntaxKind.IdentifierToken when token.Text == "scoped":
233case SyntaxKind.EqualsGreaterThanToken:
241case SyntaxKind.OpenParenToken:
243return previous.Kind() is SyntaxKind.ForKeyword or SyntaxKind.ForEachKeyword;
248case SyntaxKind.EqualsToken:
250return parent?.Kind() == SyntaxKind.SimpleAssignmentExpression
251|| parent?.Parent?.Kind() == SyntaxKind.VariableDeclarator;
256case SyntaxKind.QuestionToken:
257case SyntaxKind.ColonToken:
258return token.Parent?.Kind() == SyntaxKind.ConditionalExpression;
Completion\KeywordRecommenders\SealedKeywordRecommender.cs (29)
12internal sealed class SealedKeywordRecommender() : AbstractSyntacticSingleKeywordRecommender(SyntaxKind.SealedKeyword)
14private static readonly ISet<SyntaxKind> s_validNonInterfaceMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
16SyntaxKind.ExternKeyword,
17SyntaxKind.InternalKeyword,
18SyntaxKind.NewKeyword,
19SyntaxKind.OverrideKeyword,
20SyntaxKind.PublicKeyword,
21SyntaxKind.ProtectedKeyword,
22SyntaxKind.UnsafeKeyword,
25private static readonly ISet<SyntaxKind> s_validInterfaceMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
27SyntaxKind.ExternKeyword,
28SyntaxKind.InternalKeyword,
29SyntaxKind.NewKeyword,
30SyntaxKind.OverrideKeyword,
31SyntaxKind.PublicKeyword,
32SyntaxKind.ProtectedKeyword,
33SyntaxKind.StaticKeyword,
34SyntaxKind.UnsafeKeyword,
37private static readonly ISet<SyntaxKind> s_validTypeModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
39SyntaxKind.InternalKeyword,
40SyntaxKind.NewKeyword,
41SyntaxKind.PublicKeyword,
42SyntaxKind.PrivateKeyword,
43SyntaxKind.ProtectedKeyword,
44SyntaxKind.UnsafeKeyword,
45SyntaxKind.FileKeyword,
Completion\KeywordRecommenders\StaticKeywordRecommender.cs (55)
13internal sealed class StaticKeywordRecommender() : AbstractSyntacticSingleKeywordRecommender(SyntaxKind.StaticKeyword)
15private static readonly ISet<SyntaxKind> s_validTypeModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
17SyntaxKind.InternalKeyword,
18SyntaxKind.NewKeyword,
19SyntaxKind.PublicKeyword,
20SyntaxKind.PrivateKeyword,
21SyntaxKind.ProtectedKeyword,
22SyntaxKind.UnsafeKeyword,
23SyntaxKind.FileKeyword,
26private static readonly ISet<SyntaxKind> s_validNonInterfaceMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
28SyntaxKind.AsyncKeyword,
29SyntaxKind.ExternKeyword,
30SyntaxKind.InternalKeyword,
31SyntaxKind.NewKeyword,
32SyntaxKind.PublicKeyword,
33SyntaxKind.PrivateKeyword,
34SyntaxKind.ProtectedKeyword,
35SyntaxKind.ReadOnlyKeyword,
36SyntaxKind.UnsafeKeyword,
37SyntaxKind.VolatileKeyword,
40private static readonly ISet<SyntaxKind> s_validInterfaceMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
42SyntaxKind.AbstractKeyword,
43SyntaxKind.AsyncKeyword,
44SyntaxKind.ExternKeyword,
45SyntaxKind.InternalKeyword,
46SyntaxKind.NewKeyword,
47SyntaxKind.PublicKeyword,
48SyntaxKind.PrivateKeyword,
49SyntaxKind.ProtectedKeyword,
50SyntaxKind.ReadOnlyKeyword,
51SyntaxKind.SealedKeyword,
52SyntaxKind.UnsafeKeyword,
53SyntaxKind.VolatileKeyword,
54SyntaxKind.VirtualKeyword,
57private static readonly ISet<SyntaxKind> s_validGlobalMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
59SyntaxKind.ExternKeyword,
60SyntaxKind.InternalKeyword,
61SyntaxKind.NewKeyword,
62SyntaxKind.PublicKeyword,
63SyntaxKind.PrivateKeyword,
64SyntaxKind.ReadOnlyKeyword,
65SyntaxKind.UnsafeKeyword,
66SyntaxKind.VolatileKeyword,
69private static readonly ISet<SyntaxKind> s_validLocalFunctionModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
71SyntaxKind.ExternKeyword,
72SyntaxKind.AsyncKeyword,
73SyntaxKind.UnsafeKeyword
81(context.TargetToken.IsKind(SyntaxKind.UsingKeyword) && context.TargetToken.Parent?.IsParentKind(SyntaxKind.GlobalStatement) == true) ||
84context.SyntaxTree.IsLambdaDeclarationContext(position, otherModifier: SyntaxKind.AsyncKeyword, cancellationToken) ||
Completion\KeywordRecommenders\UnsafeKeywordRecommender.cs (45)
12internal sealed class UnsafeKeywordRecommender() : AbstractSyntacticSingleKeywordRecommender(SyntaxKind.UnsafeKeyword)
14private static readonly ISet<SyntaxKind> s_validTypeModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
16SyntaxKind.AbstractKeyword,
17SyntaxKind.InternalKeyword,
18SyntaxKind.NewKeyword,
19SyntaxKind.PublicKeyword,
20SyntaxKind.PrivateKeyword,
21SyntaxKind.ProtectedKeyword,
22SyntaxKind.ClosedKeyword,
23SyntaxKind.SealedKeyword,
24SyntaxKind.StaticKeyword,
25SyntaxKind.FileKeyword,
28private static readonly ISet<SyntaxKind> s_validMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
30SyntaxKind.AbstractKeyword,
31SyntaxKind.ExternKeyword,
32SyntaxKind.InternalKeyword,
33SyntaxKind.NewKeyword,
34SyntaxKind.OverrideKeyword,
35SyntaxKind.PublicKeyword,
36SyntaxKind.PrivateKeyword,
37SyntaxKind.ProtectedKeyword,
38SyntaxKind.ReadOnlyKeyword,
39SyntaxKind.SealedKeyword,
40SyntaxKind.StaticKeyword,
41SyntaxKind.VirtualKeyword,
42SyntaxKind.VolatileKeyword,
45private static readonly ISet<SyntaxKind> s_validGlobalMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
47SyntaxKind.ExternKeyword,
48SyntaxKind.InternalKeyword,
49SyntaxKind.NewKeyword,
50SyntaxKind.PublicKeyword,
51SyntaxKind.PrivateKeyword,
52SyntaxKind.ReadOnlyKeyword,
53SyntaxKind.StaticKeyword,
54SyntaxKind.VolatileKeyword,
57private static readonly ISet<SyntaxKind> s_validLocalFunctionModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
59SyntaxKind.ExternKeyword,
60SyntaxKind.StaticKeyword,
61SyntaxKind.AsyncKeyword
78(context.IsInImportsDirective && context.TargetToken.Kind() is SyntaxKind.UsingKeyword or SyntaxKind.StaticKeyword);
Completion\KeywordRecommenders\VirtualKeywordRecommender.cs (22)
12internal sealed class VirtualKeywordRecommender() : AbstractSyntacticSingleKeywordRecommender(SyntaxKind.VirtualKeyword)
14private static readonly ISet<SyntaxKind> s_validNonInterfaceMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
16SyntaxKind.ExternKeyword,
17SyntaxKind.InternalKeyword,
18SyntaxKind.NewKeyword,
19SyntaxKind.PublicKeyword,
20SyntaxKind.ProtectedKeyword,
21SyntaxKind.PrivateKeyword,
22SyntaxKind.UnsafeKeyword,
25private static readonly ISet<SyntaxKind> s_validInterfaceMemberModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
27SyntaxKind.ExternKeyword,
28SyntaxKind.InternalKeyword,
29SyntaxKind.NewKeyword,
30SyntaxKind.PublicKeyword,
31SyntaxKind.ProtectedKeyword,
32SyntaxKind.PrivateKeyword,
33SyntaxKind.StaticKeyword,
34SyntaxKind.UnsafeKeyword,
54return !modifiers.Contains(SyntaxKind.PrivateKeyword) || modifiers.Contains(SyntaxKind.ProtectedKeyword);
Completion\KeywordRecommenders\VoidKeywordRecommender.cs (21)
13internal sealed class VoidKeywordRecommender() : AbstractSyntacticSingleKeywordRecommender(SyntaxKind.VoidKeyword)
15private static readonly ISet<SyntaxKind> s_validClassInterfaceRecordModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
17SyntaxKind.NewKeyword,
18SyntaxKind.PublicKeyword,
19SyntaxKind.ProtectedKeyword,
20SyntaxKind.InternalKeyword,
21SyntaxKind.PrivateKeyword,
22SyntaxKind.StaticKeyword,
23SyntaxKind.VirtualKeyword,
24SyntaxKind.SealedKeyword,
25SyntaxKind.OverrideKeyword,
26SyntaxKind.AbstractKeyword,
27SyntaxKind.ExternKeyword,
28SyntaxKind.UnsafeKeyword,
29SyntaxKind.AsyncKeyword
32private static readonly ISet<SyntaxKind> s_validStructModifiers = new HashSet<SyntaxKind>(s_validClassInterfaceRecordModifiers, SyntaxFacts.EqualityComparer)
34SyntaxKind.ReadOnlyKeyword,
75if (token.Kind() == SyntaxKind.OpenParenToken &&
76token.Parent.IsKind(SyntaxKind.ParenthesizedExpression))
ConvertIfToSwitch\CSharpConvertIfToSwitchCodeRefactoringProvider.Rewriting.cs (8)
22private static readonly Dictionary<BinaryOperatorKind, SyntaxKind> s_operatorMap = new()
24{ BinaryOperatorKind.LessThan, SyntaxKind.LessThanToken },
25{ BinaryOperatorKind.GreaterThan, SyntaxKind.GreaterThanToken },
26{ BinaryOperatorKind.LessThanOrEqual, SyntaxKind.LessThanEqualsToken },
27{ BinaryOperatorKind.GreaterThanOrEqual, SyntaxKind.GreaterThanEqualsToken },
52pattern = BinaryPattern(SyntaxKind.OrPattern, pattern.Parenthesize(), nextPattern.Parenthesize());
84.AggregateOrDefault((prev, current) => BinaryExpression(SyntaxKind.LogicalAndExpression, prev, current)));
113AnalyzedPattern.And p => BinaryPattern(SyntaxKind.AndPattern, AsPatternSyntax(p.LeftPattern, feature).Parenthesize(), AsPatternSyntax(p.RightPattern, feature).Parenthesize()),
ConvertLinq\CSharpConvertLinqQueryToForEachProvider.cs (34)
70SyntaxKind.SingleLineCommentTrivia or
71SyntaxKind.MultiLineCommentTrivia or
72SyntaxKind.MultiLineDocumentationCommentTrivia) ||
95if (!documentUpdateInfo.Source.IsParentKind(SyntaxKind.Block) &&
118case SyntaxKind.WhereClause:
120case SyntaxKind.FromClause:
148case SyntaxKind.LetClause:
151case SyntaxKind.JoinClause:
201SyntaxKind.SimpleMemberAccessExpression,
209case SyntaxKind.SelectClause:
228case SyntaxKind.ReturnStatement:
231case SyntaxKind.ForEachStatement:
234case SyntaxKind.SimpleMemberAccessExpression:
318PostfixUnaryExpression(SyntaxKind.PostIncrementExpression, variableIdentifier)), // Generating 'count++'
319LiteralExpression(SyntaxKind.NumericLiteralExpression, Literal(0)), // count = 0
351SyntaxKind.SimpleMemberAccessExpression,
459case SyntaxKind.EqualsValueClause:
462SyntaxKind.VariableDeclarator or
463SyntaxKind.VariableDeclaration or
464SyntaxKind.LocalDeclarationStatement &&
480case SyntaxKind.SimpleAssignmentExpression:
495case SyntaxKind.ReturnStatement:
572=> YieldStatement(SyntaxKind.YieldReturnStatement, expression);
591SyntaxKind.OpenBraceToken,
763var statements = GenerateStatements(expression => YieldStatement(SyntaxKind.YieldReturnStatement, expression), queryExpressionProcessingInfo);
766var yieldBreakStatement = YieldStatement(SyntaxKind.YieldBreakStatement);
839case SyntaxKind.WhereClause:
842case SyntaxKind.LetClause:
849case SyntaxKind.FromClause:
857case SyntaxKind.JoinClause:
930case SyntaxKind.AnonymousMethodExpression:
931case SyntaxKind.ParenthesizedLambdaExpression:
932case SyntaxKind.SimpleLambdaExpression:
934case SyntaxKind.LocalFunctionStatement:
ConvertPrimaryToRegularConstructor\ConvertPrimaryToRegularConstructorCodeRefactoringProvider.cs (7)
325var firstConstructorIndex = currentTypeDeclaration.Members.IndexOf(m => m is ConstructorDeclarationSyntax c && !c.Modifiers.Any(SyntaxKind.StaticKeyword));
454=> node.GetLeadingTrivia() is [.., (kind: SyntaxKind.WhitespaceTrivia) whitespace] ? whitespace.ToString() : "";
468? MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, ThisExpression(), fieldName)
470var assignment = AssignmentExpression(SyntaxKind.SimpleAssignmentExpression, left, parameter.Name.ToIdentifierName());
480var left = MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, ThisExpression(), fieldOrProperty.Name.ToIdentifierName())
482var assignment = AssignmentExpression(SyntaxKind.SimpleAssignmentExpression, left, initializer.EqualsToken, initializer.Value);
496baseType?.ArgumentList is null ? null : ConstructorInitializer(SyntaxKind.BaseConstructorInitializer, baseType.ArgumentList),
EditAndContinue\CSharpEditAndContinueAnalyzer.cs (382)
76case SyntaxKind.ClassDeclaration:
77case SyntaxKind.StructDeclaration:
89case SyntaxKind.RecordDeclaration:
90case SyntaxKind.RecordStructDeclaration:
98case SyntaxKind.MethodDeclaration:
99case SyntaxKind.ConversionOperatorDeclaration:
100case SyntaxKind.OperatorDeclaration:
101case SyntaxKind.SetAccessorDeclaration:
102case SyntaxKind.InitAccessorDeclaration:
103case SyntaxKind.AddAccessorDeclaration:
104case SyntaxKind.RemoveAccessorDeclaration:
105case SyntaxKind.GetAccessorDeclaration:
106case SyntaxKind.ConstructorDeclaration:
107case SyntaxKind.DestructorDeclaration:
111case SyntaxKind.PropertyDeclaration:
117case SyntaxKind.FieldDeclaration:
118case SyntaxKind.EventFieldDeclaration:
124case SyntaxKind.Parameter:
134case SyntaxKind.VariableDeclarator:
136Debug.Assert(current.Parent.IsKind(SyntaxKind.VariableDeclaration));
140case SyntaxKind.FieldDeclaration:
141case SyntaxKind.EventFieldDeclaration:
149case SyntaxKind.ArrowExpressionClause:
151if (current.Parent is (kind: SyntaxKind.PropertyDeclaration or SyntaxKind.IndexerDeclaration))
159case SyntaxKind.GlobalStatement:
160Debug.Assert(current.Parent.IsKind(SyntaxKind.CompilationUnit));
215case SyntaxKind.Block:
219case SyntaxKind.ForEachStatement:
220case SyntaxKind.ForEachVariableStatement:
225case SyntaxKind.DoStatement:
233case SyntaxKind.PropertyDeclaration:
240case SyntaxKind.VariableDeclaration:
257case SyntaxKind.SwitchExpression:
282case SyntaxKind.SwitchExpressionArm:
420(oldBody.Parent.IsKind(SyntaxKind.LocalFunctionStatement) && newBody.Parent.IsKind(SyntaxKind.LocalFunctionStatement)))
444return parent.IsKind(SyntaxKind.ArrowExpressionClause) && parent.Parent.IsKind(SyntaxKind.LocalFunctionStatement) ? parent.Parent : parent;
505if (oldStatement == oldBody && !newBody.IsKind(SyntaxKind.Block))
529=> node.IsKind(SyntaxKind.GlobalStatement);
561=> (ushort)SyntaxKind.LineDirectiveTrivia;
583case SyntaxKind.ArrowExpressionClause:
589case SyntaxKind.Block:
593case SyntaxKind.ForEachStatement:
597case SyntaxKind.ForEachVariableStatement:
601case SyntaxKind.DoStatement:
610case SyntaxKind.PropertyDeclaration:
627case SyntaxKind.SwitchExpression:
631case SyntaxKind.SwitchExpressionArm:
642case SyntaxKind.ParameterList when node.Parent is TypeDeclarationSyntax typeDeclaration:
650case SyntaxKind.RecordDeclaration:
651case SyntaxKind.RecordStructDeclaration:
664=> (memberBody, memberBody.IsKind(SyntaxKind.Block) ? (int)BlockPart.OpenBrace : DefaultStatementPart);
686case SyntaxKind.Block:
691case SyntaxKind.ForEachStatement:
692case SyntaxKind.ForEachVariableStatement:
734nodeModifiers.Value.Any(SyntaxKind.StaticKeyword) != fieldOrPropertyModifiers.Value.Any(SyntaxKind.StaticKeyword))
742case SyntaxKind.Block:
746case SyntaxKind.ForEachStatement:
747case SyntaxKind.ForEachVariableStatement:
766case SyntaxKind.Block:
781case SyntaxKind.ConstructorDeclaration:
785case SyntaxKind.ForEachStatement:
786case SyntaxKind.ForEachVariableStatement:
790case SyntaxKind.IfStatement:
794case SyntaxKind.WhileStatement:
798case SyntaxKind.DoStatement:
802case SyntaxKind.SwitchStatement:
805case SyntaxKind.LockStatement:
808case SyntaxKind.UsingStatement:
882case SyntaxKind.ForEachStatement: return AreEquivalentIgnoringLambdaBodies(((ForEachStatementSyntax)oldNode).Type, ((ForEachStatementSyntax)newNode).Type);
883case SyntaxKind.ForEachVariableStatement: return AreEquivalentIgnoringLambdaBodies(((ForEachVariableStatementSyntax)oldNode).Variable, ((ForEachVariableStatementSyntax)newNode).Variable);
907=> node.IsKind(SyntaxKind.InterfaceDeclaration);
910=> node.Kind() is SyntaxKind.RecordDeclaration or SyntaxKind.RecordStructDeclaration;
925!fieldDeclaration.Modifiers.Any(SyntaxKind.ConstKeyword);
970return ctorInitializer is null or { ThisOrBaseKeyword: (kind: SyntaxKind.ThisKeyword), ArgumentList.Arguments: [] };
975return ctorInitializer is null or (kind: SyntaxKind.BaseConstructorInitializer);
983|| ((BaseTypeDeclarationSyntax)syntaxRefs.Single().GetSyntax()).Modifiers.Any(SyntaxKind.PartialKeyword);
1285if (typeNameSpanChanged && (oldNode.IsKind(SyntaxKind.RecordDeclaration) || newNode.IsKind(SyntaxKind.RecordDeclaration)))
1305if (node.IsKind(SyntaxKind.GetAccessorDeclaration))
1307Debug.Assert(node.Parent.IsKind(SyntaxKind.AccessorList));
1329if (node.IsKind(SyntaxKind.TypeParameterConstraintClause))
1336if (node.IsKind(SyntaxKind.GlobalStatement))
1344if (node is (kind: SyntaxKind.PrimaryConstructorBaseType or SyntaxKind.BaseList))
1360if (oldNode.IsKind(SyntaxKind.LocalFunctionStatement))
1382if (node.Kind() is SyntaxKind.UsingDirective or SyntaxKind.NamespaceDeclaration or SyntaxKind.FileScopedNamespaceDeclaration)
1387if (node.IsKind(SyntaxKind.TypeParameterConstraintClause))
1395if (node.IsKind(SyntaxKind.GlobalStatement))
1405if (node.IsKind(SyntaxKind.BaseList))
1446=> node.IsKind(SyntaxKind.LocalFunctionStatement) ||
1463=> node.IsKind(SyntaxKind.LocalFunctionStatement);
1498case SyntaxKind.FromClause:
1499case SyntaxKind.LetClause:
1500case SyntaxKind.WhereClause:
1501case SyntaxKind.OrderByClause:
1502case SyntaxKind.JoinClause:
1509case SyntaxKind.AscendingOrdering:
1510case SyntaxKind.DescendingOrdering:
1516case SyntaxKind.SelectClause:
1527case SyntaxKind.GroupClause:
1605internal static TextSpan? TryGetDiagnosticSpanImpl(SyntaxKind kind, SyntaxNode node, EditKind editKind)
1609case SyntaxKind.CompilationUnit:
1625case SyntaxKind.GlobalStatement:
1628case SyntaxKind.ExternAliasDirective:
1629case SyntaxKind.UsingDirective:
1632case SyntaxKind.NamespaceDeclaration:
1633case SyntaxKind.FileScopedNamespaceDeclaration:
1637case SyntaxKind.ClassDeclaration:
1638case SyntaxKind.StructDeclaration:
1639case SyntaxKind.InterfaceDeclaration:
1640case SyntaxKind.RecordDeclaration:
1641case SyntaxKind.RecordStructDeclaration:
1646case SyntaxKind.ExtensionBlockDeclaration:
1650case SyntaxKind.BaseList:
1654case SyntaxKind.EnumDeclaration:
1658case SyntaxKind.DelegateDeclaration:
1662case SyntaxKind.FieldDeclaration:
1666case SyntaxKind.EventFieldDeclaration:
1670case SyntaxKind.VariableDeclaration:
1673case SyntaxKind.VariableDeclarator:
1676case SyntaxKind.MethodDeclaration:
1680case SyntaxKind.ConversionOperatorDeclaration:
1684case SyntaxKind.OperatorDeclaration:
1688case SyntaxKind.ConstructorDeclaration:
1692case SyntaxKind.DestructorDeclaration:
1696case SyntaxKind.PropertyDeclaration:
1700case SyntaxKind.IndexerDeclaration:
1704case SyntaxKind.EventDeclaration:
1708case SyntaxKind.EnumMemberDeclaration:
1711case SyntaxKind.GetAccessorDeclaration:
1712case SyntaxKind.SetAccessorDeclaration:
1713case SyntaxKind.InitAccessorDeclaration:
1714case SyntaxKind.AddAccessorDeclaration:
1715case SyntaxKind.RemoveAccessorDeclaration:
1716case SyntaxKind.UnknownAccessorDeclaration:
1720case SyntaxKind.TypeParameterConstraintClause:
1724case SyntaxKind.TypeParameter:
1728case SyntaxKind.AccessorList:
1729case SyntaxKind.TypeParameterList:
1730case SyntaxKind.ParameterList:
1731case SyntaxKind.BracketedParameterList:
1741case SyntaxKind.Parameter:
1747case SyntaxKind.PrimaryConstructorBaseType:
1748case SyntaxKind.AttributeList:
1749case SyntaxKind.Attribute:
1752case SyntaxKind.ArrowExpressionClause:
1758case SyntaxKind.Block:
1761case SyntaxKind.UsingStatement:
1765case SyntaxKind.FixedStatement:
1769case SyntaxKind.LockStatement:
1773case SyntaxKind.StackAllocArrayCreationExpression:
1776case SyntaxKind.ImplicitStackAllocArrayCreationExpression:
1779case SyntaxKind.TryStatement:
1782case SyntaxKind.CatchClause:
1785case SyntaxKind.CatchDeclaration:
1786case SyntaxKind.CatchFilterClause:
1789case SyntaxKind.FinallyClause:
1792case SyntaxKind.IfStatement:
1796case SyntaxKind.ElseClause:
1799case SyntaxKind.SwitchStatement:
1804case SyntaxKind.SwitchSection:
1807case SyntaxKind.WhileStatement:
1811case SyntaxKind.DoStatement:
1814case SyntaxKind.ForStatement:
1818case SyntaxKind.ForEachStatement:
1819case SyntaxKind.ForEachVariableStatement:
1825case SyntaxKind.LabeledStatement:
1828case SyntaxKind.CheckedStatement:
1829case SyntaxKind.UncheckedStatement:
1832case SyntaxKind.UnsafeStatement:
1835case SyntaxKind.LocalFunctionStatement:
1839case SyntaxKind.YieldBreakStatement:
1840case SyntaxKind.YieldReturnStatement:
1841case SyntaxKind.ReturnStatement:
1842case SyntaxKind.ThrowStatement:
1843case SyntaxKind.ExpressionStatement:
1844case SyntaxKind.EmptyStatement:
1845case SyntaxKind.GotoStatement:
1846case SyntaxKind.GotoCaseStatement:
1847case SyntaxKind.GotoDefaultStatement:
1848case SyntaxKind.BreakStatement:
1849case SyntaxKind.ContinueStatement:
1852case SyntaxKind.LocalDeclarationStatement:
1856case SyntaxKind.AwaitExpression:
1859case SyntaxKind.AnonymousObjectCreationExpression:
1862case SyntaxKind.ParenthesizedLambdaExpression:
1866case SyntaxKind.SimpleLambdaExpression:
1869case SyntaxKind.AnonymousMethodExpression:
1872case SyntaxKind.QueryExpression:
1875case SyntaxKind.QueryBody:
1879case SyntaxKind.QueryContinuation:
1882case SyntaxKind.FromClause:
1885case SyntaxKind.JoinClause:
1888case SyntaxKind.JoinIntoClause:
1891case SyntaxKind.LetClause:
1894case SyntaxKind.WhereClause:
1897case SyntaxKind.OrderByClause:
1900case SyntaxKind.AscendingOrdering:
1901case SyntaxKind.DescendingOrdering:
1904case SyntaxKind.SelectClause:
1907case SyntaxKind.GroupClause:
1910case SyntaxKind.IsPatternExpression:
1911case SyntaxKind.TupleType:
1912case SyntaxKind.TupleExpression:
1913case SyntaxKind.DeclarationExpression:
1914case SyntaxKind.RefType:
1915case SyntaxKind.RefExpression:
1916case SyntaxKind.DeclarationPattern:
1917case SyntaxKind.SimpleAssignmentExpression:
1918case SyntaxKind.WhenClause:
1919case SyntaxKind.SingleVariableDesignation:
1920case SyntaxKind.CasePatternSwitchLabel:
1923case SyntaxKind.SwitchExpression:
1926case SyntaxKind.SwitchExpressionArm:
1946case SyntaxKind.ParenthesizedLambdaExpression:
1949case SyntaxKind.SimpleLambdaExpression:
1953case SyntaxKind.AnonymousMethodExpression:
2002case SyntaxKind.CompilationUnit:
2005case SyntaxKind.GlobalStatement:
2008case SyntaxKind.ExternAliasDirective:
2011case SyntaxKind.UsingDirective:
2016case SyntaxKind.NamespaceDeclaration:
2017case SyntaxKind.FileScopedNamespaceDeclaration:
2020case SyntaxKind.ClassDeclaration:
2023case SyntaxKind.StructDeclaration:
2026case SyntaxKind.InterfaceDeclaration:
2029case SyntaxKind.RecordDeclaration:
2032case SyntaxKind.RecordStructDeclaration:
2035case SyntaxKind.EnumDeclaration:
2038case SyntaxKind.DelegateDeclaration:
2041case SyntaxKind.FieldDeclaration:
2043return declaration.Modifiers.Any(SyntaxKind.ConstKeyword) ? FeaturesResources.const_field : FeaturesResources.field;
2045case SyntaxKind.EventFieldDeclaration:
2048case SyntaxKind.VariableDeclaration:
2049case SyntaxKind.VariableDeclarator:
2052case SyntaxKind.MethodDeclaration:
2055case SyntaxKind.ConversionOperatorDeclaration:
2058case SyntaxKind.OperatorDeclaration:
2061case SyntaxKind.ConstructorDeclaration:
2063return ctor.Modifiers.Any(SyntaxKind.StaticKeyword) ? FeaturesResources.static_constructor : FeaturesResources.constructor;
2065case SyntaxKind.DestructorDeclaration:
2068case SyntaxKind.PropertyDeclaration:
2071case SyntaxKind.IndexerDeclaration:
2074case SyntaxKind.EventDeclaration:
2077case SyntaxKind.EnumMemberDeclaration:
2080case SyntaxKind.GetAccessorDeclaration:
2081if (node.Parent!.Parent!.IsKind(SyntaxKind.PropertyDeclaration))
2087RoslynDebug.Assert(node.Parent.Parent.IsKind(SyntaxKind.IndexerDeclaration));
2091case SyntaxKind.InitAccessorDeclaration:
2092case SyntaxKind.SetAccessorDeclaration:
2093if (node.Parent!.Parent!.IsKind(SyntaxKind.PropertyDeclaration))
2099RoslynDebug.Assert(node.Parent.Parent.IsKind(SyntaxKind.IndexerDeclaration));
2103case SyntaxKind.AddAccessorDeclaration:
2104case SyntaxKind.RemoveAccessorDeclaration:
2107case SyntaxKind.ArrowExpressionClause:
2110SyntaxKind.PropertyDeclaration => CSharpFeaturesResources.property_getter,
2111SyntaxKind.IndexerDeclaration => CSharpFeaturesResources.indexer_getter,
2115case SyntaxKind.TypeParameterConstraintClause:
2118case SyntaxKind.TypeParameterList:
2119case SyntaxKind.TypeParameter:
2122case SyntaxKind.Parameter:
2125case SyntaxKind.ParameterList:
2128case SyntaxKind.AttributeList:
2131case SyntaxKind.Attribute:
2134case SyntaxKind.AttributeTargetSpecifier:
2139case SyntaxKind.TryStatement:
2142case SyntaxKind.CatchClause:
2143case SyntaxKind.CatchDeclaration:
2146case SyntaxKind.CatchFilterClause:
2149case SyntaxKind.FinallyClause:
2152case SyntaxKind.FixedStatement:
2155case SyntaxKind.UsingStatement:
2158case SyntaxKind.LockStatement:
2161case SyntaxKind.ForEachStatement:
2162case SyntaxKind.ForEachVariableStatement:
2165case SyntaxKind.CheckedStatement:
2168case SyntaxKind.UncheckedStatement:
2171case SyntaxKind.YieldBreakStatement:
2174case SyntaxKind.YieldReturnStatement:
2177case SyntaxKind.AwaitExpression:
2180case SyntaxKind.ParenthesizedLambdaExpression:
2181case SyntaxKind.SimpleLambdaExpression:
2184case SyntaxKind.AnonymousMethodExpression:
2187case SyntaxKind.FromClause:
2190case SyntaxKind.JoinClause:
2191case SyntaxKind.JoinIntoClause:
2194case SyntaxKind.LetClause:
2197case SyntaxKind.WhereClause:
2200case SyntaxKind.OrderByClause:
2201case SyntaxKind.AscendingOrdering:
2202case SyntaxKind.DescendingOrdering:
2205case SyntaxKind.SelectClause:
2208case SyntaxKind.GroupClause:
2211case SyntaxKind.QueryBody:
2214case SyntaxKind.QueryContinuation:
2217case SyntaxKind.IsPatternExpression:
2220case SyntaxKind.SimpleAssignmentExpression:
2230case SyntaxKind.TupleType:
2231case SyntaxKind.TupleExpression:
2234case SyntaxKind.LocalFunctionStatement:
2237case SyntaxKind.DeclarationExpression:
2240case SyntaxKind.RefType:
2241case SyntaxKind.RefExpression:
2244case SyntaxKind.SwitchStatement:
2247case SyntaxKind.LocalDeclarationStatement:
2248if (((LocalDeclarationStatementSyntax)node).UsingKeyword.IsKind(SyntaxKind.UsingKeyword))
2255case SyntaxKind.ExtensionBlockDeclaration:
2267case SyntaxKind.ForEachStatement:
2268Debug.Assert(((CommonForEachStatementSyntax)node).AwaitKeyword.IsKind(SyntaxKind.AwaitKeyword));
2271case SyntaxKind.VariableDeclarator:
2272RoslynDebug.Assert(((LocalDeclarationStatementSyntax)node.Parent!.Parent!).AwaitKeyword.IsKind(SyntaxKind.AwaitKeyword));
2382if (_newNode.IsKind(SyntaxKind.LocalFunctionStatement))
2389case SyntaxKind.EnumMemberDeclaration:
2395case SyntaxKind.TypeParameter:
2405case SyntaxKind.ExtensionBlockDeclaration:
2410case SyntaxKind.ExternAliasDirective:
2414case SyntaxKind.Attribute:
2415case SyntaxKind.AttributeList:
2421if (node.IsParentKind(SyntaxKind.CompilationUnit) || node.Parent.IsParentKind(SyntaxKind.CompilationUnit))
2434case SyntaxKind.ExternAliasDirective:
2440case SyntaxKind.ExtensionBlockDeclaration:
2445case SyntaxKind.AttributeList:
2446case SyntaxKind.Attribute:
2452if (oldNode.IsParentKind(SyntaxKind.CompilationUnit) || oldNode.Parent.IsParentKind(SyntaxKind.CompilationUnit))
2465case SyntaxKind.ExternAliasDirective:
2469case SyntaxKind.Attribute:
2475if (newNode.IsParentKind(SyntaxKind.CompilationUnit) || newNode.Parent.IsParentKind(SyntaxKind.CompilationUnit))
2507if (node.Kind() is SyntaxKind.StackAllocArrayCreationExpression or SyntaxKind.ImplicitStackAllocArrayCreationExpression)
2593var kind = current.Kind();
2597case SyntaxKind.TryStatement:
2605case SyntaxKind.CatchClause:
2606case SyntaxKind.FinallyClause:
2611RoslynDebug.Assert(current.Parent.Kind() == SyntaxKind.TryStatement);
2617case SyntaxKind.ClassDeclaration:
2618case SyntaxKind.StructDeclaration:
2619case SyntaxKind.RecordDeclaration:
2620case SyntaxKind.RecordStructDeclaration:
2659case SyntaxKind.TryStatement:
2665case SyntaxKind.CatchClause:
2666case SyntaxKind.FinallyClause:
2693case SyntaxKind.TryStatement:
2709case SyntaxKind.CatchClause:
2713case SyntaxKind.FinallyClause:
2732if (newNode.IsKind(SyntaxKind.AwaitExpression) && oldNode.IsKind(SyntaxKind.AwaitExpression))
2759case SyntaxKind.ForStatement:
2760case SyntaxKind.ForEachStatement:
2761case SyntaxKind.IfStatement:
2762case SyntaxKind.WhileStatement:
2763case SyntaxKind.DoStatement:
2764case SyntaxKind.SwitchStatement:
2765case SyntaxKind.LockStatement:
2766case SyntaxKind.UsingStatement:
2767case SyntaxKind.ArrowExpressionClause:
2782Debug.Assert(awaitExpression.IsKind(SyntaxKind.AwaitExpression));
2792case SyntaxKind.ExpressionStatement:
2793case SyntaxKind.ReturnStatement:
2807case SyntaxKind.VariableDeclaration:
2812case SyntaxKind.LocalDeclarationStatement:
2825case SyntaxKind.ExpressionStatement:
2828case SyntaxKind.ReturnStatement:
2839if (node is AssignmentExpressionSyntax(SyntaxKind.SimpleAssignmentExpression) assignment)
2841return assignment.Left.IsKind(SyntaxKind.IdentifierName) && assignment.Right == awaitExpression;
2877if (!oldActiveStatement.IsKind(SyntaxKind.WhenClause))
2892Debug.Assert(newActiveStatement.IsKind(SyntaxKind.WhenClause));
2974case SyntaxKind.CheckedStatement:
2975case SyntaxKind.UncheckedStatement:
3014nodeSelector: static n => n.IsKind(SyntaxKind.LockStatement),
3029nodeSelector: static n => n.IsKind(SyntaxKind.FixedStatement),
3060nodeSelector: static n => n.Kind() is SyntaxKind.ForEachStatement or SyntaxKind.ForEachVariableStatement,
ExtractMethod\CSharpMethodExtractor.CSharpCodeGenerator.cs (32)
187PrefixUnaryExpression(SyntaxKind.LogicalNotExpression, IdentifierName(FlowControlName)),
264BinaryExpression(SyntaxKind.EqualsExpression, IdentifierName(FlowControlName), LiteralExpression(value)),
345.Any(m => m.GetModifiers().Any(SyntaxKind.UnsafeKeyword)))
389if (!typeDecl.IsKind(SyntaxKind.InterfaceDeclaration))
396return !memberDecl.Modifiers.Any(SyntaxKind.StaticKeyword);
399private static SyntaxKind GetParameterRefSyntaxKind(ParameterBehavior parameterBehavior)
402? SyntaxKind.RefKeyword
404SyntaxKind.OutKeyword : SyntaxKind.None;
514? LiteralExpression(SyntaxKind.NullLiteralExpression)
515: LiteralExpression(SyntaxKind.DefaultLiteralExpression);
522protected SyntaxKind UnderCheckedExpressionContext()
525protected SyntaxKind UnderCheckedStatementContext()
528protected SyntaxKind UnderCheckedContext<T>() where T : SyntaxNode
534return SyntaxKind.None;
542var kind = UnderCheckedStatementContext();
543if (kind == SyntaxKind.None)
626SyntaxKind.SimpleAssignmentExpression, IdentifierName(identifier), variableDeclaration.Initializer.Value)));
661result.Add(EmptyStatement(Token([.. triviaList], SyntaxKind.SemicolonToken, [ElasticMarker])));
700.Where(n => n.Kind() is SyntaxKind.DeclarationExpression or SyntaxKind.DeclarationPattern);
706case SyntaxKind.DeclarationExpression:
709if (declaration.Designation.Kind() != SyntaxKind.SingleVariableDesignation)
730case SyntaxKind.DeclarationPattern:
819return statements[index + 1].Kind() == SyntaxKind.ReturnStatement;
827? MemberAccessExpression(SyntaxKind.SimpleMemberAccessExpression, ThisExpression(), methodName)
838var modifier = GetParameterRefSyntaxKind(argument.ParameterModifier);
839var refOrOut = modifier == SyntaxKind.None ? default : Token(modifier);
855SyntaxKind.SimpleMemberAccessExpression,
858ArgumentList([Argument(LiteralExpression(SyntaxKind.FalseLiteralExpression))]));
877SyntaxKind.SimpleAssignmentExpression,
924return ExpressionStatement(AssignmentExpression(SyntaxKind.SimpleAssignmentExpression, CreateLeftExpression(), initialValue));
ReplacePropertyWithMethods\CSharpReplacePropertyWithMethodsService.cs (33)
129if (propertyDeclaration.Modifiers.Any(SyntaxKind.UnsafeKeyword)
130&& !methodDeclaration.Modifiers.Any(SyntaxKind.UnsafeKeyword))
189if (propertyDeclaration.Modifiers.Any(SyntaxKind.UnsafeKeyword)
190&& !methodDeclaration.Modifiers.Any(SyntaxKind.UnsafeKeyword))
246return trivia.Kind() is SyntaxKind.MultiLineDocumentationCommentTrivia or SyntaxKind.SingleLineDocumentationCommentTrivia
333var operatorKind = parent.Kind() switch
335SyntaxKind.AddAssignmentExpression => SyntaxKind.AddExpression,
336SyntaxKind.AndAssignmentExpression => SyntaxKind.BitwiseAndExpression,
337SyntaxKind.CoalesceAssignmentExpression => SyntaxKind.CoalesceExpression,
338SyntaxKind.DivideAssignmentExpression => SyntaxKind.DivideExpression,
339SyntaxKind.ExclusiveOrAssignmentExpression => SyntaxKind.ExclusiveOrExpression,
340SyntaxKind.LeftShiftAssignmentExpression => SyntaxKind.LeftShiftExpression,
341SyntaxKind.ModuloAssignmentExpression => SyntaxKind.ModuloExpression,
342SyntaxKind.MultiplyAssignmentExpression => SyntaxKind.MultiplyExpression,
343SyntaxKind.OrAssignmentExpression => SyntaxKind.BitwiseOrExpression,
344SyntaxKind.RightShiftAssignmentExpression => SyntaxKind.RightShiftExpression,
345SyntaxKind.SubtractAssignmentExpression => SyntaxKind.SubtractExpression,
346SyntaxKind.UnsignedRightShiftAssignmentExpression => SyntaxKind.UnsignedRightShiftExpression,
347_ => SyntaxKind.None,
350if (operatorKind is SyntaxKind.None)
SimplifyThisOrMe\CSharpSimplifyThisOrMeDiagnosticAnalyzer.cs (1)
20SyntaxKind,
Snippets\CSharpClassSnippetProvider.cs (14)
21private static readonly ISet<SyntaxKind> s_validModifiers = new HashSet<SyntaxKind>(SyntaxFacts.EqualityComparer)
23SyntaxKind.NewKeyword,
24SyntaxKind.PublicKeyword,
25SyntaxKind.ProtectedKeyword,
26SyntaxKind.InternalKeyword,
27SyntaxKind.PrivateKeyword,
28SyntaxKind.AbstractKeyword,
29SyntaxKind.ClosedKeyword,
30SyntaxKind.SealedKeyword,
31SyntaxKind.StaticKeyword,
32SyntaxKind.UnsafeKeyword,
33SyntaxKind.FileKeyword,
40protected override ISet<SyntaxKind> ValidModifiers => s_validModifiers;
src\roslyn\src\Analyzers\CSharp\Analyzers\AddRequiredParentheses\CSharpAddRequiredExpressionParenthesesDiagnosticAnalyzer.cs (26)
18ExpressionSyntax, ExpressionSyntax, SyntaxKind>(CSharpExpressionPrecedenceService.Instance)
20private static readonly ImmutableArray<SyntaxKind> s_kinds =
22SyntaxKind.AddExpression,
23SyntaxKind.SubtractExpression,
24SyntaxKind.MultiplyExpression,
25SyntaxKind.DivideExpression,
26SyntaxKind.ModuloExpression,
27SyntaxKind.LeftShiftExpression,
28SyntaxKind.RightShiftExpression,
29SyntaxKind.LogicalOrExpression,
30SyntaxKind.LogicalAndExpression,
31SyntaxKind.BitwiseOrExpression,
32SyntaxKind.BitwiseAndExpression,
33SyntaxKind.ExclusiveOrExpression,
34SyntaxKind.EqualsExpression,
35SyntaxKind.NotEqualsExpression,
36SyntaxKind.LessThanExpression,
37SyntaxKind.LessThanOrEqualExpression,
38SyntaxKind.GreaterThanExpression,
39SyntaxKind.GreaterThanOrEqualExpression,
40SyntaxKind.IsExpression,
41SyntaxKind.AsExpression,
42SyntaxKind.CoalesceExpression,
43SyntaxKind.IsPatternExpression,
46protected override ImmutableArray<SyntaxKind> GetSyntaxNodeKinds()
81=> node.Kind() == SyntaxKind.AsExpression;
src\roslyn\src\Analyzers\CSharp\Analyzers\ConvertSwitchStatementToExpression\ConvertSwitchStatementToExpressionDiagnosticAnalyzer.Analyzer.cs (33)
20private sealed class Analyzer : CSharpSyntaxVisitor<SyntaxKind>
31public static (SyntaxKind nodeToGenerate, VariableDeclaratorSyntax? declaratorToRemoveOpt) Analyze(
37var nodeToGenerate = analyzer.AnalyzeSwitchStatement(node, out shouldRemoveNextStatement);
39if (nodeToGenerate == SyntaxKind.SimpleAssignmentExpression &&
84if (!_assignmentTargetOpt.IsKind(SyntaxKind.IdentifierName))
104public override SyntaxKind VisitSwitchStatement(SwitchStatementSyntax node)
107private SyntaxKind AnalyzeSwitchStatement(SwitchStatementSyntax switchStatement, out bool shouldRemoveNextStatement)
126var nextStatement = AnalyzeNextStatement(switchStatement, out shouldRemoveNextStatement);
175private SyntaxKind AnalyzeNextStatement(SwitchStatementSyntax switchStatement, out bool shouldRemoveNextStatement)
182return SyntaxKind.ThrowStatement;
190private static SyntaxKind Intersect(SyntaxKind left, SyntaxKind right)
192if (left == SyntaxKind.ThrowStatement)
197if (right == SyntaxKind.ThrowStatement)
210private SyntaxKind AnalyzeNextStatement(StatementSyntax? nextStatement)
213return nextStatement is (kind: SyntaxKind.ThrowStatement or SyntaxKind.ReturnStatement)
218private SyntaxKind AnalyzeSwitchSection(SwitchSectionSyntax section)
223case 2 when section.Statements[1].IsKind(SyntaxKind.BreakStatement) || section.Statements[0].IsKind(SyntaxKind.SwitchStatement):
230private static SyntaxKind Aggregate<T>(SyntaxKind seed, SyntaxList<T> nodes, Func<SyntaxKind, T, SyntaxKind> func)
233var result = seed;
248public override SyntaxKind VisitAssignmentExpression(AssignmentExpressionSyntax node)
268public override SyntaxKind VisitExpressionStatement(ExpressionStatementSyntax node)
271public override SyntaxKind VisitReturnStatement(ReturnStatementSyntax node)
279: SyntaxKind.ReturnStatement;
282public override SyntaxKind VisitThrowStatement(ThrowStatementSyntax node)
286return node.Expression is null ? default : SyntaxKind.ThrowStatement;
289public override SyntaxKind DefaultVisit(SyntaxNode node)
src\roslyn\src\Analyzers\CSharp\Analyzers\SimplifyBooleanExpression\CSharpSimplifyConditionalDiagnosticAnalyzer.cs (1)
18SyntaxKind,
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCoalesceExpression\CSharpUseCoalesceExpressionForNullableTernaryConditionalCheckDiagnosticAnalyzer.cs (1)
17SyntaxKind,
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCoalesceExpression\CSharpUseCoalesceExpressionForTernaryConditionalCheckDiagnosticAnalyzer.cs (1)
17SyntaxKind,
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCollectionInitializer\CSharpUseCollectionInitializerDiagnosticAnalyzer.cs (1)
27SyntaxKind,
src\roslyn\src\Analyzers\CSharp\Analyzers\UseCompoundAssignment\Utilities.cs (30)
11public static readonly ImmutableArray<(SyntaxKind, SyntaxKind, SyntaxKind)> Kinds =
13(SyntaxKind.AddExpression, SyntaxKind.AddAssignmentExpression),
14(SyntaxKind.SubtractExpression, SyntaxKind.SubtractAssignmentExpression),
15(SyntaxKind.MultiplyExpression, SyntaxKind.MultiplyAssignmentExpression),
16(SyntaxKind.DivideExpression, SyntaxKind.DivideAssignmentExpression),
17(SyntaxKind.ModuloExpression, SyntaxKind.ModuloAssignmentExpression),
18(SyntaxKind.BitwiseAndExpression, SyntaxKind.AndAssignmentExpression),
19(SyntaxKind.ExclusiveOrExpression, SyntaxKind.ExclusiveOrAssignmentExpression),
20(SyntaxKind.BitwiseOrExpression, SyntaxKind.OrAssignmentExpression),
21(SyntaxKind.LeftShiftExpression, SyntaxKind.LeftShiftAssignmentExpression),
22(SyntaxKind.RightShiftExpression, SyntaxKind.RightShiftAssignmentExpression),
23(SyntaxKind.CoalesceExpression, SyntaxKind.CoalesceAssignmentExpression)).SelectAsArray(
26private static SyntaxKind FindOperatorToken(SyntaxKind assignmentExpressionKind)
28for (var current = SyntaxKind.None; current <= SyntaxKind.ThrowExpression; current++)
src\roslyn\src\Analyzers\CSharp\Analyzers\UseObjectInitializer\CSharpUseObjectInitializerDiagnosticAnalyzer.cs (1)
17SyntaxKind,
src\roslyn\src\Analyzers\CSharp\CodeFixes\AddInheritdoc\AddInheritdocCodeFixProvider.cs (8)
46if (node.Kind() is not SyntaxKind.MethodDeclaration and not SyntaxKind.PropertyDeclaration and not SyntaxKind.VariableDeclarator)
49if (node.IsKind(SyntaxKind.VariableDeclarator) && node is not { Parent.Parent: EventFieldDeclarationSyntax })
81var xmlSpaceAfterTripleSlash = Token(leading: [DocumentationCommentExterior("///")], SyntaxKind.XmlTextLiteralToken, text: " ", valueText: " ", trailing: default);
85var xmlNewLineToken = Token(leading: default, SyntaxKind.XmlTextLiteralNewLineToken, text: newLine, valueText: newLine, trailing: default);
88kind: SyntaxKind.SingleLineDocumentationCommentTrivia,
107if (finalLeadingTrivia is [.., (kind: SyntaxKind.WhitespaceTrivia)])
src\roslyn\src\Analyzers\CSharp\CodeFixes\ConvertSwitchStatementToExpression\ConvertSwitchStatementToExpressionCodeFixProvider.Rewriter.cs (17)
41SyntaxKind nodeToGenerate,
52var rewriter = new Rewriter(model, isAllThrowStatements: nodeToGenerate == SyntaxKind.ThrowStatement, cancellationToken);
68SyntaxKind nodeToGenerate,
73case SyntaxKind.ReturnStatement:
75Token(leadingTrivia, SyntaxKind.ReturnKeyword, trailing: default),
78case SyntaxKind.ThrowStatement:
80Token(leadingTrivia, SyntaxKind.ThrowKeyword, trailing: default),
93private ExpressionStatementSyntax GenerateAssignment(ExpressionSyntax switchExpression, SyntaxKind assignmentKind, SyntaxTriviaList leadingTrivia)
151totalPattern = BinaryPattern(SyntaxKind.OrPattern, totalPattern.Parenthesize(), nextPatternPart.Parenthesize());
162case SyntaxKind.CasePatternSwitchLabel:
167case SyntaxKind.CaseSwitchLabel:
171case SyntaxKind.DefaultSwitchLabel:
208Debug.Assert(!statements[0].IsKind(SyntaxKind.BreakStatement));
234if (nextStatement is (kind: SyntaxKind.ThrowStatement or SyntaxKind.ReturnStatement))
250Token(leading: default, SyntaxKind.SwitchKeyword, node.CloseParenToken.TrailingTrivia),
251Token(leading: default, SyntaxKind.OpenBraceToken, node.OpenBraceToken.TrailingTrivia),
src\roslyn\src\Analyzers\CSharp\CodeFixes\RemoveUnnecessaryDiscardDesignation\CSharpRemoveUnnecessaryDiscardDesignationCodeFixProvider.cs (1)
53SyntaxKind.IsExpression,
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseCollectionInitializer\CSharpUseCollectionInitializerCodeFixProvider.cs (1)
23SyntaxKind,
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseCompoundAssignment\CSharpUseCompoundAssignmentCodeFixProvider.cs (11)
20: AbstractUseCompoundAssignmentCodeFixProvider<SyntaxKind, AssignmentExpressionSyntax, ExpressionSyntax>(Utilities.Kinds)
22protected override SyntaxToken Token(SyntaxKind kind)
26SyntaxKind assignmentOpKind, ExpressionSyntax left, SyntaxToken syntaxToken, ExpressionSyntax right)
33? Postfix(SyntaxKind.PostIncrementExpression, left)
34: Prefix(SyntaxKind.PreIncrementExpression, left);
38? Postfix(SyntaxKind.PostDecrementExpression, left)
39: Prefix(SyntaxKind.PreDecrementExpression, left);
41private static ExpressionSyntax Postfix(SyntaxKind kind, ExpressionSyntax operand)
44private static ExpressionSyntax Prefix(SyntaxKind kind, ExpressionSyntax operand)
47protected override SyntaxTriviaList PrepareRightExpressionLeadingTrivia(SyntaxTriviaList initialTrivia) => initialTrivia.SkipWhile(el => el.Kind() is SyntaxKind.WhitespaceTrivia or SyntaxKind.EndOfLineTrivia).ToSyntaxTriviaList();
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseNullPropagation\CSharpUseNullPropagationCodeFixProvider.cs (1)
21SyntaxKind,
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseObjectInitializer\CSharpUseObjectInitializerCodeFixProvider.cs (1)
29SyntaxKind,
Structure\Providers\BlockSyntaxStructureProvider.cs (28)
29var parentKind = parent.Kind();
91else if (parentKind == SyntaxKind.ElseClause || IsNonBlockStatement(parent))
97if (parentKind == SyntaxKind.LocalFunctionStatement)
101parent.IsParentKind(SyntaxKind.GlobalStatement);
134if (parentKind is SyntaxKind.Block or SyntaxKind.SwitchSection)
152=> node is StatementSyntax(kind: not SyntaxKind.Block);
157if (parent.IsKind(SyntaxKind.IfStatement) && parent.IsParentKind(SyntaxKind.ElseClause))
170if (previousToken.IsKind(SyntaxKind.None))
180if (node.Parent.IsKind(SyntaxKind.IfStatement))
206SyntaxKind.ForStatement => BlockTypes.Loop,
207SyntaxKind.ForEachStatement => BlockTypes.Loop,
208SyntaxKind.ForEachVariableStatement => BlockTypes.Loop,
209SyntaxKind.WhileStatement => BlockTypes.Loop,
210SyntaxKind.DoStatement => BlockTypes.Loop,
211SyntaxKind.TryStatement => BlockTypes.Statement,
212SyntaxKind.CatchClause => BlockTypes.Statement,
213SyntaxKind.FinallyClause => BlockTypes.Statement,
214SyntaxKind.UnsafeStatement => BlockTypes.Statement,
215SyntaxKind.FixedStatement => BlockTypes.Statement,
216SyntaxKind.LockStatement => BlockTypes.Statement,
217SyntaxKind.UsingStatement => BlockTypes.Statement,
218SyntaxKind.IfStatement => BlockTypes.Conditional,
219SyntaxKind.ElseClause => BlockTypes.Conditional,
220SyntaxKind.SwitchSection => BlockTypes.Conditional,
221SyntaxKind.Block => BlockTypes.Statement,
222SyntaxKind.LocalFunctionStatement => BlockTypes.Statement,