src\0bf6ba47805c8821\AbstractMoveDeclarationNearReferenceService.cs (20)
27where TStatementSyntax : SyntaxNode
29where TVariableDeclaratorSyntax : SyntaxNode
31protected abstract bool IsMeaningfulBlock(SyntaxNode node);
32protected abstract bool CanMoveToBlock(ILocalSymbol localSymbol, SyntaxNode currentBlock, SyntaxNode destinationBlock);
33protected abstract SyntaxNode GetVariableDeclaratorSymbolNode(TVariableDeclaratorSyntax variableDeclarator);
36protected abstract Task<bool> TypesAreCompatibleAsync(Document document, ILocalSymbol localSymbol, TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode right, CancellationToken cancellationToken);
38public async Task<(bool canMove, bool mayChangeSemantics)> CanMoveDeclarationNearReferenceAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
47private async Task<State> ComputeStateAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
78Document document, SyntaxNode localDeclarationStatement, CancellationToken cancellationToken)
84var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
114var newRoot = editor.GetChangedRoot();
151var originalNextStatement = state.OutermostBlockStatements[statementIndex + 1];
187var blocks = state.InnermostBlock.GetAncestorsOrThis<SyntaxNode>();
188foreach (var block in blocks)
211var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(state.VariableDeclarator);
218syntaxFacts.GetPartsOfAssignmentStatement(firstStatement, out var left, out var right);
243out var _, out var operatorToken, out var right);
src\30958ef190fa2467\SyntaxGeneratorInternal.cs (98)
37public abstract SyntaxNode LocalDeclarationStatement(
38SyntaxNode? type, SyntaxToken identifier, SyntaxNode? initializer = null, bool isConst = false);
43public SyntaxNode LocalDeclarationStatement(SyntaxToken name, SyntaxNode initializer)
46public abstract SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer);
51public abstract SyntaxNode WithPropertyInitializer(SyntaxNode propertyDeclaration, SyntaxNode initializer);
53public abstract SyntaxNode EqualsValueClause(SyntaxNode value);
54public abstract SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value);
58public abstract SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull);
60public abstract SyntaxNode MemberBindingExpression(SyntaxNode name);
62public abstract SyntaxNode RefExpression(SyntaxNode expression);
67public abstract SyntaxNode AddParentheses(SyntaxNode expression, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true);
73public abstract SyntaxNode YieldReturnStatement(SyntaxNode expression);
78/// <see cref="LocalDeclarationStatement(SyntaxNode, SyntaxToken, SyntaxNode, bool)"/>.
84public abstract SyntaxNode InterpolatedStringText(SyntaxToken textToken);
85public abstract SyntaxNode Interpolation(SyntaxNode syntaxNode);
86public abstract SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken);
87public abstract SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment);
88public abstract SyntaxNode InterpolationFormatClause(string format);
89public abstract SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames);
106public abstract SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext);
108public abstract SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right);
110public abstract SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type);
119public abstract SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isToken, SyntaxNode pattern);
121public abstract SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right);
122public abstract SyntaxNode ConstantPattern(SyntaxNode expression);
123public abstract SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name);
124public abstract SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression);
125public abstract SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression);
126public abstract SyntaxNode LessThanRelationalPattern(SyntaxNode expression);
127public abstract SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression);
128public abstract SyntaxNode NotPattern(SyntaxNode pattern);
129public abstract SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right);
130public abstract SyntaxNode ParenthesizedPattern(SyntaxNode pattern);
131public abstract SyntaxNode TypePattern(SyntaxNode type);
132public abstract SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern);
136public abstract SyntaxNode DefaultExpression(ITypeSymbol type);
137public abstract SyntaxNode DefaultExpression(SyntaxNode type);
139public abstract SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression);
141public SyntaxNode CastExpression(ITypeSymbol type, SyntaxNode expression)
144public SyntaxNode TypeExpression(ITypeSymbol typeSymbol)
147public abstract SyntaxNode TypeExpression(ITypeSymbol typeSymbol, RefKind refKind);
149public abstract SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right);
151public SyntaxNode MemberAccessExpression(SyntaxNode? expression, SyntaxNode memberName)
157public abstract SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode memberName);
158public abstract SyntaxNode IdentifierName(string identifier);
160public abstract SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression);
161public SyntaxNode ConvertExpression(ITypeSymbol type, SyntaxNode expression)
src\5f6f2f95b47c3dc6\SemanticModelWorkspaceServiceFactory.SemanticModelWorkspaceService.cs (6)
15internal readonly struct SemanticModelReuseInfo(SemanticModel previousNonSpeculativeSemanticModel, SemanticModel currentSemanticModel, SyntaxNode bodyNode, VersionStamp topLevelSementicVersion)
31public readonly SyntaxNode BodyNode = bodyNode;
94public async ValueTask<SemanticModel> ReuseExistingSpeculativeModelAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
100var bodyNode = reuseService.TryGetContainingMethodBodyForSpeculation(node);
138ImmutableDictionary<DocumentId, SemanticModelReuseInfo?> map, Document document, SyntaxNode bodyNode, CancellationToken cancellationToken)
177SyntaxNode bodyNode,
src\ce8c1e82c1124a2b\AbstractInitializerParameterService.cs (23)
20where TStatementSyntax : SyntaxNode
22protected abstract bool IsFunctionDeclaration(SyntaxNode node);
24protected abstract SyntaxNode? GetAccessorBody(IMethodSymbol accessor, CancellationToken cancellationToken);
26protected abstract SyntaxNode GetBody(SyntaxNode methodNode);
27protected abstract SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement);
34SyntaxEditor editor, SyntaxNode functionDeclaration, bool returnsVoid, SyntaxNode? statementToAddAfter, TStatementSyntax statement);
37SyntaxNode functionDeclaration,
45var functionBody = GetBody(functionDeclaration);
79public void InsertStatement(SyntaxEditor editor, SyntaxNode functionDeclaration, bool returnsVoid, SyntaxNode? statementToAddAfter, SyntaxNode statement)
90var parameterDeclaration = parameterReference.GetSyntax(cancellationToken);
92var functionDeclaration = parameterDeclaration.FirstAncestorOrSelf<SyntaxNode>(IsFunctionDeclaration);
115SyntaxNode functionDeclaration,
123var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
135SyntaxNode constructorDeclaration,
159var statementToAddAfter = TryGetStatementToAddInitializationAfter(parameter, blockStatement);
164private SyntaxNode? TryGetStatementToAddInitializationAfter(
195using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var accessors);
209foreach (var accessorBody in accessors)
src\roslyn\src\RoslynAnalyzers\Utilities\Workspaces\SyntaxGeneratorExtensions.cs (56)
32/// A <see cref="SyntaxNode"/> representing the declaration.
34public static SyntaxNode DefaultOperatorEqualityDeclaration(this SyntaxGenerator generator,
37var leftArgument = generator.IdentifierName(LeftIdentifierName);
38var rightArgument = generator.IdentifierName(RightIdentifierName);
40List<SyntaxNode> statements = [];
75/// <returns>A <see cref="SyntaxNode"/> representing the type reference expression.</returns>
76public static SyntaxNode TypeExpressionForStaticMemberAccess(this SyntaxGenerator generator, INamedTypeSymbol typeSymbol)
81var typeExpression = generator.TypeExpression(typeSymbol);
85static SyntaxNode QualifiedNameToMemberAccess(int qualifiedNameSyntaxKind, int memberAccessExpressionSyntaxKind, SyntaxNode expression, SyntaxGenerator generator)
89var left = QualifiedNameToMemberAccess(qualifiedNameSyntaxKind, memberAccessExpressionSyntaxKind, expression.ChildNodes().First(), generator);
90var right = expression.ChildNodes().Last();
108/// A <see cref="SyntaxNode"/> representing the declaration.
110public static SyntaxNode DefaultOperatorInequalityDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
112var leftArgument = generator.IdentifierName(LeftIdentifierName);
113var rightArgument = generator.IdentifierName(RightIdentifierName);
115var returnStatement = generator.ReturnStatement(
134/// A <see cref="SyntaxNode"/> representing the declaration.
136public static SyntaxNode DefaultOperatorLessThanDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
138var leftArgument = generator.IdentifierName(LeftIdentifierName);
139var rightArgument = generator.IdentifierName(RightIdentifierName);
141SyntaxNode expression;
172var returnStatement = generator.ReturnStatement(expression);
186/// A <see cref="SyntaxNode"/> representing the declaration.
188public static SyntaxNode DefaultOperatorLessThanOrEqualDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
190var leftArgument = generator.IdentifierName(LeftIdentifierName);
191var rightArgument = generator.IdentifierName(RightIdentifierName);
193SyntaxNode expression;
219var returnStatement = generator.ReturnStatement(expression);
233/// A <see cref="SyntaxNode"/> representing the declaration.
235public static SyntaxNode DefaultOperatorGreaterThanDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
237var leftArgument = generator.IdentifierName(LeftIdentifierName);
238var rightArgument = generator.IdentifierName(RightIdentifierName);
240SyntaxNode expression;
267var returnStatement = generator.ReturnStatement(expression);
281/// A <see cref="SyntaxNode"/> representing the declaration.
283public static SyntaxNode DefaultOperatorGreaterThanOrEqualDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
285var leftArgument = generator.IdentifierName(LeftIdentifierName);
286var rightArgument = generator.IdentifierName(RightIdentifierName);
288SyntaxNode expression;
318var returnStatement = generator.ReturnStatement(expression);
322private static SyntaxNode ComparisonOperatorDeclaration(this SyntaxGenerator generator, OperatorKind operatorKind, INamedTypeSymbol containingType, params SyntaxNode[] statements)
347/// A <see cref="SyntaxNode"/> representing the declaration.
349public static SyntaxNode DefaultEqualsOverrideDeclaration(this SyntaxGenerator generator, Compilation compilation, INamedTypeSymbol containingType)
351var argumentName = generator.IdentifierName("obj");
353List<SyntaxNode> statements = [];
402/// A <see cref="SyntaxNode"/> representing the declaration.
404public static SyntaxNode DefaultGetHashCodeOverrideDeclaration(
425public static IEnumerable<SyntaxNode> DefaultMethodBody(
431public static SyntaxNode DefaultMethodStatement(this SyntaxGenerator generator, Compilation compilation)
438public static SyntaxNode? TryGetContainingDeclaration(this SyntaxGenerator generator, SyntaxNode? node, DeclarationKind kind)
469/// A <see cref="SyntaxNode"/> representing an unused identifier name.
472public static SyntaxNode FirstUnusedIdentifierName(this SyntaxGenerator generator, SemanticModel semanticModel, int position, string baseName, int maxTries = int.MaxValue)
474var identifierName = generator.IdentifierName(baseName);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\AnalysisContextExtensions.cs (10)
149public static SyntaxNode GetAnalysisRoot(this SyntaxTreeAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
155public static SyntaxNode GetAnalysisRoot(this SemanticModelAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
163public static SyntaxNode GetAnalysisRoot(this SymbolStartAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
175public static SyntaxNode GetAnalysisRoot(this SymbolAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
185public static SyntaxNode GetAnalysisRoot(this OperationBlockStartAnalysisContext context, IOperation operationBlock, bool findInTrivia, bool getInnermostNodeForTie = false)
191public static SyntaxNode GetAnalysisRoot(this OperationBlockAnalysisContext context, IOperation operationBlock, bool findInTrivia, bool getInnermostNodeForTie = false)
197public static SyntaxNode GetAnalysisRoot(this OperationAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
203public static SyntaxNode GetAnalysisRoot(this SyntaxNodeAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
209public static SyntaxNode GetAnalysisRoot<TSyntaxKind>(this CodeBlockStartAnalysisContext<TSyntaxKind> context, bool findInTrivia, bool getInnermostNodeForTie = false) where TSyntaxKind : struct
215public static SyntaxNode GetAnalysisRoot(this CodeBlockAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SemanticModelExtensions.cs (14)
36public static DataFlowAnalysis AnalyzeRequiredDataFlow(this SemanticModel semanticModel, SyntaxNode statementOrExpression)
39public static DataFlowAnalysis AnalyzeRequiredDataFlow(this SemanticModel semanticModel, SyntaxNode firstStatement, SyntaxNode lastStatement)
42public static ControlFlowAnalysis AnalyzeRequiredControlFlow(this SemanticModel semanticModel, SyntaxNode statement)
45public static ControlFlowAnalysis AnalyzeRequiredControlFlow(this SemanticModel semanticModel, SyntaxNode firstStatement, SyntaxNode lastStatement)
48public static ISymbol GetRequiredDeclaredSymbol(this SemanticModel semanticModel, SyntaxNode declaration, CancellationToken cancellationToken)
54public static IOperation GetRequiredOperation(this SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
108this SemanticModel semanticModel, SyntaxNode? container, CancellationToken cancellationToken, Func<SyntaxNode, bool>? descendInto = null)
112using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var stack);
115while (stack.TryPop(out var current))
126if (child.AsNode(out var childNode) &&
215SyntaxNode expression,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxNodeExtensions.cs (127)
23public static SyntaxNode GetRequiredParent(this SyntaxNode node)
26public static IEnumerable<SyntaxNodeOrToken> DepthFirstTraversal(this SyntaxNode node)
29public static IEnumerable<SyntaxNode> DepthFirstTraversalNodes(this SyntaxNode node)
32public static IEnumerable<SyntaxNode> GetAncestors(this SyntaxNode node)
34var current = node.Parent;
44public static IEnumerable<TNode> GetAncestors<TNode>(this SyntaxNode node)
45where TNode : SyntaxNode
47var current = node.Parent;
59public static TNode? GetAncestor<TNode>(this SyntaxNode node)
60where TNode : SyntaxNode
62var current = node.Parent;
76public static TNode? GetAncestorOrThis<TNode>(this SyntaxNode? node)
77where TNode : SyntaxNode
82public static IEnumerable<TNode> GetAncestorsOrThis<TNode>(this SyntaxNode? node)
83where TNode : SyntaxNode
85var current = node;
97public static bool HasAncestor<TNode>(this SyntaxNode node)
98where TNode : SyntaxNode
104this SyntaxNode node, TextSpan searchSpan, Func<SyntaxNode, bool> predicate)
105where TSyntaxNode : SyntaxNode
109var nodes = new LinkedList<SyntaxNode>();
114var currentNode = nodes.First!.Value;
129public static bool CheckParent<T>([NotNullWhen(returnValue: true)] this SyntaxNode? node, Func<T, bool> valueChecker) where T : SyntaxNode
145public static bool IsChildNode<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
146where TParent : SyntaxNode
154var ancestorNode = childGetter(ancestor);
162public static bool IsFoundUnder<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
163where TParent : SyntaxNode
171var child = childGetter(ancestor);
174return node.GetAncestorsOrThis<SyntaxNode>().Contains(child);
177public static SyntaxNode GetCommonRoot(this SyntaxNode node1, SyntaxNode node2)
183using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var set);
184set.AddRange(node2.GetAncestorsOrThis<SyntaxNode>());
186foreach (var ancestor in node1.AncestorsAndSelf())
195public static int Width(this SyntaxNode node)
198public static int FullWidth(this SyntaxNode node)
201public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes, Func<SyntaxNode, bool> predicate)
204public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes)
214using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var commonAncestorsStack);
215using var _2 = PooledHashSet<SyntaxNode>.GetInstance(out var commonAncestorsSet);
218foreach (var node in nodes)
225foreach (var ancestor in node.ValueAncestorsAndSelf())
239var commonAncestor = FindCommonAncestor(node, commonAncestorsSet);
281static SyntaxNode? FindCommonAncestor(SyntaxNode node, HashSet<SyntaxNode> commonAncestorsSet)
283foreach (var ancestor in node.ValueAncestorsAndSelf())
293public static TSyntaxNode? FindInnermostCommonNode<TSyntaxNode>(this IEnumerable<SyntaxNode> nodes) where TSyntaxNode : SyntaxNode
296public static TextSpan GetContainedSpan(this IEnumerable<SyntaxNode> nodes)
302foreach (var node in nodes)
312public static bool OverlapsHiddenPosition(this SyntaxNode node, CancellationToken cancellationToken)
315public static bool OverlapsHiddenPosition(this SyntaxNode node, TextSpan span, CancellationToken cancellationToken)
318public static bool OverlapsHiddenPosition(this SyntaxNode declaration, SyntaxNode startNode, SyntaxNode endNode, CancellationToken cancellationToken)
327public static IEnumerable<T> GetAnnotatedNodes<T>(this SyntaxNode node, SyntaxAnnotation syntaxAnnotation) where T : SyntaxNode
341IEnumerable<SyntaxNode> nodes,
342Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>> computeReplacementAsync,
343CancellationToken cancellationToken) where TRootNode : SyntaxNode
365CancellationToken cancellationToken) where TRootNode : SyntaxNode
378CancellationToken cancellationToken) where TRoot : SyntaxNode
389IEnumerable<SyntaxNode>? nodes,
390Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>>? computeReplacementNodeAsync,
396where TRoot : SyntaxNode
403var nodeReplacements = new Dictionary<SyntaxNode, SyntaxNode>();
439if (nodesToReplace.TryGetValue(span, out var currentNode))
441var original = (SyntaxNode?)retryAnnotations.GetAnnotations(currentNode).SingleOrDefault() ?? currentNode;
442var newNode = await computeReplacementNodeAsync!(original, currentNode, cancellationToken).ConfigureAwait(false);
472if (rewritten != original || !nodeReplacements.TryGetValue(original, out var replaced))
598SyntaxNode root,
615this SyntaxNode root,
654this SyntaxNode root,
691params SyntaxTrivia[] trivia) where T : SyntaxNode
703SyntaxTriviaList trivia) where T : SyntaxNode
715IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
725params SyntaxTrivia[] trivia) where T : SyntaxNode
737SyntaxTriviaList trivia) where T : SyntaxNode
749IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
760IEnumerable<SyntaxTrivia> trailingTrivia) where T : SyntaxNode
785public static SyntaxNode FindNode(this SyntaxNode root, TextSpan? span, bool findInTrivia, bool getInnermostNodeForTie)
793public static SyntaxNode? GetParent(this SyntaxNode node, bool ascendOutOfTrivia)
795var parent = node.Parent;
807public static TNode? FirstAncestorOrSelfUntil<TNode>(this SyntaxNode? node, Func<SyntaxNode, bool> predicate)
808where TNode : SyntaxNode
810for (var current = node; current != null; current = current.GetParent(ascendOutOfTrivia: true))
827SyntaxNode root,
830where TDirectiveTriviaSyntax : SyntaxNode
836where TDirectiveTriviaSyntax : SyntaxNode
856SyntaxNode root,
944public static SyntaxTriviaList GetLeadingTriviaIncludingMissingTokens(this SyntaxNode node)
960public static SyntaxTriviaList GetTrailingTriviaIncludingMissingTokens(this SyntaxNode node)
979public static SyntaxNode WithLeadingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
984public static SyntaxNode WithTrailingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
989public static SyntaxNode WithTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
998public static ValueAncestorsAndSelfEnumerable ValueAncestorsAndSelf(this SyntaxNode syntaxNode, bool ascendOutOfTrivia = true)
1001public readonly struct ValueAncestorsAndSelfEnumerable(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1006public struct Enumerator(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1008public SyntaxNode Current { get; private set; } = null!;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxTokenExtensions.cs (12)
15public static SyntaxNode? GetAncestor(this SyntaxToken token, Func<SyntaxNode, bool>? predicate)
16=> token.GetAncestor<SyntaxNode>(predicate);
18public static T? GetAncestor<T>(this SyntaxToken token, Func<T, bool>? predicate = null) where T : SyntaxNode
21public static T GetRequiredAncestor<T>(this SyntaxToken token, Func<T, bool>? predicate = null) where T : SyntaxNode
25where T : SyntaxNode
32public static IEnumerable<SyntaxNode> GetAncestors(this SyntaxToken token, Func<SyntaxNode, bool> predicate)
39public static SyntaxNode GetCommonRoot(this SyntaxToken token1, SyntaxToken token2)
42public static bool CheckParent<T>(this SyntaxToken token, Func<T, bool> valueChecker) where T : SyntaxNode
58public static SyntaxToken FindTokenFromEnd(this SyntaxNode root, int position, bool includeZeroWidth = true, bool findInsideTrivia = false)
153public static SyntaxNode GetRequiredParent(this SyntaxToken token)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\AbstractSyntaxFormatting.cs (3)
28protected abstract IFormattingResult CreateAggregatedFormattingResult(SyntaxNode node, IList<AbstractFormattingResult> results, TextSpanMutableIntervalTree? formattingSpans = null);
30protected abstract AbstractFormattingResult Format(SyntaxNode node, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, SyntaxToken startToken, SyntaxToken endToken, CancellationToken cancellationToken);
32public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\BaseIndentationFormattingRule.cs (7)
19private readonly SyntaxNode? _commonNode;
22public BaseIndentationFormattingRule(SyntaxNode root, TextSpan span, int baseIndentation, AbstractFormattingRule? vbHelperFormattingRule = null)
31public override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
54private void AddNextIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
133private static void SetInnermostNodeForSpan(SyntaxNode root, ref TextSpan span, out SyntaxToken token1, out SyntaxToken token2, out SyntaxNode? commonNode)
149private static void GetTokens(SyntaxNode root, TextSpan span, out SyntaxToken token1, out SyntaxToken token2)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\CompatAbstractFormattingRule.cs (8)
17public sealed override void AddSuppressOperations(ArrayBuilder<SuppressOperation> list, SyntaxNode node, in NextSuppressOperationAction nextOperation)
25public sealed override void AddAnchorIndentationOperations(List<AnchorIndentationOperation> list, SyntaxNode node, in NextAnchorIndentationOperationAction nextOperation)
33public sealed override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
41public sealed override void AddAlignTokensOperations(List<AlignTokensOperation> list, SyntaxNode node, in NextAlignTokensOperationAction nextOperation)
72public virtual void AddSuppressOperationsSlow(ArrayBuilder<SuppressOperation> list, SyntaxNode node, ref NextSuppressOperationAction nextOperation)
78public virtual void AddAnchorIndentationOperationsSlow(List<AnchorIndentationOperation> list, SyntaxNode node, ref NextAnchorIndentationOperationAction nextOperation)
84public virtual void AddIndentBlockOperationsSlow(List<IndentBlockOperation> list, SyntaxNode node, ref NextIndentBlockOperationAction nextOperation)
90public virtual void AddAlignTokensOperationsSlow(List<AlignTokensOperation> list, SyntaxNode node, ref NextAlignTokensOperationAction nextOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAlignTokensOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAnchorIndentationOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextIndentBlockOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextSuppressOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\HeaderFacts\AbstractHeaderFacts.cs (29)
19public abstract bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
20public abstract bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration);
21public abstract bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter);
22public abstract bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method);
23public abstract bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction);
24public abstract bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration);
25public abstract bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement);
26public abstract bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement);
27public abstract bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement);
29public bool IsOnHeader(SyntaxNode root, int position, SyntaxNode ownerOfHeader, SyntaxNodeOrToken lastTokenOrNodeOfHeader)
30=> IsOnHeader(root, position, ownerOfHeader, lastTokenOrNodeOfHeader, ImmutableArray<SyntaxNode>.Empty);
33SyntaxNode root,
35SyntaxNode ownerOfHeader,
38where THoleSyntax : SyntaxNode
75protected TNode? TryGetAncestorForLocation<TNode>(SyntaxNode root, int position, out SyntaxNode? untypedResult) where TNode : SyntaxNode
97protected int GetStartOfNodeExcludingAttributes(SyntaxNode root, SyntaxNode node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\HeaderFacts\IHeaderFacts.cs (18)
16bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
18bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration);
19bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter);
20bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method);
21bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction);
22bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration);
23bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement);
24bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement);
25bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\RefactoringHelpers\AbstractRefactoringHelpers.cs (62)
18where TExpressionSyntax : SyntaxNode
19where TArgumentSyntax : SyntaxNode
20where TExpressionStatementSyntax : SyntaxNode
25public abstract bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
27private static void AddNode<TSyntaxNode>(bool allowEmptyNodes, ref TemporaryArray<TSyntaxNode> result, TSyntaxNode node) where TSyntaxNode : SyntaxNode
60SourceText sourceText, SyntaxNode root, TextSpan selectionRaw, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
160private static bool IsWantedTypeExpressionLike<TSyntaxNode>() where TSyntaxNode : SyntaxNode
179SourceText sourceText, SyntaxNode root, int location)
286CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
293var leftNode = tokenToLeft.Parent;
320SyntaxNode root,
325CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
331var rightNode = tokenToRightOrIn.Parent;
365SyntaxNode root,
370CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
372var selectionNode = root.FindNode(selectionTrimmed, getInnermostNodeForTie: true);
373var prevNode = selectionNode;
411protected virtual IEnumerable<SyntaxNode> ExtractNodesSimple(SyntaxNode? node, ISyntaxFacts syntaxFacts)
429var localDeclarationStatement = syntaxFacts.IsLocalDeclarationStatement(node) ? node : node.Parent!;
439var declaredVariable = variables.First();
445var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(declaredVariable);
448var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
461var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(node);
464var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
476syntaxFacts.GetPartsOfAssignmentExpressionOrStatement(node, out _, out _, out var rightSide);
498protected virtual IEnumerable<SyntaxNode> ExtractNodesInHeader(SyntaxNode root, int location, IHeaderFacts headerFacts)
501if (headerFacts.IsOnPropertyDeclarationHeader(root, location, out var propertyDeclaration))
505if (headerFacts.IsOnParameterHeader(root, location, out var parameter))
509if (headerFacts.IsOnMethodHeader(root, location, out var method))
513if (headerFacts.IsOnLocalFunctionHeader(root, location, out var localFunction))
517if (headerFacts.IsOnLocalDeclarationHeader(root, location, out var localDeclaration))
521if (headerFacts.IsOnIfStatementHeader(root, location, out var ifStatement))
525if (headerFacts.IsOnForeachHeader(root, location, out var foreachStatement))
528if (headerFacts.IsOnTypeHeader(root, location, out var typeDeclaration))
534SyntaxNode root,
539CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
546var ancestor = token.Parent;
572IEnumerable<SyntaxNode> nodes, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
574foreach (var node in nodes)
586public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
589public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
592public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
595public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
598public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
601public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
604public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
607public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
610public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFacts.cs (24)
52bool IsWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
59bool IsOnlyWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
60bool IsInOutContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
61bool IsInRefContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
62bool IsInInContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
64bool CanReplaceWithRValue(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? expression, CancellationToken cancellationToken);
73bool TryGetSpeculativeSemanticModel(SemanticModel oldSemanticModel, SyntaxNode oldNode, SyntaxNode newNode, [NotNullWhen(true)] out SemanticModel? speculativeModel);
80ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode forEachStatement);
81SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
83IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node);
85ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node);
87ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node);
91IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken);
93IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
94IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
96ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
97ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
99ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken);
101bool IsInsideNameOfExpression(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
108bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, [NotNullWhen(true)] INamedTypeSymbol? expressionType, CancellationToken cancellationToken);
110string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken);
121IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node);
125CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFacts.cs (307)
122bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node);
123bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node, PredefinedType type);
173bool IsUsingOrExternOrImport([NotNullWhen(true)] SyntaxNode? node);
174bool IsGlobalAssemblyAttribute([NotNullWhen(true)] SyntaxNode? node);
175bool IsGlobalModuleAttribute([NotNullWhen(true)] SyntaxNode? node);
176bool IsDeclaration([NotNullWhen(true)] SyntaxNode? node);
178bool IsUsingAliasDirective([NotNullWhen(true)] SyntaxNode? node);
183bool IsPragmaDirective(SyntaxTrivia trivia, out bool isDisable, out bool isActive, out SeparatedSyntaxList<SyntaxNode> errorCodes);
186SyntaxNode? GetMatchingDirective(SyntaxNode directive, CancellationToken cancellationToken);
187ImmutableArray<SyntaxNode> GetMatchingConditionalDirectives(SyntaxNode directive, CancellationToken cancellationToken);
189bool IsDocumentationComment(SyntaxNode node);
196bool TryGetExternalSourceInfo([NotNullWhen(true)] SyntaxNode? directive, out ExternalSourceInfo info);
198bool IsDeclarationExpression([NotNullWhen(true)] SyntaxNode? node);
200bool IsConversionExpression([NotNullWhen(true)] SyntaxNode? node);
201bool IsCastExpression([NotNullWhen(true)] SyntaxNode? node);
203bool IsExpressionOfForeach([NotNullWhen(true)] SyntaxNode? node);
204SyntaxNode GetExpressionOfForeachStatement(SyntaxNode statement);
206void GetPartsOfTupleExpression<TArgumentSyntax>(SyntaxNode node,
207out SyntaxToken openParen, out SeparatedSyntaxList<TArgumentSyntax> arguments, out SyntaxToken closeParen) where TArgumentSyntax : SyntaxNode;
209bool IsVerbatimInterpolatedStringExpression([NotNullWhen(true)] SyntaxNode? node);
212bool IsLeftSideOfAssignment([NotNullWhen(true)] SyntaxNode? node);
214bool IsAnyAssignmentStatement([NotNullWhen(true)] SyntaxNode? statement);
215bool IsSimpleAssignmentStatement([NotNullWhen(true)] SyntaxNode? statement);
216void GetPartsOfAssignmentStatement(SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
217void GetPartsOfAssignmentExpressionOrStatement(SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
220bool IsLeftSideOfAnyAssignment([NotNullWhen(true)] SyntaxNode? node);
222bool IsLeftSideOfCompoundAssignment([NotNullWhen(true)] SyntaxNode? node);
223SyntaxNode GetRightHandSideOfAssignment(SyntaxNode node);
225bool IsInferredAnonymousObjectMemberDeclarator([NotNullWhen(true)] SyntaxNode? node);
226bool IsOperandOfIncrementExpression([NotNullWhen(true)] SyntaxNode? node);
227bool IsOperandOfIncrementOrDecrementExpression([NotNullWhen(true)] SyntaxNode? node);
229bool IsLeftSideOfDot([NotNullWhen(true)] SyntaxNode? node);
230SyntaxNode? GetRightSideOfDot(SyntaxNode? node);
244SyntaxNode? GetLeftSideOfDot(SyntaxNode? node, bool allowImplicitTarget = false);
246bool IsLeftSideOfExplicitInterfaceSpecifier([NotNullWhen(true)] SyntaxNode? node);
248bool IsNameOfSimpleMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
249bool IsNameOfAnyMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
250bool IsNameOfMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node);
259SyntaxNode? GetStandaloneExpression(SyntaxNode? node);
268SyntaxNode? GetRootConditionalAccessExpression(SyntaxNode? node);
277SyntaxNode? GetExpressionOfMemberAccessExpression(SyntaxNode node, bool allowImplicitTarget = false);
279SyntaxNode? GetTargetOfMemberBinding(SyntaxNode? node);
281SyntaxNode GetNameOfMemberBindingExpression(SyntaxNode node);
283bool IsPointerMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
285bool IsNamedArgument([NotNullWhen(true)] SyntaxNode? node);
286bool IsNameOfNamedArgument([NotNullWhen(true)] SyntaxNode? node);
287SyntaxNode? GetParameterList(SyntaxNode node);
288bool IsParameterList([NotNullWhen(true)] SyntaxNode? node);
292void GetPartsOfElementAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode argumentList);
294SyntaxNode GetExpressionOfArgument(SyntaxNode node);
295SyntaxNode GetExpressionOfAttributeArgument(SyntaxNode node);
296SyntaxNode GetExpressionOfInterpolation(SyntaxNode node);
298bool IsElementBindingExpression([NotNullWhen(true)] SyntaxNode? node);
299bool IsMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node);
300bool IsPostfixUnaryExpression([NotNullWhen(true)] SyntaxNode? node);
302SyntaxToken GetIdentifierOfSimpleName(SyntaxNode node);
303SyntaxToken GetIdentifierOfTypeDeclaration(SyntaxNode node);
304SyntaxToken GetIdentifierOfVariableDeclarator(SyntaxNode node);
305SyntaxNode GetTypeOfVariableDeclarator(SyntaxNode node);
311bool IsSimpleArgument([NotNullWhen(true)] SyntaxNode? node);
312bool IsArgument([NotNullWhen(true)] SyntaxNode? node);
313bool IsAttributeArgument([NotNullWhen(true)] SyntaxNode? node);
314RefKind GetRefKindOfArgument(SyntaxNode node);
316void GetNameAndArityOfSimpleName(SyntaxNode node, out string name, out int arity);
317bool LooksGeneric(SyntaxNode simpleName);
319SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(SyntaxNode? genericName);
321SyntaxList<SyntaxNode> GetContentsOfInterpolatedString(SyntaxNode interpolatedString);
323SeparatedSyntaxList<SyntaxNode> GetArgumentsOfObjectCreationExpression(SyntaxNode node);
324SeparatedSyntaxList<SyntaxNode> GetArgumentsOfArgumentList(SyntaxNode node);
325SeparatedSyntaxList<SyntaxNode> GetArgumentsOfAttributeArgumentList(SyntaxNode node);
327bool IsUsingDirectiveName([NotNullWhen(true)] SyntaxNode? node);
330SyntaxList<SyntaxNode> GetAttributeLists(SyntaxNode? node);
331SeparatedSyntaxList<SyntaxNode> GetAttributesOfAttributeList(SyntaxNode node);
333bool IsAttributeNamedArgumentIdentifier([NotNullWhen(true)] SyntaxNode? node);
334bool IsMemberInitializerNamedAssignmentIdentifier([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? initializedInstance);
335bool IsAnonymousObjectMemberDeclaratorNameIdentifier([NotNullWhen(true)] SyntaxNode? node);
336bool IsAnyInitializerExpression([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? creationExpression);
338bool IsDirective([NotNullWhen(true)] SyntaxNode? node);
339bool IsStatement([NotNullWhen(true)] SyntaxNode? node);
340bool IsExecutableStatement([NotNullWhen(true)] SyntaxNode? node);
341bool IsGlobalStatement([NotNullWhen(true)] SyntaxNode? node);
342SyntaxNode GetStatementOfGlobalStatement(SyntaxNode node);
344bool IsDeconstructionAssignment([NotNullWhen(true)] SyntaxNode? node);
345bool IsDeconstructionForEachStatement([NotNullWhen(true)] SyntaxNode? node);
346bool IsUsingLocalDeclarationStatement(SyntaxNode node);
360bool IsMethodBody([NotNullWhen(true)] SyntaxNode? node);
362bool IsDeclaratorOfLocalDeclarationStatement(SyntaxNode declarator, SyntaxNode localDeclarationStatement);
363SeparatedSyntaxList<SyntaxNode> GetVariablesOfLocalDeclarationStatement(SyntaxNode node);
364SyntaxNode? GetInitializerOfVariableDeclarator(SyntaxNode node);
365SyntaxNode? GetInitializerOfPropertyDeclaration(SyntaxNode node);
369bool HasImplicitBaseConstructorInitializer(SyntaxNode constructorDeclaration);
372bool IsElementAccessExpression([NotNullWhen(true)] SyntaxNode? node);
390bool IsInStaticContext(SyntaxNode node);
391bool IsUnsafeContext(SyntaxNode node);
393bool IsInNamespaceOrTypeContext([NotNullWhen(true)] SyntaxNode? node);
395bool IsBaseTypeList([NotNullWhen(true)] SyntaxNode? node);
397bool IsInConstantContext([NotNullWhen(true)] SyntaxNode? node);
398bool IsInConstructor(SyntaxNode node);
399bool IsMethodLevelMember([NotNullWhen(true)] SyntaxNode? node);
400bool IsTopLevelNodeWithMembers([NotNullWhen(true)] SyntaxNode? node);
403bool AreEquivalent(SyntaxNode? node1, SyntaxNode? node2);
405string GetDisplayName(SyntaxNode? node, DisplayNameOptions options, string? rootNamespace = null);
408SyntaxNode? GetContainingTypeDeclaration(SyntaxNode root, int position);
409SyntaxNode? GetContainingMemberDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
410SyntaxNode? GetContainingMethodDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
411SyntaxNode? GetContainingVariableDeclaratorOfFieldDeclaration(SyntaxNode? node);
415SyntaxNode? ConvertToSingleLine(SyntaxNode? node, bool useElasticTrivia = false);
418void AddTopLevelAndMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
420void AddTopLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
422void AddMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
424SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(SyntaxNode typeDeclaration);
425SyntaxList<SyntaxNode> GetMembersOfNamespaceDeclaration(SyntaxNode typeDeclaration);
426SyntaxList<SyntaxNode> GetMembersOfTypeDeclaration(SyntaxNode typeDeclaration);
432/// Given a <see cref="SyntaxNode"/>, return the <see cref="TextSpan"/> representing the span of the member body
438TextSpan GetMemberBodySpanForSpeculativeBinding(SyntaxNode node);
446SyntaxNode? TryGetBindableParent(SyntaxToken token);
449/// Given a <see cref="SyntaxNode"/>, that represents and argument return the string representation of
453string GetNameForArgument(SyntaxNode? argument);
456/// Given a <see cref="SyntaxNode"/>, that represents an attribute argument return the string representation of
460string GetNameForAttributeArgument(SyntaxNode? argument);
462bool IsNameOfSubpattern([NotNullWhen(true)] SyntaxNode? node);
463bool IsPropertyPatternClause(SyntaxNode node);
465bool IsAnyPattern([NotNullWhen(true)] SyntaxNode? node);
466bool IsBinaryPattern([NotNullWhen(true)] SyntaxNode? node);
467bool IsUnaryPattern([NotNullWhen(true)] SyntaxNode? node);
469SyntaxNode GetExpressionOfConstantPattern(SyntaxNode node);
470SyntaxNode GetTypeOfTypePattern(SyntaxNode node);
472void GetPartsOfParenthesizedPattern(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode pattern, out SyntaxToken closeParen);
473void GetPartsOfBinaryPattern(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
474void GetPartsOfDeclarationPattern(SyntaxNode node, out SyntaxNode type, out SyntaxNode designation);
475void GetPartsOfRecursivePattern(SyntaxNode node, out SyntaxNode? type, out SyntaxNode? positionalPart, out SyntaxNode? propertyPart, out SyntaxNode? designation);
476void GetPartsOfRelationalPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode expression);
477void GetPartsOfUnaryPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode pattern);
481SyntaxTokenList GetModifiers(SyntaxNode? node);
485SyntaxNode? WithModifiers(SyntaxNode? node, SyntaxTokenList modifiers);
488Location GetDeconstructionReferenceLocation(SyntaxNode node);
493bool IsParameterNameXmlElementSyntax([NotNullWhen(true)] SyntaxNode? node);
495SyntaxList<SyntaxNode> GetContentFromDocumentationCommentTriviaSyntax(SyntaxTrivia trivia);
501bool IsAnonymousFunctionExpression([NotNullWhen(true)] SyntaxNode? node);
502bool IsBaseNamespaceDeclaration([NotNullWhen(true)] SyntaxNode? node);
503bool IsTypeDeclaration(SyntaxNode node);
504bool IsBinaryExpression([NotNullWhen(true)] SyntaxNode? node);
505bool IsLiteralExpression([NotNullWhen(true)] SyntaxNode? node);
506bool IsMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
507bool IsMethodDeclaration([NotNullWhen(true)] SyntaxNode? node);
508bool IsSimpleName([NotNullWhen(true)] SyntaxNode? node);
509bool IsAnyName([NotNullWhen(true)] SyntaxNode? node);
510bool IsAnyType([NotNullWhen(true)] SyntaxNode? node);
512bool IsNamedMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
513bool IsElementAccessInitializer([NotNullWhen(true)] SyntaxNode? node);
515bool IsObjectMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
516bool IsObjectCollectionInitializer([NotNullWhen(true)] SyntaxNode? node);
522void GetPartsOfAliasQualifiedName(SyntaxNode node, out SyntaxNode alias, out SyntaxToken colonColonToken, out SyntaxNode name);
523void GetPartsOfAnyIsTypeExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode type);
524void GetPartsOfArgumentList(SyntaxNode node, out SyntaxToken openParenToken, out SeparatedSyntaxList<SyntaxNode> arguments, out SyntaxToken closeParenToken);
525void GetPartsOfAttribute(SyntaxNode node, out SyntaxNode name, out SyntaxNode? argumentList);
526void GetPartsOfBaseNamespaceDeclaration(SyntaxNode node, out SyntaxNode name, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> members);
527void GetPartsOfBaseObjectCreationExpression(SyntaxNode node, out SyntaxNode? argumentList, out SyntaxNode? initializer);
528void GetPartsOfBinaryExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
529void GetPartsOfCastExpression(SyntaxNode node, out SyntaxNode type, out SyntaxNode expression);
530void GetPartsOfCompilationUnit(SyntaxNode node, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> attributeLists, out SyntaxList<SyntaxNode> members);
531void GetPartsOfConditionalAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode whenNotNull);
532void GetPartsOfConditionalExpression(SyntaxNode node, out SyntaxNode condition, out SyntaxNode whenTrue, out SyntaxNode whenFalse);
533void GetPartsOfGenericName(SyntaxNode node, out SyntaxToken identifier, out SeparatedSyntaxList<SyntaxNode> typeArguments);
534void GetPartsOfInterpolationExpression(SyntaxNode node, out SyntaxToken stringStartToken, out SyntaxList<SyntaxNode> contents, out SyntaxToken stringEndToken);
535void GetPartsOfInvocationExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode? argumentList);
536void GetPartsOfIsPatternExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken isToken, out SyntaxNode right);
537void GetPartsOfMemberAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode name);
538void GetPartsOfNamedMemberInitializer(SyntaxNode node, out SyntaxNode name, out SyntaxNode expression);
539void GetPartsOfObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode type, out SyntaxNode? argumentList, out SyntaxNode? initializer);
540void GetPartsOfImplicitObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode argumentList, out SyntaxNode? initializer);
541void GetPartsOfParameter(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode? @default);
542void GetPartsOfParenthesizedExpression(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode expression, out SyntaxToken closeParen);
543void GetPartsOfPostfixUnaryExpression(SyntaxNode node, out SyntaxNode operand, out SyntaxToken operatorToken);
544void GetPartsOfPrefixUnaryExpression(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode operand);
545void GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken dotToken, out SyntaxNode right);
546void GetPartsOfUsingAliasDirective(SyntaxNode node, out SyntaxToken globalKeyword, out SyntaxToken alias, out SyntaxNode name);
556SyntaxNode GetArgumentListOfImplicitElementAccess(SyntaxNode node);
558SyntaxNode GetExpressionOfAwaitExpression(SyntaxNode node);
559SyntaxNode GetExpressionOfExpressionStatement(SyntaxNode node);
560SyntaxNode GetExpressionOfRefExpression(SyntaxNode node);
561SyntaxNode? GetExpressionOfReturnStatement(SyntaxNode node);
562SyntaxNode GetExpressionOfThrowExpression(SyntaxNode node);
563SyntaxNode? GetExpressionOfThrowStatement(SyntaxNode node);
565bool IsEqualsValueOfPropertyDeclaration([NotNullWhen(true)] SyntaxNode? node);
566SyntaxNode GetValueOfEqualsValueClause(SyntaxNode node);
568SeparatedSyntaxList<SyntaxNode> GetInitializersOfObjectMemberInitializer(SyntaxNode node);
569SeparatedSyntaxList<SyntaxNode> GetExpressionsOfObjectCollectionInitializer(SyntaxNode node);
571SyntaxToken GetTokenOfLiteralExpression(SyntaxNode node);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFactsExtensions.cs (211)
23public static bool IsMemberInitializerNamedAssignmentIdentifier(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
26public static bool IsOnSingleLine(this ISyntaxFacts syntaxFacts, SyntaxNode node, bool fullSpan)
62var currentNode = currentNodeOrToken.AsNode()!;
160this ISyntaxFacts syntaxFacts, ImmutableArray<SyntaxNode> nodes, CancellationToken cancellationToken)
166foreach (var node in nodes)
178public static bool ContainsInterleavedDirective(this ISyntaxFacts syntaxFacts, SyntaxNode node, CancellationToken cancellationToken)
182this ISyntaxFacts syntaxFacts, TextSpan span, SyntaxNode node, CancellationToken cancellationToken)
193public static bool SpansPreprocessorDirective(this ISyntaxFacts syntaxFacts, IEnumerable<SyntaxNode> nodes)
286public static SyntaxNode? WalkDownParentheses(this ISyntaxFacts syntaxFacts, SyntaxNode? node)
290syntaxFacts.GetPartsOfParenthesizedExpression(node, out _, out var child, out _);
298public static SyntaxNode? WalkUpParentheses(this ISyntaxFacts syntaxFacts, SyntaxNode? node)
307this ISyntaxFacts syntaxFacts, SyntaxNode statement,
308out SyntaxNode left, out SyntaxNode right)
313public static SyntaxNode GetExpressionOfInvocationExpression(
314this ISyntaxFacts syntaxFacts, SyntaxNode node)
316syntaxFacts.GetPartsOfInvocationExpression(node, out var expression, out _);
320public static SyntaxNode Unparenthesize(
321this ISyntaxFacts syntaxFacts, SyntaxNode node)
324SyntaxNode operand;
348var resultNode = operand
383public static bool SpansPreprocessorDirective(this ISyntaxFacts service, SyntaxNode node)
386public static bool SpansPreprocessorDirective(this ISyntaxFacts service, params SyntaxNode[] nodes)
387=> service.SpansPreprocessorDirective((IEnumerable<SyntaxNode>)nodes);
392public static void GetPartsOfBinaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode left, out SyntaxNode right)
395public static SyntaxNode GetPatternOfParenthesizedPattern(this ISyntaxFacts syntaxFacts, SyntaxNode node)
397syntaxFacts.GetPartsOfParenthesizedPattern(node, out _, out var pattern, out _);
401public static SyntaxToken GetOperatorTokenOfBinaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
407public static bool IsAnonymousOrLocalFunction(this ISyntaxFacts syntaxFacts, SyntaxNode node)
411public static SyntaxNode? GetExpressionOfElementAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
413syntaxFacts.GetPartsOfElementAccessExpression(node, out var expression, out _);
417public static SyntaxNode? GetArgumentListOfElementAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
419syntaxFacts.GetPartsOfElementAccessExpression(node, out _, out var argumentList);
423public static SyntaxNode GetExpressionOfConditionalAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
425syntaxFacts.GetPartsOfConditionalAccessExpression(node, out var expression, out _);
429public static SyntaxToken GetOperatorTokenOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
435public static void GetPartsOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode expression, out SyntaxNode name)
438public static void GetPartsOfConditionalAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode expression, out SyntaxNode whenNotNull)
441public static TextSpan GetSpanWithoutAttributes(this ISyntaxFacts syntaxFacts, SyntaxNode root, SyntaxNode node)
468/// Similar to <see cref="ISyntaxFacts.GetStandaloneExpression(SyntaxNode)"/>, this gets the containing
478public static SyntaxNode GetRootStandaloneExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
481var standalone = syntaxFacts.GetStandaloneExpression(node);
489public static SyntaxNode? GetArgumentListOfInvocationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
491syntaxFacts.GetPartsOfInvocationExpression(node, out _, out var argumentList);
495public static SeparatedSyntaxList<SyntaxNode> GetArgumentsOfInvocationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
497var argumentList = syntaxFacts.GetArgumentListOfInvocationExpression(node);
501public static SyntaxNode? GetArgumentListOfBaseObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
503syntaxFacts.GetPartsOfBaseObjectCreationExpression(node, out var argumentList, out _);
507public static SyntaxNode? GetDefaultOfParameter(this ISyntaxFacts syntaxFacts, SyntaxNode node)
509syntaxFacts.GetPartsOfParameter(node, out _, out var @default);
513public static SyntaxNode GetExpressionOfParenthesizedExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
515syntaxFacts.GetPartsOfParenthesizedExpression(node, out _, out var expression, out _);
519public static SyntaxToken GetIdentifierOfGenericName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
525public static SyntaxToken GetIdentifierOfIdentifierName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
528public static SyntaxToken GetIdentifierOfParameter(this ISyntaxFacts syntaxFacts, SyntaxNode node)
534public static SyntaxList<SyntaxNode> GetImportsOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
540public static SyntaxList<SyntaxNode> GetImportsOfCompilationUnit(this ISyntaxFacts syntaxFacts, SyntaxNode node)
546public static SyntaxNode? GetInitializerOfBaseObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
548syntaxFacts.GetPartsOfBaseObjectCreationExpression(node, out _, out var initializer);
552public static SyntaxList<SyntaxNode> GetMembersOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
558public static SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(this ISyntaxFacts syntaxFacts, SyntaxNode node)
564public static SyntaxNode GetNameOfAttribute(this ISyntaxFacts syntaxFacts, SyntaxNode node)
566syntaxFacts.GetPartsOfAttribute(node, out var name, out _);
570public static SyntaxNode GetNameOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
572syntaxFacts.GetPartsOfBaseNamespaceDeclaration(node, out var name, out _, out _);
576public static SyntaxNode GetNameOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
578syntaxFacts.GetPartsOfMemberAccessExpression(node, out _, out var name);
582public static SyntaxNode GetOperandOfPostfixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
584syntaxFacts.GetPartsOfPostfixUnaryExpression(node, out var operand, out _);
588public static SyntaxNode GetOperandOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
590syntaxFacts.GetPartsOfPrefixUnaryExpression(node, out _, out var operand);
594public static SyntaxToken GetOperatorTokenOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
600public static SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
606public static SyntaxNode GetTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
608syntaxFacts.GetPartsOfObjectCreationExpression(node, out _, out var type, out _, out _);
616public static bool IsExpressionOfAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
618var parent = node?.Parent;
625public static bool IsExpressionOfInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
627var parent = node?.Parent;
631syntaxFacts.GetPartsOfInvocationExpression(parent, out var expression, out _);
635public static bool IsExpressionOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
637var parent = node?.Parent;
641syntaxFacts.GetPartsOfMemberAccessExpression(parent, out var expression, out _);
645public static bool IsNameOfAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
650syntaxFacts.GetPartsOfAttribute(node.Parent, out var name, out _);
654public static bool IsRightOfQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
656var parent = node?.Parent;
660syntaxFacts.GetPartsOfQualifiedName(parent, out _, out _, out var right);
664public static bool IsRightOfAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
666var parent = node?.Parent;
670syntaxFacts.GetPartsOfAliasQualifiedName(parent, out _, out _, out var right);
674public static bool IsTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
676var parent = node?.Parent;
680syntaxFacts.GetPartsOfObjectCreationExpression(parent, out _, out var type, out _, out _);
711public static bool IsSkippedTokensTrivia(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
751public static bool IsAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
754public static bool IsGenericName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
757public static bool IsIdentifierName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
760public static bool IsQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
767public static bool IsTupleType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
774public static bool IsCharacterLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
777public static bool IsDefaultLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
780public static bool IsFalseLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
783public static bool IsNumericLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
786public static bool IsNullLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
789public static bool IsStringLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
792public static bool IsTrueLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
799public static bool IsArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
802public static bool IsAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
805public static bool IsBaseExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
808public static bool IsConditionalExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
811public static bool IsConditionalAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
814public static bool IsFieldExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
817public static bool IsImplicitArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
820public static bool IsImplicitObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
823public static bool IsIndexExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
826public static bool IsInterpolatedStringExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
829public static bool IsInterpolation(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
832public static bool IsInterpolatedStringText(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
835public static bool IsInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
838public static bool IsIsTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
841public static bool IsIsNotTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
844public static bool IsIsPatternExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
847public static bool IsLogicalAndExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
850public static bool IsLogicalOrExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
853public static bool IsLogicalNotExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
856public static bool IsObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
859public static bool IsParenthesizedExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
862public static bool IsQueryExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
865public static bool IsRangeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
868public static bool IsRefExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
871public static bool IsSimpleMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
874public static bool IsSuppressNullableWarningExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
877public static bool IsThisExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
880public static bool IsThrowExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
883public static bool IsTupleExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
886public static bool ContainsGlobalStatement(this ISyntaxFacts syntaxFacts, SyntaxNode node)
893public static bool IsAndPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
896public static bool IsConstantPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
899public static bool IsDeclarationPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
902public static bool IsListPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
905public static bool IsNotPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
908public static bool IsOrPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
911public static bool IsParenthesizedPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
914public static bool IsRecursivePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
917public static bool IsRelationalPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
920public static bool IsTypePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
923public static bool IsVarPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
930public static bool IsExpressionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
933public static bool IsForEachStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
936public static bool IsForStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
939public static bool IsIfStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
942public static bool IsLocalDeclarationStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
945public static bool IsLocalFunctionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
948public static bool IsLockStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
951public static bool IsReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
954public static bool IsThrowStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
957public static bool IsUsingStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
960public static bool IsWhileStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
963public static bool IsYieldReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
970public static bool IsAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
973public static bool IsClassDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
976public static bool IsCollectionExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
979public static bool IsConstructorDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
982public static bool IsEnumDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
985public static bool IsGlobalAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
988public static bool IsInterfaceDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
991public static bool IsParameter(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
994public static bool IsTypeConstraint(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
997public static bool IsVariableDeclarator(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1000public static bool IsFieldDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1003public static bool IsPropertyDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1006public static bool IsStructDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1009public static bool IsTypeArgumentList(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1016public static bool IsElseClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1018public static bool IsEqualsValueClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1025public static bool IsExpressionElement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1028public static bool IsImplicitElementAccess(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1031public static bool IsIndexerMemberCref(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1034public static bool IsPrimaryConstructorBaseType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (38)
35where TExpressionSyntax : SyntaxNode
37where TAttributeSyntax : SyntaxNode
38where TArgumentSyntax : SyntaxNode
39where TForEachStatementSyntax : SyntaxNode
40where TThrowStatementSyntax : SyntaxNode
49private SyntaxNode? _lazySemanticRootOfReplacedExpression;
95protected abstract SyntaxNode GetSemanticRootForSpeculation(TExpressionSyntax expression);
96protected abstract SemanticModel CreateSpeculativeSemanticModel(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel);
99protected abstract bool ExpressionMightReferenceMember([NotNullWhen(true)] SyntaxNode? node);
114protected abstract bool ReplacementChangesSemanticsForNodeLanguageSpecific(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode);
116protected abstract bool IsParenthesizedExpression([NotNullWhen(true)] SyntaxNode? node);
128SyntaxNode ISpeculationAnalyzer.OriginalExpression => OriginalExpression;
136public SyntaxNode SemanticRootOfOriginalExpression
171SyntaxNode ISpeculationAnalyzer.ReplacedExpression => ReplacedExpression;
178public SyntaxNode SemanticRootOfReplacedExpression
201protected virtual SyntaxNode GetSemanticRootOfReplacedExpression(SyntaxNode semanticRootOfOriginalExpression, TExpressionSyntax annotatedReplacedExpression)
224protected abstract void ValidateSpeculativeSemanticModel(SemanticModel speculativeSemanticModel, SyntaxNode nodeToSpeculate);
231var nodeToSpeculate = this.SemanticRootOfReplacedExpression;
317protected bool SymbolsAreCompatible(SyntaxNode originalNode, SyntaxNode newNode, bool requireNonNullSymbols = false)
519protected bool ReplacementChangesSemantics(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode originalRoot, bool skipVerificationForCurrentNode)
527SyntaxNode? previousOriginalNode = null, previousReplacedNode = null;
571private bool ReplacementChangesSemanticsForNode(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode)
688var originalExpressionOfMemberAccess = syntaxFacts.GetExpressionOfMemberAccessExpression(originalExpression);
731private bool ReplacementBreaksSystemObjectMethodResolution(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, [NotNullWhen(true)] SyntaxNode? previousOriginalNode, [NotNullWhen(true)] SyntaxNode? previousReplacedNode)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\CommonFormattingHelpers.cs (8)
45public static IEnumerable<(SyntaxToken, SyntaxToken)> ConvertToTokenPairs(this SyntaxNode root, IReadOnlyList<TextSpan> spans)
81public static ValueTuple<SyntaxToken, SyntaxToken> ConvertToTokenPair(this SyntaxNode root, TextSpan textSpan)
127public static bool IsInvalidTokenRange(this SyntaxNode root, SyntaxToken startToken, SyntaxToken endToken)
278var parentNode = GetParentThatContainsGivenSpan(token.Parent, backwardPosition, forward: false);
309var parentNode = GetParentThatContainsGivenSpan(token.Parent, forwardPosition, forward: true);
320private static SyntaxNode? GetParentThatContainsGivenSpan(SyntaxNode? node, int position, bool forward)
357public static TextSpan GetFormattingSpan(SyntaxNode root, TextSpan span)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\AbstractCodeGenerationService_FindDeclaration.cs (22)
20protected abstract IList<bool>? GetAvailableInsertionIndices(SyntaxNode destination, CancellationToken cancellationToken);
22private IList<bool>? GetAvailableInsertionIndices<TDeclarationNode>(TDeclarationNode destination, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
23=> GetAvailableInsertionIndices((SyntaxNode)destination, cancellationToken);
34protected static SyntaxToken GetEndToken(SyntaxNode node)
50protected static TextSpan GetSpan(SyntaxNode node)
58public bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken)
61public bool CanAddTo(SyntaxNode destination, Solution solution, CodeGenerationContext context, CancellationToken cancellationToken)
65SyntaxNode? destination,
143public SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(
153private (SyntaxNode? declaration, IList<bool>? availableIndices) FindMostRelevantDeclaration(
165using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var ancestors);
167var fallbackDeclaration = (SyntaxNode?)null;
171ancestors.AddRange(token.GetAncestors<SyntaxNode>());
176if (TryAddToRelatedDeclaration(declarations.Where(d => d is not ICompilationUnitSyntax), checkGeneratedCode: false, out var declaration1, out var availableIndices1) ||
184if (TryAddToWorker(declarations, checkGeneratedCode: true, out var declaration2, out var availableIndices2, predicate: node => true))
190IEnumerable<SyntaxNode> declarations,
192[NotNullWhen(true)] out SyntaxNode? declaration,
230IEnumerable<SyntaxNode> declarations,
232[NotNullWhen(true)] out SyntaxNode? declaration,
234Func<SyntaxNode, bool> predicate)
236foreach (var decl in declarations)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\AbstractCodeGenerationService.cs (83)
47public TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
50public TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
53public TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
56public TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
59public TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
62public TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
66where TDeclarationNode : SyntaxNode
69private static TNode WithAnnotations<TNode>(TNode node, CodeGenerationContextInfo info) where TNode : SyntaxNode
76public SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
79public SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
82public SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
85public SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
88public SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
91public SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
94public TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destination, IEnumerable<IParameterSymbol> parameters, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
97public TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
100public TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
103public TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
106public TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
109public TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
112public TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
115public TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
118public TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> statements, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
123protected abstract TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
124protected abstract TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
125protected abstract TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
126protected abstract TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
127protected abstract TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
128protected abstract TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
129protected abstract TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> members) where TDeclarationNode : SyntaxNode;
131public abstract TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destinationMember, IEnumerable<IParameterSymbol> parameters, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
132public abstract TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
133public abstract TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
134public abstract TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
135public abstract TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
137public abstract TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
138public abstract TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
139public abstract TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
140public abstract TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
142public abstract CodeGenerationDestination GetDestination(SyntaxNode node);
143public abstract SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
144public abstract SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
147public abstract SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
149public abstract SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
150public abstract SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
151public abstract SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
156protected static void CheckDeclarationNode<TDeclarationNode>(SyntaxNode destination) where TDeclarationNode : SyntaxNode
171protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2>(SyntaxNode destination)
172where TDeclarationNode1 : SyntaxNode
173where TDeclarationNode2 : SyntaxNode
190protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2, TDeclarationNode3>(SyntaxNode destination)
191where TDeclarationNode1 : SyntaxNode
192where TDeclarationNode2 : SyntaxNode
193where TDeclarationNode3 : SyntaxNode
211protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2, TDeclarationNode3, TDeclarationNode4>(SyntaxNode destination)
212where TDeclarationNode1 : SyntaxNode
213where TDeclarationNode2 : SyntaxNode
214where TDeclarationNode3 : SyntaxNode
215where TDeclarationNode4 : SyntaxNode
232Func<SyntaxNode, TCodeGenerationContextInfo, IList<bool>?, CancellationToken, SyntaxNode> declarationTransform,
247var transformedDeclaration = declarationTransform(destinationDeclaration, info, availableIndices, cancellationToken);
249var root = await destinationTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
250var currentRoot = root.ReplaceNode(destinationDeclaration, transformedDeclaration);
275where TDeclarationNode : SyntaxNode
297where TDeclarationSyntax : SyntaxNode
299var newMembers = new List<SyntaxNode>();
304var newMember = GetNewMember(info, codeGenerationDestination, member, cancellationToken);
329where TDeclarationSyntax : SyntaxNode
342private SyntaxNode? GetNewMember(TCodeGenerationContextInfo info, CodeGenerationDestination codeGenerationDestination, ISymbol member, CancellationToken cancellationToken)
359CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
379protected abstract IComparer<SyntaxNode> GetMemberComparer();
481protected static void CheckLocation(SyntaxNode destinationMember, [NotNull] Location? location)
500SyntaxNode attributeList,
520SyntaxNode attributeToRemove,
526var root = attributeToRemove.SyntaxTree.GetRoot();
535where T : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (18)
55SyntaxNode? initializer = null)
81bool isIndexer = false, SyntaxNode? initializer = null)
109SyntaxNode? initializer = null)
125ImmutableArray<SyntaxNode> statements = default,
126ImmutableArray<SyntaxNode> baseConstructorArguments = default,
127ImmutableArray<SyntaxNode> thisConstructorArguments = default,
140ImmutableArray<SyntaxNode> statements = default)
158ImmutableArray<SyntaxNode> statements = default,
159ImmutableArray<SyntaxNode> handlesExpressions = default,
179ImmutableArray<SyntaxNode> statements = default,
180ImmutableArray<SyntaxNode> handlesExpressions = default,
198ImmutableArray<SyntaxNode> statements = default,
224ImmutableArray<SyntaxNode> statements = default,
252ImmutableArray<SyntaxNode> statements = default,
361ImmutableArray<SyntaxNode> statements = default)
385ImmutableArray<SyntaxNode> statements)
518ImmutableArray<SyntaxNode> statements = default,
551SyntaxNode? initializer = null)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\ICodeGenerationService.cs (27)
22SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
27SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
33SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
38SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
43SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
48SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
53TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
58TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
63TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
68TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
73TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
78TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
83TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<ISymbol> members, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
88TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destination, IEnumerable<IParameterSymbol> parameters, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
93TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
98TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
103TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
108TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
113TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
118TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
123TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
128TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> statements, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
188bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken);
193bool CanAddTo(SyntaxNode destination, Solution solution, CodeGenerationContext context, CancellationToken cancellationToken);
201SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(Solution solution, INamespaceOrTypeSymbol namespaceOrType, Location? location, CancellationToken cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeRefactorings\AbstractRefactoringHelpersService.cs (25)
15where TExpressionSyntax : SyntaxNode
16where TArgumentSyntax : SyntaxNode
17where TExpressionStatementSyntax : SyntaxNode
21public bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
24public void AddRelevantNodes<TSyntaxNode>(SourceText sourceText, SyntaxNode root, TextSpan selection, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
27public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
30public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
33public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
36public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
39public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
42public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
45public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
48public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
51public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeRefactorings\CodeRefactoringContextExtensions.cs (12)
41public static Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
44public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNode) where TSyntaxNode : SyntaxNode
50public static Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
53public static async Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNodes) where TSyntaxNode : SyntaxNode
59public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
65public static TSyntaxNode? TryGetRelevantNode<TSyntaxNode>(this ParsedDocument document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
68public static TSyntaxNode? TryGetRelevantNode<TSyntaxNode>(this ParsedDocument document, TextSpan span, bool allowEmptyNode, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
76this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
82this Document document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
89this ParsedDocument document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
93this ParsedDocument document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
102this ParsedDocument document, TextSpan span, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Editing\ImportAdderService.cs (23)
37var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
70bool OverlapsWithSpan(SyntaxNode n) => spansTree.HasIntervalThatOverlapsWith(n.FullSpan.Start, n.FullSpan.Length);
73protected abstract INamespaceSymbol? GetExplicitNamespaceSymbol(SyntaxNode node, SemanticModel model);
77SyntaxNode container,
95SyntaxNode container,
100private static SyntaxNode GenerateNamespaceImportDeclaration(INamespaceSymbol namespaceSymbol, SyntaxGenerator generator)
111IEnumerable<SyntaxNode> syntaxNodes,
117using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var importsToAdd);
118using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var nodesToSimplify);
120var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
139var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
159var first = root.DescendantNodesAndSelf().First(x => x.HasAnnotation(annotation));
160var last = root.DescendantNodesAndSelf().Last(x => x.HasAnnotation(annotation));
162var context = first.GetCommonRoot(last);
172IEnumerable<SyntaxNode> annotatedNodes,
178using var _ = PooledDictionary<INamespaceSymbol, SyntaxNode>.GetInstance(out var importToSyntax);
180var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
188SyntaxNode? first = null, last = null;
190foreach (var annotatedNode in annotatedNodes)
218var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
233var context = first.GetCommonRoot(last);
236var importContainer = addImportsService.GetImportContainer(root, context, importToSyntax.First().Value, options);
259private static bool IsInsideNamespace(SyntaxNode node, INamespaceSymbol symbol, SemanticModel model, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\StringBuilderExtensions.cs (1)
22where TNode : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxEditorExtensions.cs (29)
31Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
32CancellationToken cancellationToken) where TNode : SyntaxNode
54Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
55CancellationToken cancellationToken) where TNode : SyntaxNode
76Func<SemanticModel, SyntaxNode, TNode, SyntaxNode> updateRoot,
77CancellationToken cancellationToken) where TNode : SyntaxNode
98Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
99CancellationToken cancellationToken) where TNode : SyntaxNode
120Func<SemanticModel, SyntaxNode, TNode, SyntaxNode> updateRoot,
121CancellationToken cancellationToken) where TNode : SyntaxNode
154Func<ISyntaxFactsService, SyntaxNode, SyntaxNode> getSemanticBoundary,
156Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
157CancellationToken cancellationToken) where TNode : SyntaxNode
170var originalRoot = editor.OriginalRoot;
173var currentRoot = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
183var replacementRoot = updateRoot(semanticModel, currentRoot, instance, currentNode);
195private static SyntaxNode GetExpressionSemanticBoundary(ISyntaxFactsService syntaxFacts, SyntaxNode node)
202return node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>(
210private static SyntaxNode GetMethodBodySemanticBoundary(ISyntaxFactsService syntaxFacts, SyntaxNode node)
212return node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_CreateEqualsMethod.cs (22)
48public static IMethodSymbol CreateEqualsMethod(this Compilation compilation, ImmutableArray<SyntaxNode> statements)
56ImmutableArray<SyntaxNode> statements)
120private static ImmutableArray<SyntaxNode> CreateEqualsMethodStatements(
135using var statements = TemporaryArray<SyntaxNode>.Empty;
144var localNameExpression = factory.IdentifierName(localName);
145var objNameExpression = factory.IdentifierName(ObjName);
149using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
178var ifStatement = factory.IfStatement(
189var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
201var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
240ImmutableArray<ISymbol> members, SyntaxNode localNameExpression,
241ArrayBuilder<SyntaxNode> expressions)
251var symbolNameExpression = factory.IdentifierName(member.Name);
252var thisSymbol = factory.MemberAccessExpression(factory.ThisExpression(), symbolNameExpression)
254var otherSymbol = factory.MemberAccessExpression(localNameExpression, symbolNameExpression);
291private static ImmutableArray<SyntaxNode> CreateIEquatableEqualsMethodStatements(
299var statements = ArrayBuilder<SyntaxNode>.GetInstance();
301var otherNameExpression = factory.IdentifierName(OtherName);
305using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
343SyntaxGenerator factory, SyntaxGeneratorInternal generatorInternal, Compilation compilation, ParseOptions parseOptions, SyntaxNode otherNameExpression, ArrayBuilder<SyntaxNode> expressions)
345var nullLiteral = factory.NullLiteralExpression();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (58)
33public static SyntaxNode Negate(
36SyntaxNode expression,
43public static SyntaxNode Negate(
46SyntaxNode expressionOrPattern,
54public static SyntaxNode Negate(
57SyntaxNode expressionOrPattern,
114syntaxFacts.GetPartsOfAnyIsTypeExpression(expressionOrPattern, out var expression, out var type);
124syntaxFacts.GetPartsOfAnyIsTypeExpression(expressionOrPattern, out var expression, out var type);
136private static SyntaxNode GetNegationOfBinaryExpression(
137SyntaxNode expressionNode,
144syntaxFacts.GetPartsOfBinaryExpression(expressionNode, out var leftOperand, out var operatorToken, out var rightOperand);
172var newBinaryExpressionSyntax = negatedKind is BinaryOperatorKind.Equals or BinaryOperatorKind.NotEquals
190SyntaxNode innerPattern;
199var typeExpression = generatorInternal.Type(isTypeOperation.TypeOperand, typeContext: false);
228private static SyntaxNode GetNegationOfBinaryPattern(
229SyntaxNode pattern,
241syntaxFacts.GetPartsOfBinaryPattern(pattern, out var left, out var operatorToken, out var right);
243var newLeft = generator.Negate(generatorInternal, left, semanticModel, cancellationToken);
244var newRight = generator.Negate(generatorInternal, right, semanticModel, cancellationToken);
246var newPattern =
258private static SyntaxNode GetNegationOfIsPatternExpression(SyntaxNode isExpression, SyntaxGenerator generator, SyntaxGeneratorInternal generatorInternal, SemanticModel semanticModel, CancellationToken cancellationToken)
263syntaxFacts.GetPartsOfIsPatternExpression(isExpression, out var left, out var isToken, out var pattern);
265SyntaxNode? negatedPattern = null;
287var type = syntaxFacts.GetTypeOfTypePattern(negatedPattern);
300private static SyntaxNode GetNegationOfRelationalPattern(
301SyntaxNode expressionNode,
312syntaxFacts.GetPartsOfRelationalPattern(expressionNode, out var operatorToken, out var expression);
327private static bool IsLegalPattern(ISyntaxFacts syntaxFacts, SyntaxNode pattern, bool designatorsLegal)
332syntaxFacts.GetPartsOfBinaryPattern(pattern, out var left, out _, out var right);
342syntaxFacts.GetPartsOfUnaryPattern(pattern, out _, out var subPattern);
354syntaxFacts.GetPartsOfParenthesizedPattern(pattern, out _, out var subPattern, out _);
360syntaxFacts.GetPartsOfDeclarationPattern(pattern, out _, out var designator);
366syntaxFacts.GetPartsOfRecursivePattern(pattern, out _, out _, out _, out var designator);
376private static SyntaxNode NegateRelational(
379SyntaxNode leftOperand,
381SyntaxNode rightOperand)
467private static SyntaxNode GetNegationOfLiteralExpression(
468SyntaxNode expression,
476SyntaxNode newLiteralExpression;
497private static SyntaxNode GetNegationOfConstantPattern(
498SyntaxNode pattern,
510var expression = syntaxFacts.GetExpressionOfConstantPattern(pattern);
522private static SyntaxNode GetNegationOfLogicalNotExpression(
523SyntaxNode expression,
527var operand = syntaxFacts.GetOperandOfPrefixUnaryExpression(expression);
533private static SyntaxNode GetNegationOfUnaryPattern(
534SyntaxNode pattern,
550private static SyntaxNode GetNegationOfNotPattern(
551SyntaxNode pattern,
558syntaxFacts.GetPartsOfUnaryPattern(pattern, out var opToken, out var subPattern);
564var type = syntaxFacts.GetTypeOfTypePattern(subPattern);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions.cs (47)
23public static SyntaxNode CreateThrowNotImplementedStatement(
30public static SyntaxNode CreateThrowNotImplementedExpression(
37private static SyntaxNode CreateNewNotImplementedException(SyntaxGenerator codeDefinitionFactory, Compilation compilation)
39var notImplementedExceptionTypeSyntax = compilation.NotImplementedExceptionType() is INamedTypeSymbol symbol
48public static ImmutableArray<SyntaxNode> CreateThrowNotImplementedStatementBlock(
52public static ImmutableArray<SyntaxNode> CreateArguments(
59private static SyntaxNode CreateArgument(
66public static SyntaxNode GetDefaultEqualityComparer(
73var typeExpression = equalityComparerType == null
88public static SyntaxNode IsPatternExpression(this SyntaxGeneratorInternal generator, SyntaxNode expression, SyntaxNode pattern)
94public static SyntaxNode GenerateDelegateThroughMemberStatement(
97var through = generator.MemberAccessExpression(
103var invocationExpression = generator.InvocationExpression(through, generator.CreateArguments(method.Parameters));
109public static SyntaxNode CreateDelegateThroughExpression(
112var name = generator.IdentifierName(throughMember.Name);
113var through = throughMember.IsStatic
159var explicitImplementationCast = generator.CastExpression(
174static SyntaxNode GenerateContainerName(SyntaxGenerator factory, ISymbol throughMember)
183public static ImmutableArray<SyntaxNode> GetGetAccessorStatements(
193var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
194var expression = property.IsIndexer
222public static ImmutableArray<SyntaxNode> GetSetAccessorStatements(
232var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
233var expression = property.IsIndexer
335public static ImmutableArray<SyntaxNode> CreateAssignmentStatements(
345using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var nullCheckStatements);
346using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var assignStatements);
358var assignExpression = factory.AssignmentStatement(
361var statement = factory.ExpressionStatement(assignExpression);
371var fieldAccess = factory.MemberAccessExpression(factory.ThisExpression(), factory.IdentifierName(fieldName))
391SyntaxNode fieldAccess,
394ArrayBuilder<SyntaxNode> nullCheckStatements,
395ArrayBuilder<SyntaxNode> assignStatements)
426public static SyntaxNode CreateAssignWithNullCheckStatement(
427this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter, SyntaxNode fieldAccess)
436public static SyntaxNode CreateThrowArgumentNullExpression(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
439private static SyntaxNode CreateNewArgumentNullException(SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
448public static SyntaxNode CreateNullCheckAndThrowStatement(
454var condition = factory.CreateNullCheckExpression(generatorInternal, semanticModel, parameter.Name);
455var throwStatement = factory.CreateThrowArgumentNullExceptionStatement(semanticModel.Compilation, parameter);
460public static SyntaxNode CreateNullCheckExpression(
463var identifier = factory.IdentifierName(identifierName);
464var nullExpr = factory.NullLiteralExpression();
465var condition = generatorInternal.SupportsPatterns(semanticModel.SyntaxTree.Options)
471public static SyntaxNode CreateThrowArgumentNullExceptionStatement(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Formatting\FormatterShared.cs (6)
26var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
30public SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
33public SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
36public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\AbstractAddImportsService.cs (65)
19where TCompilationUnitSyntax : SyntaxNode
20where TNamespaceDeclarationSyntax : SyntaxNode
21where TUsingOrAliasSyntax : SyntaxNode
22where TExternSyntax : SyntaxNode
25protected abstract SyntaxNode? GetAlias(TUsingOrAliasSyntax usingOrAlias);
26protected abstract ImmutableArray<SyntaxNode> GetGlobalImports(SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken);
27protected abstract SyntaxList<TUsingOrAliasSyntax> GetUsingsAndAliases(SyntaxNode node);
28protected abstract SyntaxList<TExternSyntax> GetExterns(SyntaxNode node);
43private bool HasAliases(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsAlias);
44private bool HasUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsSimpleUsing);
45private bool HasStaticUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsStaticUsing);
46private bool HasExterns(SyntaxNode node) => GetExterns(node).Any();
47private bool HasAnyImports(SyntaxNode node) => GetUsingsAndAliases(node).Any() || GetExterns(node).Any();
51SyntaxNode root,
52SyntaxNode? contextLocation,
53SyntaxNode import,
62private static ImmutableArray<SyntaxNode> GetAllContainers(SyntaxNode root, SyntaxNode? contextLocation)
66var applicableContainer = GetFirstApplicableContainer(contextLocation);
67return [.. applicableContainer.GetAncestorsOrThis<SyntaxNode>()];
71SyntaxNode import, ImmutableArray<SyntaxNode> containers, ImmutableArray<SyntaxNode> globalImports)
73foreach (var node in containers)
86foreach (var node in globalImports)
97protected abstract bool IsEquivalentImport(SyntaxNode a, SyntaxNode b);
99public SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options)
103out var externContainer, out var usingContainer, out var staticUsingContainer, out var aliasContainer);
126public SyntaxNode AddImports(
128SyntaxNode root,
129SyntaxNode? contextLocation,
130IEnumerable<SyntaxNode> newImports,
147out var externContainer, out var usingContainer, out var aliasContainer, out var staticUsingContainer);
149var newRoot = Rewrite(
157protected abstract SyntaxNode Rewrite(
159SyntaxNode externContainer, SyntaxNode usingContainer, SyntaxNode staticUsingContainer, SyntaxNode aliasContainer,
160AddImportPlacementOptions options, SyntaxNode root, CancellationToken cancellationToken);
162private void GetContainers(SyntaxNode root, SyntaxNode contextLocation, AddImportPlacementOptions options, out SyntaxNode externContainer, out SyntaxNode usingContainer, out SyntaxNode staticUsingContainer, out SyntaxNode aliasContainer)
164var applicableContainer = GetFirstApplicableContainer(contextLocation);
165var contextSpine = applicableContainer.GetAncestorsOrThis<SyntaxNode>().ToImmutableArray();
170var fallbackNode = contextSpine.FirstOrDefault(HasAnyImports);
190private static SyntaxNode? GetFirstApplicableContainer(SyntaxNode contextNode)
194var node = usingDirective != null ? usingDirective.Parent! : contextNode;
196(SyntaxNode?)node.GetAncestorOrThis<TCompilationUnitSyntax>();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\IAddImportsService.cs (15)
23SemanticModel semanticModel, SyntaxNode root, SyntaxNode? contextLocation,
24SyntaxNode import, SyntaxGenerator generator, CancellationToken cancellationToken);
30SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options);
32SyntaxNode AddImports(
33SemanticModel semanticModel, SyntaxNode root, SyntaxNode? contextLocation,
34IEnumerable<SyntaxNode> newImports, SyntaxGenerator generator, AddImportPlacementOptions options, CancellationToken cancellationToken);
39public static SyntaxNode AddImport(
40this IAddImportsService service, SemanticModel semanticModel, SyntaxNode root,
41SyntaxNode contextLocation, SyntaxNode newImport, SyntaxGenerator generator, AddImportPlacementOptions options,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\AbstractSemanticFactsService.cs (37)
40SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
48SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
56SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
64SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
73SyntaxNode location,
74SyntaxNode? containerOpt,
82var container = containerOpt ?? location.AncestorsAndSelf().FirstOrDefault(
96protected virtual IEnumerable<ISymbol> GetCollidableSymbols(SemanticModel semanticModel, SyntaxNode location, SyntaxNode? container, CancellationToken cancellationToken)
180public bool IsWrittenTo(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
183public bool IsOnlyWrittenTo(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
186public bool IsInOutContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
189public bool IsInRefContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
192public bool IsInInContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
195public bool CanReplaceWithRValue(SemanticModel semanticModel, SyntaxNode? expression, CancellationToken cancellationToken)
204public bool TryGetSpeculativeSemanticModel(SemanticModel oldSemanticModel, SyntaxNode oldNode, SyntaxNode newNode, [NotNullWhen(true)] out SemanticModel? speculativeModel)
210public ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode forEachStatement)
213public SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
216public IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node)
219public ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node)
222public ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node)
228public IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken)
231public IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argumentNode, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
234public IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argumentNode, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
237public ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
240public ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
243public ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken)
246public bool IsInsideNameOfExpression(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
252public bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, INamedTypeSymbol? expressionTypeOpt, CancellationToken cancellationToken)
255public string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken)
258public IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node)
264public CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\ISemanticFactsService.cs (11)
27SemanticModel semanticModel, SyntaxNode location,
28SyntaxNode? container, string baseName, CancellationToken cancellationToken);
31SemanticModel semanticModel, SyntaxNode location,
32SyntaxNode? container, string baseName, IEnumerable<string> usedNames, CancellationToken cancellationToken);
34SyntaxToken GenerateUniqueName(SemanticModel semanticModel, SyntaxNode location, SyntaxNode? container, string baseName,
38SemanticModel semanticModel, SyntaxNode location,
39SyntaxNode? container, string baseName, CancellationToken cancellationToken);
42SemanticModel semanticModel, SyntaxNode location,
43SyntaxNode? container, string baseName, IEnumerable<string> usedNames, CancellationToken cancellationToken);
47IMethodSymbol? TryGetDisposeMethod(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\SemanticModelReuse\AbstractSemanticModelReuseLanguageService.cs (20)
22where TMemberDeclarationSyntax : SyntaxNode
24where TAccessorDeclarationSyntax : SyntaxNode
32public abstract SyntaxNode? TryGetContainingMethodBodyForSpeculation(SyntaxNode node);
34protected abstract SemanticModel? TryGetSpeculativeSemanticModelWorker(SemanticModel previousSemanticModel, SyntaxNode previousBodyNode, SyntaxNode currentBodyNode);
49public async Task<SemanticModel?> TryGetSpeculativeSemanticModelAsync(SemanticModel previousSemanticModel, SyntaxNode currentBodyNode, CancellationToken cancellationToken)
66var previousRoot = await previousSemanticModel.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
67var currentRoot = await currentBodyNode.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
68var previousBodyNode = GetPreviousBodyNode(previousRoot, currentRoot, currentBodyNode);
90protected SyntaxNode? GetPreviousBodyNode(SyntaxNode previousRoot, SyntaxNode currentRoot, SyntaxNode currentBodyNode)
98var previousContainer = GetPreviousBodyNode(previousRoot, currentRoot, currentContainer);
124var previousNode = previousRoot;
136var childAsNode = children[childIndex].AsNode();
150private static void GetNodeChildIndexPathToRootReversed(SyntaxNode node, ArrayBuilder<int> path)
152var current = node;
153var parent = current.Parent;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Simplification\AbstractSimplificationService.cs (30)
30where TCompilationUnitSyntax : SyntaxNode
31where TExpressionSyntax : SyntaxNode
32where TStatementSyntax : SyntaxNode
33where TCrefSyntax : SyntaxNode
35protected static readonly Func<SyntaxNode, bool> s_containsAnnotations = n => n.ContainsAnnotations;
40protected abstract ImmutableArray<NodeOrTokenToReduce> GetNodesAndTokensToReduce(SyntaxNode root, Func<SyntaxNodeOrToken, bool> isNodeOrTokenOutsideSimplifySpans);
41protected abstract SemanticModel GetSpeculativeSemanticModel(ref SyntaxNode nodeToSpeculate, SemanticModel originalSemanticModel, SyntaxNode originalNode);
42protected abstract bool NodeRequiresNonSpeculativeSemanticModel(SyntaxNode node);
43protected abstract void AddImportDeclarations(TCompilationUnitSyntax root, ArrayBuilder<SyntaxNode> importDeclarations);
48protected virtual SyntaxNode TransformReducedNode(SyntaxNode reducedNode, SyntaxNode originalNode)
51public abstract SyntaxNode Expand(SyntaxNode node, SemanticModel semanticModel, SyntaxAnnotation? annotationForReplacedAliasIdentifier, Func<SyntaxNode, bool>? expandInsideNode, bool expandParameter, CancellationToken cancellationToken);
52public abstract SyntaxToken Expand(SyntaxToken token, SemanticModel semanticModel, Func<SyntaxNode, bool>? expandInsideNode, CancellationToken cancellationToken);
115var reducedNodesMap = new ConcurrentDictionary<SyntaxNode, SyntaxNode>();
152SyntaxNode root,
156ConcurrentDictionary<SyntaxNode, SyntaxNode> reducedNodesMap,
218var replacedParent = isNode
232var currentNode = currentNodeOrToken.AsNode()!;
237var newRoot = root.ReplaceNode(nodeOrToken.AsNode()!, currentNode.WithAdditionalAnnotations(marker));
285using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var importDeclarations);
300var root = await model.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
302var unusedImports = new HashSet<SyntaxNode>();
311var newRoot = gen.RemoveNodes(root, unusedImports);
320protected abstract void GetUnusedNamespaceImports(SemanticModel model, HashSet<SyntaxNode> namespaceImports, CancellationToken cancellationToken);
MetaAnalyzers\Fixers\ApplyDiagnosticAnalyzerAttributeFix.cs (12)
22var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
30var classDecl = generator.GetDeclaration(token.Parent);
51protected abstract SyntaxNode ParseExpression(string expression);
53private void AddFix(string codeFixTitle, CodeFixContext context, SyntaxNode root, SyntaxNode classDecl, SyntaxGenerator generator, params string[] languages)
62private Task<Document> GetFixAsync(Document document, SyntaxNode root, SyntaxNode classDecl, SyntaxGenerator generator, params string[] languages)
65var arguments = new SyntaxNode[languages.Length];
71var parsedExpression = ParseExpression(expressionToParse);
75var attribute = generator.Attribute(WellKnownTypeNames.MicrosoftCodeAnalysisDiagnosticsDiagnosticAnalyzerAttribute, arguments);
76var newClassDecl = generator.AddAttributes(classDecl, attribute);
77var newRoot = root.ReplaceNode(classDecl, newClassDecl);
MetaAnalyzers\Fixers\CompareSymbolsCorrectlyFix.cs (22)
27protected abstract SyntaxNode CreateConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull);
29protected abstract SyntaxNode GetExpression(IInvocationOperation invocationOperation);
68var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
69var expression = root.FindNode(sourceSpan, getInnermostNodeForTie: true);
83var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
84var expression = root.FindNode(sourceSpan, getInnermostNodeForTie: true);
116private static async Task<Document> CallOverloadWithEqualityComparerAsync(Document document, SyntaxNode nodeToReplace, IMethodSymbol? methodSymbol,
117ImmutableArray<IArgumentOperation> arguments, bool isUsedAsExtensionMethod, Func<SyntaxGenerator, IEnumerable<SyntaxNode>, SyntaxNode> getReplacementNode,
139var replacement = getReplacementNode(generator, syntaxArguments);
200var conditionalAccessMembers = new List<SyntaxNode>();
209var replacement = generator.InvocationExpression(GetEqualityComparerDefaultEquals(generator), arguments);
211var nodeToReplace = currentOperation.Syntax;
217private IEnumerable<SyntaxNode> GetNewInvocationArguments(IInvocationOperation invocationOperation,
218List<SyntaxNode> conditionalAccessMembers)
243var currentExpression = conditionalAccessMembers.Count > 2
259var expression = binaryOperation.Syntax;
263var replacement = CompareSymbolsCorrectlyAnalyzer.UseSymbolEqualityComparer(semanticModel.Compilation) switch
289private static SyntaxNode GetEqualityComparerDefaultEquals(SyntaxGenerator generator)
294private static SyntaxNode GetEqualityComparerDefault(SyntaxGenerator generator)
src\0bf6ba47805c8821\AbstractMoveDeclarationNearReferenceService.cs (20)
27where TStatementSyntax : SyntaxNode
29where TVariableDeclaratorSyntax : SyntaxNode
31protected abstract bool IsMeaningfulBlock(SyntaxNode node);
32protected abstract bool CanMoveToBlock(ILocalSymbol localSymbol, SyntaxNode currentBlock, SyntaxNode destinationBlock);
33protected abstract SyntaxNode GetVariableDeclaratorSymbolNode(TVariableDeclaratorSyntax variableDeclarator);
36protected abstract Task<bool> TypesAreCompatibleAsync(Document document, ILocalSymbol localSymbol, TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode right, CancellationToken cancellationToken);
38public async Task<(bool canMove, bool mayChangeSemantics)> CanMoveDeclarationNearReferenceAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
47private async Task<State> ComputeStateAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
78Document document, SyntaxNode localDeclarationStatement, CancellationToken cancellationToken)
84var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
114var newRoot = editor.GetChangedRoot();
151var originalNextStatement = state.OutermostBlockStatements[statementIndex + 1];
187var blocks = state.InnermostBlock.GetAncestorsOrThis<SyntaxNode>();
188foreach (var block in blocks)
211var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(state.VariableDeclarator);
218syntaxFacts.GetPartsOfAssignmentStatement(firstStatement, out var left, out var right);
243out var _, out var operatorToken, out var right);
src\30958ef190fa2467\SyntaxGeneratorInternal.cs (98)
37public abstract SyntaxNode LocalDeclarationStatement(
38SyntaxNode? type, SyntaxToken identifier, SyntaxNode? initializer = null, bool isConst = false);
43public SyntaxNode LocalDeclarationStatement(SyntaxToken name, SyntaxNode initializer)
46public abstract SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer);
51public abstract SyntaxNode WithPropertyInitializer(SyntaxNode propertyDeclaration, SyntaxNode initializer);
53public abstract SyntaxNode EqualsValueClause(SyntaxNode value);
54public abstract SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value);
58public abstract SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull);
60public abstract SyntaxNode MemberBindingExpression(SyntaxNode name);
62public abstract SyntaxNode RefExpression(SyntaxNode expression);
67public abstract SyntaxNode AddParentheses(SyntaxNode expression, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true);
73public abstract SyntaxNode YieldReturnStatement(SyntaxNode expression);
78/// <see cref="LocalDeclarationStatement(SyntaxNode, SyntaxToken, SyntaxNode, bool)"/>.
84public abstract SyntaxNode InterpolatedStringText(SyntaxToken textToken);
85public abstract SyntaxNode Interpolation(SyntaxNode syntaxNode);
86public abstract SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken);
87public abstract SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment);
88public abstract SyntaxNode InterpolationFormatClause(string format);
89public abstract SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames);
106public abstract SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext);
108public abstract SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right);
110public abstract SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type);
119public abstract SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isToken, SyntaxNode pattern);
121public abstract SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right);
122public abstract SyntaxNode ConstantPattern(SyntaxNode expression);
123public abstract SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name);
124public abstract SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression);
125public abstract SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression);
126public abstract SyntaxNode LessThanRelationalPattern(SyntaxNode expression);
127public abstract SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression);
128public abstract SyntaxNode NotPattern(SyntaxNode pattern);
129public abstract SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right);
130public abstract SyntaxNode ParenthesizedPattern(SyntaxNode pattern);
131public abstract SyntaxNode TypePattern(SyntaxNode type);
132public abstract SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern);
136public abstract SyntaxNode DefaultExpression(ITypeSymbol type);
137public abstract SyntaxNode DefaultExpression(SyntaxNode type);
139public abstract SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression);
141public SyntaxNode CastExpression(ITypeSymbol type, SyntaxNode expression)
144public SyntaxNode TypeExpression(ITypeSymbol typeSymbol)
147public abstract SyntaxNode TypeExpression(ITypeSymbol typeSymbol, RefKind refKind);
149public abstract SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right);
151public SyntaxNode MemberAccessExpression(SyntaxNode? expression, SyntaxNode memberName)
157public abstract SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode memberName);
158public abstract SyntaxNode IdentifierName(string identifier);
160public abstract SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression);
161public SyntaxNode ConvertExpression(ITypeSymbol type, SyntaxNode expression)
src\5f6f2f95b47c3dc6\SemanticModelWorkspaceServiceFactory.SemanticModelWorkspaceService.cs (6)
15internal readonly struct SemanticModelReuseInfo(SemanticModel previousNonSpeculativeSemanticModel, SemanticModel currentSemanticModel, SyntaxNode bodyNode, VersionStamp topLevelSementicVersion)
31public readonly SyntaxNode BodyNode = bodyNode;
94public async ValueTask<SemanticModel> ReuseExistingSpeculativeModelAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
100var bodyNode = reuseService.TryGetContainingMethodBodyForSpeculation(node);
138ImmutableDictionary<DocumentId, SemanticModelReuseInfo?> map, Document document, SyntaxNode bodyNode, CancellationToken cancellationToken)
177SyntaxNode bodyNode,
src\ce8c1e82c1124a2b\AbstractInitializerParameterService.cs (23)
20where TStatementSyntax : SyntaxNode
22protected abstract bool IsFunctionDeclaration(SyntaxNode node);
24protected abstract SyntaxNode? GetAccessorBody(IMethodSymbol accessor, CancellationToken cancellationToken);
26protected abstract SyntaxNode GetBody(SyntaxNode methodNode);
27protected abstract SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement);
34SyntaxEditor editor, SyntaxNode functionDeclaration, bool returnsVoid, SyntaxNode? statementToAddAfter, TStatementSyntax statement);
37SyntaxNode functionDeclaration,
45var functionBody = GetBody(functionDeclaration);
79public void InsertStatement(SyntaxEditor editor, SyntaxNode functionDeclaration, bool returnsVoid, SyntaxNode? statementToAddAfter, SyntaxNode statement)
90var parameterDeclaration = parameterReference.GetSyntax(cancellationToken);
92var functionDeclaration = parameterDeclaration.FirstAncestorOrSelf<SyntaxNode>(IsFunctionDeclaration);
115SyntaxNode functionDeclaration,
123var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
135SyntaxNode constructorDeclaration,
159var statementToAddAfter = TryGetStatementToAddInitializationAfter(parameter, blockStatement);
164private SyntaxNode? TryGetStatementToAddInitializationAfter(
195using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var accessors);
209foreach (var accessorBody in accessors)
src\roslyn\src\RoslynAnalyzers\Microsoft.CodeAnalysis.BannedApiAnalyzers\Core\SymbolIsBannedAnalyzerBase.cs (11)
32protected abstract SyntaxNode GetReferenceSyntaxNodeFromXmlCref(SyntaxNode syntaxNode);
36protected abstract IEnumerable<SyntaxNode> GetTypeSyntaxNodesFromBaseType(SyntaxNode syntaxNode);
307var node = applicationSyntaxReference.GetSyntax(cancellationToken);
325bool VerifyType(Action<Diagnostic> reportDiagnostic, ITypeSymbol? type, SyntaxNode syntaxNode)
383bool VerifyTypeArguments(Action<Diagnostic> reportDiagnostic, ITypeSymbol? type, SyntaxNode syntaxNode, out ITypeSymbol? originalDefinition)
418void VerifySymbol(Action<Diagnostic> reportDiagnostic, ISymbol symbol, SyntaxNode syntaxNode)
450void VerifyDocumentationSyntax(Action<Diagnostic> reportDiagnostic, SyntaxNode syntaxNode, SyntaxNodeAnalysisContext context)
464void VerifyBaseTypesSyntax(Action<Diagnostic> reportDiagnostic, IEnumerable<SyntaxNode> typeSyntaxNodes, SyntaxNodeAnalysisContext context)
466foreach (var typeSyntaxNode in typeSyntaxNodes)
src\roslyn\src\RoslynAnalyzers\Utilities\Workspaces\SyntaxGeneratorExtensions.cs (56)
32/// A <see cref="SyntaxNode"/> representing the declaration.
34public static SyntaxNode DefaultOperatorEqualityDeclaration(this SyntaxGenerator generator,
37var leftArgument = generator.IdentifierName(LeftIdentifierName);
38var rightArgument = generator.IdentifierName(RightIdentifierName);
40List<SyntaxNode> statements = [];
75/// <returns>A <see cref="SyntaxNode"/> representing the type reference expression.</returns>
76public static SyntaxNode TypeExpressionForStaticMemberAccess(this SyntaxGenerator generator, INamedTypeSymbol typeSymbol)
81var typeExpression = generator.TypeExpression(typeSymbol);
85static SyntaxNode QualifiedNameToMemberAccess(int qualifiedNameSyntaxKind, int memberAccessExpressionSyntaxKind, SyntaxNode expression, SyntaxGenerator generator)
89var left = QualifiedNameToMemberAccess(qualifiedNameSyntaxKind, memberAccessExpressionSyntaxKind, expression.ChildNodes().First(), generator);
90var right = expression.ChildNodes().Last();
108/// A <see cref="SyntaxNode"/> representing the declaration.
110public static SyntaxNode DefaultOperatorInequalityDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
112var leftArgument = generator.IdentifierName(LeftIdentifierName);
113var rightArgument = generator.IdentifierName(RightIdentifierName);
115var returnStatement = generator.ReturnStatement(
134/// A <see cref="SyntaxNode"/> representing the declaration.
136public static SyntaxNode DefaultOperatorLessThanDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
138var leftArgument = generator.IdentifierName(LeftIdentifierName);
139var rightArgument = generator.IdentifierName(RightIdentifierName);
141SyntaxNode expression;
172var returnStatement = generator.ReturnStatement(expression);
186/// A <see cref="SyntaxNode"/> representing the declaration.
188public static SyntaxNode DefaultOperatorLessThanOrEqualDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
190var leftArgument = generator.IdentifierName(LeftIdentifierName);
191var rightArgument = generator.IdentifierName(RightIdentifierName);
193SyntaxNode expression;
219var returnStatement = generator.ReturnStatement(expression);
233/// A <see cref="SyntaxNode"/> representing the declaration.
235public static SyntaxNode DefaultOperatorGreaterThanDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
237var leftArgument = generator.IdentifierName(LeftIdentifierName);
238var rightArgument = generator.IdentifierName(RightIdentifierName);
240SyntaxNode expression;
267var returnStatement = generator.ReturnStatement(expression);
281/// A <see cref="SyntaxNode"/> representing the declaration.
283public static SyntaxNode DefaultOperatorGreaterThanOrEqualDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
285var leftArgument = generator.IdentifierName(LeftIdentifierName);
286var rightArgument = generator.IdentifierName(RightIdentifierName);
288SyntaxNode expression;
318var returnStatement = generator.ReturnStatement(expression);
322private static SyntaxNode ComparisonOperatorDeclaration(this SyntaxGenerator generator, OperatorKind operatorKind, INamedTypeSymbol containingType, params SyntaxNode[] statements)
347/// A <see cref="SyntaxNode"/> representing the declaration.
349public static SyntaxNode DefaultEqualsOverrideDeclaration(this SyntaxGenerator generator, Compilation compilation, INamedTypeSymbol containingType)
351var argumentName = generator.IdentifierName("obj");
353List<SyntaxNode> statements = [];
402/// A <see cref="SyntaxNode"/> representing the declaration.
404public static SyntaxNode DefaultGetHashCodeOverrideDeclaration(
425public static IEnumerable<SyntaxNode> DefaultMethodBody(
431public static SyntaxNode DefaultMethodStatement(this SyntaxGenerator generator, Compilation compilation)
438public static SyntaxNode? TryGetContainingDeclaration(this SyntaxGenerator generator, SyntaxNode? node, DeclarationKind kind)
469/// A <see cref="SyntaxNode"/> representing an unused identifier name.
472public static SyntaxNode FirstUnusedIdentifierName(this SyntaxGenerator generator, SemanticModel semanticModel, int position, string baseName, int maxTries = int.MaxValue)
474var identifierName = generator.IdentifierName(baseName);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\AnalysisContextExtensions.cs (10)
149public static SyntaxNode GetAnalysisRoot(this SyntaxTreeAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
155public static SyntaxNode GetAnalysisRoot(this SemanticModelAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
163public static SyntaxNode GetAnalysisRoot(this SymbolStartAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
175public static SyntaxNode GetAnalysisRoot(this SymbolAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
185public static SyntaxNode GetAnalysisRoot(this OperationBlockStartAnalysisContext context, IOperation operationBlock, bool findInTrivia, bool getInnermostNodeForTie = false)
191public static SyntaxNode GetAnalysisRoot(this OperationBlockAnalysisContext context, IOperation operationBlock, bool findInTrivia, bool getInnermostNodeForTie = false)
197public static SyntaxNode GetAnalysisRoot(this OperationAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
203public static SyntaxNode GetAnalysisRoot(this SyntaxNodeAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
209public static SyntaxNode GetAnalysisRoot<TSyntaxKind>(this CodeBlockStartAnalysisContext<TSyntaxKind> context, bool findInTrivia, bool getInnermostNodeForTie = false) where TSyntaxKind : struct
215public static SyntaxNode GetAnalysisRoot(this CodeBlockAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SemanticModelExtensions.cs (14)
36public static DataFlowAnalysis AnalyzeRequiredDataFlow(this SemanticModel semanticModel, SyntaxNode statementOrExpression)
39public static DataFlowAnalysis AnalyzeRequiredDataFlow(this SemanticModel semanticModel, SyntaxNode firstStatement, SyntaxNode lastStatement)
42public static ControlFlowAnalysis AnalyzeRequiredControlFlow(this SemanticModel semanticModel, SyntaxNode statement)
45public static ControlFlowAnalysis AnalyzeRequiredControlFlow(this SemanticModel semanticModel, SyntaxNode firstStatement, SyntaxNode lastStatement)
48public static ISymbol GetRequiredDeclaredSymbol(this SemanticModel semanticModel, SyntaxNode declaration, CancellationToken cancellationToken)
54public static IOperation GetRequiredOperation(this SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
108this SemanticModel semanticModel, SyntaxNode? container, CancellationToken cancellationToken, Func<SyntaxNode, bool>? descendInto = null)
112using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var stack);
115while (stack.TryPop(out var current))
126if (child.AsNode(out var childNode) &&
215SyntaxNode expression,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxNodeExtensions.cs (127)
23public static SyntaxNode GetRequiredParent(this SyntaxNode node)
26public static IEnumerable<SyntaxNodeOrToken> DepthFirstTraversal(this SyntaxNode node)
29public static IEnumerable<SyntaxNode> DepthFirstTraversalNodes(this SyntaxNode node)
32public static IEnumerable<SyntaxNode> GetAncestors(this SyntaxNode node)
34var current = node.Parent;
44public static IEnumerable<TNode> GetAncestors<TNode>(this SyntaxNode node)
45where TNode : SyntaxNode
47var current = node.Parent;
59public static TNode? GetAncestor<TNode>(this SyntaxNode node)
60where TNode : SyntaxNode
62var current = node.Parent;
76public static TNode? GetAncestorOrThis<TNode>(this SyntaxNode? node)
77where TNode : SyntaxNode
82public static IEnumerable<TNode> GetAncestorsOrThis<TNode>(this SyntaxNode? node)
83where TNode : SyntaxNode
85var current = node;
97public static bool HasAncestor<TNode>(this SyntaxNode node)
98where TNode : SyntaxNode
104this SyntaxNode node, TextSpan searchSpan, Func<SyntaxNode, bool> predicate)
105where TSyntaxNode : SyntaxNode
109var nodes = new LinkedList<SyntaxNode>();
114var currentNode = nodes.First!.Value;
129public static bool CheckParent<T>([NotNullWhen(returnValue: true)] this SyntaxNode? node, Func<T, bool> valueChecker) where T : SyntaxNode
145public static bool IsChildNode<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
146where TParent : SyntaxNode
154var ancestorNode = childGetter(ancestor);
162public static bool IsFoundUnder<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
163where TParent : SyntaxNode
171var child = childGetter(ancestor);
174return node.GetAncestorsOrThis<SyntaxNode>().Contains(child);
177public static SyntaxNode GetCommonRoot(this SyntaxNode node1, SyntaxNode node2)
183using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var set);
184set.AddRange(node2.GetAncestorsOrThis<SyntaxNode>());
186foreach (var ancestor in node1.AncestorsAndSelf())
195public static int Width(this SyntaxNode node)
198public static int FullWidth(this SyntaxNode node)
201public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes, Func<SyntaxNode, bool> predicate)
204public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes)
214using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var commonAncestorsStack);
215using var _2 = PooledHashSet<SyntaxNode>.GetInstance(out var commonAncestorsSet);
218foreach (var node in nodes)
225foreach (var ancestor in node.ValueAncestorsAndSelf())
239var commonAncestor = FindCommonAncestor(node, commonAncestorsSet);
281static SyntaxNode? FindCommonAncestor(SyntaxNode node, HashSet<SyntaxNode> commonAncestorsSet)
283foreach (var ancestor in node.ValueAncestorsAndSelf())
293public static TSyntaxNode? FindInnermostCommonNode<TSyntaxNode>(this IEnumerable<SyntaxNode> nodes) where TSyntaxNode : SyntaxNode
296public static TextSpan GetContainedSpan(this IEnumerable<SyntaxNode> nodes)
302foreach (var node in nodes)
312public static bool OverlapsHiddenPosition(this SyntaxNode node, CancellationToken cancellationToken)
315public static bool OverlapsHiddenPosition(this SyntaxNode node, TextSpan span, CancellationToken cancellationToken)
318public static bool OverlapsHiddenPosition(this SyntaxNode declaration, SyntaxNode startNode, SyntaxNode endNode, CancellationToken cancellationToken)
327public static IEnumerable<T> GetAnnotatedNodes<T>(this SyntaxNode node, SyntaxAnnotation syntaxAnnotation) where T : SyntaxNode
341IEnumerable<SyntaxNode> nodes,
342Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>> computeReplacementAsync,
343CancellationToken cancellationToken) where TRootNode : SyntaxNode
365CancellationToken cancellationToken) where TRootNode : SyntaxNode
378CancellationToken cancellationToken) where TRoot : SyntaxNode
389IEnumerable<SyntaxNode>? nodes,
390Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>>? computeReplacementNodeAsync,
396where TRoot : SyntaxNode
403var nodeReplacements = new Dictionary<SyntaxNode, SyntaxNode>();
439if (nodesToReplace.TryGetValue(span, out var currentNode))
441var original = (SyntaxNode?)retryAnnotations.GetAnnotations(currentNode).SingleOrDefault() ?? currentNode;
442var newNode = await computeReplacementNodeAsync!(original, currentNode, cancellationToken).ConfigureAwait(false);
472if (rewritten != original || !nodeReplacements.TryGetValue(original, out var replaced))
598SyntaxNode root,
615this SyntaxNode root,
654this SyntaxNode root,
691params SyntaxTrivia[] trivia) where T : SyntaxNode
703SyntaxTriviaList trivia) where T : SyntaxNode
715IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
725params SyntaxTrivia[] trivia) where T : SyntaxNode
737SyntaxTriviaList trivia) where T : SyntaxNode
749IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
760IEnumerable<SyntaxTrivia> trailingTrivia) where T : SyntaxNode
785public static SyntaxNode FindNode(this SyntaxNode root, TextSpan? span, bool findInTrivia, bool getInnermostNodeForTie)
793public static SyntaxNode? GetParent(this SyntaxNode node, bool ascendOutOfTrivia)
795var parent = node.Parent;
807public static TNode? FirstAncestorOrSelfUntil<TNode>(this SyntaxNode? node, Func<SyntaxNode, bool> predicate)
808where TNode : SyntaxNode
810for (var current = node; current != null; current = current.GetParent(ascendOutOfTrivia: true))
827SyntaxNode root,
830where TDirectiveTriviaSyntax : SyntaxNode
836where TDirectiveTriviaSyntax : SyntaxNode
856SyntaxNode root,
944public static SyntaxTriviaList GetLeadingTriviaIncludingMissingTokens(this SyntaxNode node)
960public static SyntaxTriviaList GetTrailingTriviaIncludingMissingTokens(this SyntaxNode node)
979public static SyntaxNode WithLeadingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
984public static SyntaxNode WithTrailingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
989public static SyntaxNode WithTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
998public static ValueAncestorsAndSelfEnumerable ValueAncestorsAndSelf(this SyntaxNode syntaxNode, bool ascendOutOfTrivia = true)
1001public readonly struct ValueAncestorsAndSelfEnumerable(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1006public struct Enumerator(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1008public SyntaxNode Current { get; private set; } = null!;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxTokenExtensions.cs (12)
15public static SyntaxNode? GetAncestor(this SyntaxToken token, Func<SyntaxNode, bool>? predicate)
16=> token.GetAncestor<SyntaxNode>(predicate);
18public static T? GetAncestor<T>(this SyntaxToken token, Func<T, bool>? predicate = null) where T : SyntaxNode
21public static T GetRequiredAncestor<T>(this SyntaxToken token, Func<T, bool>? predicate = null) where T : SyntaxNode
25where T : SyntaxNode
32public static IEnumerable<SyntaxNode> GetAncestors(this SyntaxToken token, Func<SyntaxNode, bool> predicate)
39public static SyntaxNode GetCommonRoot(this SyntaxToken token1, SyntaxToken token2)
42public static bool CheckParent<T>(this SyntaxToken token, Func<T, bool> valueChecker) where T : SyntaxNode
58public static SyntaxToken FindTokenFromEnd(this SyntaxNode root, int position, bool includeZeroWidth = true, bool findInsideTrivia = false)
153public static SyntaxNode GetRequiredParent(this SyntaxToken token)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\AbstractSyntaxFormatting.cs (3)
28protected abstract IFormattingResult CreateAggregatedFormattingResult(SyntaxNode node, IList<AbstractFormattingResult> results, TextSpanMutableIntervalTree? formattingSpans = null);
30protected abstract AbstractFormattingResult Format(SyntaxNode node, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, SyntaxToken startToken, SyntaxToken endToken, CancellationToken cancellationToken);
32public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\BaseIndentationFormattingRule.cs (7)
19private readonly SyntaxNode? _commonNode;
22public BaseIndentationFormattingRule(SyntaxNode root, TextSpan span, int baseIndentation, AbstractFormattingRule? vbHelperFormattingRule = null)
31public override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
54private void AddNextIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
133private static void SetInnermostNodeForSpan(SyntaxNode root, ref TextSpan span, out SyntaxToken token1, out SyntaxToken token2, out SyntaxNode? commonNode)
149private static void GetTokens(SyntaxNode root, TextSpan span, out SyntaxToken token1, out SyntaxToken token2)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\CompatAbstractFormattingRule.cs (8)
17public sealed override void AddSuppressOperations(ArrayBuilder<SuppressOperation> list, SyntaxNode node, in NextSuppressOperationAction nextOperation)
25public sealed override void AddAnchorIndentationOperations(List<AnchorIndentationOperation> list, SyntaxNode node, in NextAnchorIndentationOperationAction nextOperation)
33public sealed override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
41public sealed override void AddAlignTokensOperations(List<AlignTokensOperation> list, SyntaxNode node, in NextAlignTokensOperationAction nextOperation)
72public virtual void AddSuppressOperationsSlow(ArrayBuilder<SuppressOperation> list, SyntaxNode node, ref NextSuppressOperationAction nextOperation)
78public virtual void AddAnchorIndentationOperationsSlow(List<AnchorIndentationOperation> list, SyntaxNode node, ref NextAnchorIndentationOperationAction nextOperation)
84public virtual void AddIndentBlockOperationsSlow(List<IndentBlockOperation> list, SyntaxNode node, ref NextIndentBlockOperationAction nextOperation)
90public virtual void AddAlignTokensOperationsSlow(List<AlignTokensOperation> list, SyntaxNode node, ref NextAlignTokensOperationAction nextOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAlignTokensOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAnchorIndentationOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextIndentBlockOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextSuppressOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\HeaderFacts\AbstractHeaderFacts.cs (29)
19public abstract bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
20public abstract bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration);
21public abstract bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter);
22public abstract bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method);
23public abstract bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction);
24public abstract bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration);
25public abstract bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement);
26public abstract bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement);
27public abstract bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement);
29public bool IsOnHeader(SyntaxNode root, int position, SyntaxNode ownerOfHeader, SyntaxNodeOrToken lastTokenOrNodeOfHeader)
30=> IsOnHeader(root, position, ownerOfHeader, lastTokenOrNodeOfHeader, ImmutableArray<SyntaxNode>.Empty);
33SyntaxNode root,
35SyntaxNode ownerOfHeader,
38where THoleSyntax : SyntaxNode
75protected TNode? TryGetAncestorForLocation<TNode>(SyntaxNode root, int position, out SyntaxNode? untypedResult) where TNode : SyntaxNode
97protected int GetStartOfNodeExcludingAttributes(SyntaxNode root, SyntaxNode node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\HeaderFacts\IHeaderFacts.cs (18)
16bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
18bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration);
19bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter);
20bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method);
21bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction);
22bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration);
23bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement);
24bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement);
25bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\RefactoringHelpers\AbstractRefactoringHelpers.cs (62)
18where TExpressionSyntax : SyntaxNode
19where TArgumentSyntax : SyntaxNode
20where TExpressionStatementSyntax : SyntaxNode
25public abstract bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
27private static void AddNode<TSyntaxNode>(bool allowEmptyNodes, ref TemporaryArray<TSyntaxNode> result, TSyntaxNode node) where TSyntaxNode : SyntaxNode
60SourceText sourceText, SyntaxNode root, TextSpan selectionRaw, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
160private static bool IsWantedTypeExpressionLike<TSyntaxNode>() where TSyntaxNode : SyntaxNode
179SourceText sourceText, SyntaxNode root, int location)
286CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
293var leftNode = tokenToLeft.Parent;
320SyntaxNode root,
325CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
331var rightNode = tokenToRightOrIn.Parent;
365SyntaxNode root,
370CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
372var selectionNode = root.FindNode(selectionTrimmed, getInnermostNodeForTie: true);
373var prevNode = selectionNode;
411protected virtual IEnumerable<SyntaxNode> ExtractNodesSimple(SyntaxNode? node, ISyntaxFacts syntaxFacts)
429var localDeclarationStatement = syntaxFacts.IsLocalDeclarationStatement(node) ? node : node.Parent!;
439var declaredVariable = variables.First();
445var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(declaredVariable);
448var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
461var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(node);
464var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
476syntaxFacts.GetPartsOfAssignmentExpressionOrStatement(node, out _, out _, out var rightSide);
498protected virtual IEnumerable<SyntaxNode> ExtractNodesInHeader(SyntaxNode root, int location, IHeaderFacts headerFacts)
501if (headerFacts.IsOnPropertyDeclarationHeader(root, location, out var propertyDeclaration))
505if (headerFacts.IsOnParameterHeader(root, location, out var parameter))
509if (headerFacts.IsOnMethodHeader(root, location, out var method))
513if (headerFacts.IsOnLocalFunctionHeader(root, location, out var localFunction))
517if (headerFacts.IsOnLocalDeclarationHeader(root, location, out var localDeclaration))
521if (headerFacts.IsOnIfStatementHeader(root, location, out var ifStatement))
525if (headerFacts.IsOnForeachHeader(root, location, out var foreachStatement))
528if (headerFacts.IsOnTypeHeader(root, location, out var typeDeclaration))
534SyntaxNode root,
539CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
546var ancestor = token.Parent;
572IEnumerable<SyntaxNode> nodes, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
574foreach (var node in nodes)
586public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
589public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
592public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
595public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
598public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
601public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
604public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
607public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
610public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFacts.cs (24)
52bool IsWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
59bool IsOnlyWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
60bool IsInOutContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
61bool IsInRefContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
62bool IsInInContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
64bool CanReplaceWithRValue(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? expression, CancellationToken cancellationToken);
73bool TryGetSpeculativeSemanticModel(SemanticModel oldSemanticModel, SyntaxNode oldNode, SyntaxNode newNode, [NotNullWhen(true)] out SemanticModel? speculativeModel);
80ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode forEachStatement);
81SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
83IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node);
85ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node);
87ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node);
91IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken);
93IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
94IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
96ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
97ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
99ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken);
101bool IsInsideNameOfExpression(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
108bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, [NotNullWhen(true)] INamedTypeSymbol? expressionType, CancellationToken cancellationToken);
110string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken);
121IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node);
125CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFacts.cs (307)
122bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node);
123bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node, PredefinedType type);
173bool IsUsingOrExternOrImport([NotNullWhen(true)] SyntaxNode? node);
174bool IsGlobalAssemblyAttribute([NotNullWhen(true)] SyntaxNode? node);
175bool IsGlobalModuleAttribute([NotNullWhen(true)] SyntaxNode? node);
176bool IsDeclaration([NotNullWhen(true)] SyntaxNode? node);
178bool IsUsingAliasDirective([NotNullWhen(true)] SyntaxNode? node);
183bool IsPragmaDirective(SyntaxTrivia trivia, out bool isDisable, out bool isActive, out SeparatedSyntaxList<SyntaxNode> errorCodes);
186SyntaxNode? GetMatchingDirective(SyntaxNode directive, CancellationToken cancellationToken);
187ImmutableArray<SyntaxNode> GetMatchingConditionalDirectives(SyntaxNode directive, CancellationToken cancellationToken);
189bool IsDocumentationComment(SyntaxNode node);
196bool TryGetExternalSourceInfo([NotNullWhen(true)] SyntaxNode? directive, out ExternalSourceInfo info);
198bool IsDeclarationExpression([NotNullWhen(true)] SyntaxNode? node);
200bool IsConversionExpression([NotNullWhen(true)] SyntaxNode? node);
201bool IsCastExpression([NotNullWhen(true)] SyntaxNode? node);
203bool IsExpressionOfForeach([NotNullWhen(true)] SyntaxNode? node);
204SyntaxNode GetExpressionOfForeachStatement(SyntaxNode statement);
206void GetPartsOfTupleExpression<TArgumentSyntax>(SyntaxNode node,
207out SyntaxToken openParen, out SeparatedSyntaxList<TArgumentSyntax> arguments, out SyntaxToken closeParen) where TArgumentSyntax : SyntaxNode;
209bool IsVerbatimInterpolatedStringExpression([NotNullWhen(true)] SyntaxNode? node);
212bool IsLeftSideOfAssignment([NotNullWhen(true)] SyntaxNode? node);
214bool IsAnyAssignmentStatement([NotNullWhen(true)] SyntaxNode? statement);
215bool IsSimpleAssignmentStatement([NotNullWhen(true)] SyntaxNode? statement);
216void GetPartsOfAssignmentStatement(SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
217void GetPartsOfAssignmentExpressionOrStatement(SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
220bool IsLeftSideOfAnyAssignment([NotNullWhen(true)] SyntaxNode? node);
222bool IsLeftSideOfCompoundAssignment([NotNullWhen(true)] SyntaxNode? node);
223SyntaxNode GetRightHandSideOfAssignment(SyntaxNode node);
225bool IsInferredAnonymousObjectMemberDeclarator([NotNullWhen(true)] SyntaxNode? node);
226bool IsOperandOfIncrementExpression([NotNullWhen(true)] SyntaxNode? node);
227bool IsOperandOfIncrementOrDecrementExpression([NotNullWhen(true)] SyntaxNode? node);
229bool IsLeftSideOfDot([NotNullWhen(true)] SyntaxNode? node);
230SyntaxNode? GetRightSideOfDot(SyntaxNode? node);
244SyntaxNode? GetLeftSideOfDot(SyntaxNode? node, bool allowImplicitTarget = false);
246bool IsLeftSideOfExplicitInterfaceSpecifier([NotNullWhen(true)] SyntaxNode? node);
248bool IsNameOfSimpleMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
249bool IsNameOfAnyMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
250bool IsNameOfMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node);
259SyntaxNode? GetStandaloneExpression(SyntaxNode? node);
268SyntaxNode? GetRootConditionalAccessExpression(SyntaxNode? node);
277SyntaxNode? GetExpressionOfMemberAccessExpression(SyntaxNode node, bool allowImplicitTarget = false);
279SyntaxNode? GetTargetOfMemberBinding(SyntaxNode? node);
281SyntaxNode GetNameOfMemberBindingExpression(SyntaxNode node);
283bool IsPointerMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
285bool IsNamedArgument([NotNullWhen(true)] SyntaxNode? node);
286bool IsNameOfNamedArgument([NotNullWhen(true)] SyntaxNode? node);
287SyntaxNode? GetParameterList(SyntaxNode node);
288bool IsParameterList([NotNullWhen(true)] SyntaxNode? node);
292void GetPartsOfElementAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode argumentList);
294SyntaxNode GetExpressionOfArgument(SyntaxNode node);
295SyntaxNode GetExpressionOfAttributeArgument(SyntaxNode node);
296SyntaxNode GetExpressionOfInterpolation(SyntaxNode node);
298bool IsElementBindingExpression([NotNullWhen(true)] SyntaxNode? node);
299bool IsMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node);
300bool IsPostfixUnaryExpression([NotNullWhen(true)] SyntaxNode? node);
302SyntaxToken GetIdentifierOfSimpleName(SyntaxNode node);
303SyntaxToken GetIdentifierOfTypeDeclaration(SyntaxNode node);
304SyntaxToken GetIdentifierOfVariableDeclarator(SyntaxNode node);
305SyntaxNode GetTypeOfVariableDeclarator(SyntaxNode node);
311bool IsSimpleArgument([NotNullWhen(true)] SyntaxNode? node);
312bool IsArgument([NotNullWhen(true)] SyntaxNode? node);
313bool IsAttributeArgument([NotNullWhen(true)] SyntaxNode? node);
314RefKind GetRefKindOfArgument(SyntaxNode node);
316void GetNameAndArityOfSimpleName(SyntaxNode node, out string name, out int arity);
317bool LooksGeneric(SyntaxNode simpleName);
319SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(SyntaxNode? genericName);
321SyntaxList<SyntaxNode> GetContentsOfInterpolatedString(SyntaxNode interpolatedString);
323SeparatedSyntaxList<SyntaxNode> GetArgumentsOfObjectCreationExpression(SyntaxNode node);
324SeparatedSyntaxList<SyntaxNode> GetArgumentsOfArgumentList(SyntaxNode node);
325SeparatedSyntaxList<SyntaxNode> GetArgumentsOfAttributeArgumentList(SyntaxNode node);
327bool IsUsingDirectiveName([NotNullWhen(true)] SyntaxNode? node);
330SyntaxList<SyntaxNode> GetAttributeLists(SyntaxNode? node);
331SeparatedSyntaxList<SyntaxNode> GetAttributesOfAttributeList(SyntaxNode node);
333bool IsAttributeNamedArgumentIdentifier([NotNullWhen(true)] SyntaxNode? node);
334bool IsMemberInitializerNamedAssignmentIdentifier([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? initializedInstance);
335bool IsAnonymousObjectMemberDeclaratorNameIdentifier([NotNullWhen(true)] SyntaxNode? node);
336bool IsAnyInitializerExpression([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? creationExpression);
338bool IsDirective([NotNullWhen(true)] SyntaxNode? node);
339bool IsStatement([NotNullWhen(true)] SyntaxNode? node);
340bool IsExecutableStatement([NotNullWhen(true)] SyntaxNode? node);
341bool IsGlobalStatement([NotNullWhen(true)] SyntaxNode? node);
342SyntaxNode GetStatementOfGlobalStatement(SyntaxNode node);
344bool IsDeconstructionAssignment([NotNullWhen(true)] SyntaxNode? node);
345bool IsDeconstructionForEachStatement([NotNullWhen(true)] SyntaxNode? node);
346bool IsUsingLocalDeclarationStatement(SyntaxNode node);
360bool IsMethodBody([NotNullWhen(true)] SyntaxNode? node);
362bool IsDeclaratorOfLocalDeclarationStatement(SyntaxNode declarator, SyntaxNode localDeclarationStatement);
363SeparatedSyntaxList<SyntaxNode> GetVariablesOfLocalDeclarationStatement(SyntaxNode node);
364SyntaxNode? GetInitializerOfVariableDeclarator(SyntaxNode node);
365SyntaxNode? GetInitializerOfPropertyDeclaration(SyntaxNode node);
369bool HasImplicitBaseConstructorInitializer(SyntaxNode constructorDeclaration);
372bool IsElementAccessExpression([NotNullWhen(true)] SyntaxNode? node);
390bool IsInStaticContext(SyntaxNode node);
391bool IsUnsafeContext(SyntaxNode node);
393bool IsInNamespaceOrTypeContext([NotNullWhen(true)] SyntaxNode? node);
395bool IsBaseTypeList([NotNullWhen(true)] SyntaxNode? node);
397bool IsInConstantContext([NotNullWhen(true)] SyntaxNode? node);
398bool IsInConstructor(SyntaxNode node);
399bool IsMethodLevelMember([NotNullWhen(true)] SyntaxNode? node);
400bool IsTopLevelNodeWithMembers([NotNullWhen(true)] SyntaxNode? node);
403bool AreEquivalent(SyntaxNode? node1, SyntaxNode? node2);
405string GetDisplayName(SyntaxNode? node, DisplayNameOptions options, string? rootNamespace = null);
408SyntaxNode? GetContainingTypeDeclaration(SyntaxNode root, int position);
409SyntaxNode? GetContainingMemberDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
410SyntaxNode? GetContainingMethodDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
411SyntaxNode? GetContainingVariableDeclaratorOfFieldDeclaration(SyntaxNode? node);
415SyntaxNode? ConvertToSingleLine(SyntaxNode? node, bool useElasticTrivia = false);
418void AddTopLevelAndMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
420void AddTopLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
422void AddMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
424SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(SyntaxNode typeDeclaration);
425SyntaxList<SyntaxNode> GetMembersOfNamespaceDeclaration(SyntaxNode typeDeclaration);
426SyntaxList<SyntaxNode> GetMembersOfTypeDeclaration(SyntaxNode typeDeclaration);
432/// Given a <see cref="SyntaxNode"/>, return the <see cref="TextSpan"/> representing the span of the member body
438TextSpan GetMemberBodySpanForSpeculativeBinding(SyntaxNode node);
446SyntaxNode? TryGetBindableParent(SyntaxToken token);
449/// Given a <see cref="SyntaxNode"/>, that represents and argument return the string representation of
453string GetNameForArgument(SyntaxNode? argument);
456/// Given a <see cref="SyntaxNode"/>, that represents an attribute argument return the string representation of
460string GetNameForAttributeArgument(SyntaxNode? argument);
462bool IsNameOfSubpattern([NotNullWhen(true)] SyntaxNode? node);
463bool IsPropertyPatternClause(SyntaxNode node);
465bool IsAnyPattern([NotNullWhen(true)] SyntaxNode? node);
466bool IsBinaryPattern([NotNullWhen(true)] SyntaxNode? node);
467bool IsUnaryPattern([NotNullWhen(true)] SyntaxNode? node);
469SyntaxNode GetExpressionOfConstantPattern(SyntaxNode node);
470SyntaxNode GetTypeOfTypePattern(SyntaxNode node);
472void GetPartsOfParenthesizedPattern(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode pattern, out SyntaxToken closeParen);
473void GetPartsOfBinaryPattern(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
474void GetPartsOfDeclarationPattern(SyntaxNode node, out SyntaxNode type, out SyntaxNode designation);
475void GetPartsOfRecursivePattern(SyntaxNode node, out SyntaxNode? type, out SyntaxNode? positionalPart, out SyntaxNode? propertyPart, out SyntaxNode? designation);
476void GetPartsOfRelationalPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode expression);
477void GetPartsOfUnaryPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode pattern);
481SyntaxTokenList GetModifiers(SyntaxNode? node);
485SyntaxNode? WithModifiers(SyntaxNode? node, SyntaxTokenList modifiers);
488Location GetDeconstructionReferenceLocation(SyntaxNode node);
493bool IsParameterNameXmlElementSyntax([NotNullWhen(true)] SyntaxNode? node);
495SyntaxList<SyntaxNode> GetContentFromDocumentationCommentTriviaSyntax(SyntaxTrivia trivia);
501bool IsAnonymousFunctionExpression([NotNullWhen(true)] SyntaxNode? node);
502bool IsBaseNamespaceDeclaration([NotNullWhen(true)] SyntaxNode? node);
503bool IsTypeDeclaration(SyntaxNode node);
504bool IsBinaryExpression([NotNullWhen(true)] SyntaxNode? node);
505bool IsLiteralExpression([NotNullWhen(true)] SyntaxNode? node);
506bool IsMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
507bool IsMethodDeclaration([NotNullWhen(true)] SyntaxNode? node);
508bool IsSimpleName([NotNullWhen(true)] SyntaxNode? node);
509bool IsAnyName([NotNullWhen(true)] SyntaxNode? node);
510bool IsAnyType([NotNullWhen(true)] SyntaxNode? node);
512bool IsNamedMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
513bool IsElementAccessInitializer([NotNullWhen(true)] SyntaxNode? node);
515bool IsObjectMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
516bool IsObjectCollectionInitializer([NotNullWhen(true)] SyntaxNode? node);
522void GetPartsOfAliasQualifiedName(SyntaxNode node, out SyntaxNode alias, out SyntaxToken colonColonToken, out SyntaxNode name);
523void GetPartsOfAnyIsTypeExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode type);
524void GetPartsOfArgumentList(SyntaxNode node, out SyntaxToken openParenToken, out SeparatedSyntaxList<SyntaxNode> arguments, out SyntaxToken closeParenToken);
525void GetPartsOfAttribute(SyntaxNode node, out SyntaxNode name, out SyntaxNode? argumentList);
526void GetPartsOfBaseNamespaceDeclaration(SyntaxNode node, out SyntaxNode name, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> members);
527void GetPartsOfBaseObjectCreationExpression(SyntaxNode node, out SyntaxNode? argumentList, out SyntaxNode? initializer);
528void GetPartsOfBinaryExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
529void GetPartsOfCastExpression(SyntaxNode node, out SyntaxNode type, out SyntaxNode expression);
530void GetPartsOfCompilationUnit(SyntaxNode node, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> attributeLists, out SyntaxList<SyntaxNode> members);
531void GetPartsOfConditionalAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode whenNotNull);
532void GetPartsOfConditionalExpression(SyntaxNode node, out SyntaxNode condition, out SyntaxNode whenTrue, out SyntaxNode whenFalse);
533void GetPartsOfGenericName(SyntaxNode node, out SyntaxToken identifier, out SeparatedSyntaxList<SyntaxNode> typeArguments);
534void GetPartsOfInterpolationExpression(SyntaxNode node, out SyntaxToken stringStartToken, out SyntaxList<SyntaxNode> contents, out SyntaxToken stringEndToken);
535void GetPartsOfInvocationExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode? argumentList);
536void GetPartsOfIsPatternExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken isToken, out SyntaxNode right);
537void GetPartsOfMemberAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode name);
538void GetPartsOfNamedMemberInitializer(SyntaxNode node, out SyntaxNode name, out SyntaxNode expression);
539void GetPartsOfObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode type, out SyntaxNode? argumentList, out SyntaxNode? initializer);
540void GetPartsOfImplicitObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode argumentList, out SyntaxNode? initializer);
541void GetPartsOfParameter(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode? @default);
542void GetPartsOfParenthesizedExpression(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode expression, out SyntaxToken closeParen);
543void GetPartsOfPostfixUnaryExpression(SyntaxNode node, out SyntaxNode operand, out SyntaxToken operatorToken);
544void GetPartsOfPrefixUnaryExpression(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode operand);
545void GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken dotToken, out SyntaxNode right);
546void GetPartsOfUsingAliasDirective(SyntaxNode node, out SyntaxToken globalKeyword, out SyntaxToken alias, out SyntaxNode name);
556SyntaxNode GetArgumentListOfImplicitElementAccess(SyntaxNode node);
558SyntaxNode GetExpressionOfAwaitExpression(SyntaxNode node);
559SyntaxNode GetExpressionOfExpressionStatement(SyntaxNode node);
560SyntaxNode GetExpressionOfRefExpression(SyntaxNode node);
561SyntaxNode? GetExpressionOfReturnStatement(SyntaxNode node);
562SyntaxNode GetExpressionOfThrowExpression(SyntaxNode node);
563SyntaxNode? GetExpressionOfThrowStatement(SyntaxNode node);
565bool IsEqualsValueOfPropertyDeclaration([NotNullWhen(true)] SyntaxNode? node);
566SyntaxNode GetValueOfEqualsValueClause(SyntaxNode node);
568SeparatedSyntaxList<SyntaxNode> GetInitializersOfObjectMemberInitializer(SyntaxNode node);
569SeparatedSyntaxList<SyntaxNode> GetExpressionsOfObjectCollectionInitializer(SyntaxNode node);
571SyntaxToken GetTokenOfLiteralExpression(SyntaxNode node);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFactsExtensions.cs (211)
23public static bool IsMemberInitializerNamedAssignmentIdentifier(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
26public static bool IsOnSingleLine(this ISyntaxFacts syntaxFacts, SyntaxNode node, bool fullSpan)
62var currentNode = currentNodeOrToken.AsNode()!;
160this ISyntaxFacts syntaxFacts, ImmutableArray<SyntaxNode> nodes, CancellationToken cancellationToken)
166foreach (var node in nodes)
178public static bool ContainsInterleavedDirective(this ISyntaxFacts syntaxFacts, SyntaxNode node, CancellationToken cancellationToken)
182this ISyntaxFacts syntaxFacts, TextSpan span, SyntaxNode node, CancellationToken cancellationToken)
193public static bool SpansPreprocessorDirective(this ISyntaxFacts syntaxFacts, IEnumerable<SyntaxNode> nodes)
286public static SyntaxNode? WalkDownParentheses(this ISyntaxFacts syntaxFacts, SyntaxNode? node)
290syntaxFacts.GetPartsOfParenthesizedExpression(node, out _, out var child, out _);
298public static SyntaxNode? WalkUpParentheses(this ISyntaxFacts syntaxFacts, SyntaxNode? node)
307this ISyntaxFacts syntaxFacts, SyntaxNode statement,
308out SyntaxNode left, out SyntaxNode right)
313public static SyntaxNode GetExpressionOfInvocationExpression(
314this ISyntaxFacts syntaxFacts, SyntaxNode node)
316syntaxFacts.GetPartsOfInvocationExpression(node, out var expression, out _);
320public static SyntaxNode Unparenthesize(
321this ISyntaxFacts syntaxFacts, SyntaxNode node)
324SyntaxNode operand;
348var resultNode = operand
383public static bool SpansPreprocessorDirective(this ISyntaxFacts service, SyntaxNode node)
386public static bool SpansPreprocessorDirective(this ISyntaxFacts service, params SyntaxNode[] nodes)
387=> service.SpansPreprocessorDirective((IEnumerable<SyntaxNode>)nodes);
392public static void GetPartsOfBinaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode left, out SyntaxNode right)
395public static SyntaxNode GetPatternOfParenthesizedPattern(this ISyntaxFacts syntaxFacts, SyntaxNode node)
397syntaxFacts.GetPartsOfParenthesizedPattern(node, out _, out var pattern, out _);
401public static SyntaxToken GetOperatorTokenOfBinaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
407public static bool IsAnonymousOrLocalFunction(this ISyntaxFacts syntaxFacts, SyntaxNode node)
411public static SyntaxNode? GetExpressionOfElementAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
413syntaxFacts.GetPartsOfElementAccessExpression(node, out var expression, out _);
417public static SyntaxNode? GetArgumentListOfElementAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
419syntaxFacts.GetPartsOfElementAccessExpression(node, out _, out var argumentList);
423public static SyntaxNode GetExpressionOfConditionalAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
425syntaxFacts.GetPartsOfConditionalAccessExpression(node, out var expression, out _);
429public static SyntaxToken GetOperatorTokenOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
435public static void GetPartsOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode expression, out SyntaxNode name)
438public static void GetPartsOfConditionalAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode expression, out SyntaxNode whenNotNull)
441public static TextSpan GetSpanWithoutAttributes(this ISyntaxFacts syntaxFacts, SyntaxNode root, SyntaxNode node)
468/// Similar to <see cref="ISyntaxFacts.GetStandaloneExpression(SyntaxNode)"/>, this gets the containing
478public static SyntaxNode GetRootStandaloneExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
481var standalone = syntaxFacts.GetStandaloneExpression(node);
489public static SyntaxNode? GetArgumentListOfInvocationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
491syntaxFacts.GetPartsOfInvocationExpression(node, out _, out var argumentList);
495public static SeparatedSyntaxList<SyntaxNode> GetArgumentsOfInvocationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
497var argumentList = syntaxFacts.GetArgumentListOfInvocationExpression(node);
501public static SyntaxNode? GetArgumentListOfBaseObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
503syntaxFacts.GetPartsOfBaseObjectCreationExpression(node, out var argumentList, out _);
507public static SyntaxNode? GetDefaultOfParameter(this ISyntaxFacts syntaxFacts, SyntaxNode node)
509syntaxFacts.GetPartsOfParameter(node, out _, out var @default);
513public static SyntaxNode GetExpressionOfParenthesizedExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
515syntaxFacts.GetPartsOfParenthesizedExpression(node, out _, out var expression, out _);
519public static SyntaxToken GetIdentifierOfGenericName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
525public static SyntaxToken GetIdentifierOfIdentifierName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
528public static SyntaxToken GetIdentifierOfParameter(this ISyntaxFacts syntaxFacts, SyntaxNode node)
534public static SyntaxList<SyntaxNode> GetImportsOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
540public static SyntaxList<SyntaxNode> GetImportsOfCompilationUnit(this ISyntaxFacts syntaxFacts, SyntaxNode node)
546public static SyntaxNode? GetInitializerOfBaseObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
548syntaxFacts.GetPartsOfBaseObjectCreationExpression(node, out _, out var initializer);
552public static SyntaxList<SyntaxNode> GetMembersOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
558public static SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(this ISyntaxFacts syntaxFacts, SyntaxNode node)
564public static SyntaxNode GetNameOfAttribute(this ISyntaxFacts syntaxFacts, SyntaxNode node)
566syntaxFacts.GetPartsOfAttribute(node, out var name, out _);
570public static SyntaxNode GetNameOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
572syntaxFacts.GetPartsOfBaseNamespaceDeclaration(node, out var name, out _, out _);
576public static SyntaxNode GetNameOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
578syntaxFacts.GetPartsOfMemberAccessExpression(node, out _, out var name);
582public static SyntaxNode GetOperandOfPostfixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
584syntaxFacts.GetPartsOfPostfixUnaryExpression(node, out var operand, out _);
588public static SyntaxNode GetOperandOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
590syntaxFacts.GetPartsOfPrefixUnaryExpression(node, out _, out var operand);
594public static SyntaxToken GetOperatorTokenOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
600public static SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
606public static SyntaxNode GetTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
608syntaxFacts.GetPartsOfObjectCreationExpression(node, out _, out var type, out _, out _);
616public static bool IsExpressionOfAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
618var parent = node?.Parent;
625public static bool IsExpressionOfInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
627var parent = node?.Parent;
631syntaxFacts.GetPartsOfInvocationExpression(parent, out var expression, out _);
635public static bool IsExpressionOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
637var parent = node?.Parent;
641syntaxFacts.GetPartsOfMemberAccessExpression(parent, out var expression, out _);
645public static bool IsNameOfAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
650syntaxFacts.GetPartsOfAttribute(node.Parent, out var name, out _);
654public static bool IsRightOfQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
656var parent = node?.Parent;
660syntaxFacts.GetPartsOfQualifiedName(parent, out _, out _, out var right);
664public static bool IsRightOfAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
666var parent = node?.Parent;
670syntaxFacts.GetPartsOfAliasQualifiedName(parent, out _, out _, out var right);
674public static bool IsTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
676var parent = node?.Parent;
680syntaxFacts.GetPartsOfObjectCreationExpression(parent, out _, out var type, out _, out _);
711public static bool IsSkippedTokensTrivia(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
751public static bool IsAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
754public static bool IsGenericName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
757public static bool IsIdentifierName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
760public static bool IsQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
767public static bool IsTupleType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
774public static bool IsCharacterLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
777public static bool IsDefaultLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
780public static bool IsFalseLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
783public static bool IsNumericLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
786public static bool IsNullLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
789public static bool IsStringLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
792public static bool IsTrueLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
799public static bool IsArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
802public static bool IsAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
805public static bool IsBaseExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
808public static bool IsConditionalExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
811public static bool IsConditionalAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
814public static bool IsFieldExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
817public static bool IsImplicitArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
820public static bool IsImplicitObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
823public static bool IsIndexExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
826public static bool IsInterpolatedStringExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
829public static bool IsInterpolation(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
832public static bool IsInterpolatedStringText(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
835public static bool IsInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
838public static bool IsIsTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
841public static bool IsIsNotTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
844public static bool IsIsPatternExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
847public static bool IsLogicalAndExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
850public static bool IsLogicalOrExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
853public static bool IsLogicalNotExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
856public static bool IsObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
859public static bool IsParenthesizedExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
862public static bool IsQueryExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
865public static bool IsRangeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
868public static bool IsRefExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
871public static bool IsSimpleMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
874public static bool IsSuppressNullableWarningExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
877public static bool IsThisExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
880public static bool IsThrowExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
883public static bool IsTupleExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
886public static bool ContainsGlobalStatement(this ISyntaxFacts syntaxFacts, SyntaxNode node)
893public static bool IsAndPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
896public static bool IsConstantPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
899public static bool IsDeclarationPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
902public static bool IsListPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
905public static bool IsNotPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
908public static bool IsOrPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
911public static bool IsParenthesizedPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
914public static bool IsRecursivePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
917public static bool IsRelationalPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
920public static bool IsTypePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
923public static bool IsVarPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
930public static bool IsExpressionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
933public static bool IsForEachStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
936public static bool IsForStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
939public static bool IsIfStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
942public static bool IsLocalDeclarationStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
945public static bool IsLocalFunctionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
948public static bool IsLockStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
951public static bool IsReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
954public static bool IsThrowStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
957public static bool IsUsingStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
960public static bool IsWhileStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
963public static bool IsYieldReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
970public static bool IsAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
973public static bool IsClassDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
976public static bool IsCollectionExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
979public static bool IsConstructorDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
982public static bool IsEnumDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
985public static bool IsGlobalAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
988public static bool IsInterfaceDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
991public static bool IsParameter(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
994public static bool IsTypeConstraint(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
997public static bool IsVariableDeclarator(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1000public static bool IsFieldDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1003public static bool IsPropertyDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1006public static bool IsStructDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1009public static bool IsTypeArgumentList(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1016public static bool IsElseClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1018public static bool IsEqualsValueClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1025public static bool IsExpressionElement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1028public static bool IsImplicitElementAccess(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1031public static bool IsIndexerMemberCref(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1034public static bool IsPrimaryConstructorBaseType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (38)
35where TExpressionSyntax : SyntaxNode
37where TAttributeSyntax : SyntaxNode
38where TArgumentSyntax : SyntaxNode
39where TForEachStatementSyntax : SyntaxNode
40where TThrowStatementSyntax : SyntaxNode
49private SyntaxNode? _lazySemanticRootOfReplacedExpression;
95protected abstract SyntaxNode GetSemanticRootForSpeculation(TExpressionSyntax expression);
96protected abstract SemanticModel CreateSpeculativeSemanticModel(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel);
99protected abstract bool ExpressionMightReferenceMember([NotNullWhen(true)] SyntaxNode? node);
114protected abstract bool ReplacementChangesSemanticsForNodeLanguageSpecific(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode);
116protected abstract bool IsParenthesizedExpression([NotNullWhen(true)] SyntaxNode? node);
128SyntaxNode ISpeculationAnalyzer.OriginalExpression => OriginalExpression;
136public SyntaxNode SemanticRootOfOriginalExpression
171SyntaxNode ISpeculationAnalyzer.ReplacedExpression => ReplacedExpression;
178public SyntaxNode SemanticRootOfReplacedExpression
201protected virtual SyntaxNode GetSemanticRootOfReplacedExpression(SyntaxNode semanticRootOfOriginalExpression, TExpressionSyntax annotatedReplacedExpression)
224protected abstract void ValidateSpeculativeSemanticModel(SemanticModel speculativeSemanticModel, SyntaxNode nodeToSpeculate);
231var nodeToSpeculate = this.SemanticRootOfReplacedExpression;
317protected bool SymbolsAreCompatible(SyntaxNode originalNode, SyntaxNode newNode, bool requireNonNullSymbols = false)
519protected bool ReplacementChangesSemantics(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode originalRoot, bool skipVerificationForCurrentNode)
527SyntaxNode? previousOriginalNode = null, previousReplacedNode = null;
571private bool ReplacementChangesSemanticsForNode(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode)
688var originalExpressionOfMemberAccess = syntaxFacts.GetExpressionOfMemberAccessExpression(originalExpression);
731private bool ReplacementBreaksSystemObjectMethodResolution(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, [NotNullWhen(true)] SyntaxNode? previousOriginalNode, [NotNullWhen(true)] SyntaxNode? previousReplacedNode)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\CommonFormattingHelpers.cs (8)
45public static IEnumerable<(SyntaxToken, SyntaxToken)> ConvertToTokenPairs(this SyntaxNode root, IReadOnlyList<TextSpan> spans)
81public static ValueTuple<SyntaxToken, SyntaxToken> ConvertToTokenPair(this SyntaxNode root, TextSpan textSpan)
127public static bool IsInvalidTokenRange(this SyntaxNode root, SyntaxToken startToken, SyntaxToken endToken)
278var parentNode = GetParentThatContainsGivenSpan(token.Parent, backwardPosition, forward: false);
309var parentNode = GetParentThatContainsGivenSpan(token.Parent, forwardPosition, forward: true);
320private static SyntaxNode? GetParentThatContainsGivenSpan(SyntaxNode? node, int position, bool forward)
357public static TextSpan GetFormattingSpan(SyntaxNode root, TextSpan span)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\AbstractCodeGenerationService_FindDeclaration.cs (22)
20protected abstract IList<bool>? GetAvailableInsertionIndices(SyntaxNode destination, CancellationToken cancellationToken);
22private IList<bool>? GetAvailableInsertionIndices<TDeclarationNode>(TDeclarationNode destination, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
23=> GetAvailableInsertionIndices((SyntaxNode)destination, cancellationToken);
34protected static SyntaxToken GetEndToken(SyntaxNode node)
50protected static TextSpan GetSpan(SyntaxNode node)
58public bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken)
61public bool CanAddTo(SyntaxNode destination, Solution solution, CodeGenerationContext context, CancellationToken cancellationToken)
65SyntaxNode? destination,
143public SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(
153private (SyntaxNode? declaration, IList<bool>? availableIndices) FindMostRelevantDeclaration(
165using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var ancestors);
167var fallbackDeclaration = (SyntaxNode?)null;
171ancestors.AddRange(token.GetAncestors<SyntaxNode>());
176if (TryAddToRelatedDeclaration(declarations.Where(d => d is not ICompilationUnitSyntax), checkGeneratedCode: false, out var declaration1, out var availableIndices1) ||
184if (TryAddToWorker(declarations, checkGeneratedCode: true, out var declaration2, out var availableIndices2, predicate: node => true))
190IEnumerable<SyntaxNode> declarations,
192[NotNullWhen(true)] out SyntaxNode? declaration,
230IEnumerable<SyntaxNode> declarations,
232[NotNullWhen(true)] out SyntaxNode? declaration,
234Func<SyntaxNode, bool> predicate)
236foreach (var decl in declarations)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\AbstractCodeGenerationService.cs (83)
47public TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
50public TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
53public TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
56public TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
59public TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
62public TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
66where TDeclarationNode : SyntaxNode
69private static TNode WithAnnotations<TNode>(TNode node, CodeGenerationContextInfo info) where TNode : SyntaxNode
76public SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
79public SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
82public SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
85public SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
88public SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
91public SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
94public TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destination, IEnumerable<IParameterSymbol> parameters, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
97public TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
100public TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
103public TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
106public TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
109public TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
112public TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
115public TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
118public TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> statements, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
123protected abstract TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
124protected abstract TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
125protected abstract TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
126protected abstract TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
127protected abstract TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
128protected abstract TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
129protected abstract TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> members) where TDeclarationNode : SyntaxNode;
131public abstract TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destinationMember, IEnumerable<IParameterSymbol> parameters, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
132public abstract TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
133public abstract TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
134public abstract TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
135public abstract TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
137public abstract TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
138public abstract TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
139public abstract TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
140public abstract TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
142public abstract CodeGenerationDestination GetDestination(SyntaxNode node);
143public abstract SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
144public abstract SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
147public abstract SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
149public abstract SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
150public abstract SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
151public abstract SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
156protected static void CheckDeclarationNode<TDeclarationNode>(SyntaxNode destination) where TDeclarationNode : SyntaxNode
171protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2>(SyntaxNode destination)
172where TDeclarationNode1 : SyntaxNode
173where TDeclarationNode2 : SyntaxNode
190protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2, TDeclarationNode3>(SyntaxNode destination)
191where TDeclarationNode1 : SyntaxNode
192where TDeclarationNode2 : SyntaxNode
193where TDeclarationNode3 : SyntaxNode
211protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2, TDeclarationNode3, TDeclarationNode4>(SyntaxNode destination)
212where TDeclarationNode1 : SyntaxNode
213where TDeclarationNode2 : SyntaxNode
214where TDeclarationNode3 : SyntaxNode
215where TDeclarationNode4 : SyntaxNode
232Func<SyntaxNode, TCodeGenerationContextInfo, IList<bool>?, CancellationToken, SyntaxNode> declarationTransform,
247var transformedDeclaration = declarationTransform(destinationDeclaration, info, availableIndices, cancellationToken);
249var root = await destinationTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
250var currentRoot = root.ReplaceNode(destinationDeclaration, transformedDeclaration);
275where TDeclarationNode : SyntaxNode
297where TDeclarationSyntax : SyntaxNode
299var newMembers = new List<SyntaxNode>();
304var newMember = GetNewMember(info, codeGenerationDestination, member, cancellationToken);
329where TDeclarationSyntax : SyntaxNode
342private SyntaxNode? GetNewMember(TCodeGenerationContextInfo info, CodeGenerationDestination codeGenerationDestination, ISymbol member, CancellationToken cancellationToken)
359CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
379protected abstract IComparer<SyntaxNode> GetMemberComparer();
481protected static void CheckLocation(SyntaxNode destinationMember, [NotNull] Location? location)
500SyntaxNode attributeList,
520SyntaxNode attributeToRemove,
526var root = attributeToRemove.SyntaxTree.GetRoot();
535where T : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (18)
55SyntaxNode? initializer = null)
81bool isIndexer = false, SyntaxNode? initializer = null)
109SyntaxNode? initializer = null)
125ImmutableArray<SyntaxNode> statements = default,
126ImmutableArray<SyntaxNode> baseConstructorArguments = default,
127ImmutableArray<SyntaxNode> thisConstructorArguments = default,
140ImmutableArray<SyntaxNode> statements = default)
158ImmutableArray<SyntaxNode> statements = default,
159ImmutableArray<SyntaxNode> handlesExpressions = default,
179ImmutableArray<SyntaxNode> statements = default,
180ImmutableArray<SyntaxNode> handlesExpressions = default,
198ImmutableArray<SyntaxNode> statements = default,
224ImmutableArray<SyntaxNode> statements = default,
252ImmutableArray<SyntaxNode> statements = default,
361ImmutableArray<SyntaxNode> statements = default)
385ImmutableArray<SyntaxNode> statements)
518ImmutableArray<SyntaxNode> statements = default,
551SyntaxNode? initializer = null)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\ICodeGenerationService.cs (27)
22SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
27SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
33SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
38SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
43SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
48SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
53TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
58TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
63TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
68TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
73TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
78TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
83TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<ISymbol> members, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
88TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destination, IEnumerable<IParameterSymbol> parameters, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
93TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
98TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
103TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
108TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
113TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
118TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
123TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
128TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> statements, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
188bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken);
193bool CanAddTo(SyntaxNode destination, Solution solution, CodeGenerationContext context, CancellationToken cancellationToken);
201SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(Solution solution, INamespaceOrTypeSymbol namespaceOrType, Location? location, CancellationToken cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeRefactorings\AbstractRefactoringHelpersService.cs (25)
15where TExpressionSyntax : SyntaxNode
16where TArgumentSyntax : SyntaxNode
17where TExpressionStatementSyntax : SyntaxNode
21public bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
24public void AddRelevantNodes<TSyntaxNode>(SourceText sourceText, SyntaxNode root, TextSpan selection, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
27public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
30public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
33public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
36public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
39public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
42public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
45public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
48public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
51public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeRefactorings\CodeRefactoringContextExtensions.cs (12)
41public static Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
44public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNode) where TSyntaxNode : SyntaxNode
50public static Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
53public static async Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNodes) where TSyntaxNode : SyntaxNode
59public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
65public static TSyntaxNode? TryGetRelevantNode<TSyntaxNode>(this ParsedDocument document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
68public static TSyntaxNode? TryGetRelevantNode<TSyntaxNode>(this ParsedDocument document, TextSpan span, bool allowEmptyNode, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
76this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
82this Document document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
89this ParsedDocument document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
93this ParsedDocument document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
102this ParsedDocument document, TextSpan span, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Editing\ImportAdderService.cs (23)
37var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
70bool OverlapsWithSpan(SyntaxNode n) => spansTree.HasIntervalThatOverlapsWith(n.FullSpan.Start, n.FullSpan.Length);
73protected abstract INamespaceSymbol? GetExplicitNamespaceSymbol(SyntaxNode node, SemanticModel model);
77SyntaxNode container,
95SyntaxNode container,
100private static SyntaxNode GenerateNamespaceImportDeclaration(INamespaceSymbol namespaceSymbol, SyntaxGenerator generator)
111IEnumerable<SyntaxNode> syntaxNodes,
117using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var importsToAdd);
118using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var nodesToSimplify);
120var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
139var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
159var first = root.DescendantNodesAndSelf().First(x => x.HasAnnotation(annotation));
160var last = root.DescendantNodesAndSelf().Last(x => x.HasAnnotation(annotation));
162var context = first.GetCommonRoot(last);
172IEnumerable<SyntaxNode> annotatedNodes,
178using var _ = PooledDictionary<INamespaceSymbol, SyntaxNode>.GetInstance(out var importToSyntax);
180var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
188SyntaxNode? first = null, last = null;
190foreach (var annotatedNode in annotatedNodes)
218var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
233var context = first.GetCommonRoot(last);
236var importContainer = addImportsService.GetImportContainer(root, context, importToSyntax.First().Value, options);
259private static bool IsInsideNamespace(SyntaxNode node, INamespaceSymbol symbol, SemanticModel model, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\StringBuilderExtensions.cs (1)
22where TNode : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxEditorExtensions.cs (29)
31Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
32CancellationToken cancellationToken) where TNode : SyntaxNode
54Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
55CancellationToken cancellationToken) where TNode : SyntaxNode
76Func<SemanticModel, SyntaxNode, TNode, SyntaxNode> updateRoot,
77CancellationToken cancellationToken) where TNode : SyntaxNode
98Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
99CancellationToken cancellationToken) where TNode : SyntaxNode
120Func<SemanticModel, SyntaxNode, TNode, SyntaxNode> updateRoot,
121CancellationToken cancellationToken) where TNode : SyntaxNode
154Func<ISyntaxFactsService, SyntaxNode, SyntaxNode> getSemanticBoundary,
156Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
157CancellationToken cancellationToken) where TNode : SyntaxNode
170var originalRoot = editor.OriginalRoot;
173var currentRoot = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
183var replacementRoot = updateRoot(semanticModel, currentRoot, instance, currentNode);
195private static SyntaxNode GetExpressionSemanticBoundary(ISyntaxFactsService syntaxFacts, SyntaxNode node)
202return node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>(
210private static SyntaxNode GetMethodBodySemanticBoundary(ISyntaxFactsService syntaxFacts, SyntaxNode node)
212return node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_CreateEqualsMethod.cs (22)
48public static IMethodSymbol CreateEqualsMethod(this Compilation compilation, ImmutableArray<SyntaxNode> statements)
56ImmutableArray<SyntaxNode> statements)
120private static ImmutableArray<SyntaxNode> CreateEqualsMethodStatements(
135using var statements = TemporaryArray<SyntaxNode>.Empty;
144var localNameExpression = factory.IdentifierName(localName);
145var objNameExpression = factory.IdentifierName(ObjName);
149using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
178var ifStatement = factory.IfStatement(
189var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
201var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
240ImmutableArray<ISymbol> members, SyntaxNode localNameExpression,
241ArrayBuilder<SyntaxNode> expressions)
251var symbolNameExpression = factory.IdentifierName(member.Name);
252var thisSymbol = factory.MemberAccessExpression(factory.ThisExpression(), symbolNameExpression)
254var otherSymbol = factory.MemberAccessExpression(localNameExpression, symbolNameExpression);
291private static ImmutableArray<SyntaxNode> CreateIEquatableEqualsMethodStatements(
299var statements = ArrayBuilder<SyntaxNode>.GetInstance();
301var otherNameExpression = factory.IdentifierName(OtherName);
305using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
343SyntaxGenerator factory, SyntaxGeneratorInternal generatorInternal, Compilation compilation, ParseOptions parseOptions, SyntaxNode otherNameExpression, ArrayBuilder<SyntaxNode> expressions)
345var nullLiteral = factory.NullLiteralExpression();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (58)
33public static SyntaxNode Negate(
36SyntaxNode expression,
43public static SyntaxNode Negate(
46SyntaxNode expressionOrPattern,
54public static SyntaxNode Negate(
57SyntaxNode expressionOrPattern,
114syntaxFacts.GetPartsOfAnyIsTypeExpression(expressionOrPattern, out var expression, out var type);
124syntaxFacts.GetPartsOfAnyIsTypeExpression(expressionOrPattern, out var expression, out var type);
136private static SyntaxNode GetNegationOfBinaryExpression(
137SyntaxNode expressionNode,
144syntaxFacts.GetPartsOfBinaryExpression(expressionNode, out var leftOperand, out var operatorToken, out var rightOperand);
172var newBinaryExpressionSyntax = negatedKind is BinaryOperatorKind.Equals or BinaryOperatorKind.NotEquals
190SyntaxNode innerPattern;
199var typeExpression = generatorInternal.Type(isTypeOperation.TypeOperand, typeContext: false);
228private static SyntaxNode GetNegationOfBinaryPattern(
229SyntaxNode pattern,
241syntaxFacts.GetPartsOfBinaryPattern(pattern, out var left, out var operatorToken, out var right);
243var newLeft = generator.Negate(generatorInternal, left, semanticModel, cancellationToken);
244var newRight = generator.Negate(generatorInternal, right, semanticModel, cancellationToken);
246var newPattern =
258private static SyntaxNode GetNegationOfIsPatternExpression(SyntaxNode isExpression, SyntaxGenerator generator, SyntaxGeneratorInternal generatorInternal, SemanticModel semanticModel, CancellationToken cancellationToken)
263syntaxFacts.GetPartsOfIsPatternExpression(isExpression, out var left, out var isToken, out var pattern);
265SyntaxNode? negatedPattern = null;
287var type = syntaxFacts.GetTypeOfTypePattern(negatedPattern);
300private static SyntaxNode GetNegationOfRelationalPattern(
301SyntaxNode expressionNode,
312syntaxFacts.GetPartsOfRelationalPattern(expressionNode, out var operatorToken, out var expression);
327private static bool IsLegalPattern(ISyntaxFacts syntaxFacts, SyntaxNode pattern, bool designatorsLegal)
332syntaxFacts.GetPartsOfBinaryPattern(pattern, out var left, out _, out var right);
342syntaxFacts.GetPartsOfUnaryPattern(pattern, out _, out var subPattern);
354syntaxFacts.GetPartsOfParenthesizedPattern(pattern, out _, out var subPattern, out _);
360syntaxFacts.GetPartsOfDeclarationPattern(pattern, out _, out var designator);
366syntaxFacts.GetPartsOfRecursivePattern(pattern, out _, out _, out _, out var designator);
376private static SyntaxNode NegateRelational(
379SyntaxNode leftOperand,
381SyntaxNode rightOperand)
467private static SyntaxNode GetNegationOfLiteralExpression(
468SyntaxNode expression,
476SyntaxNode newLiteralExpression;
497private static SyntaxNode GetNegationOfConstantPattern(
498SyntaxNode pattern,
510var expression = syntaxFacts.GetExpressionOfConstantPattern(pattern);
522private static SyntaxNode GetNegationOfLogicalNotExpression(
523SyntaxNode expression,
527var operand = syntaxFacts.GetOperandOfPrefixUnaryExpression(expression);
533private static SyntaxNode GetNegationOfUnaryPattern(
534SyntaxNode pattern,
550private static SyntaxNode GetNegationOfNotPattern(
551SyntaxNode pattern,
558syntaxFacts.GetPartsOfUnaryPattern(pattern, out var opToken, out var subPattern);
564var type = syntaxFacts.GetTypeOfTypePattern(subPattern);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions.cs (47)
23public static SyntaxNode CreateThrowNotImplementedStatement(
30public static SyntaxNode CreateThrowNotImplementedExpression(
37private static SyntaxNode CreateNewNotImplementedException(SyntaxGenerator codeDefinitionFactory, Compilation compilation)
39var notImplementedExceptionTypeSyntax = compilation.NotImplementedExceptionType() is INamedTypeSymbol symbol
48public static ImmutableArray<SyntaxNode> CreateThrowNotImplementedStatementBlock(
52public static ImmutableArray<SyntaxNode> CreateArguments(
59private static SyntaxNode CreateArgument(
66public static SyntaxNode GetDefaultEqualityComparer(
73var typeExpression = equalityComparerType == null
88public static SyntaxNode IsPatternExpression(this SyntaxGeneratorInternal generator, SyntaxNode expression, SyntaxNode pattern)
94public static SyntaxNode GenerateDelegateThroughMemberStatement(
97var through = generator.MemberAccessExpression(
103var invocationExpression = generator.InvocationExpression(through, generator.CreateArguments(method.Parameters));
109public static SyntaxNode CreateDelegateThroughExpression(
112var name = generator.IdentifierName(throughMember.Name);
113var through = throughMember.IsStatic
159var explicitImplementationCast = generator.CastExpression(
174static SyntaxNode GenerateContainerName(SyntaxGenerator factory, ISymbol throughMember)
183public static ImmutableArray<SyntaxNode> GetGetAccessorStatements(
193var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
194var expression = property.IsIndexer
222public static ImmutableArray<SyntaxNode> GetSetAccessorStatements(
232var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
233var expression = property.IsIndexer
335public static ImmutableArray<SyntaxNode> CreateAssignmentStatements(
345using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var nullCheckStatements);
346using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var assignStatements);
358var assignExpression = factory.AssignmentStatement(
361var statement = factory.ExpressionStatement(assignExpression);
371var fieldAccess = factory.MemberAccessExpression(factory.ThisExpression(), factory.IdentifierName(fieldName))
391SyntaxNode fieldAccess,
394ArrayBuilder<SyntaxNode> nullCheckStatements,
395ArrayBuilder<SyntaxNode> assignStatements)
426public static SyntaxNode CreateAssignWithNullCheckStatement(
427this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter, SyntaxNode fieldAccess)
436public static SyntaxNode CreateThrowArgumentNullExpression(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
439private static SyntaxNode CreateNewArgumentNullException(SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
448public static SyntaxNode CreateNullCheckAndThrowStatement(
454var condition = factory.CreateNullCheckExpression(generatorInternal, semanticModel, parameter.Name);
455var throwStatement = factory.CreateThrowArgumentNullExceptionStatement(semanticModel.Compilation, parameter);
460public static SyntaxNode CreateNullCheckExpression(
463var identifier = factory.IdentifierName(identifierName);
464var nullExpr = factory.NullLiteralExpression();
465var condition = generatorInternal.SupportsPatterns(semanticModel.SyntaxTree.Options)
471public static SyntaxNode CreateThrowArgumentNullExceptionStatement(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Formatting\FormatterShared.cs (6)
26var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
30public SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
33public SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
36public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\AbstractAddImportsService.cs (65)
19where TCompilationUnitSyntax : SyntaxNode
20where TNamespaceDeclarationSyntax : SyntaxNode
21where TUsingOrAliasSyntax : SyntaxNode
22where TExternSyntax : SyntaxNode
25protected abstract SyntaxNode? GetAlias(TUsingOrAliasSyntax usingOrAlias);
26protected abstract ImmutableArray<SyntaxNode> GetGlobalImports(SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken);
27protected abstract SyntaxList<TUsingOrAliasSyntax> GetUsingsAndAliases(SyntaxNode node);
28protected abstract SyntaxList<TExternSyntax> GetExterns(SyntaxNode node);
43private bool HasAliases(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsAlias);
44private bool HasUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsSimpleUsing);
45private bool HasStaticUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsStaticUsing);
46private bool HasExterns(SyntaxNode node) => GetExterns(node).Any();
47private bool HasAnyImports(SyntaxNode node) => GetUsingsAndAliases(node).Any() || GetExterns(node).Any();
51SyntaxNode root,
52SyntaxNode? contextLocation,
53SyntaxNode import,
62private static ImmutableArray<SyntaxNode> GetAllContainers(SyntaxNode root, SyntaxNode? contextLocation)
66var applicableContainer = GetFirstApplicableContainer(contextLocation);
67return [.. applicableContainer.GetAncestorsOrThis<SyntaxNode>()];
71SyntaxNode import, ImmutableArray<SyntaxNode> containers, ImmutableArray<SyntaxNode> globalImports)
73foreach (var node in containers)
86foreach (var node in globalImports)
97protected abstract bool IsEquivalentImport(SyntaxNode a, SyntaxNode b);
99public SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options)
103out var externContainer, out var usingContainer, out var staticUsingContainer, out var aliasContainer);
126public SyntaxNode AddImports(
128SyntaxNode root,
129SyntaxNode? contextLocation,
130IEnumerable<SyntaxNode> newImports,
147out var externContainer, out var usingContainer, out var aliasContainer, out var staticUsingContainer);
149var newRoot = Rewrite(
157protected abstract SyntaxNode Rewrite(
159SyntaxNode externContainer, SyntaxNode usingContainer, SyntaxNode staticUsingContainer, SyntaxNode aliasContainer,
160AddImportPlacementOptions options, SyntaxNode root, CancellationToken cancellationToken);
162private void GetContainers(SyntaxNode root, SyntaxNode contextLocation, AddImportPlacementOptions options, out SyntaxNode externContainer, out SyntaxNode usingContainer, out SyntaxNode staticUsingContainer, out SyntaxNode aliasContainer)
164var applicableContainer = GetFirstApplicableContainer(contextLocation);
165var contextSpine = applicableContainer.GetAncestorsOrThis<SyntaxNode>().ToImmutableArray();
170var fallbackNode = contextSpine.FirstOrDefault(HasAnyImports);
190private static SyntaxNode? GetFirstApplicableContainer(SyntaxNode contextNode)
194var node = usingDirective != null ? usingDirective.Parent! : contextNode;
196(SyntaxNode?)node.GetAncestorOrThis<TCompilationUnitSyntax>();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\IAddImportsService.cs (15)
23SemanticModel semanticModel, SyntaxNode root, SyntaxNode? contextLocation,
24SyntaxNode import, SyntaxGenerator generator, CancellationToken cancellationToken);
30SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options);
32SyntaxNode AddImports(
33SemanticModel semanticModel, SyntaxNode root, SyntaxNode? contextLocation,
34IEnumerable<SyntaxNode> newImports, SyntaxGenerator generator, AddImportPlacementOptions options, CancellationToken cancellationToken);
39public static SyntaxNode AddImport(
40this IAddImportsService service, SemanticModel semanticModel, SyntaxNode root,
41SyntaxNode contextLocation, SyntaxNode newImport, SyntaxGenerator generator, AddImportPlacementOptions options,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\AbstractSemanticFactsService.cs (37)
40SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
48SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
56SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
64SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
73SyntaxNode location,
74SyntaxNode? containerOpt,
82var container = containerOpt ?? location.AncestorsAndSelf().FirstOrDefault(
96protected virtual IEnumerable<ISymbol> GetCollidableSymbols(SemanticModel semanticModel, SyntaxNode location, SyntaxNode? container, CancellationToken cancellationToken)
180public bool IsWrittenTo(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
183public bool IsOnlyWrittenTo(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
186public bool IsInOutContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
189public bool IsInRefContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
192public bool IsInInContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
195public bool CanReplaceWithRValue(SemanticModel semanticModel, SyntaxNode? expression, CancellationToken cancellationToken)
204public bool TryGetSpeculativeSemanticModel(SemanticModel oldSemanticModel, SyntaxNode oldNode, SyntaxNode newNode, [NotNullWhen(true)] out SemanticModel? speculativeModel)
210public ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode forEachStatement)
213public SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
216public IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node)
219public ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node)
222public ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node)
228public IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken)
231public IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argumentNode, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
234public IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argumentNode, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
237public ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
240public ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
243public ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken)
246public bool IsInsideNameOfExpression(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
252public bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, INamedTypeSymbol? expressionTypeOpt, CancellationToken cancellationToken)
255public string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken)
258public IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node)
264public CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\ISemanticFactsService.cs (11)
27SemanticModel semanticModel, SyntaxNode location,
28SyntaxNode? container, string baseName, CancellationToken cancellationToken);
31SemanticModel semanticModel, SyntaxNode location,
32SyntaxNode? container, string baseName, IEnumerable<string> usedNames, CancellationToken cancellationToken);
34SyntaxToken GenerateUniqueName(SemanticModel semanticModel, SyntaxNode location, SyntaxNode? container, string baseName,
38SemanticModel semanticModel, SyntaxNode location,
39SyntaxNode? container, string baseName, CancellationToken cancellationToken);
42SemanticModel semanticModel, SyntaxNode location,
43SyntaxNode? container, string baseName, IEnumerable<string> usedNames, CancellationToken cancellationToken);
47IMethodSymbol? TryGetDisposeMethod(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\SemanticModelReuse\AbstractSemanticModelReuseLanguageService.cs (20)
22where TMemberDeclarationSyntax : SyntaxNode
24where TAccessorDeclarationSyntax : SyntaxNode
32public abstract SyntaxNode? TryGetContainingMethodBodyForSpeculation(SyntaxNode node);
34protected abstract SemanticModel? TryGetSpeculativeSemanticModelWorker(SemanticModel previousSemanticModel, SyntaxNode previousBodyNode, SyntaxNode currentBodyNode);
49public async Task<SemanticModel?> TryGetSpeculativeSemanticModelAsync(SemanticModel previousSemanticModel, SyntaxNode currentBodyNode, CancellationToken cancellationToken)
66var previousRoot = await previousSemanticModel.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
67var currentRoot = await currentBodyNode.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
68var previousBodyNode = GetPreviousBodyNode(previousRoot, currentRoot, currentBodyNode);
90protected SyntaxNode? GetPreviousBodyNode(SyntaxNode previousRoot, SyntaxNode currentRoot, SyntaxNode currentBodyNode)
98var previousContainer = GetPreviousBodyNode(previousRoot, currentRoot, currentContainer);
124var previousNode = previousRoot;
136var childAsNode = children[childIndex].AsNode();
150private static void GetNodeChildIndexPathToRootReversed(SyntaxNode node, ArrayBuilder<int> path)
152var current = node;
153var parent = current.Parent;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Simplification\AbstractSimplificationService.cs (30)
30where TCompilationUnitSyntax : SyntaxNode
31where TExpressionSyntax : SyntaxNode
32where TStatementSyntax : SyntaxNode
33where TCrefSyntax : SyntaxNode
35protected static readonly Func<SyntaxNode, bool> s_containsAnnotations = n => n.ContainsAnnotations;
40protected abstract ImmutableArray<NodeOrTokenToReduce> GetNodesAndTokensToReduce(SyntaxNode root, Func<SyntaxNodeOrToken, bool> isNodeOrTokenOutsideSimplifySpans);
41protected abstract SemanticModel GetSpeculativeSemanticModel(ref SyntaxNode nodeToSpeculate, SemanticModel originalSemanticModel, SyntaxNode originalNode);
42protected abstract bool NodeRequiresNonSpeculativeSemanticModel(SyntaxNode node);
43protected abstract void AddImportDeclarations(TCompilationUnitSyntax root, ArrayBuilder<SyntaxNode> importDeclarations);
48protected virtual SyntaxNode TransformReducedNode(SyntaxNode reducedNode, SyntaxNode originalNode)
51public abstract SyntaxNode Expand(SyntaxNode node, SemanticModel semanticModel, SyntaxAnnotation? annotationForReplacedAliasIdentifier, Func<SyntaxNode, bool>? expandInsideNode, bool expandParameter, CancellationToken cancellationToken);
52public abstract SyntaxToken Expand(SyntaxToken token, SemanticModel semanticModel, Func<SyntaxNode, bool>? expandInsideNode, CancellationToken cancellationToken);
115var reducedNodesMap = new ConcurrentDictionary<SyntaxNode, SyntaxNode>();
152SyntaxNode root,
156ConcurrentDictionary<SyntaxNode, SyntaxNode> reducedNodesMap,
218var replacedParent = isNode
232var currentNode = currentNodeOrToken.AsNode()!;
237var newRoot = root.ReplaceNode(nodeOrToken.AsNode()!, currentNode.WithAdditionalAnnotations(marker));
285using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var importDeclarations);
300var root = await model.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
302var unusedImports = new HashSet<SyntaxNode>();
311var newRoot = gen.RemoveNodes(root, unusedImports);
320protected abstract void GetUnusedNamespaceImports(SemanticModel model, HashSet<SyntaxNode> namespaceImports, CancellationToken cancellationToken);
src\roslyn\src\Analyzers\Core\Analyzers\AddAccessibilityModifiers\IAddAccessibilityModifiersService.cs (1)
19SyntaxNode member,
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnnecessarySuppressions\AbstractRemoveUnnecessaryPragmaSuppressionsDiagnosticAnalyzer.cs (23)
49protected abstract bool ContainsPragmaDirective(SyntaxNode root);
127var root = tree.GetRoot(cancellationToken);
166using var _5 = PooledDictionary<string, List<SyntaxNode>>.GetInstance(out var idToSuppressMessageAttributesMap);
167using var _6 = PooledDictionary<SyntaxNode, bool>.GetInstance(out var suppressMessageAttributesToIsUsedMap);
210foreach (var attributeNode in attributeNodes)
226SyntaxNode root,
251foreach (var errorCodeNode in errorCodeNodes)
297SyntaxNode idNode,
391SyntaxNode root,
512PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
513PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
586PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
587PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
596var attributeNode = await attribute.ApplicationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
597foreach (var node in suppressMessageAttributesForId)
611PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
663PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
733SyntaxNode root,
736PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
737PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
749using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(discardLargeInstances: false, out var declarationNodes);
755foreach (var node in declarationNodes)
819var attributeNode = await attribute.ApplicationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
src\roslyn\src\Analyzers\Core\Analyzers\SimplifyTypeNames\SimplifyTypeNamesDiagnosticAnalyzerBase.cs (8)
64internal abstract bool IsCandidate(SyntaxNode node);
66SemanticModel model, SyntaxNode node, TSimplifierOptions options,
96protected abstract bool IsIgnoredCodeBlock(SyntaxNode codeBlock);
97protected abstract ImmutableArray<Diagnostic> AnalyzeCodeBlock(CodeBlockAnalysisContext context, SyntaxNode root);
98protected abstract ImmutableArray<Diagnostic> AnalyzeSemanticModel(SemanticModelAnalysisContext context, SyntaxNode root, TextSpanMutableIntervalTree? codeBlockIntervalTree);
100public bool TrySimplify(SemanticModel model, SyntaxNode node, [NotNullWhen(true)] out Diagnostic? diagnostic, TSimplifierOptions options, AnalyzerOptions analyzerOptions, CancellationToken cancellationToken)
223var root = context.GetAnalysisRoot(findInTrivia: true);
279var root = context.GetAnalysisRoot(findInTrivia: true);
src\roslyn\src\Analyzers\Core\Analyzers\UseAutoProperty\AbstractUseAutoPropertyAnalyzer.cs (27)
38where TPropertyDeclaration : SyntaxNode
39where TConstructorDeclaration : SyntaxNode
40where TFieldDeclaration : SyntaxNode
41where TVariableDeclarator : SyntaxNode
42where TExpression : SyntaxNode
49private static readonly ObjectPool<ConcurrentSet<SyntaxNode>> s_nodeSetPool = new(() => []);
51private static readonly ObjectPool<ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>>> s_fieldToUsageLocationPool = new(() => []);
58protected static void AddFieldUsage(ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites, IFieldSymbol field, SyntaxNode location)
61private static void ClearAndFree(ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> multiMap)
89protected abstract SyntaxNode GetFieldNode(TFieldDeclaration fieldDeclaration, TVariableDeclarator variableDeclarator);
94HashSet<string> fieldNames, ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> ineligibleFieldUsageIfOutsideProperty, SemanticModel semanticModel, SyntaxNode codeBlock, CancellationToken cancellationToken);
202var analysisRoot = context.GetAnalysisRoot(findInTrivia: false);
203foreach (var node in analysisRoot.DescendantNodes())
212if (!shouldAnalyze && analysisRoot.FirstAncestorOrSelf<SyntaxNode>(node => node is TPropertyDeclaration or TFieldDeclaration) == null)
222ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldReads,
223ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites,
225SyntaxNode codeBlock,
538ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> ineligibleFieldUsageIfOutsideProperty,
539ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldReads,
540ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites,
625static bool NotWithinProperty(IEnumerable<SyntaxNode> nodes, TPropertyDeclaration propertyDeclaration)
627foreach (var node in nodes)
636static IEnumerable<SyntaxNode> NonConstructorLocations(IEnumerable<SyntaxNode> nodes)
643var fieldNode = GetFieldNode(result.FieldDeclaration, variableDeclarator);
src\roslyn\src\Analyzers\Core\Analyzers\UseCompoundAssignment\UseCompoundAssignmentUtilities.cs (7)
41ISyntaxFacts syntaxFacts, SyntaxNode expr, SemanticModel semanticModel, CancellationToken cancellationToken)
47ISyntaxFacts syntaxFacts, SyntaxNode expr, SemanticModel semanticModel,
73out _, out var expression, out _);
81out var subExpr, out _);
89out var expression, out var whenNotNull);
99SyntaxNode expr, SemanticModel semanticModel, bool isTopLevel, CancellationToken cancellationToken)
src\roslyn\src\Analyzers\Core\Analyzers\UseNullPropagation\AbstractUseNullPropagationDiagnosticAnalyzer.cs (13)
55where TExpressionSyntax : SyntaxNode
56where TStatementSyntax : SyntaxNode
113public (TExpressionSyntax conditionalPart, SyntaxNode whenPart)? GetPartsOfConditionalExpression(
162conditionalExpression, out var condition, out var whenTrue, out var whenFalse);
303syntaxFacts.GetPartsOfBinaryExpression(condition, out var conditionLeft, out var conditionRight);
324var expression = syntaxFacts.GetExpressionOfInvocationExpression(invocation);
325var nameNode = syntaxFacts.IsIdentifierName(expression)
417syntaxFacts.GetPartsOfCastExpression(node, out var type, out var expression);
446syntaxFacts.GetPartsOfAssignmentExpressionOrStatement(node, out var left, out _, out _);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\AnalysisContextExtensions.cs (10)
149public static SyntaxNode GetAnalysisRoot(this SyntaxTreeAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
155public static SyntaxNode GetAnalysisRoot(this SemanticModelAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
163public static SyntaxNode GetAnalysisRoot(this SymbolStartAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
175public static SyntaxNode GetAnalysisRoot(this SymbolAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
185public static SyntaxNode GetAnalysisRoot(this OperationBlockStartAnalysisContext context, IOperation operationBlock, bool findInTrivia, bool getInnermostNodeForTie = false)
191public static SyntaxNode GetAnalysisRoot(this OperationBlockAnalysisContext context, IOperation operationBlock, bool findInTrivia, bool getInnermostNodeForTie = false)
197public static SyntaxNode GetAnalysisRoot(this OperationAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
203public static SyntaxNode GetAnalysisRoot(this SyntaxNodeAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
209public static SyntaxNode GetAnalysisRoot<TSyntaxKind>(this CodeBlockStartAnalysisContext<TSyntaxKind> context, bool findInTrivia, bool getInnermostNodeForTie = false) where TSyntaxKind : struct
215public static SyntaxNode GetAnalysisRoot(this CodeBlockAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SemanticModelExtensions.cs (14)
36public static DataFlowAnalysis AnalyzeRequiredDataFlow(this SemanticModel semanticModel, SyntaxNode statementOrExpression)
39public static DataFlowAnalysis AnalyzeRequiredDataFlow(this SemanticModel semanticModel, SyntaxNode firstStatement, SyntaxNode lastStatement)
42public static ControlFlowAnalysis AnalyzeRequiredControlFlow(this SemanticModel semanticModel, SyntaxNode statement)
45public static ControlFlowAnalysis AnalyzeRequiredControlFlow(this SemanticModel semanticModel, SyntaxNode firstStatement, SyntaxNode lastStatement)
48public static ISymbol GetRequiredDeclaredSymbol(this SemanticModel semanticModel, SyntaxNode declaration, CancellationToken cancellationToken)
54public static IOperation GetRequiredOperation(this SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
108this SemanticModel semanticModel, SyntaxNode? container, CancellationToken cancellationToken, Func<SyntaxNode, bool>? descendInto = null)
112using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var stack);
115while (stack.TryPop(out var current))
126if (child.AsNode(out var childNode) &&
215SyntaxNode expression,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxNodeExtensions.cs (127)
23public static SyntaxNode GetRequiredParent(this SyntaxNode node)
26public static IEnumerable<SyntaxNodeOrToken> DepthFirstTraversal(this SyntaxNode node)
29public static IEnumerable<SyntaxNode> DepthFirstTraversalNodes(this SyntaxNode node)
32public static IEnumerable<SyntaxNode> GetAncestors(this SyntaxNode node)
34var current = node.Parent;
44public static IEnumerable<TNode> GetAncestors<TNode>(this SyntaxNode node)
45where TNode : SyntaxNode
47var current = node.Parent;
59public static TNode? GetAncestor<TNode>(this SyntaxNode node)
60where TNode : SyntaxNode
62var current = node.Parent;
76public static TNode? GetAncestorOrThis<TNode>(this SyntaxNode? node)
77where TNode : SyntaxNode
82public static IEnumerable<TNode> GetAncestorsOrThis<TNode>(this SyntaxNode? node)
83where TNode : SyntaxNode
85var current = node;
97public static bool HasAncestor<TNode>(this SyntaxNode node)
98where TNode : SyntaxNode
104this SyntaxNode node, TextSpan searchSpan, Func<SyntaxNode, bool> predicate)
105where TSyntaxNode : SyntaxNode
109var nodes = new LinkedList<SyntaxNode>();
114var currentNode = nodes.First!.Value;
129public static bool CheckParent<T>([NotNullWhen(returnValue: true)] this SyntaxNode? node, Func<T, bool> valueChecker) where T : SyntaxNode
145public static bool IsChildNode<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
146where TParent : SyntaxNode
154var ancestorNode = childGetter(ancestor);
162public static bool IsFoundUnder<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
163where TParent : SyntaxNode
171var child = childGetter(ancestor);
174return node.GetAncestorsOrThis<SyntaxNode>().Contains(child);
177public static SyntaxNode GetCommonRoot(this SyntaxNode node1, SyntaxNode node2)
183using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var set);
184set.AddRange(node2.GetAncestorsOrThis<SyntaxNode>());
186foreach (var ancestor in node1.AncestorsAndSelf())
195public static int Width(this SyntaxNode node)
198public static int FullWidth(this SyntaxNode node)
201public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes, Func<SyntaxNode, bool> predicate)
204public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes)
214using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var commonAncestorsStack);
215using var _2 = PooledHashSet<SyntaxNode>.GetInstance(out var commonAncestorsSet);
218foreach (var node in nodes)
225foreach (var ancestor in node.ValueAncestorsAndSelf())
239var commonAncestor = FindCommonAncestor(node, commonAncestorsSet);
281static SyntaxNode? FindCommonAncestor(SyntaxNode node, HashSet<SyntaxNode> commonAncestorsSet)
283foreach (var ancestor in node.ValueAncestorsAndSelf())
293public static TSyntaxNode? FindInnermostCommonNode<TSyntaxNode>(this IEnumerable<SyntaxNode> nodes) where TSyntaxNode : SyntaxNode
296public static TextSpan GetContainedSpan(this IEnumerable<SyntaxNode> nodes)
302foreach (var node in nodes)
312public static bool OverlapsHiddenPosition(this SyntaxNode node, CancellationToken cancellationToken)
315public static bool OverlapsHiddenPosition(this SyntaxNode node, TextSpan span, CancellationToken cancellationToken)
318public static bool OverlapsHiddenPosition(this SyntaxNode declaration, SyntaxNode startNode, SyntaxNode endNode, CancellationToken cancellationToken)
327public static IEnumerable<T> GetAnnotatedNodes<T>(this SyntaxNode node, SyntaxAnnotation syntaxAnnotation) where T : SyntaxNode
341IEnumerable<SyntaxNode> nodes,
342Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>> computeReplacementAsync,
343CancellationToken cancellationToken) where TRootNode : SyntaxNode
365CancellationToken cancellationToken) where TRootNode : SyntaxNode
378CancellationToken cancellationToken) where TRoot : SyntaxNode
389IEnumerable<SyntaxNode>? nodes,
390Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>>? computeReplacementNodeAsync,
396where TRoot : SyntaxNode
403var nodeReplacements = new Dictionary<SyntaxNode, SyntaxNode>();
439if (nodesToReplace.TryGetValue(span, out var currentNode))
441var original = (SyntaxNode?)retryAnnotations.GetAnnotations(currentNode).SingleOrDefault() ?? currentNode;
442var newNode = await computeReplacementNodeAsync!(original, currentNode, cancellationToken).ConfigureAwait(false);
472if (rewritten != original || !nodeReplacements.TryGetValue(original, out var replaced))
598SyntaxNode root,
615this SyntaxNode root,
654this SyntaxNode root,
691params SyntaxTrivia[] trivia) where T : SyntaxNode
703SyntaxTriviaList trivia) where T : SyntaxNode
715IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
725params SyntaxTrivia[] trivia) where T : SyntaxNode
737SyntaxTriviaList trivia) where T : SyntaxNode
749IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
760IEnumerable<SyntaxTrivia> trailingTrivia) where T : SyntaxNode
785public static SyntaxNode FindNode(this SyntaxNode root, TextSpan? span, bool findInTrivia, bool getInnermostNodeForTie)
793public static SyntaxNode? GetParent(this SyntaxNode node, bool ascendOutOfTrivia)
795var parent = node.Parent;
807public static TNode? FirstAncestorOrSelfUntil<TNode>(this SyntaxNode? node, Func<SyntaxNode, bool> predicate)
808where TNode : SyntaxNode
810for (var current = node; current != null; current = current.GetParent(ascendOutOfTrivia: true))
827SyntaxNode root,
830where TDirectiveTriviaSyntax : SyntaxNode
836where TDirectiveTriviaSyntax : SyntaxNode
856SyntaxNode root,
944public static SyntaxTriviaList GetLeadingTriviaIncludingMissingTokens(this SyntaxNode node)
960public static SyntaxTriviaList GetTrailingTriviaIncludingMissingTokens(this SyntaxNode node)
979public static SyntaxNode WithLeadingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
984public static SyntaxNode WithTrailingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
989public static SyntaxNode WithTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
998public static ValueAncestorsAndSelfEnumerable ValueAncestorsAndSelf(this SyntaxNode syntaxNode, bool ascendOutOfTrivia = true)
1001public readonly struct ValueAncestorsAndSelfEnumerable(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1006public struct Enumerator(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1008public SyntaxNode Current { get; private set; } = null!;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxTokenExtensions.cs (12)
15public static SyntaxNode? GetAncestor(this SyntaxToken token, Func<SyntaxNode, bool>? predicate)
16=> token.GetAncestor<SyntaxNode>(predicate);
18public static T? GetAncestor<T>(this SyntaxToken token, Func<T, bool>? predicate = null) where T : SyntaxNode
21public static T GetRequiredAncestor<T>(this SyntaxToken token, Func<T, bool>? predicate = null) where T : SyntaxNode
25where T : SyntaxNode
32public static IEnumerable<SyntaxNode> GetAncestors(this SyntaxToken token, Func<SyntaxNode, bool> predicate)
39public static SyntaxNode GetCommonRoot(this SyntaxToken token1, SyntaxToken token2)
42public static bool CheckParent<T>(this SyntaxToken token, Func<T, bool> valueChecker) where T : SyntaxNode
58public static SyntaxToken FindTokenFromEnd(this SyntaxNode root, int position, bool includeZeroWidth = true, bool findInsideTrivia = false)
153public static SyntaxNode GetRequiredParent(this SyntaxToken token)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\AbstractSyntaxFormatting.cs (3)
28protected abstract IFormattingResult CreateAggregatedFormattingResult(SyntaxNode node, IList<AbstractFormattingResult> results, TextSpanMutableIntervalTree? formattingSpans = null);
30protected abstract AbstractFormattingResult Format(SyntaxNode node, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, SyntaxToken startToken, SyntaxToken endToken, CancellationToken cancellationToken);
32public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\BaseIndentationFormattingRule.cs (7)
19private readonly SyntaxNode? _commonNode;
22public BaseIndentationFormattingRule(SyntaxNode root, TextSpan span, int baseIndentation, AbstractFormattingRule? vbHelperFormattingRule = null)
31public override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
54private void AddNextIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
133private static void SetInnermostNodeForSpan(SyntaxNode root, ref TextSpan span, out SyntaxToken token1, out SyntaxToken token2, out SyntaxNode? commonNode)
149private static void GetTokens(SyntaxNode root, TextSpan span, out SyntaxToken token1, out SyntaxToken token2)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\CompatAbstractFormattingRule.cs (8)
17public sealed override void AddSuppressOperations(ArrayBuilder<SuppressOperation> list, SyntaxNode node, in NextSuppressOperationAction nextOperation)
25public sealed override void AddAnchorIndentationOperations(List<AnchorIndentationOperation> list, SyntaxNode node, in NextAnchorIndentationOperationAction nextOperation)
33public sealed override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
41public sealed override void AddAlignTokensOperations(List<AlignTokensOperation> list, SyntaxNode node, in NextAlignTokensOperationAction nextOperation)
72public virtual void AddSuppressOperationsSlow(ArrayBuilder<SuppressOperation> list, SyntaxNode node, ref NextSuppressOperationAction nextOperation)
78public virtual void AddAnchorIndentationOperationsSlow(List<AnchorIndentationOperation> list, SyntaxNode node, ref NextAnchorIndentationOperationAction nextOperation)
84public virtual void AddIndentBlockOperationsSlow(List<IndentBlockOperation> list, SyntaxNode node, ref NextIndentBlockOperationAction nextOperation)
90public virtual void AddAlignTokensOperationsSlow(List<AlignTokensOperation> list, SyntaxNode node, ref NextAlignTokensOperationAction nextOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAlignTokensOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAnchorIndentationOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextIndentBlockOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextSuppressOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\HeaderFacts\AbstractHeaderFacts.cs (29)
19public abstract bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
20public abstract bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration);
21public abstract bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter);
22public abstract bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method);
23public abstract bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction);
24public abstract bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration);
25public abstract bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement);
26public abstract bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement);
27public abstract bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement);
29public bool IsOnHeader(SyntaxNode root, int position, SyntaxNode ownerOfHeader, SyntaxNodeOrToken lastTokenOrNodeOfHeader)
30=> IsOnHeader(root, position, ownerOfHeader, lastTokenOrNodeOfHeader, ImmutableArray<SyntaxNode>.Empty);
33SyntaxNode root,
35SyntaxNode ownerOfHeader,
38where THoleSyntax : SyntaxNode
75protected TNode? TryGetAncestorForLocation<TNode>(SyntaxNode root, int position, out SyntaxNode? untypedResult) where TNode : SyntaxNode
97protected int GetStartOfNodeExcludingAttributes(SyntaxNode root, SyntaxNode node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\HeaderFacts\IHeaderFacts.cs (18)
16bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
18bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration);
19bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter);
20bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method);
21bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction);
22bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration);
23bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement);
24bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement);
25bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\RefactoringHelpers\AbstractRefactoringHelpers.cs (62)
18where TExpressionSyntax : SyntaxNode
19where TArgumentSyntax : SyntaxNode
20where TExpressionStatementSyntax : SyntaxNode
25public abstract bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
27private static void AddNode<TSyntaxNode>(bool allowEmptyNodes, ref TemporaryArray<TSyntaxNode> result, TSyntaxNode node) where TSyntaxNode : SyntaxNode
60SourceText sourceText, SyntaxNode root, TextSpan selectionRaw, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
160private static bool IsWantedTypeExpressionLike<TSyntaxNode>() where TSyntaxNode : SyntaxNode
179SourceText sourceText, SyntaxNode root, int location)
286CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
293var leftNode = tokenToLeft.Parent;
320SyntaxNode root,
325CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
331var rightNode = tokenToRightOrIn.Parent;
365SyntaxNode root,
370CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
372var selectionNode = root.FindNode(selectionTrimmed, getInnermostNodeForTie: true);
373var prevNode = selectionNode;
411protected virtual IEnumerable<SyntaxNode> ExtractNodesSimple(SyntaxNode? node, ISyntaxFacts syntaxFacts)
429var localDeclarationStatement = syntaxFacts.IsLocalDeclarationStatement(node) ? node : node.Parent!;
439var declaredVariable = variables.First();
445var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(declaredVariable);
448var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
461var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(node);
464var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
476syntaxFacts.GetPartsOfAssignmentExpressionOrStatement(node, out _, out _, out var rightSide);
498protected virtual IEnumerable<SyntaxNode> ExtractNodesInHeader(SyntaxNode root, int location, IHeaderFacts headerFacts)
501if (headerFacts.IsOnPropertyDeclarationHeader(root, location, out var propertyDeclaration))
505if (headerFacts.IsOnParameterHeader(root, location, out var parameter))
509if (headerFacts.IsOnMethodHeader(root, location, out var method))
513if (headerFacts.IsOnLocalFunctionHeader(root, location, out var localFunction))
517if (headerFacts.IsOnLocalDeclarationHeader(root, location, out var localDeclaration))
521if (headerFacts.IsOnIfStatementHeader(root, location, out var ifStatement))
525if (headerFacts.IsOnForeachHeader(root, location, out var foreachStatement))
528if (headerFacts.IsOnTypeHeader(root, location, out var typeDeclaration))
534SyntaxNode root,
539CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
546var ancestor = token.Parent;
572IEnumerable<SyntaxNode> nodes, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
574foreach (var node in nodes)
586public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
589public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
592public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
595public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
598public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
601public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
604public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
607public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
610public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFacts.cs (24)
52bool IsWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
59bool IsOnlyWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
60bool IsInOutContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
61bool IsInRefContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
62bool IsInInContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
64bool CanReplaceWithRValue(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? expression, CancellationToken cancellationToken);
73bool TryGetSpeculativeSemanticModel(SemanticModel oldSemanticModel, SyntaxNode oldNode, SyntaxNode newNode, [NotNullWhen(true)] out SemanticModel? speculativeModel);
80ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode forEachStatement);
81SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
83IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node);
85ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node);
87ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node);
91IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken);
93IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
94IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
96ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
97ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
99ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken);
101bool IsInsideNameOfExpression(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
108bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, [NotNullWhen(true)] INamedTypeSymbol? expressionType, CancellationToken cancellationToken);
110string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken);
121IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node);
125CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFacts.cs (307)
122bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node);
123bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node, PredefinedType type);
173bool IsUsingOrExternOrImport([NotNullWhen(true)] SyntaxNode? node);
174bool IsGlobalAssemblyAttribute([NotNullWhen(true)] SyntaxNode? node);
175bool IsGlobalModuleAttribute([NotNullWhen(true)] SyntaxNode? node);
176bool IsDeclaration([NotNullWhen(true)] SyntaxNode? node);
178bool IsUsingAliasDirective([NotNullWhen(true)] SyntaxNode? node);
183bool IsPragmaDirective(SyntaxTrivia trivia, out bool isDisable, out bool isActive, out SeparatedSyntaxList<SyntaxNode> errorCodes);
186SyntaxNode? GetMatchingDirective(SyntaxNode directive, CancellationToken cancellationToken);
187ImmutableArray<SyntaxNode> GetMatchingConditionalDirectives(SyntaxNode directive, CancellationToken cancellationToken);
189bool IsDocumentationComment(SyntaxNode node);
196bool TryGetExternalSourceInfo([NotNullWhen(true)] SyntaxNode? directive, out ExternalSourceInfo info);
198bool IsDeclarationExpression([NotNullWhen(true)] SyntaxNode? node);
200bool IsConversionExpression([NotNullWhen(true)] SyntaxNode? node);
201bool IsCastExpression([NotNullWhen(true)] SyntaxNode? node);
203bool IsExpressionOfForeach([NotNullWhen(true)] SyntaxNode? node);
204SyntaxNode GetExpressionOfForeachStatement(SyntaxNode statement);
206void GetPartsOfTupleExpression<TArgumentSyntax>(SyntaxNode node,
207out SyntaxToken openParen, out SeparatedSyntaxList<TArgumentSyntax> arguments, out SyntaxToken closeParen) where TArgumentSyntax : SyntaxNode;
209bool IsVerbatimInterpolatedStringExpression([NotNullWhen(true)] SyntaxNode? node);
212bool IsLeftSideOfAssignment([NotNullWhen(true)] SyntaxNode? node);
214bool IsAnyAssignmentStatement([NotNullWhen(true)] SyntaxNode? statement);
215bool IsSimpleAssignmentStatement([NotNullWhen(true)] SyntaxNode? statement);
216void GetPartsOfAssignmentStatement(SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
217void GetPartsOfAssignmentExpressionOrStatement(SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
220bool IsLeftSideOfAnyAssignment([NotNullWhen(true)] SyntaxNode? node);
222bool IsLeftSideOfCompoundAssignment([NotNullWhen(true)] SyntaxNode? node);
223SyntaxNode GetRightHandSideOfAssignment(SyntaxNode node);
225bool IsInferredAnonymousObjectMemberDeclarator([NotNullWhen(true)] SyntaxNode? node);
226bool IsOperandOfIncrementExpression([NotNullWhen(true)] SyntaxNode? node);
227bool IsOperandOfIncrementOrDecrementExpression([NotNullWhen(true)] SyntaxNode? node);
229bool IsLeftSideOfDot([NotNullWhen(true)] SyntaxNode? node);
230SyntaxNode? GetRightSideOfDot(SyntaxNode? node);
244SyntaxNode? GetLeftSideOfDot(SyntaxNode? node, bool allowImplicitTarget = false);
246bool IsLeftSideOfExplicitInterfaceSpecifier([NotNullWhen(true)] SyntaxNode? node);
248bool IsNameOfSimpleMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
249bool IsNameOfAnyMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
250bool IsNameOfMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node);
259SyntaxNode? GetStandaloneExpression(SyntaxNode? node);
268SyntaxNode? GetRootConditionalAccessExpression(SyntaxNode? node);
277SyntaxNode? GetExpressionOfMemberAccessExpression(SyntaxNode node, bool allowImplicitTarget = false);
279SyntaxNode? GetTargetOfMemberBinding(SyntaxNode? node);
281SyntaxNode GetNameOfMemberBindingExpression(SyntaxNode node);
283bool IsPointerMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
285bool IsNamedArgument([NotNullWhen(true)] SyntaxNode? node);
286bool IsNameOfNamedArgument([NotNullWhen(true)] SyntaxNode? node);
287SyntaxNode? GetParameterList(SyntaxNode node);
288bool IsParameterList([NotNullWhen(true)] SyntaxNode? node);
292void GetPartsOfElementAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode argumentList);
294SyntaxNode GetExpressionOfArgument(SyntaxNode node);
295SyntaxNode GetExpressionOfAttributeArgument(SyntaxNode node);
296SyntaxNode GetExpressionOfInterpolation(SyntaxNode node);
298bool IsElementBindingExpression([NotNullWhen(true)] SyntaxNode? node);
299bool IsMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node);
300bool IsPostfixUnaryExpression([NotNullWhen(true)] SyntaxNode? node);
302SyntaxToken GetIdentifierOfSimpleName(SyntaxNode node);
303SyntaxToken GetIdentifierOfTypeDeclaration(SyntaxNode node);
304SyntaxToken GetIdentifierOfVariableDeclarator(SyntaxNode node);
305SyntaxNode GetTypeOfVariableDeclarator(SyntaxNode node);
311bool IsSimpleArgument([NotNullWhen(true)] SyntaxNode? node);
312bool IsArgument([NotNullWhen(true)] SyntaxNode? node);
313bool IsAttributeArgument([NotNullWhen(true)] SyntaxNode? node);
314RefKind GetRefKindOfArgument(SyntaxNode node);
316void GetNameAndArityOfSimpleName(SyntaxNode node, out string name, out int arity);
317bool LooksGeneric(SyntaxNode simpleName);
319SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(SyntaxNode? genericName);
321SyntaxList<SyntaxNode> GetContentsOfInterpolatedString(SyntaxNode interpolatedString);
323SeparatedSyntaxList<SyntaxNode> GetArgumentsOfObjectCreationExpression(SyntaxNode node);
324SeparatedSyntaxList<SyntaxNode> GetArgumentsOfArgumentList(SyntaxNode node);
325SeparatedSyntaxList<SyntaxNode> GetArgumentsOfAttributeArgumentList(SyntaxNode node);
327bool IsUsingDirectiveName([NotNullWhen(true)] SyntaxNode? node);
330SyntaxList<SyntaxNode> GetAttributeLists(SyntaxNode? node);
331SeparatedSyntaxList<SyntaxNode> GetAttributesOfAttributeList(SyntaxNode node);
333bool IsAttributeNamedArgumentIdentifier([NotNullWhen(true)] SyntaxNode? node);
334bool IsMemberInitializerNamedAssignmentIdentifier([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? initializedInstance);
335bool IsAnonymousObjectMemberDeclaratorNameIdentifier([NotNullWhen(true)] SyntaxNode? node);
336bool IsAnyInitializerExpression([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? creationExpression);
338bool IsDirective([NotNullWhen(true)] SyntaxNode? node);
339bool IsStatement([NotNullWhen(true)] SyntaxNode? node);
340bool IsExecutableStatement([NotNullWhen(true)] SyntaxNode? node);
341bool IsGlobalStatement([NotNullWhen(true)] SyntaxNode? node);
342SyntaxNode GetStatementOfGlobalStatement(SyntaxNode node);
344bool IsDeconstructionAssignment([NotNullWhen(true)] SyntaxNode? node);
345bool IsDeconstructionForEachStatement([NotNullWhen(true)] SyntaxNode? node);
346bool IsUsingLocalDeclarationStatement(SyntaxNode node);
360bool IsMethodBody([NotNullWhen(true)] SyntaxNode? node);
362bool IsDeclaratorOfLocalDeclarationStatement(SyntaxNode declarator, SyntaxNode localDeclarationStatement);
363SeparatedSyntaxList<SyntaxNode> GetVariablesOfLocalDeclarationStatement(SyntaxNode node);
364SyntaxNode? GetInitializerOfVariableDeclarator(SyntaxNode node);
365SyntaxNode? GetInitializerOfPropertyDeclaration(SyntaxNode node);
369bool HasImplicitBaseConstructorInitializer(SyntaxNode constructorDeclaration);
372bool IsElementAccessExpression([NotNullWhen(true)] SyntaxNode? node);
390bool IsInStaticContext(SyntaxNode node);
391bool IsUnsafeContext(SyntaxNode node);
393bool IsInNamespaceOrTypeContext([NotNullWhen(true)] SyntaxNode? node);
395bool IsBaseTypeList([NotNullWhen(true)] SyntaxNode? node);
397bool IsInConstantContext([NotNullWhen(true)] SyntaxNode? node);
398bool IsInConstructor(SyntaxNode node);
399bool IsMethodLevelMember([NotNullWhen(true)] SyntaxNode? node);
400bool IsTopLevelNodeWithMembers([NotNullWhen(true)] SyntaxNode? node);
403bool AreEquivalent(SyntaxNode? node1, SyntaxNode? node2);
405string GetDisplayName(SyntaxNode? node, DisplayNameOptions options, string? rootNamespace = null);
408SyntaxNode? GetContainingTypeDeclaration(SyntaxNode root, int position);
409SyntaxNode? GetContainingMemberDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
410SyntaxNode? GetContainingMethodDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
411SyntaxNode? GetContainingVariableDeclaratorOfFieldDeclaration(SyntaxNode? node);
415SyntaxNode? ConvertToSingleLine(SyntaxNode? node, bool useElasticTrivia = false);
418void AddTopLevelAndMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
420void AddTopLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
422void AddMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
424SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(SyntaxNode typeDeclaration);
425SyntaxList<SyntaxNode> GetMembersOfNamespaceDeclaration(SyntaxNode typeDeclaration);
426SyntaxList<SyntaxNode> GetMembersOfTypeDeclaration(SyntaxNode typeDeclaration);
432/// Given a <see cref="SyntaxNode"/>, return the <see cref="TextSpan"/> representing the span of the member body
438TextSpan GetMemberBodySpanForSpeculativeBinding(SyntaxNode node);
446SyntaxNode? TryGetBindableParent(SyntaxToken token);
449/// Given a <see cref="SyntaxNode"/>, that represents and argument return the string representation of
453string GetNameForArgument(SyntaxNode? argument);
456/// Given a <see cref="SyntaxNode"/>, that represents an attribute argument return the string representation of
460string GetNameForAttributeArgument(SyntaxNode? argument);
462bool IsNameOfSubpattern([NotNullWhen(true)] SyntaxNode? node);
463bool IsPropertyPatternClause(SyntaxNode node);
465bool IsAnyPattern([NotNullWhen(true)] SyntaxNode? node);
466bool IsBinaryPattern([NotNullWhen(true)] SyntaxNode? node);
467bool IsUnaryPattern([NotNullWhen(true)] SyntaxNode? node);
469SyntaxNode GetExpressionOfConstantPattern(SyntaxNode node);
470SyntaxNode GetTypeOfTypePattern(SyntaxNode node);
472void GetPartsOfParenthesizedPattern(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode pattern, out SyntaxToken closeParen);
473void GetPartsOfBinaryPattern(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
474void GetPartsOfDeclarationPattern(SyntaxNode node, out SyntaxNode type, out SyntaxNode designation);
475void GetPartsOfRecursivePattern(SyntaxNode node, out SyntaxNode? type, out SyntaxNode? positionalPart, out SyntaxNode? propertyPart, out SyntaxNode? designation);
476void GetPartsOfRelationalPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode expression);
477void GetPartsOfUnaryPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode pattern);
481SyntaxTokenList GetModifiers(SyntaxNode? node);
485SyntaxNode? WithModifiers(SyntaxNode? node, SyntaxTokenList modifiers);
488Location GetDeconstructionReferenceLocation(SyntaxNode node);
493bool IsParameterNameXmlElementSyntax([NotNullWhen(true)] SyntaxNode? node);
495SyntaxList<SyntaxNode> GetContentFromDocumentationCommentTriviaSyntax(SyntaxTrivia trivia);
501bool IsAnonymousFunctionExpression([NotNullWhen(true)] SyntaxNode? node);
502bool IsBaseNamespaceDeclaration([NotNullWhen(true)] SyntaxNode? node);
503bool IsTypeDeclaration(SyntaxNode node);
504bool IsBinaryExpression([NotNullWhen(true)] SyntaxNode? node);
505bool IsLiteralExpression([NotNullWhen(true)] SyntaxNode? node);
506bool IsMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
507bool IsMethodDeclaration([NotNullWhen(true)] SyntaxNode? node);
508bool IsSimpleName([NotNullWhen(true)] SyntaxNode? node);
509bool IsAnyName([NotNullWhen(true)] SyntaxNode? node);
510bool IsAnyType([NotNullWhen(true)] SyntaxNode? node);
512bool IsNamedMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
513bool IsElementAccessInitializer([NotNullWhen(true)] SyntaxNode? node);
515bool IsObjectMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
516bool IsObjectCollectionInitializer([NotNullWhen(true)] SyntaxNode? node);
522void GetPartsOfAliasQualifiedName(SyntaxNode node, out SyntaxNode alias, out SyntaxToken colonColonToken, out SyntaxNode name);
523void GetPartsOfAnyIsTypeExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode type);
524void GetPartsOfArgumentList(SyntaxNode node, out SyntaxToken openParenToken, out SeparatedSyntaxList<SyntaxNode> arguments, out SyntaxToken closeParenToken);
525void GetPartsOfAttribute(SyntaxNode node, out SyntaxNode name, out SyntaxNode? argumentList);
526void GetPartsOfBaseNamespaceDeclaration(SyntaxNode node, out SyntaxNode name, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> members);
527void GetPartsOfBaseObjectCreationExpression(SyntaxNode node, out SyntaxNode? argumentList, out SyntaxNode? initializer);
528void GetPartsOfBinaryExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
529void GetPartsOfCastExpression(SyntaxNode node, out SyntaxNode type, out SyntaxNode expression);
530void GetPartsOfCompilationUnit(SyntaxNode node, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> attributeLists, out SyntaxList<SyntaxNode> members);
531void GetPartsOfConditionalAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode whenNotNull);
532void GetPartsOfConditionalExpression(SyntaxNode node, out SyntaxNode condition, out SyntaxNode whenTrue, out SyntaxNode whenFalse);
533void GetPartsOfGenericName(SyntaxNode node, out SyntaxToken identifier, out SeparatedSyntaxList<SyntaxNode> typeArguments);
534void GetPartsOfInterpolationExpression(SyntaxNode node, out SyntaxToken stringStartToken, out SyntaxList<SyntaxNode> contents, out SyntaxToken stringEndToken);
535void GetPartsOfInvocationExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode? argumentList);
536void GetPartsOfIsPatternExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken isToken, out SyntaxNode right);
537void GetPartsOfMemberAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode name);
538void GetPartsOfNamedMemberInitializer(SyntaxNode node, out SyntaxNode name, out SyntaxNode expression);
539void GetPartsOfObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode type, out SyntaxNode? argumentList, out SyntaxNode? initializer);
540void GetPartsOfImplicitObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode argumentList, out SyntaxNode? initializer);
541void GetPartsOfParameter(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode? @default);
542void GetPartsOfParenthesizedExpression(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode expression, out SyntaxToken closeParen);
543void GetPartsOfPostfixUnaryExpression(SyntaxNode node, out SyntaxNode operand, out SyntaxToken operatorToken);
544void GetPartsOfPrefixUnaryExpression(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode operand);
545void GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken dotToken, out SyntaxNode right);
546void GetPartsOfUsingAliasDirective(SyntaxNode node, out SyntaxToken globalKeyword, out SyntaxToken alias, out SyntaxNode name);
556SyntaxNode GetArgumentListOfImplicitElementAccess(SyntaxNode node);
558SyntaxNode GetExpressionOfAwaitExpression(SyntaxNode node);
559SyntaxNode GetExpressionOfExpressionStatement(SyntaxNode node);
560SyntaxNode GetExpressionOfRefExpression(SyntaxNode node);
561SyntaxNode? GetExpressionOfReturnStatement(SyntaxNode node);
562SyntaxNode GetExpressionOfThrowExpression(SyntaxNode node);
563SyntaxNode? GetExpressionOfThrowStatement(SyntaxNode node);
565bool IsEqualsValueOfPropertyDeclaration([NotNullWhen(true)] SyntaxNode? node);
566SyntaxNode GetValueOfEqualsValueClause(SyntaxNode node);
568SeparatedSyntaxList<SyntaxNode> GetInitializersOfObjectMemberInitializer(SyntaxNode node);
569SeparatedSyntaxList<SyntaxNode> GetExpressionsOfObjectCollectionInitializer(SyntaxNode node);
571SyntaxToken GetTokenOfLiteralExpression(SyntaxNode node);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFactsExtensions.cs (211)
23public static bool IsMemberInitializerNamedAssignmentIdentifier(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
26public static bool IsOnSingleLine(this ISyntaxFacts syntaxFacts, SyntaxNode node, bool fullSpan)
62var currentNode = currentNodeOrToken.AsNode()!;
160this ISyntaxFacts syntaxFacts, ImmutableArray<SyntaxNode> nodes, CancellationToken cancellationToken)
166foreach (var node in nodes)
178public static bool ContainsInterleavedDirective(this ISyntaxFacts syntaxFacts, SyntaxNode node, CancellationToken cancellationToken)
182this ISyntaxFacts syntaxFacts, TextSpan span, SyntaxNode node, CancellationToken cancellationToken)
193public static bool SpansPreprocessorDirective(this ISyntaxFacts syntaxFacts, IEnumerable<SyntaxNode> nodes)
286public static SyntaxNode? WalkDownParentheses(this ISyntaxFacts syntaxFacts, SyntaxNode? node)
290syntaxFacts.GetPartsOfParenthesizedExpression(node, out _, out var child, out _);
298public static SyntaxNode? WalkUpParentheses(this ISyntaxFacts syntaxFacts, SyntaxNode? node)
307this ISyntaxFacts syntaxFacts, SyntaxNode statement,
308out SyntaxNode left, out SyntaxNode right)
313public static SyntaxNode GetExpressionOfInvocationExpression(
314this ISyntaxFacts syntaxFacts, SyntaxNode node)
316syntaxFacts.GetPartsOfInvocationExpression(node, out var expression, out _);
320public static SyntaxNode Unparenthesize(
321this ISyntaxFacts syntaxFacts, SyntaxNode node)
324SyntaxNode operand;
348var resultNode = operand
383public static bool SpansPreprocessorDirective(this ISyntaxFacts service, SyntaxNode node)
386public static bool SpansPreprocessorDirective(this ISyntaxFacts service, params SyntaxNode[] nodes)
387=> service.SpansPreprocessorDirective((IEnumerable<SyntaxNode>)nodes);
392public static void GetPartsOfBinaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode left, out SyntaxNode right)
395public static SyntaxNode GetPatternOfParenthesizedPattern(this ISyntaxFacts syntaxFacts, SyntaxNode node)
397syntaxFacts.GetPartsOfParenthesizedPattern(node, out _, out var pattern, out _);
401public static SyntaxToken GetOperatorTokenOfBinaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
407public static bool IsAnonymousOrLocalFunction(this ISyntaxFacts syntaxFacts, SyntaxNode node)
411public static SyntaxNode? GetExpressionOfElementAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
413syntaxFacts.GetPartsOfElementAccessExpression(node, out var expression, out _);
417public static SyntaxNode? GetArgumentListOfElementAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
419syntaxFacts.GetPartsOfElementAccessExpression(node, out _, out var argumentList);
423public static SyntaxNode GetExpressionOfConditionalAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
425syntaxFacts.GetPartsOfConditionalAccessExpression(node, out var expression, out _);
429public static SyntaxToken GetOperatorTokenOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
435public static void GetPartsOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode expression, out SyntaxNode name)
438public static void GetPartsOfConditionalAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode expression, out SyntaxNode whenNotNull)
441public static TextSpan GetSpanWithoutAttributes(this ISyntaxFacts syntaxFacts, SyntaxNode root, SyntaxNode node)
468/// Similar to <see cref="ISyntaxFacts.GetStandaloneExpression(SyntaxNode)"/>, this gets the containing
478public static SyntaxNode GetRootStandaloneExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
481var standalone = syntaxFacts.GetStandaloneExpression(node);
489public static SyntaxNode? GetArgumentListOfInvocationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
491syntaxFacts.GetPartsOfInvocationExpression(node, out _, out var argumentList);
495public static SeparatedSyntaxList<SyntaxNode> GetArgumentsOfInvocationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
497var argumentList = syntaxFacts.GetArgumentListOfInvocationExpression(node);
501public static SyntaxNode? GetArgumentListOfBaseObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
503syntaxFacts.GetPartsOfBaseObjectCreationExpression(node, out var argumentList, out _);
507public static SyntaxNode? GetDefaultOfParameter(this ISyntaxFacts syntaxFacts, SyntaxNode node)
509syntaxFacts.GetPartsOfParameter(node, out _, out var @default);
513public static SyntaxNode GetExpressionOfParenthesizedExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
515syntaxFacts.GetPartsOfParenthesizedExpression(node, out _, out var expression, out _);
519public static SyntaxToken GetIdentifierOfGenericName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
525public static SyntaxToken GetIdentifierOfIdentifierName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
528public static SyntaxToken GetIdentifierOfParameter(this ISyntaxFacts syntaxFacts, SyntaxNode node)
534public static SyntaxList<SyntaxNode> GetImportsOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
540public static SyntaxList<SyntaxNode> GetImportsOfCompilationUnit(this ISyntaxFacts syntaxFacts, SyntaxNode node)
546public static SyntaxNode? GetInitializerOfBaseObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
548syntaxFacts.GetPartsOfBaseObjectCreationExpression(node, out _, out var initializer);
552public static SyntaxList<SyntaxNode> GetMembersOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
558public static SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(this ISyntaxFacts syntaxFacts, SyntaxNode node)
564public static SyntaxNode GetNameOfAttribute(this ISyntaxFacts syntaxFacts, SyntaxNode node)
566syntaxFacts.GetPartsOfAttribute(node, out var name, out _);
570public static SyntaxNode GetNameOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
572syntaxFacts.GetPartsOfBaseNamespaceDeclaration(node, out var name, out _, out _);
576public static SyntaxNode GetNameOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
578syntaxFacts.GetPartsOfMemberAccessExpression(node, out _, out var name);
582public static SyntaxNode GetOperandOfPostfixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
584syntaxFacts.GetPartsOfPostfixUnaryExpression(node, out var operand, out _);
588public static SyntaxNode GetOperandOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
590syntaxFacts.GetPartsOfPrefixUnaryExpression(node, out _, out var operand);
594public static SyntaxToken GetOperatorTokenOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
600public static SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
606public static SyntaxNode GetTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
608syntaxFacts.GetPartsOfObjectCreationExpression(node, out _, out var type, out _, out _);
616public static bool IsExpressionOfAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
618var parent = node?.Parent;
625public static bool IsExpressionOfInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
627var parent = node?.Parent;
631syntaxFacts.GetPartsOfInvocationExpression(parent, out var expression, out _);
635public static bool IsExpressionOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
637var parent = node?.Parent;
641syntaxFacts.GetPartsOfMemberAccessExpression(parent, out var expression, out _);
645public static bool IsNameOfAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
650syntaxFacts.GetPartsOfAttribute(node.Parent, out var name, out _);
654public static bool IsRightOfQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
656var parent = node?.Parent;
660syntaxFacts.GetPartsOfQualifiedName(parent, out _, out _, out var right);
664public static bool IsRightOfAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
666var parent = node?.Parent;
670syntaxFacts.GetPartsOfAliasQualifiedName(parent, out _, out _, out var right);
674public static bool IsTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
676var parent = node?.Parent;
680syntaxFacts.GetPartsOfObjectCreationExpression(parent, out _, out var type, out _, out _);
711public static bool IsSkippedTokensTrivia(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
751public static bool IsAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
754public static bool IsGenericName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
757public static bool IsIdentifierName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
760public static bool IsQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
767public static bool IsTupleType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
774public static bool IsCharacterLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
777public static bool IsDefaultLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
780public static bool IsFalseLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
783public static bool IsNumericLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
786public static bool IsNullLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
789public static bool IsStringLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
792public static bool IsTrueLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
799public static bool IsArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
802public static bool IsAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
805public static bool IsBaseExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
808public static bool IsConditionalExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
811public static bool IsConditionalAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
814public static bool IsFieldExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
817public static bool IsImplicitArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
820public static bool IsImplicitObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
823public static bool IsIndexExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
826public static bool IsInterpolatedStringExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
829public static bool IsInterpolation(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
832public static bool IsInterpolatedStringText(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
835public static bool IsInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
838public static bool IsIsTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
841public static bool IsIsNotTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
844public static bool IsIsPatternExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
847public static bool IsLogicalAndExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
850public static bool IsLogicalOrExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
853public static bool IsLogicalNotExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
856public static bool IsObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
859public static bool IsParenthesizedExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
862public static bool IsQueryExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
865public static bool IsRangeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
868public static bool IsRefExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
871public static bool IsSimpleMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
874public static bool IsSuppressNullableWarningExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
877public static bool IsThisExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
880public static bool IsThrowExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
883public static bool IsTupleExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
886public static bool ContainsGlobalStatement(this ISyntaxFacts syntaxFacts, SyntaxNode node)
893public static bool IsAndPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
896public static bool IsConstantPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
899public static bool IsDeclarationPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
902public static bool IsListPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
905public static bool IsNotPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
908public static bool IsOrPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
911public static bool IsParenthesizedPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
914public static bool IsRecursivePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
917public static bool IsRelationalPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
920public static bool IsTypePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
923public static bool IsVarPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
930public static bool IsExpressionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
933public static bool IsForEachStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
936public static bool IsForStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
939public static bool IsIfStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
942public static bool IsLocalDeclarationStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
945public static bool IsLocalFunctionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
948public static bool IsLockStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
951public static bool IsReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
954public static bool IsThrowStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
957public static bool IsUsingStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
960public static bool IsWhileStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
963public static bool IsYieldReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
970public static bool IsAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
973public static bool IsClassDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
976public static bool IsCollectionExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
979public static bool IsConstructorDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
982public static bool IsEnumDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
985public static bool IsGlobalAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
988public static bool IsInterfaceDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
991public static bool IsParameter(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
994public static bool IsTypeConstraint(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
997public static bool IsVariableDeclarator(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1000public static bool IsFieldDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1003public static bool IsPropertyDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1006public static bool IsStructDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1009public static bool IsTypeArgumentList(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1016public static bool IsElseClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1018public static bool IsEqualsValueClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1025public static bool IsExpressionElement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1028public static bool IsImplicitElementAccess(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1031public static bool IsIndexerMemberCref(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1034public static bool IsPrimaryConstructorBaseType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (38)
35where TExpressionSyntax : SyntaxNode
37where TAttributeSyntax : SyntaxNode
38where TArgumentSyntax : SyntaxNode
39where TForEachStatementSyntax : SyntaxNode
40where TThrowStatementSyntax : SyntaxNode
49private SyntaxNode? _lazySemanticRootOfReplacedExpression;
95protected abstract SyntaxNode GetSemanticRootForSpeculation(TExpressionSyntax expression);
96protected abstract SemanticModel CreateSpeculativeSemanticModel(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel);
99protected abstract bool ExpressionMightReferenceMember([NotNullWhen(true)] SyntaxNode? node);
114protected abstract bool ReplacementChangesSemanticsForNodeLanguageSpecific(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode);
116protected abstract bool IsParenthesizedExpression([NotNullWhen(true)] SyntaxNode? node);
128SyntaxNode ISpeculationAnalyzer.OriginalExpression => OriginalExpression;
136public SyntaxNode SemanticRootOfOriginalExpression
171SyntaxNode ISpeculationAnalyzer.ReplacedExpression => ReplacedExpression;
178public SyntaxNode SemanticRootOfReplacedExpression
201protected virtual SyntaxNode GetSemanticRootOfReplacedExpression(SyntaxNode semanticRootOfOriginalExpression, TExpressionSyntax annotatedReplacedExpression)
224protected abstract void ValidateSpeculativeSemanticModel(SemanticModel speculativeSemanticModel, SyntaxNode nodeToSpeculate);
231var nodeToSpeculate = this.SemanticRootOfReplacedExpression;
317protected bool SymbolsAreCompatible(SyntaxNode originalNode, SyntaxNode newNode, bool requireNonNullSymbols = false)
519protected bool ReplacementChangesSemantics(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode originalRoot, bool skipVerificationForCurrentNode)
527SyntaxNode? previousOriginalNode = null, previousReplacedNode = null;
571private bool ReplacementChangesSemanticsForNode(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode)
688var originalExpressionOfMemberAccess = syntaxFacts.GetExpressionOfMemberAccessExpression(originalExpression);
731private bool ReplacementBreaksSystemObjectMethodResolution(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, [NotNullWhen(true)] SyntaxNode? previousOriginalNode, [NotNullWhen(true)] SyntaxNode? previousReplacedNode)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\CommonFormattingHelpers.cs (8)
45public static IEnumerable<(SyntaxToken, SyntaxToken)> ConvertToTokenPairs(this SyntaxNode root, IReadOnlyList<TextSpan> spans)
81public static ValueTuple<SyntaxToken, SyntaxToken> ConvertToTokenPair(this SyntaxNode root, TextSpan textSpan)
127public static bool IsInvalidTokenRange(this SyntaxNode root, SyntaxToken startToken, SyntaxToken endToken)
278var parentNode = GetParentThatContainsGivenSpan(token.Parent, backwardPosition, forward: false);
309var parentNode = GetParentThatContainsGivenSpan(token.Parent, forwardPosition, forward: true);
320private static SyntaxNode? GetParentThatContainsGivenSpan(SyntaxNode? node, int position, bool forward)
357public static TextSpan GetFormattingSpan(SyntaxNode root, TextSpan span)
src\0bf6ba47805c8821\AbstractMoveDeclarationNearReferenceService.cs (20)
27where TStatementSyntax : SyntaxNode
29where TVariableDeclaratorSyntax : SyntaxNode
31protected abstract bool IsMeaningfulBlock(SyntaxNode node);
32protected abstract bool CanMoveToBlock(ILocalSymbol localSymbol, SyntaxNode currentBlock, SyntaxNode destinationBlock);
33protected abstract SyntaxNode GetVariableDeclaratorSymbolNode(TVariableDeclaratorSyntax variableDeclarator);
36protected abstract Task<bool> TypesAreCompatibleAsync(Document document, ILocalSymbol localSymbol, TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode right, CancellationToken cancellationToken);
38public async Task<(bool canMove, bool mayChangeSemantics)> CanMoveDeclarationNearReferenceAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
47private async Task<State> ComputeStateAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
78Document document, SyntaxNode localDeclarationStatement, CancellationToken cancellationToken)
84var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
114var newRoot = editor.GetChangedRoot();
151var originalNextStatement = state.OutermostBlockStatements[statementIndex + 1];
187var blocks = state.InnermostBlock.GetAncestorsOrThis<SyntaxNode>();
188foreach (var block in blocks)
211var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(state.VariableDeclarator);
218syntaxFacts.GetPartsOfAssignmentStatement(firstStatement, out var left, out var right);
243out var _, out var operatorToken, out var right);
src\30958ef190fa2467\SyntaxGeneratorInternal.cs (98)
37public abstract SyntaxNode LocalDeclarationStatement(
38SyntaxNode? type, SyntaxToken identifier, SyntaxNode? initializer = null, bool isConst = false);
43public SyntaxNode LocalDeclarationStatement(SyntaxToken name, SyntaxNode initializer)
46public abstract SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer);
51public abstract SyntaxNode WithPropertyInitializer(SyntaxNode propertyDeclaration, SyntaxNode initializer);
53public abstract SyntaxNode EqualsValueClause(SyntaxNode value);
54public abstract SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value);
58public abstract SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull);
60public abstract SyntaxNode MemberBindingExpression(SyntaxNode name);
62public abstract SyntaxNode RefExpression(SyntaxNode expression);
67public abstract SyntaxNode AddParentheses(SyntaxNode expression, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true);
73public abstract SyntaxNode YieldReturnStatement(SyntaxNode expression);
78/// <see cref="LocalDeclarationStatement(SyntaxNode, SyntaxToken, SyntaxNode, bool)"/>.
84public abstract SyntaxNode InterpolatedStringText(SyntaxToken textToken);
85public abstract SyntaxNode Interpolation(SyntaxNode syntaxNode);
86public abstract SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken);
87public abstract SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment);
88public abstract SyntaxNode InterpolationFormatClause(string format);
89public abstract SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames);
106public abstract SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext);
108public abstract SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right);
110public abstract SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type);
119public abstract SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isToken, SyntaxNode pattern);
121public abstract SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right);
122public abstract SyntaxNode ConstantPattern(SyntaxNode expression);
123public abstract SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name);
124public abstract SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression);
125public abstract SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression);
126public abstract SyntaxNode LessThanRelationalPattern(SyntaxNode expression);
127public abstract SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression);
128public abstract SyntaxNode NotPattern(SyntaxNode pattern);
129public abstract SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right);
130public abstract SyntaxNode ParenthesizedPattern(SyntaxNode pattern);
131public abstract SyntaxNode TypePattern(SyntaxNode type);
132public abstract SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern);
136public abstract SyntaxNode DefaultExpression(ITypeSymbol type);
137public abstract SyntaxNode DefaultExpression(SyntaxNode type);
139public abstract SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression);
141public SyntaxNode CastExpression(ITypeSymbol type, SyntaxNode expression)
144public SyntaxNode TypeExpression(ITypeSymbol typeSymbol)
147public abstract SyntaxNode TypeExpression(ITypeSymbol typeSymbol, RefKind refKind);
149public abstract SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right);
151public SyntaxNode MemberAccessExpression(SyntaxNode? expression, SyntaxNode memberName)
157public abstract SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode memberName);
158public abstract SyntaxNode IdentifierName(string identifier);
160public abstract SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression);
161public SyntaxNode ConvertExpression(ITypeSymbol type, SyntaxNode expression)
src\5f6f2f95b47c3dc6\SemanticModelWorkspaceServiceFactory.SemanticModelWorkspaceService.cs (6)
15internal readonly struct SemanticModelReuseInfo(SemanticModel previousNonSpeculativeSemanticModel, SemanticModel currentSemanticModel, SyntaxNode bodyNode, VersionStamp topLevelSementicVersion)
31public readonly SyntaxNode BodyNode = bodyNode;
94public async ValueTask<SemanticModel> ReuseExistingSpeculativeModelAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
100var bodyNode = reuseService.TryGetContainingMethodBodyForSpeculation(node);
138ImmutableDictionary<DocumentId, SemanticModelReuseInfo?> map, Document document, SyntaxNode bodyNode, CancellationToken cancellationToken)
177SyntaxNode bodyNode,
src\ce8c1e82c1124a2b\AbstractInitializerParameterService.cs (23)
20where TStatementSyntax : SyntaxNode
22protected abstract bool IsFunctionDeclaration(SyntaxNode node);
24protected abstract SyntaxNode? GetAccessorBody(IMethodSymbol accessor, CancellationToken cancellationToken);
26protected abstract SyntaxNode GetBody(SyntaxNode methodNode);
27protected abstract SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement);
34SyntaxEditor editor, SyntaxNode functionDeclaration, bool returnsVoid, SyntaxNode? statementToAddAfter, TStatementSyntax statement);
37SyntaxNode functionDeclaration,
45var functionBody = GetBody(functionDeclaration);
79public void InsertStatement(SyntaxEditor editor, SyntaxNode functionDeclaration, bool returnsVoid, SyntaxNode? statementToAddAfter, SyntaxNode statement)
90var parameterDeclaration = parameterReference.GetSyntax(cancellationToken);
92var functionDeclaration = parameterDeclaration.FirstAncestorOrSelf<SyntaxNode>(IsFunctionDeclaration);
115SyntaxNode functionDeclaration,
123var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
135SyntaxNode constructorDeclaration,
159var statementToAddAfter = TryGetStatementToAddInitializationAfter(parameter, blockStatement);
164private SyntaxNode? TryGetStatementToAddInitializationAfter(
195using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var accessors);
209foreach (var accessorBody in accessors)
src\roslyn\src\Analyzers\Core\CodeFixes\AddExplicitCast\AbstractAddExplicitCastCodeFixProvider.cs (13)
21where TExpressionSyntax : SyntaxNode
30protected abstract void GetPartsOfCastOrConversionExpression(TExpressionSyntax expression, out SyntaxNode type, out TExpressionSyntax castedExpression);
48Document document, SemanticModel semanticModel, SyntaxNode root,
60Document document, SemanticModel semanticModel, SyntaxNode root,
71var root = await document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
114private (SyntaxNode finalTarget, SyntaxNode finalReplacement) ApplyFix(
134(SyntaxNode finalTarget, SyntaxNode finalReplacement) ApplyFixWorker()
139GetPartsOfCastOrConversionExpression(targetNode, out var castTypeNode, out var castedExpression);
159protected virtual (SyntaxNode finalTarget, SyntaxNode finalReplacement) Cast(SemanticModel semanticModel, TExpressionSyntax targetNode, ITypeSymbol conversionType)
216var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
src\roslyn\src\Analyzers\Core\CodeFixes\ConvertToAsync\AbstractConvertToAsyncCodeFixProvider.cs (9)
18protected abstract Task<string> GetDescriptionAsync(Diagnostic diagnostic, SyntaxNode node, SemanticModel semanticModel, CancellationToken cancellationToken);
19protected abstract Task<(SyntaxTree syntaxTree, SyntaxNode root)?> GetRootInOtherSyntaxTreeAsync(SyntaxNode node, SemanticModel semanticModel, Diagnostic diagnostic, CancellationToken cancellationToken);
23var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
24if (!TryGetNode(root, context.Span, out var node))
38SyntaxNode root, TextSpan span, [NotNullWhen(true)] out SyntaxNode? node)
41var ancestors = root.FindToken(span.Start).GetAncestors<SyntaxNode>();
52SyntaxNode node, Document document, Diagnostic diagnostic, CancellationToken cancellationToken)
src\roslyn\src\Analyzers\Core\CodeFixes\FileHeaders\AbstractFileHeaderCodeFixProvider.cs (8)
46private async Task<SyntaxNode> GetTransformedSyntaxRootAsync(Document document, CancellationToken cancellationToken)
55internal static async Task<SyntaxNode> GetTransformedSyntaxRootAsync(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, Document document, string? fileHeaderTemplate, CancellationToken cancellationToken)
58var root = await tree.GetRootAsync(cancellationToken).ConfigureAwait(false);
78SyntaxNode newSyntaxRoot;
91private static SyntaxNode ReplaceHeader(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, SyntaxNode root, string expectedFileHeader)
173private static SyntaxNode AddHeader(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, SyntaxNode root, string expectedFileHeader)
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateConstructor\AbstractGenerateConstructorService.cs (9)
27where TExpressionSyntax : SyntaxNode
30protected abstract bool IsSimpleNameGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
31protected abstract bool IsConstructorInitializerGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
32protected abstract bool IsImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
34protected abstract bool TryInitializeImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
35protected abstract bool TryInitializeSimpleNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
36protected abstract bool TryInitializeConstructorInitializerGeneration(SemanticDocument document, SyntaxNode constructorInitializer, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
37protected abstract bool TryInitializeSimpleAttributeNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
80public async Task<ImmutableArray<CodeAction>> GenerateConstructorAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateParameterizedMember\AbstractGenerateConversionService.cs (6)
19where TExpressionSyntax : SyntaxNode
22protected abstract bool IsImplicitConversionGeneration(SyntaxNode node);
23protected abstract bool IsExplicitConversionGeneration(SyntaxNode node);
24protected abstract bool TryInitializeImplicitConversionState(SemanticDocument document, SyntaxNode expression, ISet<TypeKind> classInterfaceModuleStructTypes, CancellationToken cancellationToken, out SyntaxToken identifierToken, [NotNullWhen(true)] out IMethodSymbol? methodSymbol, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
25protected abstract bool TryInitializeExplicitConversionState(SemanticDocument document, SyntaxNode expression, ISet<TypeKind> classInterfaceModuleStructTypes, CancellationToken cancellationToken, out SyntaxToken identifierToken, [NotNullWhen(true)] out IMethodSymbol? methodSymbol, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
29SyntaxNode node,
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateVariable\AbstractGenerateVariableService.cs (6)
22where TExpressionSyntax : SyntaxNode
24protected abstract bool IsExplicitInterfaceGeneration(SyntaxNode node);
25protected abstract bool IsIdentifierNameGeneration(SyntaxNode node);
27protected abstract bool TryInitializeExplicitInterfaceState(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken identifierToken, out IPropertySymbol propertySymbol, out INamedTypeSymbol typeToGenerateIn);
30protected abstract bool TryConvertToLocalDeclaration(ITypeSymbol type, SyntaxToken identifierToken, SemanticModel semanticModel, CancellationToken cancellationToken, out SyntaxNode newRoot);
34SyntaxNode node,
src\roslyn\src\Analyzers\Core\CodeFixes\ImplementAbstractClass\ImplementAbstractClassData.cs (14)
27Document document, ImplementTypeOptions options, SyntaxNode classNode, SyntaxToken classIdentifier,
33private readonly SyntaxNode _classNode = classNode;
41Document document, SyntaxNode classNode, SyntaxToken classIdentifier, CancellationToken cancellationToken)
77Document document, SyntaxNode classNode, SyntaxToken classIdentifier, CancellationToken cancellationToken)
96var classNodeToAddMembersTo = _classNode;
113var updatedClassNode = info.Service.AddMembers(
119var root = await _document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
120var newRoot = root.ReplaceNode(_classNode, updatedClassNode);
180var body = throughMember == null
248Func<SyntaxNode, SyntaxNode, SyntaxNode> createAddOrRemoveHandler)
254var throughExpression = generator.CreateDelegateThroughExpression(@event, throughMember);
255var statement = generator.ExpressionStatement(createAddOrRemoveHandler(
src\roslyn\src\Analyzers\Core\CodeFixes\ImplementInterface\AbstractImplementInterfaceService.cs (17)
27where TTypeDeclarationSyntax : SyntaxNode
37protected abstract bool TryInitializeState(Document document, SemanticModel model, SyntaxNode interfaceNode, CancellationToken cancellationToken,
38[NotNullWhen(true)] out SyntaxNode? classOrStructDecl,
43protected abstract SyntaxNode AddCommentInsideIfStatement(SyntaxNode ifDisposingStatement, SyntaxTriviaList trivia);
44protected abstract SyntaxNode CreateFinalizer(SyntaxGenerator generator, INamedTypeSymbol classType, string disposeMethodDisplayString);
46protected abstract bool IsTypeInInterfaceBaseList([NotNullWhen(true)] SyntaxNode? type);
47protected abstract void AddInterfaceTypes(TTypeDeclarationSyntax typeDeclaration, ArrayBuilder<SyntaxNode> result);
49public ImmutableArray<SyntaxNode> GetInterfaceTypes(SyntaxNode typeDeclaration)
51using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var result);
59Document document, ImplementTypeOptions options, SyntaxNode node, CancellationToken cancellationToken)
78private async Task<ImplementInterfaceInfo?> AnalyzeAsync(Document document, SyntaxNode interfaceType, CancellationToken cancellationToken)
84protected TNode AddComment<TNode>(string comment, TNode node) where TNode : SyntaxNode
87protected TNode AddComments<TNode>(string comment1, string comment2, TNode node) where TNode : SyntaxNode
90protected TNode AddComments<TNode>(string[] comments, TNode node) where TNode : SyntaxNode
146public async Task<ImmutableArray<CodeAction>> GetCodeActionsAsync(Document document, SyntaxNode? interfaceType, CancellationToken cancellationToken)
src\roslyn\src\Analyzers\Core\CodeFixes\MakeMethodAsynchronous\AbstractMakeMethodAsynchronousCodeFixProvider.cs (19)
25protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
33protected abstract SyntaxNode FixMethodSignature(
37SyntaxNode node,
51var node = GetContainingFunction(diagnostic, cancellationToken);
134var syntaxNode = semanticDocument.Root.FindNode(location.Location.SourceSpan, getInnermostNodeForTie: true);
149SyntaxNode syntaxNode,
154foreach (var currentNode in syntaxNode.GetAncestorsOrThis<SyntaxNode>())
182private static IMethodSymbol? GetMethodSymbol(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
204var node = GetContainingFunction(diagnostic, cancellationToken);
249private SyntaxNode? GetContainingFunction(Diagnostic diagnostic, CancellationToken cancellationToken)
252var node = token.GetAncestor(IsAsyncSupportingFunctionSyntax);
260SyntaxNode node,
276var newRoot = await newDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
277if (syntaxPath.TryResolve(newRoot, out SyntaxNode? newNode))
293SyntaxNode node,
296var newNode = FixMethodSignature(addAsyncModifier: true, keepVoid, methodSymbol, node, knownTypes);
308var partialDefinitionNode = partialDefinitionLocation.FindNode(cancellationToken);
309var fixedPartialDefinitionNode =
src\roslyn\src\Analyzers\Core\CodeFixes\MakeMethodSynchronous\AbstractMakeMethodSynchronousCodeFixProvider.cs (27)
24protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
25protected abstract SyntaxNode RemoveAsyncTokenAndFixReturnType(IMethodSymbol methodSymbol, SyntaxNode node, KnownTaskTypes knownTypes);
35var node = token.GetAncestor(IsAsyncSupportingFunctionSyntax);
50Document document, SyntaxNode node, CancellationToken cancellationToken)
71private async Task<Solution> RenameThenRemoveAsyncTokenAsync(Document document, SyntaxNode node, IMethodSymbol methodSymbol, CancellationToken cancellationToken)
83var newRoot = await newDocument.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
84if (syntaxPath.TryResolve(newRoot, out SyntaxNode? newNode))
95Document document, IMethodSymbol methodSymbol, SyntaxNode node, CancellationToken cancellationToken)
101var newNode = RemoveAsyncTokenAndFixReturnType(methodSymbol, node, knownTypes)
104var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
105var newRoot = root.ReplaceNode(node, newNode);
120var syntaxRoot = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
121var methodDeclaration = syntaxRoot.GetAnnotatedNodes(annotation).FirstOrDefault();
173var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
180var newRoot = editor.GetChangedRoot();
195var nameNode = token.Parent;
207var expressionNode = nameNode;
221var invocationExpression = expressionNode.Parent;
227var awaitExpression = invocationExpression.GetRequiredParent();
235var parentMemberAccessExpression = invocationExpression.GetRequiredParent();
236var parentMemberAccessExpressionNameNode = syntaxFacts.GetNameOfMemberAccessExpression(parentMemberAccessExpression);
241var parentExpression = parentMemberAccessExpression.Parent;
244var awaitExpression = parentExpression.GetRequiredParent();
247var currentConfigureAwaitInvocation = syntaxFacts.GetExpressionOfAwaitExpression(currentAwaitExpression);
248var currentMemberAccess = syntaxFacts.GetExpressionOfInvocationExpression(currentConfigureAwaitInvocation);
249var currentInvocationExpression = syntaxFacts.GetExpressionOfMemberAccessExpression(currentMemberAccess);
src\roslyn\src\Analyzers\Core\CodeFixes\RemoveAsyncModifier\AbstractRemoveAsyncModifierCodeFixProvider.cs (38)
20where TReturnStatementSyntax : SyntaxNode
21where TExpressionSyntax : SyntaxNode
23protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
24protected abstract SyntaxNode RemoveAsyncModifier(SyntaxGenerator generator, SyntaxNode methodLikeNode);
25protected abstract SyntaxNode? ConvertToBlockBody(SyntaxNode node, TExpressionSyntax expressionBody);
36var node = token.GetAncestor(IsAsyncSupportingFunctionSyntax);
67var node = token.GetAncestor(IsAsyncSupportingFunctionSyntax);
93private static IMethodSymbol? GetMethodSymbol(SyntaxNode node, SemanticModel semanticModel, CancellationToken cancellationToken)
106private SyntaxNode RemoveAsyncModifier(
110SyntaxNode node,
117var expression = generator.GetExpression(node);
123var blockBodiedNode = ConvertToBlockBody(node, expressionBody);
135var newExpressionBody = WrapExpressionWithTaskFromResult(generator, expressionBody, returnType, knownTypes);
155private static ControlFlowAnalysis? GetControlFlowAnalysis(SyntaxGenerator generator, SemanticModel semanticModel, SyntaxNode node)
166private static SyntaxNode AddReturnStatement(SyntaxGenerator generator, SyntaxNode node)
169private SyntaxNode ChangeReturnStatements(
173SyntaxNode node,
185var returnExpression = syntaxFacts.GetExpressionOfReturnStatement(returnSyntax);
189var returnTaskCompletedTask = GetReturnTaskCompletedTaskStatement(generator, returnType, knownTypes);
195var newExpression = WrapExpressionWithTaskFromResult(generator, returnExpression, returnType, knownTypes);
203private static SyntaxNode GetReturnTaskCompletedTaskStatement(SyntaxGenerator generator, ITypeSymbol returnType, KnownTaskTypes knownTypes)
205SyntaxNode invocation;
208var taskTypeExpression = TypeExpressionForStaticMemberAccess(generator, knownTypes.TaskType);
216var statement = generator.ReturnStatement(invocation);
220private static SyntaxNode WrapExpressionWithTaskFromResult(SyntaxGenerator generator, SyntaxNode expression, ITypeSymbol returnType, KnownTaskTypes knownTypes)
224var taskTypeExpression = TypeExpressionForStaticMemberAccess(generator, knownTypes.TaskType!);
226var memberName = generator.GenericName(nameof(Task.FromResult), unwrappedReturnType);
227var taskFromResult = generator.MemberAccessExpression(taskTypeExpression, memberName);
238private static SyntaxNode TypeExpressionForStaticMemberAccess(SyntaxGenerator generator, INamedTypeSymbol typeSymbol)
243var typeExpression = generator.TypeExpression(typeSymbol);
247static SyntaxNode QualifiedNameToMemberAccess(int qualifiedNameSyntaxKind, int memberAccessExpressionSyntaxKind, SyntaxNode expression, SyntaxGenerator generator)
251var left = QualifiedNameToMemberAccess(qualifiedNameSyntaxKind, memberAccessExpressionSyntaxKind, expression.ChildNodes().First(), generator);
252var right = expression.ChildNodes().Last();
src\roslyn\src\Analyzers\Core\CodeFixes\RemoveUnusedParametersAndValues\AbstractRemoveUnusedValuesCodeFixProvider.cs (77)
47where TExpressionSyntax : SyntaxNode
48where TStatementSyntax : SyntaxNode
53where TVariableDeclaratorSyntax : SyntaxNode
54where TSwitchCaseBlockSyntax : SyntaxNode
55where TSwitchCaseLabelOrClauseSyntax : SyntaxNode
75protected abstract SyntaxNode? TryUpdateNameForFlaggedNode(SyntaxNode node, SyntaxToken newName);
99protected abstract SyntaxNode GetReplacementNodeForCompoundAssignment(
100SyntaxNode originalCompoundAssignment,
101SyntaxNode newAssignmentTarget,
109protected abstract SyntaxNode GetReplacementNodeForVarPattern(SyntaxNode originalVarPattern, SyntaxNode newNameNode);
121protected virtual SyntaxNode? TryUpdateParentOfUpdatedNode(SyntaxNode parent, SyntaxNode newNameNode, SyntaxEditor editor, ISyntaxFacts syntaxFacts, SemanticModel semanticModel) => null;
130protected abstract SyntaxNode ComputeReplacementNode(SyntaxNode originalOldNode, SyntaxNode changedOldNode, SyntaxNode proposedReplacementNode);
164var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
165var node = root.FindNode(context.Span, getInnermostNodeForTie: true);
239private static IEnumerable<IGrouping<SyntaxNode, Diagnostic>> GetDiagnosticsGroupedByMember(
242SyntaxNode root,
264private static IEnumerable<IGrouping<SyntaxNode, Diagnostic>> GetDiagnosticsGroupedByMember(
267SyntaxNode root)
278var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
288var newRoot = await GetNewRootAsync(preprocessedDocument, formattingOptions, diagnostics, cancellationToken).ConfigureAwait(false);
292private async Task<SyntaxNode> GetNewRootAsync(
298var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
324var containingMemberDeclaration = diagnosticsToFix.Key;
334var currentRoot = editor.GetChangedRoot();
335var newRoot = await PostProcessDocumentAsync(document, options, currentRoot,
349SyntaxNode root,
350SyntaxNode containingMemberDeclaration,
386SyntaxNode root,
411var expression = syntaxFacts.GetExpressionOfExpressionStatement(expressionStatement);
427var expression = syntaxFacts.GetExpressionOfExpressionStatement(node);
429var localDecl = editor.Generator.LocalDeclarationStatement(
445SyntaxNode root,
446SyntaxNode containingMemberDeclaration,
469using var _1 = PooledDictionary<SyntaxNode, SyntaxNode>.GetInstance(out var nodeReplacementMap);
470using var _2 = PooledHashSet<SyntaxNode>.GetInstance(out var nodesToRemove);
471using var _3 = PooledHashSet<(TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode node)>.GetInstance(out var nodesToAdd);
473using var _4 = PooledHashSet<SyntaxNode>.GetInstance(out var processedNodes);
549var newNameNode = TryUpdateNameForFlaggedNode(node, newNameToken);
569var newParentNode = TryUpdateParentOfUpdatedNode(node.GetRequiredParent(), newNameNode, editor, syntaxFacts, semanticModel);
645foreach (var node in nodesToRemove)
673IEnumerable<(SyntaxNode node, bool isUnusedLocalAssignment)> GetNodesToFix()
677var node = root.FindNode(diagnostic.Location.SourceSpan, getInnermostNodeForTie: true);
691void InsertLocalDeclarationStatement(TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode node)
694var insertionNode = node.FirstAncestorOrSelf<SyntaxNode>(
724bool ShouldRemoveStatement(TLocalDeclarationStatementSyntax localDeclarationStatement, out SeparatedSyntaxList<SyntaxNode> variables)
730foreach (var variable in variables)
744private async Task<SyntaxNode> PostProcessDocumentAsync(
747SyntaxNode currentRoot,
773private static async Task<SyntaxNode> PostProcessDocumentCoreAsync(
774Func<SyntaxNode, Document, SyntaxFormattingOptions, CancellationToken, Task<SyntaxNode>> processMemberDeclarationAsync,
775SyntaxNode currentRoot,
784var newRoot = await newDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
785using var _1 = PooledDictionary<SyntaxNode, SyntaxNode>.GetInstance(out var memberDeclReplacementsMap);
787foreach (var memberDecl in newRoot.DescendantNodes().Where(n => n.HasAnnotation(s_memberAnnotation)))
789var newMemberDecl = await processMemberDeclarationAsync(memberDecl, newDocument, options, cancellationToken).ConfigureAwait(false);
805private async Task<SyntaxNode> ReplaceDiscardDeclarationsWithAssignmentsAsync(SyntaxNode memberDeclaration, Document document, SyntaxFormattingOptions options, CancellationToken cancellationToken)
821private async Task<SyntaxNode> AdjustLocalDeclarationsAsync(
822SyntaxNode memberDeclaration,
843var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
844var rootWithTrackedNodes = root.TrackNodes(originalDeclStatementsToMoveOrRemove);
902var rootWithRemovedDeclaration = root.RemoveNode(newDecl, SyntaxGenerator.DefaultRemoveOptions | SyntaxRemoveOptions.KeepLeadingTrivia);
929SyntaxNode memberDeclaration,
934private readonly SyntaxNode _memberDeclaration = memberDeclaration;
940public SyntaxToken GenerateUniqueNameAtSpanStart(SyntaxNode node)
src\roslyn\src\Analyzers\Core\CodeFixes\UseAutoProperty\AbstractUseAutoPropertyCodeFixProvider.cs (30)
47where TTypeDeclarationSyntax : SyntaxNode
48where TPropertyDeclaration : SyntaxNode
49where TVariableDeclarator : SyntaxNode
50where TConstructorDeclaration : SyntaxNode
51where TExpression : SyntaxNode
63protected abstract TPropertyDeclaration GetPropertyDeclaration(SyntaxNode node);
64protected abstract SyntaxNode GetNodeToRemove(TVariableDeclarator declarator);
69Document document, SyntaxNode finalPropertyDeclaration);
71protected abstract Task<SyntaxNode> UpdatePropertyAsync(
141var updatedProperty = await GetUpdatedPropertyDeclarationAsync().ConfigureAwait(false);
182var nodeToRemove = GetNodeToRemove(declarator);
228var declaratorTreeRoot = await fieldDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
235var finalFieldRoot = await FormatAsync(updatedFieldDocument, updatedProperty, cancellationToken).ConfigureAwait(false);
242var fieldTreeRoot = await fieldDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
243var propertyTreeRoot = await propertyDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
245var newFieldTreeRoot = fieldTreeRoot.RemoveNode(nodeToRemove, syntaxRemoveOptions);
247var newPropertyTreeRoot = propertyTreeRoot.ReplaceNode(propertyDeclaration, updatedProperty);
261async ValueTask<SyntaxNode> GetUpdatedPropertyDeclarationAsync()
284var updatedProperty = await UpdatePropertyAsync(
336var newNameNode = generator.IdentifierName(property.Name);
343var node = location.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
353var qualifiedName = generator.MemberAccessExpression(
430ISyntaxFacts syntaxFacts, SyntaxNode nodeToRemove)
441ISyntaxFactsService syntaxFacts, TPropertyDeclaration property, SyntaxNode fieldToRemove)
454private async Task<SyntaxNode> FormatAsync(
456SyntaxNode finalPropertyDeclaration,
533var node = location.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
540var assignment = node.GetRequiredParent();
541var rightSide = syntaxFacts.GetRightHandSideOfAssignment(assignment);
567var node = location.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
src\roslyn\src\Analyzers\Core\CodeFixes\UseCoalesceExpression\AbstractUseCoalesceExpressionForIfNullStatementCheckCodeFixProvider.cs (18)
28SemanticModel semanticModel, SyntaxNode expressionToCoalesce,
29SyntaxNode leftAssignmentPart, SyntaxNode rightAssignmentPart,
42var expressionToCoalesce = diagnostic.AdditionalLocations[0].FindNode(getInnermostNodeForTie: true, cancellationToken);
43var ifStatement = diagnostic.AdditionalLocations[1].FindNode(getInnermostNodeForTie: true, cancellationToken);
44var whenTrueStatement = diagnostic.AdditionalLocations[2].FindNode(getInnermostNodeForTie: true, cancellationToken);
55var containingStatement = expressionToCoalesce.FirstAncestorOrSelf<SyntaxNode>(syntaxFacts.IsStatement);
72ImmutableArray<SyntaxTrivia> GetLeadingComments(SyntaxNode node)
83SyntaxNode TryAddExplicitCast(SyntaxNode expressionToCoalesce, SyntaxNode whenTrueStatement)
95syntaxFacts.GetPartsOfAssignmentStatement(whenTrueStatement, out var left, out var right);
103SyntaxNode GetWhenNullExpression(SyntaxNode whenTrueStatement)
107syntaxFacts.GetPartsOfAssignmentStatement(whenTrueStatement, out _, out var right);
112var expression = syntaxFacts.GetExpressionOfThrowStatement(whenTrueStatement);
src\roslyn\src\Analyzers\Core\CodeFixes\UseCoalesceExpression\UseCoalesceExpressionForTernaryConditionalCheckCodeFixProvider.cs (18)
60var root = editor.OriginalRoot;
61var conditionalExpression = root.FindNode(diagnostic.AdditionalLocations[0].SourceSpan, getInnermostNodeForTie: true);
62var conditionalPartHigh = root.FindNode(diagnostic.AdditionalLocations[1].SourceSpan);
63var whenPart = root.FindNode(diagnostic.AdditionalLocations[2].SourceSpan);
65conditionalExpression, out var condition, out var whenTrue, out var whenFalse);
67var conditionalPartLow = syntaxFacts.WalkDownParentheses(conditionalPartHigh);
72c, out var currentCondition, out var currentWhenTrue, out var currentWhenFalse);
74var coalesceExpression = GetCoalesceExpression(
90private static SyntaxNode GetCoalesceExpression(
92SyntaxNode whenPart, SyntaxNode whenTrue,
93SyntaxNode conditionalPartLow,
94SyntaxNode currentWhenTrue, SyntaxNode currentWhenFalse)
src\roslyn\src\Analyzers\Core\CodeFixes\UseNullPropagation\AbstractUseNullPropagationCodeFixProvider.cs (26)
37TElementBindingArgumentListSyntax> : ForkingSyntaxEditorBasedCodeFixProvider<SyntaxNode>
44where TExpressionSyntax : SyntaxNode
45where TStatementSyntax : SyntaxNode
55where TElementBindingArgumentListSyntax : SyntaxNode
57protected abstract SyntaxNode PostProcessElseIf(TIfStatementSyntax ifStatement, TStatementSyntax newWhenTrueStatement);
82SyntaxNode conditionalExpressionOrIfStatement,
105var root = editor.OriginalRoot;
117conditionalExpression, out _, out var whenTrue, out _);
135conditionalExpression, out var currentCondition, out var currentWhenTrue, out var currentWhenFalse);
137var currentWhenPartToCheck = whenPart == whenTrue ? currentWhenTrue : currentWhenFalse;
139var unwrappedCurrentWhenPartToCheck = syntaxFacts.WalkDownParentheses(currentWhenPartToCheck);
148var newNode = CreateConditionalAccessExpression(
163var root = editor.OriginalRoot;
175SyntaxNode nodeToBeReplaced = ifStatement;
229using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var replacementNodes);
242TContainer container, SyntaxNode match) where TContainer : SyntaxNode
248var memberAccess = match.Parent;
249var nameNode = syntaxFacts.GetNameOfMemberAccessExpression(memberAccess);
271TContainer whenPart, SyntaxNode match, SyntaxNode matchParent) where TContainer : SyntaxNode
275var memberAccess = matchParent;
307private (TExpressionSyntax conditionalPart, SyntaxNode whenPart)? GetPartsOfConditionalExpression(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\AbstractCodeGenerationService_FindDeclaration.cs (22)
20protected abstract IList<bool>? GetAvailableInsertionIndices(SyntaxNode destination, CancellationToken cancellationToken);
22private IList<bool>? GetAvailableInsertionIndices<TDeclarationNode>(TDeclarationNode destination, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
23=> GetAvailableInsertionIndices((SyntaxNode)destination, cancellationToken);
34protected static SyntaxToken GetEndToken(SyntaxNode node)
50protected static TextSpan GetSpan(SyntaxNode node)
58public bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken)
61public bool CanAddTo(SyntaxNode destination, Solution solution, CodeGenerationContext context, CancellationToken cancellationToken)
65SyntaxNode? destination,
143public SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(
153private (SyntaxNode? declaration, IList<bool>? availableIndices) FindMostRelevantDeclaration(
165using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var ancestors);
167var fallbackDeclaration = (SyntaxNode?)null;
171ancestors.AddRange(token.GetAncestors<SyntaxNode>());
176if (TryAddToRelatedDeclaration(declarations.Where(d => d is not ICompilationUnitSyntax), checkGeneratedCode: false, out var declaration1, out var availableIndices1) ||
184if (TryAddToWorker(declarations, checkGeneratedCode: true, out var declaration2, out var availableIndices2, predicate: node => true))
190IEnumerable<SyntaxNode> declarations,
192[NotNullWhen(true)] out SyntaxNode? declaration,
230IEnumerable<SyntaxNode> declarations,
232[NotNullWhen(true)] out SyntaxNode? declaration,
234Func<SyntaxNode, bool> predicate)
236foreach (var decl in declarations)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\AbstractCodeGenerationService.cs (83)
47public TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
50public TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
53public TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
56public TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
59public TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
62public TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
66where TDeclarationNode : SyntaxNode
69private static TNode WithAnnotations<TNode>(TNode node, CodeGenerationContextInfo info) where TNode : SyntaxNode
76public SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
79public SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
82public SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
85public SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
88public SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
91public SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
94public TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destination, IEnumerable<IParameterSymbol> parameters, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
97public TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
100public TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
103public TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
106public TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
109public TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
112public TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
115public TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
118public TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> statements, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
123protected abstract TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
124protected abstract TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
125protected abstract TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
126protected abstract TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
127protected abstract TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
128protected abstract TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
129protected abstract TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> members) where TDeclarationNode : SyntaxNode;
131public abstract TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destinationMember, IEnumerable<IParameterSymbol> parameters, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
132public abstract TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
133public abstract TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
134public abstract TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
135public abstract TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
137public abstract TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
138public abstract TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
139public abstract TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
140public abstract TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
142public abstract CodeGenerationDestination GetDestination(SyntaxNode node);
143public abstract SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
144public abstract SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
147public abstract SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
149public abstract SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
150public abstract SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
151public abstract SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
156protected static void CheckDeclarationNode<TDeclarationNode>(SyntaxNode destination) where TDeclarationNode : SyntaxNode
171protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2>(SyntaxNode destination)
172where TDeclarationNode1 : SyntaxNode
173where TDeclarationNode2 : SyntaxNode
190protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2, TDeclarationNode3>(SyntaxNode destination)
191where TDeclarationNode1 : SyntaxNode
192where TDeclarationNode2 : SyntaxNode
193where TDeclarationNode3 : SyntaxNode
211protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2, TDeclarationNode3, TDeclarationNode4>(SyntaxNode destination)
212where TDeclarationNode1 : SyntaxNode
213where TDeclarationNode2 : SyntaxNode
214where TDeclarationNode3 : SyntaxNode
215where TDeclarationNode4 : SyntaxNode
232Func<SyntaxNode, TCodeGenerationContextInfo, IList<bool>?, CancellationToken, SyntaxNode> declarationTransform,
247var transformedDeclaration = declarationTransform(destinationDeclaration, info, availableIndices, cancellationToken);
249var root = await destinationTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
250var currentRoot = root.ReplaceNode(destinationDeclaration, transformedDeclaration);
275where TDeclarationNode : SyntaxNode
297where TDeclarationSyntax : SyntaxNode
299var newMembers = new List<SyntaxNode>();
304var newMember = GetNewMember(info, codeGenerationDestination, member, cancellationToken);
329where TDeclarationSyntax : SyntaxNode
342private SyntaxNode? GetNewMember(TCodeGenerationContextInfo info, CodeGenerationDestination codeGenerationDestination, ISymbol member, CancellationToken cancellationToken)
359CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
379protected abstract IComparer<SyntaxNode> GetMemberComparer();
481protected static void CheckLocation(SyntaxNode destinationMember, [NotNull] Location? location)
500SyntaxNode attributeList,
520SyntaxNode attributeToRemove,
526var root = attributeToRemove.SyntaxTree.GetRoot();
535where T : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (18)
55SyntaxNode? initializer = null)
81bool isIndexer = false, SyntaxNode? initializer = null)
109SyntaxNode? initializer = null)
125ImmutableArray<SyntaxNode> statements = default,
126ImmutableArray<SyntaxNode> baseConstructorArguments = default,
127ImmutableArray<SyntaxNode> thisConstructorArguments = default,
140ImmutableArray<SyntaxNode> statements = default)
158ImmutableArray<SyntaxNode> statements = default,
159ImmutableArray<SyntaxNode> handlesExpressions = default,
179ImmutableArray<SyntaxNode> statements = default,
180ImmutableArray<SyntaxNode> handlesExpressions = default,
198ImmutableArray<SyntaxNode> statements = default,
224ImmutableArray<SyntaxNode> statements = default,
252ImmutableArray<SyntaxNode> statements = default,
361ImmutableArray<SyntaxNode> statements = default)
385ImmutableArray<SyntaxNode> statements)
518ImmutableArray<SyntaxNode> statements = default,
551SyntaxNode? initializer = null)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\ICodeGenerationService.cs (27)
22SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
27SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
33SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
38SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
43SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
48SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
53TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
58TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
63TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
68TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
73TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
78TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
83TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<ISymbol> members, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
88TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destination, IEnumerable<IParameterSymbol> parameters, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
93TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
98TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
103TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
108TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
113TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
118TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
123TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
128TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> statements, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
188bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken);
193bool CanAddTo(SyntaxNode destination, Solution solution, CodeGenerationContext context, CancellationToken cancellationToken);
201SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(Solution solution, INamespaceOrTypeSymbol namespaceOrType, Location? location, CancellationToken cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeRefactorings\AbstractRefactoringHelpersService.cs (25)
15where TExpressionSyntax : SyntaxNode
16where TArgumentSyntax : SyntaxNode
17where TExpressionStatementSyntax : SyntaxNode
21public bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
24public void AddRelevantNodes<TSyntaxNode>(SourceText sourceText, SyntaxNode root, TextSpan selection, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
27public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
30public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
33public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
36public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
39public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
42public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
45public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
48public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
51public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeRefactorings\CodeRefactoringContextExtensions.cs (12)
41public static Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
44public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNode) where TSyntaxNode : SyntaxNode
50public static Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
53public static async Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNodes) where TSyntaxNode : SyntaxNode
59public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
65public static TSyntaxNode? TryGetRelevantNode<TSyntaxNode>(this ParsedDocument document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
68public static TSyntaxNode? TryGetRelevantNode<TSyntaxNode>(this ParsedDocument document, TextSpan span, bool allowEmptyNode, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
76this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
82this Document document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
89this ParsedDocument document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
93this ParsedDocument document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
102this ParsedDocument document, TextSpan span, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Editing\ImportAdderService.cs (23)
37var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
70bool OverlapsWithSpan(SyntaxNode n) => spansTree.HasIntervalThatOverlapsWith(n.FullSpan.Start, n.FullSpan.Length);
73protected abstract INamespaceSymbol? GetExplicitNamespaceSymbol(SyntaxNode node, SemanticModel model);
77SyntaxNode container,
95SyntaxNode container,
100private static SyntaxNode GenerateNamespaceImportDeclaration(INamespaceSymbol namespaceSymbol, SyntaxGenerator generator)
111IEnumerable<SyntaxNode> syntaxNodes,
117using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var importsToAdd);
118using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var nodesToSimplify);
120var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
139var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
159var first = root.DescendantNodesAndSelf().First(x => x.HasAnnotation(annotation));
160var last = root.DescendantNodesAndSelf().Last(x => x.HasAnnotation(annotation));
162var context = first.GetCommonRoot(last);
172IEnumerable<SyntaxNode> annotatedNodes,
178using var _ = PooledDictionary<INamespaceSymbol, SyntaxNode>.GetInstance(out var importToSyntax);
180var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
188SyntaxNode? first = null, last = null;
190foreach (var annotatedNode in annotatedNodes)
218var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
233var context = first.GetCommonRoot(last);
236var importContainer = addImportsService.GetImportContainer(root, context, importToSyntax.First().Value, options);
259private static bool IsInsideNamespace(SyntaxNode node, INamespaceSymbol symbol, SemanticModel model, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\StringBuilderExtensions.cs (1)
22where TNode : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxEditorExtensions.cs (29)
31Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
32CancellationToken cancellationToken) where TNode : SyntaxNode
54Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
55CancellationToken cancellationToken) where TNode : SyntaxNode
76Func<SemanticModel, SyntaxNode, TNode, SyntaxNode> updateRoot,
77CancellationToken cancellationToken) where TNode : SyntaxNode
98Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
99CancellationToken cancellationToken) where TNode : SyntaxNode
120Func<SemanticModel, SyntaxNode, TNode, SyntaxNode> updateRoot,
121CancellationToken cancellationToken) where TNode : SyntaxNode
154Func<ISyntaxFactsService, SyntaxNode, SyntaxNode> getSemanticBoundary,
156Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
157CancellationToken cancellationToken) where TNode : SyntaxNode
170var originalRoot = editor.OriginalRoot;
173var currentRoot = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
183var replacementRoot = updateRoot(semanticModel, currentRoot, instance, currentNode);
195private static SyntaxNode GetExpressionSemanticBoundary(ISyntaxFactsService syntaxFacts, SyntaxNode node)
202return node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>(
210private static SyntaxNode GetMethodBodySemanticBoundary(ISyntaxFactsService syntaxFacts, SyntaxNode node)
212return node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_CreateEqualsMethod.cs (22)
48public static IMethodSymbol CreateEqualsMethod(this Compilation compilation, ImmutableArray<SyntaxNode> statements)
56ImmutableArray<SyntaxNode> statements)
120private static ImmutableArray<SyntaxNode> CreateEqualsMethodStatements(
135using var statements = TemporaryArray<SyntaxNode>.Empty;
144var localNameExpression = factory.IdentifierName(localName);
145var objNameExpression = factory.IdentifierName(ObjName);
149using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
178var ifStatement = factory.IfStatement(
189var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
201var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
240ImmutableArray<ISymbol> members, SyntaxNode localNameExpression,
241ArrayBuilder<SyntaxNode> expressions)
251var symbolNameExpression = factory.IdentifierName(member.Name);
252var thisSymbol = factory.MemberAccessExpression(factory.ThisExpression(), symbolNameExpression)
254var otherSymbol = factory.MemberAccessExpression(localNameExpression, symbolNameExpression);
291private static ImmutableArray<SyntaxNode> CreateIEquatableEqualsMethodStatements(
299var statements = ArrayBuilder<SyntaxNode>.GetInstance();
301var otherNameExpression = factory.IdentifierName(OtherName);
305using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
343SyntaxGenerator factory, SyntaxGeneratorInternal generatorInternal, Compilation compilation, ParseOptions parseOptions, SyntaxNode otherNameExpression, ArrayBuilder<SyntaxNode> expressions)
345var nullLiteral = factory.NullLiteralExpression();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (58)
33public static SyntaxNode Negate(
36SyntaxNode expression,
43public static SyntaxNode Negate(
46SyntaxNode expressionOrPattern,
54public static SyntaxNode Negate(
57SyntaxNode expressionOrPattern,
114syntaxFacts.GetPartsOfAnyIsTypeExpression(expressionOrPattern, out var expression, out var type);
124syntaxFacts.GetPartsOfAnyIsTypeExpression(expressionOrPattern, out var expression, out var type);
136private static SyntaxNode GetNegationOfBinaryExpression(
137SyntaxNode expressionNode,
144syntaxFacts.GetPartsOfBinaryExpression(expressionNode, out var leftOperand, out var operatorToken, out var rightOperand);
172var newBinaryExpressionSyntax = negatedKind is BinaryOperatorKind.Equals or BinaryOperatorKind.NotEquals
190SyntaxNode innerPattern;
199var typeExpression = generatorInternal.Type(isTypeOperation.TypeOperand, typeContext: false);
228private static SyntaxNode GetNegationOfBinaryPattern(
229SyntaxNode pattern,
241syntaxFacts.GetPartsOfBinaryPattern(pattern, out var left, out var operatorToken, out var right);
243var newLeft = generator.Negate(generatorInternal, left, semanticModel, cancellationToken);
244var newRight = generator.Negate(generatorInternal, right, semanticModel, cancellationToken);
246var newPattern =
258private static SyntaxNode GetNegationOfIsPatternExpression(SyntaxNode isExpression, SyntaxGenerator generator, SyntaxGeneratorInternal generatorInternal, SemanticModel semanticModel, CancellationToken cancellationToken)
263syntaxFacts.GetPartsOfIsPatternExpression(isExpression, out var left, out var isToken, out var pattern);
265SyntaxNode? negatedPattern = null;
287var type = syntaxFacts.GetTypeOfTypePattern(negatedPattern);
300private static SyntaxNode GetNegationOfRelationalPattern(
301SyntaxNode expressionNode,
312syntaxFacts.GetPartsOfRelationalPattern(expressionNode, out var operatorToken, out var expression);
327private static bool IsLegalPattern(ISyntaxFacts syntaxFacts, SyntaxNode pattern, bool designatorsLegal)
332syntaxFacts.GetPartsOfBinaryPattern(pattern, out var left, out _, out var right);
342syntaxFacts.GetPartsOfUnaryPattern(pattern, out _, out var subPattern);
354syntaxFacts.GetPartsOfParenthesizedPattern(pattern, out _, out var subPattern, out _);
360syntaxFacts.GetPartsOfDeclarationPattern(pattern, out _, out var designator);
366syntaxFacts.GetPartsOfRecursivePattern(pattern, out _, out _, out _, out var designator);
376private static SyntaxNode NegateRelational(
379SyntaxNode leftOperand,
381SyntaxNode rightOperand)
467private static SyntaxNode GetNegationOfLiteralExpression(
468SyntaxNode expression,
476SyntaxNode newLiteralExpression;
497private static SyntaxNode GetNegationOfConstantPattern(
498SyntaxNode pattern,
510var expression = syntaxFacts.GetExpressionOfConstantPattern(pattern);
522private static SyntaxNode GetNegationOfLogicalNotExpression(
523SyntaxNode expression,
527var operand = syntaxFacts.GetOperandOfPrefixUnaryExpression(expression);
533private static SyntaxNode GetNegationOfUnaryPattern(
534SyntaxNode pattern,
550private static SyntaxNode GetNegationOfNotPattern(
551SyntaxNode pattern,
558syntaxFacts.GetPartsOfUnaryPattern(pattern, out var opToken, out var subPattern);
564var type = syntaxFacts.GetTypeOfTypePattern(subPattern);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions.cs (47)
23public static SyntaxNode CreateThrowNotImplementedStatement(
30public static SyntaxNode CreateThrowNotImplementedExpression(
37private static SyntaxNode CreateNewNotImplementedException(SyntaxGenerator codeDefinitionFactory, Compilation compilation)
39var notImplementedExceptionTypeSyntax = compilation.NotImplementedExceptionType() is INamedTypeSymbol symbol
48public static ImmutableArray<SyntaxNode> CreateThrowNotImplementedStatementBlock(
52public static ImmutableArray<SyntaxNode> CreateArguments(
59private static SyntaxNode CreateArgument(
66public static SyntaxNode GetDefaultEqualityComparer(
73var typeExpression = equalityComparerType == null
88public static SyntaxNode IsPatternExpression(this SyntaxGeneratorInternal generator, SyntaxNode expression, SyntaxNode pattern)
94public static SyntaxNode GenerateDelegateThroughMemberStatement(
97var through = generator.MemberAccessExpression(
103var invocationExpression = generator.InvocationExpression(through, generator.CreateArguments(method.Parameters));
109public static SyntaxNode CreateDelegateThroughExpression(
112var name = generator.IdentifierName(throughMember.Name);
113var through = throughMember.IsStatic
159var explicitImplementationCast = generator.CastExpression(
174static SyntaxNode GenerateContainerName(SyntaxGenerator factory, ISymbol throughMember)
183public static ImmutableArray<SyntaxNode> GetGetAccessorStatements(
193var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
194var expression = property.IsIndexer
222public static ImmutableArray<SyntaxNode> GetSetAccessorStatements(
232var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
233var expression = property.IsIndexer
335public static ImmutableArray<SyntaxNode> CreateAssignmentStatements(
345using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var nullCheckStatements);
346using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var assignStatements);
358var assignExpression = factory.AssignmentStatement(
361var statement = factory.ExpressionStatement(assignExpression);
371var fieldAccess = factory.MemberAccessExpression(factory.ThisExpression(), factory.IdentifierName(fieldName))
391SyntaxNode fieldAccess,
394ArrayBuilder<SyntaxNode> nullCheckStatements,
395ArrayBuilder<SyntaxNode> assignStatements)
426public static SyntaxNode CreateAssignWithNullCheckStatement(
427this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter, SyntaxNode fieldAccess)
436public static SyntaxNode CreateThrowArgumentNullExpression(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
439private static SyntaxNode CreateNewArgumentNullException(SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
448public static SyntaxNode CreateNullCheckAndThrowStatement(
454var condition = factory.CreateNullCheckExpression(generatorInternal, semanticModel, parameter.Name);
455var throwStatement = factory.CreateThrowArgumentNullExceptionStatement(semanticModel.Compilation, parameter);
460public static SyntaxNode CreateNullCheckExpression(
463var identifier = factory.IdentifierName(identifierName);
464var nullExpr = factory.NullLiteralExpression();
465var condition = generatorInternal.SupportsPatterns(semanticModel.SyntaxTree.Options)
471public static SyntaxNode CreateThrowArgumentNullExceptionStatement(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Formatting\FormatterShared.cs (6)
26var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
30public SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
33public SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
36public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\AbstractAddImportsService.cs (65)
19where TCompilationUnitSyntax : SyntaxNode
20where TNamespaceDeclarationSyntax : SyntaxNode
21where TUsingOrAliasSyntax : SyntaxNode
22where TExternSyntax : SyntaxNode
25protected abstract SyntaxNode? GetAlias(TUsingOrAliasSyntax usingOrAlias);
26protected abstract ImmutableArray<SyntaxNode> GetGlobalImports(SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken);
27protected abstract SyntaxList<TUsingOrAliasSyntax> GetUsingsAndAliases(SyntaxNode node);
28protected abstract SyntaxList<TExternSyntax> GetExterns(SyntaxNode node);
43private bool HasAliases(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsAlias);
44private bool HasUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsSimpleUsing);
45private bool HasStaticUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsStaticUsing);
46private bool HasExterns(SyntaxNode node) => GetExterns(node).Any();
47private bool HasAnyImports(SyntaxNode node) => GetUsingsAndAliases(node).Any() || GetExterns(node).Any();
51SyntaxNode root,
52SyntaxNode? contextLocation,
53SyntaxNode import,
62private static ImmutableArray<SyntaxNode> GetAllContainers(SyntaxNode root, SyntaxNode? contextLocation)
66var applicableContainer = GetFirstApplicableContainer(contextLocation);
67return [.. applicableContainer.GetAncestorsOrThis<SyntaxNode>()];
71SyntaxNode import, ImmutableArray<SyntaxNode> containers, ImmutableArray<SyntaxNode> globalImports)
73foreach (var node in containers)
86foreach (var node in globalImports)
97protected abstract bool IsEquivalentImport(SyntaxNode a, SyntaxNode b);
99public SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options)
103out var externContainer, out var usingContainer, out var staticUsingContainer, out var aliasContainer);
126public SyntaxNode AddImports(
128SyntaxNode root,
129SyntaxNode? contextLocation,
130IEnumerable<SyntaxNode> newImports,
147out var externContainer, out var usingContainer, out var aliasContainer, out var staticUsingContainer);
149var newRoot = Rewrite(
157protected abstract SyntaxNode Rewrite(
159SyntaxNode externContainer, SyntaxNode usingContainer, SyntaxNode staticUsingContainer, SyntaxNode aliasContainer,
160AddImportPlacementOptions options, SyntaxNode root, CancellationToken cancellationToken);
162private void GetContainers(SyntaxNode root, SyntaxNode contextLocation, AddImportPlacementOptions options, out SyntaxNode externContainer, out SyntaxNode usingContainer, out SyntaxNode staticUsingContainer, out SyntaxNode aliasContainer)
164var applicableContainer = GetFirstApplicableContainer(contextLocation);
165var contextSpine = applicableContainer.GetAncestorsOrThis<SyntaxNode>().ToImmutableArray();
170var fallbackNode = contextSpine.FirstOrDefault(HasAnyImports);
190private static SyntaxNode? GetFirstApplicableContainer(SyntaxNode contextNode)
194var node = usingDirective != null ? usingDirective.Parent! : contextNode;
196(SyntaxNode?)node.GetAncestorOrThis<TCompilationUnitSyntax>();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\IAddImportsService.cs (15)
23SemanticModel semanticModel, SyntaxNode root, SyntaxNode? contextLocation,
24SyntaxNode import, SyntaxGenerator generator, CancellationToken cancellationToken);
30SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options);
32SyntaxNode AddImports(
33SemanticModel semanticModel, SyntaxNode root, SyntaxNode? contextLocation,
34IEnumerable<SyntaxNode> newImports, SyntaxGenerator generator, AddImportPlacementOptions options, CancellationToken cancellationToken);
39public static SyntaxNode AddImport(
40this IAddImportsService service, SemanticModel semanticModel, SyntaxNode root,
41SyntaxNode contextLocation, SyntaxNode newImport, SyntaxGenerator generator, AddImportPlacementOptions options,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\AbstractSemanticFactsService.cs (37)
40SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
48SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
56SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
64SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
73SyntaxNode location,
74SyntaxNode? containerOpt,
82var container = containerOpt ?? location.AncestorsAndSelf().FirstOrDefault(
96protected virtual IEnumerable<ISymbol> GetCollidableSymbols(SemanticModel semanticModel, SyntaxNode location, SyntaxNode? container, CancellationToken cancellationToken)
180public bool IsWrittenTo(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
183public bool IsOnlyWrittenTo(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
186public bool IsInOutContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
189public bool IsInRefContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
192public bool IsInInContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
195public bool CanReplaceWithRValue(SemanticModel semanticModel, SyntaxNode? expression, CancellationToken cancellationToken)
204public bool TryGetSpeculativeSemanticModel(SemanticModel oldSemanticModel, SyntaxNode oldNode, SyntaxNode newNode, [NotNullWhen(true)] out SemanticModel? speculativeModel)
210public ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode forEachStatement)
213public SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
216public IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node)
219public ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node)
222public ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node)
228public IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken)
231public IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argumentNode, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
234public IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argumentNode, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
237public ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
240public ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
243public ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken)
246public bool IsInsideNameOfExpression(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
252public bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, INamedTypeSymbol? expressionTypeOpt, CancellationToken cancellationToken)
255public string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken)
258public IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node)
264public CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\ISemanticFactsService.cs (11)
27SemanticModel semanticModel, SyntaxNode location,
28SyntaxNode? container, string baseName, CancellationToken cancellationToken);
31SemanticModel semanticModel, SyntaxNode location,
32SyntaxNode? container, string baseName, IEnumerable<string> usedNames, CancellationToken cancellationToken);
34SyntaxToken GenerateUniqueName(SemanticModel semanticModel, SyntaxNode location, SyntaxNode? container, string baseName,
38SemanticModel semanticModel, SyntaxNode location,
39SyntaxNode? container, string baseName, CancellationToken cancellationToken);
42SemanticModel semanticModel, SyntaxNode location,
43SyntaxNode? container, string baseName, IEnumerable<string> usedNames, CancellationToken cancellationToken);
47IMethodSymbol? TryGetDisposeMethod(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\SemanticModelReuse\AbstractSemanticModelReuseLanguageService.cs (20)
22where TMemberDeclarationSyntax : SyntaxNode
24where TAccessorDeclarationSyntax : SyntaxNode
32public abstract SyntaxNode? TryGetContainingMethodBodyForSpeculation(SyntaxNode node);
34protected abstract SemanticModel? TryGetSpeculativeSemanticModelWorker(SemanticModel previousSemanticModel, SyntaxNode previousBodyNode, SyntaxNode currentBodyNode);
49public async Task<SemanticModel?> TryGetSpeculativeSemanticModelAsync(SemanticModel previousSemanticModel, SyntaxNode currentBodyNode, CancellationToken cancellationToken)
66var previousRoot = await previousSemanticModel.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
67var currentRoot = await currentBodyNode.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
68var previousBodyNode = GetPreviousBodyNode(previousRoot, currentRoot, currentBodyNode);
90protected SyntaxNode? GetPreviousBodyNode(SyntaxNode previousRoot, SyntaxNode currentRoot, SyntaxNode currentBodyNode)
98var previousContainer = GetPreviousBodyNode(previousRoot, currentRoot, currentContainer);
124var previousNode = previousRoot;
136var childAsNode = children[childIndex].AsNode();
150private static void GetNodeChildIndexPathToRootReversed(SyntaxNode node, ArrayBuilder<int> path)
152var current = node;
153var parent = current.Parent;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Simplification\AbstractSimplificationService.cs (30)
30where TCompilationUnitSyntax : SyntaxNode
31where TExpressionSyntax : SyntaxNode
32where TStatementSyntax : SyntaxNode
33where TCrefSyntax : SyntaxNode
35protected static readonly Func<SyntaxNode, bool> s_containsAnnotations = n => n.ContainsAnnotations;
40protected abstract ImmutableArray<NodeOrTokenToReduce> GetNodesAndTokensToReduce(SyntaxNode root, Func<SyntaxNodeOrToken, bool> isNodeOrTokenOutsideSimplifySpans);
41protected abstract SemanticModel GetSpeculativeSemanticModel(ref SyntaxNode nodeToSpeculate, SemanticModel originalSemanticModel, SyntaxNode originalNode);
42protected abstract bool NodeRequiresNonSpeculativeSemanticModel(SyntaxNode node);
43protected abstract void AddImportDeclarations(TCompilationUnitSyntax root, ArrayBuilder<SyntaxNode> importDeclarations);
48protected virtual SyntaxNode TransformReducedNode(SyntaxNode reducedNode, SyntaxNode originalNode)
51public abstract SyntaxNode Expand(SyntaxNode node, SemanticModel semanticModel, SyntaxAnnotation? annotationForReplacedAliasIdentifier, Func<SyntaxNode, bool>? expandInsideNode, bool expandParameter, CancellationToken cancellationToken);
52public abstract SyntaxToken Expand(SyntaxToken token, SemanticModel semanticModel, Func<SyntaxNode, bool>? expandInsideNode, CancellationToken cancellationToken);
115var reducedNodesMap = new ConcurrentDictionary<SyntaxNode, SyntaxNode>();
152SyntaxNode root,
156ConcurrentDictionary<SyntaxNode, SyntaxNode> reducedNodesMap,
218var replacedParent = isNode
232var currentNode = currentNodeOrToken.AsNode()!;
237var newRoot = root.ReplaceNode(nodeOrToken.AsNode()!, currentNode.WithAdditionalAnnotations(marker));
285using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var importDeclarations);
300var root = await model.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
302var unusedImports = new HashSet<SyntaxNode>();
311var newRoot = gen.RemoveNodes(root, unusedImports);
320protected abstract void GetUnusedNamespaceImports(SemanticModel model, HashSet<SyntaxNode> namespaceImports, CancellationToken cancellationToken);
src\roslyn\src\Analyzers\CSharp\Analyzers\RemoveConfusingSuppression\CSharpRemoveConfusingSuppressionDiagnosticAnalyzer.cs (1)
30var node = context.Node;
src\roslyn\src\Analyzers\CSharp\Analyzers\RemoveUnnecessaryUnsafeModifier\UnnecessaryUnsafeModifierUtilities.cs (20)
25private static bool ShouldAnalyzeNode(SemanticModel semanticModel, SyntaxNode declaration, CancellationToken cancellationToken)
39ArrayBuilder<SyntaxNode> result,
43var originalRoot = originalTree.GetRoot(cancellationToken);
45using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var nodesToCheck);
47foreach (var existingNode in originalRoot.DescendantNodes())
78IEnumerable<SyntaxNode> nodesToCheck,
79ArrayBuilder<SyntaxNode> result,
82using var _2 = PooledDictionary<SyntaxNode, SyntaxAnnotation>.GetInstance(out var nodeToAnnotation);
83foreach (var node in nodesToCheck)
91IEnumerable<SyntaxNode> nodesToCheck,
92PooledDictionary<SyntaxNode, SyntaxAnnotation> nodeToAnnotation,
93ArrayBuilder<SyntaxNode> result,
97var originalRoot = originalTree.GetRoot(cancellationToken);
104var updateRoot = updatedTree.GetRoot(cancellationToken);
112var newNode = updateRoot.GetAnnotatedNodes(annotation).Single();
122private static SyntaxNode WithoutUnsafeModifier(SyntaxNode node)
130private static SyntaxTokenList GetNewModifierList(SyntaxNode node)
133private static SyntaxTokenList GetModifiers(SyntaxNode node)
141public static SyntaxToken GetUnsafeModifier(SyntaxNode node)
src\roslyn\src\Analyzers\CSharp\Analyzers\UseExpressionBody\Helpers\UseExpressionBodyHelper.cs (8)
25public abstract BlockSyntax? GetBody(SyntaxNode declaration);
26public abstract ArrowExpressionClauseSyntax? GetExpressionBody(SyntaxNode declaration);
27public abstract bool IsRelevantDeclarationNode(SyntaxNode node);
29public abstract bool CanOfferUseExpressionBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, CancellationToken cancellationToken);
30public abstract bool CanOfferUseBlockBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, out bool fixesError, [NotNullWhen(true)] out ArrowExpressionClauseSyntax? expressionBody);
31public abstract SyntaxNode Update(SemanticModel semanticModel, SyntaxNode declaration, bool useExpressionBody, CancellationToken cancellationToken);
33public abstract Location GetDiagnosticLocation(SyntaxNode declaration);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseExpressionBody\Helpers\UseExpressionBodyHelper`1.cs (10)
35where TDeclaration : SyntaxNode
54public override BlockSyntax? GetBody(SyntaxNode declaration)
57public override ArrowExpressionClauseSyntax? GetExpressionBody(SyntaxNode declaration)
60public override bool IsRelevantDeclarationNode(SyntaxNode node)
63public override bool CanOfferUseExpressionBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, CancellationToken cancellationToken)
66public override bool CanOfferUseBlockBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, out bool fixesError, [NotNullWhen(true)] out ArrowExpressionClauseSyntax? expressionBody)
69public sealed override SyntaxNode Update(SemanticModel semanticModel, SyntaxNode declaration, bool useExpressionBody, CancellationToken cancellationToken)
72public override Location GetDiagnosticLocation(SyntaxNode declaration)
122SyntaxNode declaration, ExpressionBodyPreference conversionPreference, CancellationToken cancellationToken,
src\roslyn\src\Analyzers\CSharp\Analyzers\UsePatternMatching\CSharpUseNotPatternDiagnosticAnalyzer.cs (1)
62var node = context.Node;
src\roslyn\src\Analyzers\CSharp\Analyzers\UsePrimaryConstructor\CSharpUsePrimaryConstructorDiagnosticAnalyzer.cs (7)
88[NotNullWhen(true)] out SyntaxNode? nodeToRemove,
391var body = primaryConstructorDeclaration.ExpressionBody ?? (SyntaxNode?)primaryConstructorDeclaration.Body;
416using var _2 = ArrayBuilder<(IParameterSymbol parameter, SyntaxNode assignedMemberDeclaration, bool parameterIsWrittenTo)>.GetInstance(out var orderedParameterAssignments);
440var lastAssignedMemberDeclaration = group.First().assignedMemberDeclaration;
467ArrayBuilder<(IParameterSymbol parameter, SyntaxNode assignedMemberDeclaration, bool parameterIsWrittenTo)>? orderedParameterAssignments,
495if (!IsViableMemberToAssignTo(namedType, member, out _, out var assignedMemberDeclaration, cancellationToken))
src\roslyn\src\Analyzers\CSharp\Analyzers\UseUtf8StringLiteral\UseUtf8StringLiteralDiagnosticAnalyzer.cs (3)
117private void ReportParameterArrayDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, ImmutableArray<IOperation> elements, NotificationOption2 notificationOption, ArrayCreationOperationLocation operationLocation)
129private void ReportArrayCreationDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, NotificationOption2 notificationOption)
137private void ReportDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, NotificationOption2 notificationOption, Location location, ArrayCreationOperationLocation operationLocation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\SyntaxNodeExtensions.cs (74)
25public static LanguageVersion GetLanguageVersion(this SyntaxNode node)
28public static void Deconstruct(this SyntaxNode node, out SyntaxKind kind)
31public static bool IsKind<TNode>([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind, [NotNullWhen(true)] out TNode? result)
32where TNode : SyntaxNode
44public static bool IsParentKind([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind)
47public static bool IsParentKind<TNode>([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind, [NotNullWhen(true)] out TNode? result)
48where TNode : SyntaxNode
61this SyntaxNode node, SourceText? sourceText = null,
90public static bool IsAnyArgumentList([NotNullWhen(true)] this SyntaxNode? node)
99public static (SyntaxToken openBrace, SyntaxToken closeBrace) GetBraces(this SyntaxNode? node)
116public static bool IsEmbeddedStatementOwner([NotNullWhen(true)] this SyntaxNode? node)
130public static StatementSyntax? GetEmbeddedStatement(this SyntaxNode? node)
146public static BaseParameterListSyntax? GetParameterList(this SyntaxNode? declaration)
159public static SyntaxList<AttributeListSyntax> GetAttributeLists(this SyntaxNode? declaration)
172public static ConditionalAccessExpressionSyntax? GetParentConditionalAccessExpression(this SyntaxNode? node)
184var current = node;
251/// <inheritdoc cref="ISyntaxFacts.GetRootConditionalAccessExpression(SyntaxNode)"/>
253public static ConditionalAccessExpressionSyntax? GetRootConditionalAccessExpression(this SyntaxNode? node)
270public static ConditionalAccessExpressionSyntax? GetInnerMostConditionalAccessExpression(this SyntaxNode node)
281public static bool IsAsyncSupportingFunctionSyntax([NotNullWhen(true)] this SyntaxNode? node)
284public static bool IsCompoundAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
287public static bool IsLeftSideOfAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
291public static bool IsLeftSideOfAnyAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
294public static bool IsRightSideOfAnyAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
297public static bool IsLeftSideOfCompoundAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
308public static IEnumerable<UsingDirectiveSyntax> GetEnclosingUsingDirectives(this SyntaxNode node)
316public static IEnumerable<ExternAliasDirectiveSyntax> GetEnclosingExternAliasDirectives(this SyntaxNode node)
324public static bool IsUnsafeContext(this SyntaxNode node)
335public static bool IsInStaticContext(this SyntaxNode node)
337for (var current = node; current != null; current = current.Parent)
372public static BaseNamespaceDeclarationSyntax? GetInnermostNamespaceDeclarationWithUsings(this SyntaxNode contextNode)
395public static bool IsBreakableConstruct([NotNullWhen(true)] this SyntaxNode? node)
398public static bool IsContinuableConstruct([NotNullWhen(true)] this SyntaxNode? node)
413public static bool IsReturnableConstruct(this SyntaxNode node)
437public static bool ContainsYield(this SyntaxNode node)
440public static bool IsReturnableConstructOrTopLevelCompilationUnit(this SyntaxNode node)
443public static bool SpansPreprocessorDirective<TSyntaxNode>(this IEnumerable<TSyntaxNode> list) where TSyntaxNode : SyntaxNode
448where TNode : SyntaxNode
496public static bool ContainsInterleavedDirective(this SyntaxNode syntaxNode, CancellationToken cancellationToken)
500/// Similar to <see cref="ContainsInterleavedDirective(SyntaxNode, CancellationToken)"/> except that the span to check
503public static bool ContainsInterleavedDirective(this SyntaxNode syntaxNode, TextSpan span, CancellationToken cancellationToken)
542var structure = trivia.GetStructure()!;
584where TSyntaxNode : SyntaxNode
644public static ImmutableArray<SyntaxTrivia> GetLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
647public static TSyntaxNode GetNodeWithoutLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
650public static TSyntaxNode GetNodeWithoutLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node, out ImmutableArray<SyntaxTrivia> strippedTrivia) where TSyntaxNode : SyntaxNode
653public static ImmutableArray<SyntaxTrivia> GetLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
656public static TSyntaxNode GetNodeWithoutLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
659public static TSyntaxNode GetNodeWithoutLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node, out ImmutableArray<SyntaxTrivia> strippedTrivia) where TSyntaxNode : SyntaxNode
662public static bool IsVariableDeclaratorValue([NotNullWhen(true)] this SyntaxNode? node)
666public static BlockSyntax? FindInnermostCommonBlock(this IEnumerable<SyntaxNode> nodes)
669public static IEnumerable<SyntaxNode> GetAncestorsOrThis(this SyntaxNode? node, Func<SyntaxNode, bool> predicate)
671var current = node;
683public static (SyntaxToken openParen, SyntaxToken closeParen) GetParentheses(this SyntaxNode node)
713public static (SyntaxToken openBracket, SyntaxToken closeBracket) GetBrackets(this SyntaxNode? node)
726public static SyntaxTokenList GetModifiers(this SyntaxNode? member)
738public static SyntaxNode? WithModifiers(this SyntaxNode? member, SyntaxTokenList modifiers)
749public static void ForEachMember<TArg>(this SyntaxNode? node, Action<MemberDeclarationSyntax, TArg> callback, TArg arg)
774[NotNullWhen(true)] this SyntaxNode? node,
781for (var current = node; current != null; current = current.Parent)
825[NotNullWhen(true)] this SyntaxNode? node,
826[NotNullWhen(true)] out SyntaxNode? deconstructionLeft)
828SyntaxNode? previous = null;
829for (var current = node; current != null; current = current.Parent)
851where T : SyntaxNode
860where T : SyntaxNode
868where T : SyntaxNode
874public static T KeepCommentsAndAddElasticMarkers<T>(this T node) where T : SyntaxNode
879public static SyntaxNode WithPrependedNonIndentationTriviaFrom(
880this SyntaxNode to, SyntaxNode from)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Engine\CSharpFormatEngine.cs (1)
16SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\IndentBlockFormattingRule.cs (13)
47public override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
61private static void AddTypeParameterConstraintClauseOperation(List<IndentBlockOperation> list, SyntaxNode node)
70private void AddSwitchIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
129private void AddLabelIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
145private static void AddAlignmentBlockOperation(List<IndentBlockOperation> list, SyntaxNode node)
200private static void SetAlignmentBlockOperation(List<IndentBlockOperation> list, SyntaxNode baseNode, SyntaxNode body)
211private void AddBlockIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
248private static void AddBracketIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
289private static void AddParenthesizedPatternIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
315private static void AddEmbeddedStatementsIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
374private static bool IsWithinSwitchExpressionArmPattern(SyntaxNode node)
378for (var current = node; current != null; current = current.Parent)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\Precedence\AbstractCSharpPrecedenceService.cs (1)
11where TSyntax : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SemanticFacts\CSharpSemanticFacts.cs (32)
43public bool IsWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
46public bool IsOnlyWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
49public bool IsInOutContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
52public bool IsInRefContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
55public bool IsInInContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
58public bool CanReplaceWithRValue(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? expression, CancellationToken cancellationToken)
65foreach (var ancestor in token.GetAncestors<SyntaxNode>())
121SyntaxNode oldNode,
122SyntaxNode newNode,
178public ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode node)
192public SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
195public IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node)
206public ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node)
218public ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node)
243var node = syntaxRef.GetSyntax(cancellationToken);
254public IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken)
264public IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
267public IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
271public ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken)
274public ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken)
279public ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken)
301/// cref="ModelExtensions.GetSymbolInfo(SemanticModel, SyntaxNode, CancellationToken)"/>, but sometimes employs
305private ImmutableArray<ISymbol> GetSymbolInfo(SemanticModel semanticModel, SyntaxNode node, SyntaxToken token, CancellationToken cancellationToken)
431public bool IsInsideNameOfExpression(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
440var node = syntaxReference.GetSyntax(cancellationToken);
442foreach (var localFunction in node.DescendantNodes().Where(CSharpSyntaxFacts.Instance.IsLocalFunctionStatement))
455public bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, [NotNullWhen(true)] INamedTypeSymbol? expressionType, CancellationToken cancellationToken)
458public string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken)
461public IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node)
477private static bool IsInPreprocessingSymbolContext(SyntaxNode node)
487public CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpHeaderFacts.cs (18)
24public override bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
50public override bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
56public override bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
62public override bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
68public override bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
74public override bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
83public override bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
89public override bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
95public override bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpSyntaxFacts.cs (319)
142public bool IsDirective([NotNullWhen(true)] SyntaxNode? node)
145public bool TryGetExternalSourceInfo([NotNullWhen(true)] SyntaxNode? node, out ExternalSourceInfo info)
166public bool IsNameOfSimpleMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
172public bool IsNameOfAnyMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
175public bool IsNameOfMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node)
182public SyntaxNode? GetStandaloneExpression(SyntaxNode? node)
185public SyntaxNode? GetRootConditionalAccessExpression(SyntaxNode? node)
188public bool IsDeclarationExpression([NotNullWhen(true)] SyntaxNode? node)
191public bool IsNamedArgument([NotNullWhen(true)] SyntaxNode? node)
194public bool IsNameOfNamedArgument([NotNullWhen(true)] SyntaxNode? node)
197public SyntaxNode? GetParameterList(SyntaxNode node)
200public bool IsParameterList([NotNullWhen(true)] SyntaxNode? node)
203public bool IsUsingDirectiveName([NotNullWhen(true)] SyntaxNode? node)
207public bool IsUsingAliasDirective([NotNullWhen(true)] SyntaxNode? node)
210public void GetPartsOfUsingAliasDirective(SyntaxNode node, out SyntaxToken globalKeyword, out SyntaxToken alias, out SyntaxNode name)
218public bool IsDeconstructionForEachStatement([NotNullWhen(true)] SyntaxNode? node)
221public bool IsUsingLocalDeclarationStatement([NotNullWhen(true)] SyntaxNode? node)
224public bool IsDeconstructionAssignment([NotNullWhen(true)] SyntaxNode? node)
227public Location GetDeconstructionReferenceLocation(SyntaxNode node)
237public bool IsStatement([NotNullWhen(true)] SyntaxNode? node)
240public bool IsExecutableStatement([NotNullWhen(true)] SyntaxNode? node)
243public bool IsGlobalStatement([NotNullWhen(true)] SyntaxNode? node)
246public SyntaxNode GetStatementOfGlobalStatement(SyntaxNode node)
249public bool IsMethodBody([NotNullWhen(true)] SyntaxNode? node)
261public SyntaxNode GetExpressionOfRefExpression(SyntaxNode node)
264public SyntaxNode? GetExpressionOfReturnStatement(SyntaxNode node)
275public bool HasImplicitBaseConstructorInitializer(SyntaxNode node)
311public bool IsPredefinedType(SyntaxNode? node)
314public bool IsPredefinedType(SyntaxNode? node, PredefinedType type)
535public bool IsPostfixUnaryExpression([NotNullWhen(true)] SyntaxNode? node)
538public bool IsElementBindingExpression([NotNullWhen(true)] SyntaxNode? node)
541public bool IsMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node)
544public bool IsPointerMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
547public void GetNameAndArityOfSimpleName(SyntaxNode node, out string name, out int arity)
554public bool LooksGeneric(SyntaxNode simpleName)
558public SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(SyntaxNode? genericName)
561public SyntaxNode? GetTargetOfMemberBinding(SyntaxNode? node)
564public SyntaxNode GetNameOfMemberBindingExpression(SyntaxNode node)
567public SyntaxNode? GetExpressionOfMemberAccessExpression(SyntaxNode node, bool allowImplicitTarget)
570public void GetPartsOfElementAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode argumentList)
577public SyntaxNode GetExpressionOfInterpolation(SyntaxNode node)
580public bool IsInStaticContext(SyntaxNode node)
583public bool IsInNamespaceOrTypeContext([NotNullWhen(true)] SyntaxNode? node)
586public bool IsBaseTypeList([NotNullWhen(true)] SyntaxNode? node)
589public SyntaxNode GetExpressionOfArgument(SyntaxNode node)
592public SyntaxNode GetExpressionOfAttributeArgument(SyntaxNode node)
595public RefKind GetRefKindOfArgument(SyntaxNode node)
598public bool IsArgument([NotNullWhen(true)] SyntaxNode? node)
601public bool IsAttributeArgument([NotNullWhen(true)] SyntaxNode? node)
604public bool IsSimpleArgument([NotNullWhen(true)] SyntaxNode? node)
611public bool IsInConstantContext([NotNullWhen(true)] SyntaxNode? node)
614public bool IsInConstructor(SyntaxNode node)
617public bool IsUnsafeContext(SyntaxNode node)
620public bool IsAttributeNamedArgumentIdentifier([NotNullWhen(true)] SyntaxNode? node)
623public SyntaxNode? GetContainingTypeDeclaration(SyntaxNode root, int position)
627.GetAncestors<SyntaxNode>()
631public SyntaxNode? GetContainingVariableDeclaratorOfFieldDeclaration(SyntaxNode? node)
634public bool IsNameOfSubpattern([NotNullWhen(true)] SyntaxNode? node)
639public bool IsPropertyPatternClause(SyntaxNode node)
643[NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? initializedInstance)
651var withInitializer = identifier.Parent.GetRequiredParent();
657var objectInitializer = identifier.Parent.GetRequiredParent();
674public bool IsAnonymousObjectMemberDeclaratorNameIdentifier([NotNullWhen(true)] SyntaxNode? expression)
678public bool IsAnyInitializerExpression([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? creationExpression)
693public bool IsElementAccessExpression(SyntaxNode? node)
697public SyntaxNode? ConvertToSingleLine(SyntaxNode? node, bool useElasticTrivia = false)
700public SyntaxNode? GetContainingMemberDeclaration(SyntaxNode root, int position, bool useFullSpan = true)
703public SyntaxNode? GetContainingMethodDeclaration(SyntaxNode root, int position, bool useFullSpan = true)
706private static SyntaxNode? GetContainingMemberDeclaration<TMemberDeclarationSyntax>(SyntaxNode root, int position, bool useFullSpan = true)
719var node = root.FindToken(position).Parent;
737public bool IsMethodLevelMember([NotNullWhen(true)] SyntaxNode? node)
745public bool IsTopLevelNodeWithMembers([NotNullWhen(true)] SyntaxNode? node)
748public string GetDisplayName(SyntaxNode? node, DisplayNameOptions options, string? rootNamespace = null)
772var parent = node.GetAncestor<TypeDeclarationSyntax>() ?? node.Parent;
810private string? GetName(SyntaxNode node, DisplayNameOptions options)
901public SyntaxList<SyntaxNode> GetMembersOfTypeDeclaration(SyntaxNode node)
904public SyntaxList<SyntaxNode> GetMembersOfNamespaceDeclaration(SyntaxNode node)
907public SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(SyntaxNode node)
910protected override void AppendMembers(SyntaxNode? node, ArrayBuilder<SyntaxNode> list, bool topLevel, bool methodLevel)
934public TextSpan GetMemberBodySpanForSpeculativeBinding(SyntaxNode node)
939var member = GetContainingMemberDeclaration(node, node.SpanStart);
950public SyntaxNode? TryGetBindableParent(SyntaxToken token)
952var node = token.Parent;
955var parent = node.Parent;
1039var structure = triviaTok.GetStructure();
1051public string GetNameForArgument(SyntaxNode? argument)
1054public string GetNameForAttributeArgument(SyntaxNode? argument)
1057public bool IsLeftSideOfDot([NotNullWhen(true)] SyntaxNode? node)
1060public SyntaxNode? GetRightSideOfDot(SyntaxNode? node)
1066public SyntaxNode? GetLeftSideOfDot(SyntaxNode? node, bool allowImplicitTarget)
1072public bool IsLeftSideOfExplicitInterfaceSpecifier([NotNullWhen(true)] SyntaxNode? node)
1075public bool IsLeftSideOfAssignment([NotNullWhen(true)] SyntaxNode? node)
1078public bool IsLeftSideOfAnyAssignment([NotNullWhen(true)] SyntaxNode? node)
1081public bool IsLeftSideOfCompoundAssignment([NotNullWhen(true)] SyntaxNode? node)
1084public SyntaxNode GetRightHandSideOfAssignment(SyntaxNode node)
1087public bool IsInferredAnonymousObjectMemberDeclarator([NotNullWhen(true)] SyntaxNode? node)
1090public bool IsOperandOfIncrementExpression([NotNullWhen(true)] SyntaxNode? node)
1093public static bool IsOperandOfDecrementExpression([NotNullWhen(true)] SyntaxNode? node)
1096public bool IsOperandOfIncrementOrDecrementExpression([NotNullWhen(true)] SyntaxNode? node)
1099public SyntaxList<SyntaxNode> GetContentsOfInterpolatedString(SyntaxNode interpolatedString)
1115public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfObjectCreationExpression(SyntaxNode objectCreationExpression)
1120public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfArgumentList(SyntaxNode argumentList)
1123public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfAttributeArgumentList(SyntaxNode argumentList)
1135public bool IsPragmaDirective(SyntaxTrivia trivia, out bool isDisable, out bool isActive, out SeparatedSyntaxList<SyntaxNode> errorCodes)
1141public bool IsDocumentationComment(SyntaxNode node)
1144public bool IsUsingOrExternOrImport([NotNullWhen(true)] SyntaxNode? node)
1147public bool IsGlobalAssemblyAttribute([NotNullWhen(true)] SyntaxNode? node)
1150public bool IsGlobalModuleAttribute([NotNullWhen(true)] SyntaxNode? node)
1153private static bool IsGlobalAttribute([NotNullWhen(true)] SyntaxNode? node, SyntaxKind attributeTarget)
1158public bool IsDeclaration(SyntaxNode? node)
1207public bool IsTypeDeclaration(SyntaxNode node)
1210public bool IsSimpleAssignmentStatement([NotNullWhen(true)] SyntaxNode? node)
1213public bool IsAnyAssignmentStatement([NotNullWhen(true)] SyntaxNode? node)
1217SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1224SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1226var expression = statement;
1238public SyntaxToken GetIdentifierOfSimpleName(SyntaxNode node)
1241public SyntaxToken GetIdentifierOfVariableDeclarator(SyntaxNode node)
1244public SyntaxToken GetIdentifierOfTypeDeclaration(SyntaxNode node)
1252public bool IsDeclaratorOfLocalDeclarationStatement(SyntaxNode declarator, SyntaxNode localDeclarationStatement)
1259public bool AreEquivalent(SyntaxNode? node1, SyntaxNode? node2)
1262public static SyntaxNode GetExpressionOfInvocationExpression(SyntaxNode node)
1265public bool IsExpressionOfForeach([NotNullWhen(true)] SyntaxNode? node)
1268public SyntaxNode GetExpressionOfExpressionStatement(SyntaxNode node)
1271public void GetPartsOfTupleExpression<TArgumentSyntax>(SyntaxNode node,
1272out SyntaxToken openParen, out SeparatedSyntaxList<TArgumentSyntax> arguments, out SyntaxToken closeParen) where TArgumentSyntax : SyntaxNode
1276arguments = (SeparatedSyntaxList<TArgumentSyntax>)(SeparatedSyntaxList<SyntaxNode>)tupleExpression.Arguments;
1283public SyntaxNode? GetMatchingDirective(SyntaxNode directive, CancellationToken cancellationToken)
1286public ImmutableArray<SyntaxNode> GetMatchingConditionalDirectives(SyntaxNode directive, CancellationToken cancellationToken)
1287=> ((DirectiveTriviaSyntax)directive).GetMatchingConditionalDirectives(cancellationToken).CastArray<SyntaxNode>();
1292public SyntaxTokenList GetModifiers(SyntaxNode? node)
1296public SyntaxNode? WithModifiers(SyntaxNode? node, SyntaxTokenList modifiers)
1299public SeparatedSyntaxList<SyntaxNode> GetVariablesOfLocalDeclarationStatement(SyntaxNode node)
1302public SyntaxNode? GetInitializerOfVariableDeclarator(SyntaxNode node)
1305public SyntaxNode? GetInitializerOfPropertyDeclaration(SyntaxNode node)
1308public SyntaxNode GetTypeOfVariableDeclarator(SyntaxNode node)
1311public SyntaxNode GetValueOfEqualsValueClause(SyntaxNode node)
1314public bool IsEqualsValueOfPropertyDeclaration(SyntaxNode? node)
1317public bool IsConversionExpression([NotNullWhen(true)] SyntaxNode? node)
1320public bool IsCastExpression([NotNullWhen(true)] SyntaxNode? node)
1323public void GetPartsOfCastExpression(SyntaxNode node, out SyntaxNode type, out SyntaxNode expression)
1340public SyntaxList<SyntaxNode> GetAttributeLists(SyntaxNode? node)
1343public bool IsParameterNameXmlElementSyntax([NotNullWhen(true)] SyntaxNode? node)
1346public SyntaxList<SyntaxNode> GetContentFromDocumentationCommentTriviaSyntax(SyntaxTrivia trivia)
1356public void GetPartsOfAnyIsTypeExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode type)
1363public void GetPartsOfIsPatternExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken isToken, out SyntaxNode right)
1371public bool IsAnyPattern([NotNullWhen(true)] SyntaxNode? node)
1374public SyntaxNode GetExpressionOfConstantPattern(SyntaxNode node)
1377public void GetPartsOfDeclarationPattern(SyntaxNode node, out SyntaxNode type, out SyntaxNode designation)
1384public void GetPartsOfRecursivePattern(SyntaxNode node, out SyntaxNode? type, out SyntaxNode? positionalPart, out SyntaxNode? propertyPart, out SyntaxNode? designation)
1400public bool IsBinaryPattern([NotNullWhen(true)] SyntaxNode? node)
1403public bool IsUnaryPattern([NotNullWhen(true)] SyntaxNode? node)
1406public void GetPartsOfParenthesizedPattern(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode pattern, out SyntaxToken closeParen)
1414public void GetPartsOfBinaryPattern(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1422public void GetPartsOfUnaryPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode pattern)
1429public void GetPartsOfRelationalPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode expression)
1436public SyntaxNode GetTypeOfTypePattern(SyntaxNode node)
1439public bool IsVerbatimInterpolatedStringExpression([NotNullWhen(true)] SyntaxNode? node)
1454public bool IsAnonymousFunctionExpression([NotNullWhen(true)] SyntaxNode? node)
1457public bool IsBaseNamespaceDeclaration([NotNullWhen(true)] SyntaxNode? node)
1460public bool IsBinaryExpression([NotNullWhen(true)] SyntaxNode? node)
1463public bool IsLiteralExpression([NotNullWhen(true)] SyntaxNode? node)
1466public bool IsMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
1469public bool IsMethodDeclaration([NotNullWhen(true)] SyntaxNode? node)
1472public bool IsSimpleName([NotNullWhen(true)] SyntaxNode? node)
1475public bool IsAnyName([NotNullWhen(true)] SyntaxNode? node)
1478public bool IsAnyType([NotNullWhen(true)] SyntaxNode? node)
1481public bool IsNamedMemberInitializer([NotNullWhen(true)] SyntaxNode? node)
1484public bool IsElementAccessInitializer([NotNullWhen(true)] SyntaxNode? node)
1487public bool IsObjectMemberInitializer([NotNullWhen(true)] SyntaxNode? node)
1490public bool IsObjectCollectionInitializer([NotNullWhen(true)] SyntaxNode? node)
1497public void GetPartsOfAliasQualifiedName(SyntaxNode node, out SyntaxNode alias, out SyntaxToken colonColonToken, out SyntaxNode name)
1505public void GetPartsOfArgumentList(SyntaxNode node, out SyntaxToken openParenToken, out SeparatedSyntaxList<SyntaxNode> arguments, out SyntaxToken closeParenToken)
1513public void GetPartsOfAttribute(SyntaxNode node, out SyntaxNode name, out SyntaxNode? argumentList)
1520public void GetPartsOfBaseObjectCreationExpression(SyntaxNode node, out SyntaxNode? argumentList, out SyntaxNode? initializer)
1527public void GetPartsOfBinaryExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1535public void GetPartsOfCompilationUnit(SyntaxNode node, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> attributeLists, out SyntaxList<SyntaxNode> members)
1544SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode whenNotNull)
1552public void GetPartsOfConditionalExpression(SyntaxNode node, out SyntaxNode condition, out SyntaxNode whenTrue, out SyntaxNode whenFalse)
1560public SyntaxNode GetExpressionOfForeachStatement(SyntaxNode statement)
1566public void GetPartsOfGenericName(SyntaxNode node, out SyntaxToken identifier, out SeparatedSyntaxList<SyntaxNode> typeArguments)
1573public void GetPartsOfInterpolationExpression(SyntaxNode node,
1574out SyntaxToken stringStartToken, out SyntaxList<SyntaxNode> contents, out SyntaxToken stringEndToken)
1582public void GetPartsOfInvocationExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode? argumentList)
1589public void GetPartsOfMemberAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode name)
1597public void GetPartsOfBaseNamespaceDeclaration(SyntaxNode node, out SyntaxNode name, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> members)
1605public void GetPartsOfNamedMemberInitializer(SyntaxNode node, out SyntaxNode identifier, out SyntaxNode expression)
1612public void GetPartsOfObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode type, out SyntaxNode? argumentList, out SyntaxNode? initializer)
1621public void GetPartsOfImplicitObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode argumentList, out SyntaxNode? initializer)
1629public void GetPartsOfParameter(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode? @default)
1637SyntaxNode node, out SyntaxToken openParen, out SyntaxNode expression, out SyntaxToken closeParen)
1645public void GetPartsOfPostfixUnaryExpression(SyntaxNode node, out SyntaxNode operand, out SyntaxToken operatorToken)
1652public void GetPartsOfPrefixUnaryExpression(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode operand)
1659public void GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1671public SyntaxNode GetArgumentListOfImplicitElementAccess(SyntaxNode node)
1674public SeparatedSyntaxList<SyntaxNode> GetAttributesOfAttributeList(SyntaxNode node)
1677public SyntaxNode GetExpressionOfAwaitExpression(SyntaxNode node)
1680public SyntaxNode GetExpressionOfThrowExpression(SyntaxNode node)
1683public SyntaxNode? GetExpressionOfThrowStatement(SyntaxNode node)
1686public SeparatedSyntaxList<SyntaxNode> GetInitializersOfObjectMemberInitializer(SyntaxNode node)
1689public SeparatedSyntaxList<SyntaxNode> GetExpressionsOfObjectCollectionInitializer(SyntaxNode node)
1692public SyntaxToken GetTokenOfLiteralExpression(SyntaxNode node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\SpeculationAnalyzer.cs (19)
71protected override SyntaxNode GetSemanticRootForSpeculation(ExpressionSyntax expression)
75SyntaxNode previousNode = null;
76SyntaxNode parentNodeToSpeculate = null;
77foreach (var node in expression.AncestorsAndSelf(ascendOutOfTrivia: false))
95public static bool CanSpeculateOnNode(SyntaxNode node)
104protected override void ValidateSpeculativeSemanticModel(SemanticModel speculativeSemanticModel, SyntaxNode nodeToSpeculate)
113protected override SemanticModel CreateSpeculativeSemanticModel(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel)
116public static SemanticModel CreateSpeculativeSemanticModelForNode(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel)
123public static SemanticModel CreateSpeculativeSemanticModelForNode(SyntaxNode nodeToSpeculate, SemanticModel semanticModel, int position, bool isInNamespaceOrTypeContext)
196SyntaxNode originalLambdaBody, replacedLambdaBody;
275SyntaxNode originalRoot)
295protected override bool ReplacementChangesSemanticsForNodeLanguageSpecific(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode previousOriginalNode, SyntaxNode previousReplacedNode)
580protected override bool ExpressionMightReferenceMember(SyntaxNode node)
662protected override bool IsParenthesizedExpression(SyntaxNode node)
src\roslyn\src\Analyzers\CSharp\CodeFixes\AssignOutParameters\AbstractAssignOutParametersCodeFixProvider.cs (25)
32var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
46protected abstract void TryRegisterFix(CodeFixContext context, Document document, SyntaxNode container, SyntaxNode location);
48private static (SyntaxNode container, SyntaxNode exprOrStatement) GetContainer(SyntaxNode root, TextSpan span)
50var location = root.FindNode(span);
53var container = GetContainer(location);
63private static bool IsValidLocation(SyntaxNode location)
80private static SyntaxNode? GetContainer(SyntaxNode node)
82for (var current = node; current != null; current = current.Parent)
94private static async Task<MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>> GetUnassignedParametersAsync(
97var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
104var result = new MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>();
107var container = group.Key;
117foreach (var exprOrStatement in distinctExprsOrStatements)
140foreach (var container in unassignedParameters.Keys.OrderByDescending(n => n.Span.Start))
148SyntaxEditor editor, SyntaxNode container,
149MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol> unassignedParameters)>.ValueSet values,
152protected static ImmutableArray<SyntaxNode> GenerateAssignmentStatements(
155var result = ArrayBuilder<SyntaxNode>.GetInstance();
src\roslyn\src\Analyzers\CSharp\CodeFixes\AssignOutParameters\AssignOutParametersAboveReturnCodeFixProvider.cs (8)
26protected override void TryRegisterFix(CodeFixContext context, Document document, SyntaxNode container, SyntaxNode location)
32SyntaxEditor editor, SyntaxNode container,
33MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol> unassignedParameters)>.ValueSet values,
44SyntaxEditor editor, SyntaxNode exprOrStatement, ImmutableArray<SyntaxNode> statements)
56var parent = exprOrStatement.GetRequiredParent();
src\roslyn\src\Analyzers\CSharp\CodeFixes\ConvertNamespace\ConvertNamespaceTransform.cs (9)
81private static (SyntaxNode root, TextSpan semicolonSpan) ReplaceWithFileScopedNamespace(
85var updatedRoot = document.Root.ReplaceNode(
113var root = document.Root;
119(SyntaxNode stringNode, int closeTerminatorIndentationLength) lastRawStringLiteralData = default;
135SyntaxNode stringNode;
199var root = document.Root;
214SyntaxTree tree, SyntaxNode root, string indentation, TextLine textLine, CancellationToken cancellationToken)
245var updatedRoot = ReplaceWithBlockScopedNamespace(parsedDocument, fileScopedNamespace, options.NewLine, options.NewLines, annotation);
259private static SyntaxNode ReplaceWithBlockScopedNamespace(
src\roslyn\src\Analyzers\CSharp\CodeFixes\GenerateConstructor\CSharpGenerateConstructorService.cs (7)
31protected override bool IsSimpleNameGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken)
34protected override bool IsConstructorInitializerGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken)
37protected override bool IsImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken)
42SyntaxNode node,
80SyntaxNode node,
112SyntaxNode node,
147SyntaxNode node,
src\roslyn\src\Analyzers\CSharp\CodeFixes\InlineDeclaration\CSharpInlineDeclarationCodeFixProvider.cs (14)
62var originalRoot = editor.OriginalRoot;
69static t => (t.invocationOrCreation, ImmutableArray.Create<SyntaxNode>(t.identifier, t.declarator)),
78private static (VariableDeclaratorSyntax declarator, IdentifierNameSyntax identifier, SyntaxNode invocationOrCreation) FindDiagnosticNodes(
94private static SyntaxNode ReplaceIdentifierWithInlineDeclaration(
97SyntaxNode currentRoot, VariableDeclaratorSyntax declarator,
98IdentifierNameSyntax identifier, SyntaxNode currentNode,
118var block = CSharpBlockFacts.Instance.GetImmediateParentExecutableBlockForStatement(localDeclarationStatement);
324SyntaxNode nodeToReplace,
340var topmostContainer = GetTopmostContainer(nodeToReplace);
349var updatedTopmostContainer = topmostContainer.ReplaceNode(
360var updatedInvocationOrCreation = updatedTopmostContainer.GetAnnotatedNodes(annotation).Single();
373private static SyntaxNode GetTopmostContainer(SyntaxNode expression)
384int position, SyntaxNode topmostContainer,
src\roslyn\src\Analyzers\CSharp\CodeFixes\Nullable\CSharpDeclareAsNullableCodeFixProvider.cs (11)
46var node = context.Diagnostics.First().Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
56private static string GetEquivalenceKey(SyntaxNode node)
86var node = diagnostic.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
94var node = diagnostic.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
99Document document, SemanticModel model, SyntaxEditor editor, SyntaxNode node, HashSet<TypeSyntax> alreadyHandled, CancellationToken cancellationToken)
111Document document, SemanticModel? model, SyntaxNode node, CancellationToken cancellationToken)
118var containingMember = node.GetAncestors().FirstOrDefault(
175var syntax = local.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
186var syntax = field.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
203var syntax = property.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
314private static bool IsExpressionSupported(SyntaxNode node)
src\roslyn\src\Analyzers\CSharp\CodeFixes\RemoveUnusedParametersAndValues\CSharpRemoveUnusedValuesCodeFixProvider.cs (15)
44protected override SyntaxNode? TryUpdateNameForFlaggedNode(SyntaxNode node, SyntaxToken newName)
91protected override SyntaxNode? TryUpdateParentOfUpdatedNode(SyntaxNode parent, SyntaxNode newNameNode, SyntaxEditor editor, ISyntaxFacts syntaxFacts, SemanticModel semanticModel)
141protected override SyntaxNode ComputeReplacementNode(SyntaxNode originalOldNode, SyntaxNode changedOldNode, SyntaxNode proposedReplacementNode)
183protected override SyntaxNode GetReplacementNodeForCompoundAssignment(
184SyntaxNode originalCompoundAssignment,
185SyntaxNode newAssignmentTarget,
241protected override SyntaxNode GetReplacementNodeForVarPattern(SyntaxNode originalVarPattern, SyntaxNode newNameNode)
src\roslyn\src\Analyzers\CSharp\CodeFixes\UsePrimaryConstructor\CSharpUsePrimaryConstructorCodeFixProvider.cs (14)
311SyntaxNode TryQualify(
326SyntaxNode CreateDottedName(
342Func<TListSyntax, IEnumerable<SyntaxNode>> getElements)
343where TListSyntax : SyntaxNode
373static string GetLeadingWhitespace(SyntaxNode node)
474var declaration = member.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
483SyntaxNode UpdateDeclaration(SyntaxNode declaration, AssignmentExpressionSyntax assignmentExpression, ExpressionStatementSyntax? expressionStatement)
510async ValueTask<ImmutableDictionary<ISymbol, (MemberDeclarationSyntax memberNode, SyntaxNode nodeToRemove)>> RemoveMembersAsync()
512var removedMembers = ImmutableDictionary<ISymbol, (MemberDeclarationSyntax memberNode, SyntaxNode nodeToRemove)>.Empty;
554(ISymbol? member, MemberDeclarationSyntax memberNode, SyntaxNode nodeToRemove) GetMemberToRemove(string memberName)
558if (IsViableMemberToAssignTo(namedType, member, out var memberNode, out var nodeToRemove, cancellationToken))
574using var _1 = PooledHashSet<SyntaxNode>.GetInstance(out var nodesToReplace);
612foreach (var nodeToReplace in group)
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseUnboundGenericTypeInNameOf\CSharpUseUnboundGenericTypeInNameOfCodeFixProvider.cs (1)
57where TSyntax : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\CodeGeneration\CSharpCodeGenerationService.cs (24)
40public override CodeGenerationDestination GetDestination(SyntaxNode node)
43protected override IComparer<SyntaxNode> GetMemberComparer()
46protected override IList<bool>? GetAvailableInsertionIndices(SyntaxNode destination, CancellationToken cancellationToken)
311var finalMember = editor.GetChangedRoot();
341protected override TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> members)
377var attributeSyntaxToRemove = attributeToRemove.ApplicationSyntaxReference.GetSyntax(cancellationToken);
383SyntaxNode attributeToRemove,
443SyntaxNode attributeToRemove,
479IEnumerable<SyntaxNode> statements,
531IEnumerable<SyntaxNode> statements,
533CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
570TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, BaseMethodDeclarationSyntax baseMethodDeclaration) where TDeclarationNode : SyntaxNode
590public static BlockSyntax AddStatementsToBlock(BlockSyntax block, IEnumerable<SyntaxNode> statements)
613TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, LocalFunctionStatementSyntax localFunctionStatement) where TDeclarationNode : SyntaxNode
634TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, AnonymousFunctionExpressionSyntax anonymousFunctionSyntax) where TDeclarationNode : SyntaxNode
658public override SyntaxNode CreateEventDeclaration(
664public override SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CSharpCodeGenerationContextInfo info, CancellationToken cancellationToken)
672public override SyntaxNode? CreateMethodDeclaration(
721public override SyntaxNode CreatePropertyDeclaration(
728public override SyntaxNode CreateNamedTypeDeclaration(
734public override SyntaxNode CreateNamespaceDeclaration(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpAddImportsService.cs (24)
34protected override ImmutableArray<SyntaxNode> GetGlobalImports(
35SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken)
37using var result = TemporaryArray<SyntaxNode>.Empty;
58protected override SyntaxNode? GetAlias(UsingDirectiveSyntax usingOrAlias)
64protected override SyntaxNode Rewrite(
69SyntaxNode externContainer,
70SyntaxNode usingContainer,
71SyntaxNode staticUsingContainer,
72SyntaxNode aliasContainer,
74SyntaxNode root,
82var newRoot = rewriter.Visit(root);
86protected override SyntaxList<UsingDirectiveSyntax> GetUsingsAndAliases(SyntaxNode node)
94protected override SyntaxList<ExternAliasDirectiveSyntax> GetExterns(SyntaxNode node)
102protected override bool IsEquivalentImport(SyntaxNode a, SyntaxNode b)
110SyntaxNode externContainer,
111SyntaxNode usingContainer,
112SyntaxNode aliasContainer,
113SyntaxNode staticUsingContainer,
118public override SyntaxNode? Visit(SyntaxNode? node)
121public override SyntaxNode VisitNamespaceDeclaration(NamespaceDeclarationSyntax node)
124public override SyntaxNode? VisitFileScopedNamespaceDeclaration(FileScopedNamespaceDeclarationSyntax node)
144public override SyntaxNode VisitCompilationUnit(CompilationUnitSyntax node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpSyntaxGeneratorInternal.cs (95)
52public override SyntaxNode LocalDeclarationStatement(SyntaxNode? type, SyntaxToken name, SyntaxNode? initializer, bool isConst)
59public override SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer)
62public override SyntaxNode WithPropertyInitializer(SyntaxNode propertyDeclaration, SyntaxNode initializer)
70public override SyntaxNode EqualsValueClause(SyntaxNode value)
73public override SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value)
76internal static VariableDeclarationSyntax VariableDeclaration(SyntaxNode? type, SyntaxToken name, SyntaxNode? expression)
88public override SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull)
91public override SyntaxNode MemberBindingExpression(SyntaxNode name)
94public override SyntaxNode RefExpression(SyntaxNode expression)
97public override SyntaxNode AddParentheses(SyntaxNode expressionOrPattern, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
100internal static SyntaxNode Parenthesize(SyntaxNode expressionOrPattern, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
108public override SyntaxNode YieldReturnStatement(SyntaxNode expression)
117public override SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken)
120public override SyntaxNode InterpolatedStringText(SyntaxToken textToken)
130public override SyntaxNode Interpolation(SyntaxNode syntaxNode)
133public override SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment)
136public override SyntaxNode InterpolationFormatClause(string format)
141public override SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames)
190public override SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext)
193public override SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right)
201public override SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type)
209public override SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isKeyword, SyntaxNode pattern)
215public override SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right)
218public override SyntaxNode ConstantPattern(SyntaxNode expression)
221public override SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name)
226public override SyntaxNode LessThanRelationalPattern(SyntaxNode expression)
229public override SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression)
232public override SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression)
235public override SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression)
238public override SyntaxNode NotPattern(SyntaxNode pattern)
241public override SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right)
244public override SyntaxNode ParenthesizedPattern(SyntaxNode pattern)
247public override SyntaxNode TypePattern(SyntaxNode type)
250public override SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern)
255public override SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression)
258public override SyntaxNode DefaultExpression(SyntaxNode type)
261public override SyntaxNode DefaultExpression(ITypeSymbol type)
296public override SyntaxNode TypeExpression(ITypeSymbol typeSymbol, RefKind refKind)
307public override SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode simpleName)
339public override SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right)
342public static SyntaxNode CreateBinaryExpression(SyntaxKind syntaxKind, SyntaxNode left, SyntaxNode right)
345public override SyntaxNode IdentifierName(string identifier)
348public override SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression)
351internal static SyntaxNode ParenthesizeNonSimple(SyntaxNode expression)
AddImport\CSharpAddImportFeatureService.cs (29)
38protected override bool IsWithinImport(SyntaxNode node)
41protected override bool CanAddImport(SyntaxNode node, bool allowInHiddenRegions, CancellationToken cancellationToken)
45string diagnosticId, ISyntaxFacts syntaxFacts, SyntaxNode node, out SimpleNameSyntax nameNode)
146protected override bool CanAddImportForDeconstruct(string diagnosticId, SyntaxNode node)
149protected override bool CanAddImportForGetAwaiter(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node)
155protected override bool CanAddImportForGetEnumerator(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node)
158protected override bool CanAddImportForGetAsyncEnumerator(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node)
161protected override bool CanAddImportForNamespace(string diagnosticId, SyntaxNode node, out SimpleNameSyntax nameNode)
167protected override bool CanAddImportForQuery(string diagnosticId, SyntaxNode node)
173string diagnosticId, SyntaxNode node, out SimpleNameSyntax nameNode)
218private static bool TryFindStandaloneType(SyntaxNode node, out SimpleNameSyntax nameNode)
247SyntaxNode node,
254SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
261SyntaxNode node,
308SyntaxNode contextNode,
354SyntaxNode contextNode,
366Document document, CompilationUnitSyntax root, SyntaxNode contextNode, INamespaceOrTypeSymbol namespaceOrTypeSymbol,
377using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var newImports);
396var newRoot = addImportService.AddImports(
402SyntaxNode contextNode, IReadOnlyList<string> namespaceParts,
413var newRoot = service.AddImport(
436SyntaxNode contextNode)
455SyntaxNode contextNode,
471var container = addImportService.GetImportContainer(root, contextNode, dummyUsing, options);
574SyntaxNode contextNode)
600private static bool HasExistingExternAlias(string alias, SyntaxNode contextNode)
615SyntaxNode contextNode, CancellationToken cancellationToken)
621SyntaxNode node, SemanticModel semanticModel, out SyntaxNode objectCreationExpression)
ChangeSignature\CSharpChangeSignatureService.cs (33)
119var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
135var matchingNode = GetMatchingNode(token.Parent, restrictToDeclarations);
185private static int TryGetSelectedIndexFromDeclaration(int position, SyntaxNode matchingNode)
191private static SyntaxNode? GetMatchingNode(SyntaxNode node, bool restrictToDeclarations)
197for (var current = node; current != null; current = current.Parent)
214private static bool InSymbolHeader(SyntaxNode matchingNode, int position)
217var lastAttributes = matchingNode.ChildNodes().LastOrDefault(n => n is AttributeListSyntax);
227var parameterList = matchingNode.ChildNodes().LastOrDefault(n => n is ParameterListSyntax);
237public override SyntaxNode? FindNodeToUpdate(Document document, SyntaxNode node)
245var matchingNode = node.AncestorsAndSelf().FirstOrDefault(n => _updatableAncestorKinds.Contains(n.Kind()));
251var nodeContainingOriginal = GetNodeContainingTargetNode(matchingNode);
260private static SyntaxNode? GetNodeContainingTargetNode(SyntaxNode matchingNode)
288public override SyntaxNode ChangeSignature(
291SyntaxNode potentiallyUpdatedNode,
292SyntaxNode originalNode,
598private static bool IsParamsArrayExpanded(SemanticModel semanticModel, SyntaxNode node, SymbolInfo symbolInfo, CancellationToken cancellationToken)
686Func<AddedParameter, T> createNewParameterMethod) where T : SyntaxNode
692protected override T TransferLeadingWhitespaceTrivia<T>(T newArgument, SyntaxNode oldArgument)
719where TArgumentSyntax : SyntaxNode
767where T : SyntaxNode
768where U : SyntaxNode
806private ImmutableArray<SyntaxNode> VerifyAndPermuteParamNodes(IEnumerable<XmlElementSyntax> paramNodes, ISymbol declarationSymbol, SignatureChange updatedSignature)
846var permutedParams = ArrayBuilder<SyntaxNode>.GetInstance();
871var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
874using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var convertedMethodNodes);
876foreach (var node in root.DescendantNodes())
912ArgumentSyntax a => (TArgumentSyntax)(SyntaxNode)a.WithNameColon(NameColon(name)),
913AttributeArgumentSyntax a => (TArgumentSyntax)(SyntaxNode)a.WithNameColon(NameColon(name)),
923var listOfArguments = SeparatedList(newArguments.Skip(indexInExistingList).Select(a => ((ArgumentSyntax)(SyntaxNode)a).Expression), newArguments.GetSeparators().Skip(indexInExistingList));
926return (TArgumentSyntax)(SyntaxNode)Argument(objectCreation);
CodeFixes\Suppression\CSharpSuppressionCodeFixProvider.cs (14)
37protected override SyntaxTriviaList CreatePragmaRestoreDirectiveTrivia(Diagnostic diagnostic, Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine, CancellationToken cancellationToken)
44Diagnostic diagnostic, Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine, CancellationToken cancellationToken)
51SyntaxToken disableOrRestoreKeyword, Diagnostic diagnostic, Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine, CancellationToken cancellationToken)
86protected override bool IsAttributeListWithAssemblyAttributes(SyntaxNode node)
99protected override SyntaxNode AddGlobalSuppressMessageAttribute(
100SyntaxNode newRoot,
129protected override SyntaxNode AddLocalSuppressMessageAttribute(
130SyntaxNode targetNode, ISymbol targetSymbol, INamedTypeSymbol suppressMessageAttribute, Diagnostic diagnostic)
212protected override bool IsSingleAttributeInAttributeList(SyntaxNode attribute)
247protected override SyntaxNode GetContainingStatement(SyntaxToken token)
250=> (SyntaxNode)token.GetAncestor<StatementSyntax>() ?? token.GetAncestor<ArrowExpressionClauseSyntax>();
EditAndContinue\BreakpointSpans.cs (17)
39var root = tree.GetRoot(cancellationToken);
70public static bool TryGetClosestBreakpointSpan(SyntaxNode root, int position, int minLength, out TextSpan span)
72var node = root.FindToken(position).Parent;
113private static TextSpan CreateSpan(SyntaxNode node)
116private static TextSpan CreateSpan(SyntaxNode node, SyntaxToken token)
165private static TextSpan? TryCreateSpanForNode(SyntaxNode node, int position)
475internal static IEnumerable<SyntaxToken> GetActiveTokensForImplicitConstructorInitializer(ConstructorDeclarationSyntax constructor, Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
481internal static IEnumerable<SyntaxToken> GetActiveTokensForExplicitConstructorInitializer(ConstructorInitializerSyntax constructorInitializer, Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
490internal static IEnumerable<SyntaxToken> GetActiveTokensForImplicitPrimaryConstructorInitializer(TypeDeclarationSyntax typeDeclaration, Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
509internal static IEnumerable<SyntaxToken> GetActiveTokensForExplicitPrimaryConstructorInitializer(PrimaryConstructorBaseTypeSyntax baseTypeSyntax, Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
517internal static IEnumerable<SyntaxToken> GetActiveTokensForCopyConstructor(RecordDeclarationSyntax recordDeclaration, Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
531internal static IEnumerable<SyntaxToken> GetActiveTokensForRecordParameter(ParameterSyntax parameter, Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
548internal static IEnumerable<SyntaxToken> GetActiveTokensForAutoPropertyAccessor(AccessorDeclarationSyntax accessor, Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
787SyntaxNode? startNodeOpt = null)
874VariableDeclaratorSyntax variableDeclarator, SyntaxTokenList modifiers, SyntaxToken semicolon, Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
924where TNode : SyntaxNode
969var parent = expression.Parent;
EditAndContinue\CSharpEditAndContinueAnalyzer.cs (185)
69internal override bool TryFindMemberDeclaration(SyntaxNode? root, SyntaxNode node, TextSpan activeSpan, out OneOrMany<SyntaxNode> declarations)
71var current = node;
172internal override MemberBody? TryGetDeclarationBody(SyntaxNode node, ISymbol? symbol)
175internal override bool IsDeclarationWithSharedBody(SyntaxNode declaration, ISymbol member)
181internal static SyntaxNode FindStatementAndPartner(
183SyntaxNode body,
184SyntaxNode? partnerBody,
185out SyntaxNode? partnerStatement,
196SyntaxNode node;
351private static bool AreEquivalentIgnoringLambdaBodies(SyntaxNode left, SyntaxNode right)
362internal override bool IsClosureScope(SyntaxNode node)
365internal override SyntaxNode GetCapturedParameterScope(SyntaxNode methodOrLambda)
373BaseMethodDeclarationSyntax method => method.Body ?? (SyntaxNode?)method.ExpressionBody!,
381protected override LambdaBody? FindEnclosingLambdaBody(SyntaxNode encompassingAncestor, SyntaxNode node)
383var current = node;
386if (LambdaUtilities.IsLambdaBodyStatementOrExpression(current, out var body))
397protected override Match<SyntaxNode> ComputeTopLevelMatch(SyntaxNode oldCompilationUnit, SyntaxNode newCompilationUnit)
400protected override BidirectionalMap<SyntaxNode>? ComputeParameterMap(SyntaxNode oldDeclaration, SyntaxNode newDeclaration)
402BidirectionalMap<SyntaxNode>.FromMatch(SyntaxComparer.TopLevel.ComputeMatch(oldParameterList, newParameterList)) : null;
404private static SyntaxNode? GetDeclarationParameterList(SyntaxNode declaration)
413internal static Match<SyntaxNode> ComputeBodyMatch(SyntaxNode oldBody, SyntaxNode newBody, IEnumerable<KeyValuePair<SyntaxNode, SyntaxNode>>? knownMatches)
439static SyntaxNode GetMatchingRoot(SyntaxNode body)
441var parent = body.Parent!;
447var oldRoot = GetMatchingRoot(oldBody);
448var newRoot = GetMatchingRoot(newBody);
457private static IEnumerable<SyntaxNode> GetChildNodes(SyntaxNode root, SyntaxNode body)
495SyntaxNode oldBody,
496SyntaxNode newBody,
497SyntaxNode oldStatement,
498[NotNullWhen(true)] out SyntaxNode? newStatement)
519protected override bool IsNamespaceDeclaration(SyntaxNode node)
522private static bool IsTypeDeclaration(SyntaxNode node)
525protected override bool IsCompilationUnitWithGlobalStatements(SyntaxNode node)
528protected override bool IsGlobalStatement(SyntaxNode node)
531protected override IEnumerable<SyntaxNode> GetTopLevelTypeDeclarations(SyntaxNode compilationUnit)
563protected override IEnumerable<SequenceEdit> GetSyntaxSequenceEdits(ImmutableArray<SyntaxNode> oldNodes, ImmutableArray<SyntaxNode> newNodes)
566internal override SyntaxNode EmptyCompilationUnit
573protected override bool StatementLabelEquals(SyntaxNode node1, SyntaxNode node2)
579protected override bool TryGetActiveSpan(SyntaxNode node, int statementPart, int minLength, out TextSpan span)
663public static (SyntaxNode node, int part) GetFirstBodyActiveStatement(SyntaxNode memberBody)
666protected override IEnumerable<(SyntaxNode statement, int statementPart)> EnumerateNearStatements(SyntaxNode statement)
678var parent = statement.Parent;
723var node = nodeOrToken.AsNode();
757protected override bool AreEquivalentActiveStatements(SyntaxNode oldStatement, SyntaxNode newStatement, int statementPart)
869(SyntaxNode?)oldNode.Declaration ?? oldNode.Expression!,
870(SyntaxNode?)newNode.Declaration ?? newNode.Expression!);
906internal override bool IsInterfaceDeclaration(SyntaxNode node)
909internal override bool IsRecordDeclaration(SyntaxNode node)
912internal override SyntaxNode? TryGetContainingTypeDeclaration(SyntaxNode node)
915internal override bool IsDeclarationWithInitializer(SyntaxNode declaration)
931internal override bool IsPrimaryConstructorDeclaration(SyntaxNode declaration)
986protected override SyntaxNode? GetSymbolDeclarationSyntax(ISymbol symbol, Func<ImmutableArray<SyntaxReference>, SyntaxReference?> selector, CancellationToken cancellationToken)
991var syntax = symbol switch
1011protected override ISymbol? GetDeclaredSymbol(SemanticModel model, SyntaxNode declaration, CancellationToken cancellationToken)
1026SyntaxNode? oldNode,
1027SyntaxNode? newNode,
1068SyntaxNode? oldNode,
1070SyntaxNode? newNode,
1074Match<SyntaxNode> topMatch,
1075IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
1301var node = oldNode ?? newNode;
1378SyntaxNode node,
1414private ISymbol? GetParameterContainingMemberOrType(SyntaxNode? node, SyntaxNode? otherNode, DocumentSemanticModel model, IReadOnlyDictionary<SyntaxNode, SyntaxNode> fromOtherMap, CancellationToken cancellationToken)
1419SyntaxNode? declaration;
1441static SyntaxNode GetContainingDeclaration(SyntaxNode node)
1445private static bool SupportsMove(SyntaxNode node)
1450internal override Func<SyntaxNode, bool> IsLambda
1453internal override Func<SyntaxNode, bool> IsNotLambda
1456internal override Func<SyntaxNode, IEnumerable<SyntaxToken>> DescendantTokensIgnoringLambdaBodies
1462internal override bool IsLocalFunction(SyntaxNode node)
1465internal override bool IsGenericLocalFunction(SyntaxNode node)
1468internal override bool IsNestedFunction(SyntaxNode node)
1471internal override bool TryGetLambdaBodies(SyntaxNode node, [NotNullWhen(true)] out LambdaBody? body1, out LambdaBody? body2)
1473if (LambdaUtilities.TryGetLambdaBodies(node, out var bodyNode1, out var bodyNode2))
1485internal override IMethodSymbol GetLambdaExpressionSymbol(SemanticModel model, SyntaxNode lambdaExpression, CancellationToken cancellationToken)
1487var bodyExpression = LambdaUtilities.GetNestedFunctionBody(lambdaExpression);
1491internal override SyntaxNode? GetContainingQueryExpression(SyntaxNode node)
1494internal override bool QueryClauseLambdasTypeEquivalent(SemanticModel oldModel, SyntaxNode oldNode, SemanticModel newModel, SyntaxNode newNode, CancellationToken cancellationToken)
1595protected override TextSpan? TryGetDiagnosticSpan(SyntaxNode node, EditKind editKind)
1598internal static new TextSpan GetDiagnosticSpan(SyntaxNode node, EditKind editKind)
1601private static TextSpan? TryGetDiagnosticSpanImpl(SyntaxNode node, EditKind editKind)
1605internal static TextSpan? TryGetDiagnosticSpanImpl(SyntaxKind kind, SyntaxNode node, EditKind editKind)
1614var globalNode =
1744var startNode = parameter.Type ?? (SyntaxNode)parameter;
1940internal override TextSpan GetLambdaParameterDiagnosticSpan(SyntaxNode lambda, int ordinal)
1990protected override string? TryGetDisplayName(SyntaxNode node, EditKind editKind)
1993internal static new string? GetDisplayName(SyntaxNode node, EditKind editKind)
1996internal static string? TryGetDisplayNameImpl(SyntaxNode node, EditKind editKind)
2263protected override string GetSuspensionPointDisplayName(SyntaxNode node, EditKind editKind)
2288private readonly Match<SyntaxNode>? _match;
2289private readonly SyntaxNode? _oldNode;
2290private readonly SyntaxNode? _newNode;
2297SyntaxNode? oldNode,
2298SyntaxNode? newNode,
2300Match<SyntaxNode>? match = null,
2317private void ReportError(RudeEditKind kind, SyntaxNode? spanNode = null, SyntaxNode? displayNode = null)
2320var node = displayNode ?? _newNode ?? _oldNode;
2370private void ClassifyMove(SyntaxNode newNode)
2380private void ClassifyReorder(SyntaxNode newNode)
2401private void ClassifyInsert(SyntaxNode node)
2430private void ClassifyDelete(SyntaxNode oldNode)
2461private void ClassifyUpdate(SyntaxNode newNode)
2487Match<SyntaxNode> match,
2488Edit<SyntaxNode> edit,
2489Dictionary<SyntaxNode, EditKind> editMap)
2500internal override bool HasUnsupportedOperation(IEnumerable<SyntaxNode> nodes, [NotNullWhen(true)] out SyntaxNode? unsupportedNode, out RudeEditKind rudeEdit)
2505foreach (var node in nodes)
2524internal override void ReportInsertedMemberSymbolRudeEdits(RudeEditDiagnosticsBuilder diagnostics, ISymbol newSymbol, SyntaxNode newNode, bool insertingIntoExistingContainingType)
2586protected override List<SyntaxNode> GetExceptionHandlingAncestors(SyntaxNode node, SyntaxNode root, bool isNonLeaf)
2588var result = new List<SyntaxNode>();
2590var current = node;
2639IEnumerable<Edit<SyntaxNode>> exceptionHandlingEdits,
2640SyntaxNode oldStatement,
2655private static bool AreExceptionClausesEquivalent(SyntaxNode oldNode, SyntaxNode newNode)
2688protected override TextSpan GetExceptionHandlingRegion(SyntaxNode node, out bool coversAllChildren)
2727internal override bool IsStateMachineMethod(SyntaxNode declaration)
2730internal override void ReportStateMachineSuspensionPointRudeEdits(DiagnosticContext diagnosticContext, SyntaxNode oldNode, SyntaxNode newNode)
2734var oldContainingStatementPart = FindContainingStatementPart(oldNode);
2735var newContainingStatementPart = FindContainingStatementPart(newNode);
2746private static SyntaxNode FindContainingStatementPart(SyntaxNode node)
2780private static bool HasNoSpilledState(SyntaxNode awaitExpression, SyntaxNode containingStatementPart)
2821private static ExpressionSyntax GetExpressionFromStatementPart(SyntaxNode statement)
2837private static bool IsSimpleAwaitAssignment(SyntaxNode node, SyntaxNode awaitExpression)
2853IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap,
2854SyntaxNode oldActiveStatement,
2857SyntaxNode newActiveStatement,
2875private void ReportRudeEditsForSwitchWhenClauses(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode oldActiveStatement, SyntaxNode newActiveStatement)
2932SyntaxNode oldActiveStatement,
2933SyntaxNode newActiveStatement,
2966private static CheckedStatementSyntax? TryGetCheckedStatementAncestor(SyntaxNode? node)
2987IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap,
2988SyntaxNode oldActiveStatement,
2989SyntaxNode oldEncompassingAncestor,
2991SyntaxNode newActiveStatement,
2992SyntaxNode newEncompassingAncestor,
3015getTypedNodes: static n => OneOrMany.OneOrNone<SyntaxNode>(n.Expression),
3046getTypedNodes: static n => OneOrMany.Create<SyntaxNode>(n.Expression!),
3061getTypedNodes: static n => OneOrMany.OneOrNone<SyntaxNode>(n.Expression),
3066static OneOrMany<SyntaxNode> GetTypedNodes(VariableDeclarationSyntax declaration)
3068? OneOrMany.Create<SyntaxNode>(initializer.Value)
3069: OneOrMany.Create(declaration.Variables.Select(static v => (SyntaxNode?)v.Initializer?.Value).WhereNotNull().ToImmutableArray());
EditAndContinue\DeclarationBody\FieldWithInitializerDeclarationBody.cs (12)
47public override SyntaxNode EncompassingAncestor
50public override IEnumerable<SyntaxToken> GetActiveTokens(Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
56public override IEnumerable<SyntaxToken> GetUserCodeTokens(Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
62public override OneOrMany<SyntaxNode> RootNodes
63=> OneOrMany.Create<SyntaxNode>(InitializerExpression);
65public override Match<SyntaxNode>? ComputeSingleRootMatch(DeclarationBody newBody, IEnumerable<KeyValuePair<SyntaxNode, SyntaxNode>>? knownMatches)
68public override bool TryMatchActiveStatement(DeclarationBody newBody, SyntaxNode oldStatement, ref int statementPart, [NotNullWhen(true)] out SyntaxNode? newStatement)
80public override SyntaxNode FindStatementAndPartner(TextSpan span, MemberBody? partnerDeclarationBody, out SyntaxNode? partnerStatement, out int statementPart)
EditAndContinue\DeclarationBody\InstanceConstructorDeclarationBody.cs (13)
18public abstract SyntaxNode InitializerActiveStatement { get; }
19public abstract SyntaxNode? MatchRoot { get; }
24public abstract SyntaxNode? ExplicitBody { get; }
29public abstract SyntaxNode? ParameterClosure { get; }
37public sealed override SyntaxNode FindStatementAndPartner(TextSpan span, MemberBody? partnerDeclarationBody, out SyntaxNode? partnerStatement, out int statementPart)
74public sealed override bool TryMatchActiveStatement(DeclarationBody newBody, SyntaxNode oldStatement, ref int statementPart, [NotNullWhen(true)] out SyntaxNode? newStatement)
102public sealed override Match<SyntaxNode>? ComputeSingleRootMatch(DeclarationBody newBody, IEnumerable<KeyValuePair<SyntaxNode, SyntaxNode>>? knownMatches)
107public override DeclarationBodyMap ComputeMap(DeclarationBody newBody, IEnumerable<KeyValuePair<SyntaxNode, SyntaxNode>>? knownMatches)
EditAndContinue\DeclarationBody\TopLevelCodeDeclarationBody.cs (12)
37public override SyntaxNode EncompassingAncestor
40public override IEnumerable<SyntaxToken>? GetActiveTokens(Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
43public override IEnumerable<SyntaxToken> GetUserCodeTokens(Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
52public override OneOrMany<SyntaxNode> RootNodes
53=> OneOrMany.Create(GlobalStatements.ToImmutableArray<SyntaxNode>());
55public override Match<SyntaxNode>? ComputeSingleRootMatch(DeclarationBody newBody, IEnumerable<KeyValuePair<SyntaxNode, SyntaxNode>>? knownMatches)
58public override SyntaxNode FindStatementAndPartner(TextSpan span, MemberBody? partnerDeclarationBody, out SyntaxNode? partnerStatement, out int statementPart)
66public override bool TryMatchActiveStatement(DeclarationBody newBody, SyntaxNode oldStatement, ref int statementPart, [NotNullWhen(true)] out SyntaxNode? newStatement)
EditAndContinue\SyntaxComparer.cs (54)
27SyntaxNode? oldRoot,
28SyntaxNode? newRoot,
29IEnumerable<SyntaxNode>? oldRootChildren,
30IEnumerable<SyntaxNode>? newRootChildren,
36protected override bool IsLambdaBodyStatementOrExpression(SyntaxNode node)
236internal override int Classify(int kind, SyntaxNode? node, out bool isLeaf)
239internal Label Classify(SyntaxKind kind, SyntaxNode? node, out bool isLeaf)
295private static Label ClassifyStatementSyntax(SyntaxKind kind, SyntaxNode? node, out bool isLeaf)
562private static Label ClassifyTopSyntax(SyntaxKind kind, SyntaxNode? node, out bool isLeaf)
711public override bool ValuesEqual(SyntaxNode left, SyntaxNode right)
730var leftBody = GetBody(left);
731var rightBody = GetBody(right);
770private static SyntaxNode? GetBody(SyntaxNode node)
774case BaseMethodDeclarationSyntax baseMethodDeclarationSyntax: return baseMethodDeclarationSyntax.Body ?? (SyntaxNode?)baseMethodDeclarationSyntax.ExpressionBody?.Expression;
775case AccessorDeclarationSyntax accessorDeclarationSyntax: return accessorDeclarationSyntax.Body ?? (SyntaxNode?)accessorDeclarationSyntax.ExpressionBody?.Expression;
780protected override bool TryComputeWeightedDistance(SyntaxNode leftNode, SyntaxNode rightNode, out double distance)
822(SyntaxNode?)leftUsing.Expression ?? leftUsing.Declaration!,
824(SyntaxNode?)rightUsing.Expression ?? rightUsing.Declaration!,
947private static double ComputeWeightedDistanceOfNestedFunctions(SyntaxNode leftNode, SyntaxNode rightNode)
949GetNestedFunctionsParts(leftNode, out var leftParameters, out var leftAsync, out var leftBody, out var leftModifiers, out var leftReturnType, out var leftIdentifier, out var leftTypeParameters);
950GetNestedFunctionsParts(rightNode, out var rightParameters, out var rightAsync, out var rightBody, out var rightModifiers, out var rightReturnType, out var rightIdentifier, out var rightTypeParameters);
974SyntaxNode nestedFunction,
977out SyntaxNode body,
1030body = (SyntaxNode?)localFunction.Body ?? localFunction.ExpressionBody!;
1212SyntaxNode? leftHeader,
1214SyntaxNode? rightHeader,
1290foreach (var child in block.ChildNodes())
1385SyntaxNode? left1,
1386SyntaxNode? right1,
1387SyntaxNode? left2,
1388SyntaxNode? right2,
1420private static SyntaxNodeOrToken? TryGetName(SyntaxNode node)
1518public sealed override double GetDistance(SyntaxNode oldNode, SyntaxNode newNode)
1540internal static double ComputeValueDistance(SyntaxNode? oldNode, SyntaxNode? newNode)
1569var leftNode = oldNodeOrToken.AsNode();
1570var rightNode = newNodeOrToken.AsNode();
1583where TSyntaxNode : SyntaxNode
1600public static double ComputeDistance(SyntaxNode? oldNode, SyntaxNode? newNode)
1639public static double ComputeDistance(IEnumerable<SyntaxNode>? oldNodes, IEnumerable<SyntaxNode>? newNodes)
1645public static IEnumerable<SequenceEdit> GetSequenceEdits(IEnumerable<SyntaxNode>? oldNodes, IEnumerable<SyntaxNode>? newNodes)
1651public static IEnumerable<SequenceEdit> GetSequenceEdits(ImmutableArray<SyntaxNode> oldNodes, ImmutableArray<SyntaxNode> newNodes)
1674private sealed class LcsNodes : LongestCommonImmutableArraySubsequence<SyntaxNode>
1678protected override bool Equals(SyntaxNode oldElement, SyntaxNode newElement)
ExtractMethod\CSharpMethodExtractor.CSharpCodeGenerator.cs (47)
39private abstract partial class CSharpCodeGenerator : CodeGenerator<SyntaxNode, CSharpCodeGenerationOptions>
82public override OperationStatus<ImmutableArray<SyntaxNode>> GetNewMethodStatements(SyntaxNode insertionPointNode, CancellationToken cancellationToken)
86return status.With(statements.CastArray<SyntaxNode>());
90SyntaxNode insertionPointNode, CancellationToken cancellationToken)
105statements: statements.CastArray<SyntaxNode>(),
112protected override async Task<SyntaxNode> GenerateBodyForCallSiteContainerAsync(
113SyntaxNode insertionPointNode,
114SyntaxNode container,
119var firstStatementToRemove = GetFirstStatementOrInitializerSelectedAtCallSite();
120var lastStatementToRemove = GetLastStatementOrInitializerSelectedAtCallSite();
135private async Task<ImmutableArray<SyntaxNode>> CreateStatementsOrInitializerToInsertAtCallSiteAsync(
136SyntaxNode insertionPointNode, CancellationToken cancellationToken)
138var selectedNode = GetFirstStatementOrInitializerSelectedAtCallSite();
145var statement = await GetStatementOrInitializerContainingInvocationToExtractedMethodAsync(cancellationToken).ConfigureAwait(false);
160return statements.CastArray<SyntaxNode>();
299protected override bool ShouldLocalFunctionCaptureParameter(SyntaxNode node)
302private static bool IsExpressionBodiedMember(SyntaxNode node)
305private static bool IsExpressionBodiedAccessor(SyntaxNode node)
323protected override SyntaxNode GetCallSiteContainerFromOutermostMoveInVariable()
340var ancestors = token.GetAncestors<SyntaxNode>();
408SyntaxNode insertionPoint, CancellationToken cancellationToken)
438SyntaxNode ConvertExitPoint(SyntaxNode current)
528protected SyntaxKind UnderCheckedContext<T>() where T : SyntaxNode
697var replacements = new Dictionary<SyntaxNode, SyntaxNode>();
702foreach (var node in declarations)
781SyntaxNode insertionPointNode,
796var lastStatement = GetLastStatementOrInitializerSelectedAtCallSite();
797var container = lastStatement.GetAncestorsOrThis<SyntaxNode>().FirstOrDefault(n => n.IsReturnableConstruct());
1007var root = newDocument.Root;
1008var methodDefinition = root.GetAnnotatedNodes<SyntaxNode>(MethodDefinitionAnnotation).First();
1010SyntaxNode newMethodDefinition = methodDefinition switch
1029private static TDeclarationNode TweakNewLinesInMethod<TDeclarationNode>(TDeclarationNode method, BlockSyntax body, ArrowExpressionClauseSyntax expressionBody) where TDeclarationNode : SyntaxNode
1060var syntaxNode = originalDocument.Root.GetAnnotatedNodesAndTokens(MethodDefinitionAnnotation).FirstOrDefault().AsNode();
1074static bool ReturnOperationBelongsToMethod(SyntaxNode returnOperationSyntax, SyntaxNode methodSyntax)
1076var enclosingMethod = returnOperationSyntax.FirstAncestorOrSelf<SyntaxNode>(n => n switch
1088SyntaxNode node,
1104var syntax = returnOperation.ReturnedValue?.Syntax ?? returnOperation.Syntax;
1125var oldRoot = await originalDocument.Document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
1126var newRoot = oldRoot.ReplaceNode(returnType, newType.GenerateTypeSyntax(allowVar: false));
1136var scope = this.SelectionResult.GetContainingScope();
GenerateType\CSharpGenerateTypeService.cs (9)
475? genericName.TypeArgumentList.Arguments.OfType<SyntaxNode>().ToList()
476: Enumerable.Repeat<SyntaxNode>(null, state.SimpleName.Arity);
542INamedTypeSymbol namedTypeSymbol, string[] containers, Document selectedDocument, SyntaxNode selectedDocumentRoot, CancellationToken cancellationToken)
661var node = expression as SyntaxNode;
662SyntaxNode previousNode = null;
698private static bool IsAllContainingTypeDeclsPublic(SyntaxNode node)
713Solution updatedSolution, SyntaxNode modifiedRoot, Document document, SimpleNameSyntax simpleName, string includeUsingsOrImports, CancellationToken cancellationToken)
721SyntaxNode root = null;
ImplementInterface\AbstractChangeImplementationCodeRefactoringProvider.cs (9)
45protected abstract SyntaxNode ChangeImplementation(SyntaxGenerator generator, SyntaxNode currentDecl, ISymbol implMember, ISymbol interfaceMember);
129private static async Task<(SyntaxNode?, ExplicitInterfaceSpecifierSyntax?, SyntaxToken)> GetContainerAsync(CodeRefactoringContext context)
133var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
156private static (SyntaxNode? declaration, ExplicitInterfaceSpecifierSyntax?, SyntaxToken) GetContainer(SyntaxToken token)
158for (var node = token.Parent; node != null; node = node.Parent)
165_ => default((SyntaxNode member, ExplicitInterfaceSpecifierSyntax?, SyntaxToken)),
231var documentToImplDeclarations = new OrderedMultiDictionary<Document, (SyntaxNode, ISymbol impl, SetWithInsertionOrder<ISymbol> interfaceMembers)>();
241var decl = GetContainer(declToken).declaration;
InlineHints\CSharpInlineParameterNameHintsService.cs (5)
29SyntaxNode node,
30ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> buffer,
45ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> buffer,
61ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> buffer,
98protected override bool IsIndexer(SyntaxNode node, IParameterSymbol parameter)
IntroduceVariable\CSharpIntroduceVariableService_IntroduceLocal.cs (19)
39var containerToGenerateInto = globalStatement != null
242var oldParentingNode = oldBody.GetRequiredParent();
261var newRoot = document.Root.ReplaceNode(oldParentingNode, WithBlockBody(oldParentingNode, newBody).WithTriviaFrom(oldParentingNode));
265private static SyntaxNode WithBlockBody(SyntaxNode node, BlockSyntax body)
298SyntaxNode scope = compilationUnit;
321var replacement = editor.Generator.AddParentheses(newLocalName, includeElasticTrivia: false);
368SyntaxNode scope = block;
380var root = document.Root;
383SyntaxNode innermostCommonBlock;
395root = root.TrackNodes(allAffectedStatements.Concat(new SyntaxNode[] { expression, statement }));
414var newInnerMostBlock = Rewrite(
418var finalInnerMostBlock = WithStatements(newInnerMostBlock, statements);
420var newRoot = root.ReplaceNode(innermostCommonBlock, finalInnerMostBlock);
439private static int GetFirstStatementAffectedIndex(SyntaxNode innermostCommonBlock, ISet<ExpressionSyntax> matches, int firstStatementAffectedIndex)
530private static bool IsBlockLike(SyntaxNode node) => node is BlockSyntax or SwitchSectionSyntax;
532private static SyntaxList<StatementSyntax> GetStatements(SyntaxNode blockLike)
540private static SyntaxNode WithStatements(SyntaxNode blockLike, SyntaxList<StatementSyntax> statements)
SignatureHelp\ElementAccessExpressionSignatureHelpProvider.cs (7)
43private static bool TryGetElementAccessExpression(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, SignatureHelpTriggerReason triggerReason, CancellationToken cancellationToken, [NotNullWhen(true)] out ExpressionSyntax? identifier, out SyntaxToken openBrace)
52var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
133private static SignatureHelpState? GetCurrentArgumentState(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, TextSpan currentSpan, CancellationToken cancellationToken)
299internal static bool TryGetSyntax(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, SignatureHelpTriggerReason triggerReason, CancellationToken cancellationToken, [NotNullWhen(true)] out ExpressionSyntax? identifier, out SyntaxToken openBrace)
334internal static TextSpan GetTextSpan(SyntaxNode expression, SyntaxToken openBracket)
340internal static bool TryGetSyntax(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, SignatureHelpTriggerReason triggerReason, CancellationToken cancellationToken, [NotNullWhen(true)] out ExpressionSyntax? identifier, out SyntaxToken openBrace)
377internal static bool TryGetSyntax(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, SignatureHelpTriggerReason triggerReason, CancellationToken cancellationToken, [NotNullWhen(true)] out ExpressionSyntax? identifier, out SyntaxToken openBrace)
SignatureHelp\TupleConstructionSignatureHelpProvider.cs (9)
38private SignatureHelpState? GetCurrentArgumentState(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, TextSpan currentSpan, CancellationToken cancellationToken)
64private bool GetOuterMostTupleExpressionInSpan(SyntaxNode root, int position,
83private bool GetOuterMostParenthesizedExpressionInSpan(SyntaxNode root, int position,
108var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
124private IEnumerable<INamedTypeSymbol>? FindNearestTupleConstructionWithInferrableType(SyntaxNode root, SemanticModel semanticModel, int position, SignatureHelpTriggerInfo triggerInfo,
149private SignatureHelpItems? CreateItems(int position, SyntaxNode root, ISyntaxFactsService syntaxFacts,
150SyntaxNode targetExpression, SemanticModel semanticModel, IEnumerable<INamedTypeSymbol> tupleTypes, CancellationToken cancellationToken)
201private bool TryGetTupleExpression(SignatureHelpTriggerReason triggerReason, SyntaxNode root, int position,
218private bool TryGetParenthesizedExpression(SignatureHelpTriggerReason triggerReason, SyntaxNode root, int position,
SplitOrMergeIfStatements\CSharpIfLikeStatementGenerator.cs (33)
29public bool IsIfOrElseIf(SyntaxNode node) => node is IfStatementSyntax;
31public bool IsCondition(SyntaxNode expression, out SyntaxNode ifOrElseIf)
43public bool IsElseIfClause(SyntaxNode node, out SyntaxNode parentIfOrElseIf)
55public bool HasElseIfClause(SyntaxNode ifOrElseIf, out SyntaxNode elseIfClause)
68public SyntaxNode GetCondition(SyntaxNode ifOrElseIf)
74public SyntaxNode GetRootIfStatement(SyntaxNode ifOrElseIf)
86public ImmutableArray<SyntaxNode> GetElseIfAndElseClauses(SyntaxNode ifOrElseIf)
90var builder = ImmutableArray.CreateBuilder<SyntaxNode>();
106public SyntaxNode WithCondition(SyntaxNode ifOrElseIf, SyntaxNode condition)
112public SyntaxNode WithStatementInBlock(SyntaxNode ifOrElseIf, SyntaxNode statement)
118public SyntaxNode WithStatementsOf(SyntaxNode ifOrElseIf, SyntaxNode otherIfOrElseIf)
125public SyntaxNode WithElseIfAndElseClausesOf(SyntaxNode ifStatement, SyntaxNode otherIfStatement)
128public SyntaxNode ToIfStatement(SyntaxNode ifOrElseIf)
131public SyntaxNode ToElseIfClause(SyntaxNode ifOrElseIf)
134public void InsertElseIfClause(SyntaxEditor editor, SyntaxNode afterIfOrElseIf, SyntaxNode elseIfClause)
156public void RemoveElseIfClause(SyntaxEditor editor, SyntaxNode elseIfClause)
src\roslyn\src\Analyzers\CSharp\Analyzers\RemoveConfusingSuppression\CSharpRemoveConfusingSuppressionDiagnosticAnalyzer.cs (1)
30var node = context.Node;
src\roslyn\src\Analyzers\CSharp\Analyzers\RemoveUnnecessaryUnsafeModifier\UnnecessaryUnsafeModifierUtilities.cs (20)
25private static bool ShouldAnalyzeNode(SemanticModel semanticModel, SyntaxNode declaration, CancellationToken cancellationToken)
39ArrayBuilder<SyntaxNode> result,
43var originalRoot = originalTree.GetRoot(cancellationToken);
45using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var nodesToCheck);
47foreach (var existingNode in originalRoot.DescendantNodes())
78IEnumerable<SyntaxNode> nodesToCheck,
79ArrayBuilder<SyntaxNode> result,
82using var _2 = PooledDictionary<SyntaxNode, SyntaxAnnotation>.GetInstance(out var nodeToAnnotation);
83foreach (var node in nodesToCheck)
91IEnumerable<SyntaxNode> nodesToCheck,
92PooledDictionary<SyntaxNode, SyntaxAnnotation> nodeToAnnotation,
93ArrayBuilder<SyntaxNode> result,
97var originalRoot = originalTree.GetRoot(cancellationToken);
104var updateRoot = updatedTree.GetRoot(cancellationToken);
112var newNode = updateRoot.GetAnnotatedNodes(annotation).Single();
122private static SyntaxNode WithoutUnsafeModifier(SyntaxNode node)
130private static SyntaxTokenList GetNewModifierList(SyntaxNode node)
133private static SyntaxTokenList GetModifiers(SyntaxNode node)
141public static SyntaxToken GetUnsafeModifier(SyntaxNode node)
src\roslyn\src\Analyzers\CSharp\Analyzers\UseExpressionBody\Helpers\UseExpressionBodyHelper.cs (8)
25public abstract BlockSyntax? GetBody(SyntaxNode declaration);
26public abstract ArrowExpressionClauseSyntax? GetExpressionBody(SyntaxNode declaration);
27public abstract bool IsRelevantDeclarationNode(SyntaxNode node);
29public abstract bool CanOfferUseExpressionBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, CancellationToken cancellationToken);
30public abstract bool CanOfferUseBlockBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, out bool fixesError, [NotNullWhen(true)] out ArrowExpressionClauseSyntax? expressionBody);
31public abstract SyntaxNode Update(SemanticModel semanticModel, SyntaxNode declaration, bool useExpressionBody, CancellationToken cancellationToken);
33public abstract Location GetDiagnosticLocation(SyntaxNode declaration);
src\roslyn\src\Analyzers\CSharp\Analyzers\UseExpressionBody\Helpers\UseExpressionBodyHelper`1.cs (10)
35where TDeclaration : SyntaxNode
54public override BlockSyntax? GetBody(SyntaxNode declaration)
57public override ArrowExpressionClauseSyntax? GetExpressionBody(SyntaxNode declaration)
60public override bool IsRelevantDeclarationNode(SyntaxNode node)
63public override bool CanOfferUseExpressionBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, CancellationToken cancellationToken)
66public override bool CanOfferUseBlockBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, out bool fixesError, [NotNullWhen(true)] out ArrowExpressionClauseSyntax? expressionBody)
69public sealed override SyntaxNode Update(SemanticModel semanticModel, SyntaxNode declaration, bool useExpressionBody, CancellationToken cancellationToken)
72public override Location GetDiagnosticLocation(SyntaxNode declaration)
122SyntaxNode declaration, ExpressionBodyPreference conversionPreference, CancellationToken cancellationToken,
src\roslyn\src\Analyzers\CSharp\Analyzers\UsePatternMatching\CSharpUseNotPatternDiagnosticAnalyzer.cs (1)
62var node = context.Node;
src\roslyn\src\Analyzers\CSharp\Analyzers\UsePrimaryConstructor\CSharpUsePrimaryConstructorDiagnosticAnalyzer.cs (7)
88[NotNullWhen(true)] out SyntaxNode? nodeToRemove,
391var body = primaryConstructorDeclaration.ExpressionBody ?? (SyntaxNode?)primaryConstructorDeclaration.Body;
416using var _2 = ArrayBuilder<(IParameterSymbol parameter, SyntaxNode assignedMemberDeclaration, bool parameterIsWrittenTo)>.GetInstance(out var orderedParameterAssignments);
440var lastAssignedMemberDeclaration = group.First().assignedMemberDeclaration;
467ArrayBuilder<(IParameterSymbol parameter, SyntaxNode assignedMemberDeclaration, bool parameterIsWrittenTo)>? orderedParameterAssignments,
495if (!IsViableMemberToAssignTo(namedType, member, out _, out var assignedMemberDeclaration, cancellationToken))
src\roslyn\src\Analyzers\CSharp\Analyzers\UseUtf8StringLiteral\UseUtf8StringLiteralDiagnosticAnalyzer.cs (3)
117private void ReportParameterArrayDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, ImmutableArray<IOperation> elements, NotificationOption2 notificationOption, ArrayCreationOperationLocation operationLocation)
129private void ReportArrayCreationDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, NotificationOption2 notificationOption)
137private void ReportDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, NotificationOption2 notificationOption, Location location, ArrayCreationOperationLocation operationLocation)
src\roslyn\src\Analyzers\CSharp\CodeFixes\AssignOutParameters\AbstractAssignOutParametersCodeFixProvider.cs (25)
32var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
46protected abstract void TryRegisterFix(CodeFixContext context, Document document, SyntaxNode container, SyntaxNode location);
48private static (SyntaxNode container, SyntaxNode exprOrStatement) GetContainer(SyntaxNode root, TextSpan span)
50var location = root.FindNode(span);
53var container = GetContainer(location);
63private static bool IsValidLocation(SyntaxNode location)
80private static SyntaxNode? GetContainer(SyntaxNode node)
82for (var current = node; current != null; current = current.Parent)
94private static async Task<MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>> GetUnassignedParametersAsync(
97var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
104var result = new MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>();
107var container = group.Key;
117foreach (var exprOrStatement in distinctExprsOrStatements)
140foreach (var container in unassignedParameters.Keys.OrderByDescending(n => n.Span.Start))
148SyntaxEditor editor, SyntaxNode container,
149MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol> unassignedParameters)>.ValueSet values,
152protected static ImmutableArray<SyntaxNode> GenerateAssignmentStatements(
155var result = ArrayBuilder<SyntaxNode>.GetInstance();
src\roslyn\src\Analyzers\CSharp\CodeFixes\AssignOutParameters\AssignOutParametersAboveReturnCodeFixProvider.cs (8)
26protected override void TryRegisterFix(CodeFixContext context, Document document, SyntaxNode container, SyntaxNode location)
32SyntaxEditor editor, SyntaxNode container,
33MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol> unassignedParameters)>.ValueSet values,
44SyntaxEditor editor, SyntaxNode exprOrStatement, ImmutableArray<SyntaxNode> statements)
56var parent = exprOrStatement.GetRequiredParent();
src\roslyn\src\Analyzers\CSharp\CodeFixes\ConvertNamespace\ConvertNamespaceTransform.cs (9)
81private static (SyntaxNode root, TextSpan semicolonSpan) ReplaceWithFileScopedNamespace(
85var updatedRoot = document.Root.ReplaceNode(
113var root = document.Root;
119(SyntaxNode stringNode, int closeTerminatorIndentationLength) lastRawStringLiteralData = default;
135SyntaxNode stringNode;
199var root = document.Root;
214SyntaxTree tree, SyntaxNode root, string indentation, TextLine textLine, CancellationToken cancellationToken)
245var updatedRoot = ReplaceWithBlockScopedNamespace(parsedDocument, fileScopedNamespace, options.NewLine, options.NewLines, annotation);
259private static SyntaxNode ReplaceWithBlockScopedNamespace(
src\roslyn\src\Analyzers\CSharp\CodeFixes\GenerateConstructor\CSharpGenerateConstructorService.cs (7)
31protected override bool IsSimpleNameGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken)
34protected override bool IsConstructorInitializerGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken)
37protected override bool IsImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken)
42SyntaxNode node,
80SyntaxNode node,
112SyntaxNode node,
147SyntaxNode node,
src\roslyn\src\Analyzers\CSharp\CodeFixes\InlineDeclaration\CSharpInlineDeclarationCodeFixProvider.cs (14)
62var originalRoot = editor.OriginalRoot;
69static t => (t.invocationOrCreation, ImmutableArray.Create<SyntaxNode>(t.identifier, t.declarator)),
78private static (VariableDeclaratorSyntax declarator, IdentifierNameSyntax identifier, SyntaxNode invocationOrCreation) FindDiagnosticNodes(
94private static SyntaxNode ReplaceIdentifierWithInlineDeclaration(
97SyntaxNode currentRoot, VariableDeclaratorSyntax declarator,
98IdentifierNameSyntax identifier, SyntaxNode currentNode,
118var block = CSharpBlockFacts.Instance.GetImmediateParentExecutableBlockForStatement(localDeclarationStatement);
324SyntaxNode nodeToReplace,
340var topmostContainer = GetTopmostContainer(nodeToReplace);
349var updatedTopmostContainer = topmostContainer.ReplaceNode(
360var updatedInvocationOrCreation = updatedTopmostContainer.GetAnnotatedNodes(annotation).Single();
373private static SyntaxNode GetTopmostContainer(SyntaxNode expression)
384int position, SyntaxNode topmostContainer,
src\roslyn\src\Analyzers\CSharp\CodeFixes\Nullable\CSharpDeclareAsNullableCodeFixProvider.cs (11)
46var node = context.Diagnostics.First().Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
56private static string GetEquivalenceKey(SyntaxNode node)
86var node = diagnostic.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
94var node = diagnostic.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
99Document document, SemanticModel model, SyntaxEditor editor, SyntaxNode node, HashSet<TypeSyntax> alreadyHandled, CancellationToken cancellationToken)
111Document document, SemanticModel? model, SyntaxNode node, CancellationToken cancellationToken)
118var containingMember = node.GetAncestors().FirstOrDefault(
175var syntax = local.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
186var syntax = field.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
203var syntax = property.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
314private static bool IsExpressionSupported(SyntaxNode node)
src\roslyn\src\Analyzers\CSharp\CodeFixes\RemoveUnusedParametersAndValues\CSharpRemoveUnusedValuesCodeFixProvider.cs (15)
44protected override SyntaxNode? TryUpdateNameForFlaggedNode(SyntaxNode node, SyntaxToken newName)
91protected override SyntaxNode? TryUpdateParentOfUpdatedNode(SyntaxNode parent, SyntaxNode newNameNode, SyntaxEditor editor, ISyntaxFacts syntaxFacts, SemanticModel semanticModel)
141protected override SyntaxNode ComputeReplacementNode(SyntaxNode originalOldNode, SyntaxNode changedOldNode, SyntaxNode proposedReplacementNode)
183protected override SyntaxNode GetReplacementNodeForCompoundAssignment(
184SyntaxNode originalCompoundAssignment,
185SyntaxNode newAssignmentTarget,
241protected override SyntaxNode GetReplacementNodeForVarPattern(SyntaxNode originalVarPattern, SyntaxNode newNameNode)
src\roslyn\src\Analyzers\CSharp\CodeFixes\UsePrimaryConstructor\CSharpUsePrimaryConstructorCodeFixProvider.cs (14)
311SyntaxNode TryQualify(
326SyntaxNode CreateDottedName(
342Func<TListSyntax, IEnumerable<SyntaxNode>> getElements)
343where TListSyntax : SyntaxNode
373static string GetLeadingWhitespace(SyntaxNode node)
474var declaration = member.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
483SyntaxNode UpdateDeclaration(SyntaxNode declaration, AssignmentExpressionSyntax assignmentExpression, ExpressionStatementSyntax? expressionStatement)
510async ValueTask<ImmutableDictionary<ISymbol, (MemberDeclarationSyntax memberNode, SyntaxNode nodeToRemove)>> RemoveMembersAsync()
512var removedMembers = ImmutableDictionary<ISymbol, (MemberDeclarationSyntax memberNode, SyntaxNode nodeToRemove)>.Empty;
554(ISymbol? member, MemberDeclarationSyntax memberNode, SyntaxNode nodeToRemove) GetMemberToRemove(string memberName)
558if (IsViableMemberToAssignTo(namedType, member, out var memberNode, out var nodeToRemove, cancellationToken))
574using var _1 = PooledHashSet<SyntaxNode>.GetInstance(out var nodesToReplace);
612foreach (var nodeToReplace in group)
src\roslyn\src\Analyzers\CSharp\CodeFixes\UseUnboundGenericTypeInNameOf\CSharpUseUnboundGenericTypeInNameOfCodeFixProvider.cs (1)
57where TSyntax : SyntaxNode
src\roslyn\src\Compilers\CSharp\CSharpAnalyzerDriver\CSharpDeclarationComputer.cs (23)
34SyntaxNode node,
56SyntaxNode node,
57Func<SyntaxNode, int?, bool> shouldSkip,
92builder.Add(new DeclarationInfo(name, ImmutableArray<SyntaxNode>.Empty, declaredSymbol));
108using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var codeBlocks);
131using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var attributes);
148using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var attributes);
159using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var codeBlocks);
172using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var attributes);
192using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var attributes);
203using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var attributes);
205using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var codeBlocks);
245using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var codeBlocks);
269using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var codeBlocks);
285using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var blocks);
301using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var codeBlocks);
333using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var codeBlocks);
347using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var attributes);
361private static void AddAttributes(SyntaxList<AttributeListSyntax> attributeLists, ArrayBuilder<SyntaxNode> builder)
372private static void AddParameterListInitializersAndAttributes(BaseParameterListSyntax parameterList, ArrayBuilder<SyntaxNode> builder)
383private static void AddParameterInitializersAndAttributes(ParameterSyntax parameter, ArrayBuilder<SyntaxNode> builder)
389private static void AddTypeParameterListAttributes(TypeParameterListSyntax typeParameterList, ArrayBuilder<SyntaxNode> builder)
412executableCodeBlocks: ImmutableArray.Create<SyntaxNode>(expressionBody),
Structure\CSharpStructureHelpers.cs (14)
83public static SyntaxToken GetLastInlineMethodBlockToken(SyntaxNode node)
210SyntaxNode node,
232static bool TryGetLeadingCollapsibleSpan(SyntaxNode node, out BlockSpan span)
266static SyntaxToken GetEndToken(SyntaxNode node)
286static SyntaxToken GetHintTextEndToken(SyntaxNode node)
323SyntaxNode node, string bannerText, bool autoCollapse,
335SyntaxNode node, SyntaxToken syntaxToken, bool compressEmptyLines,
345SyntaxNode node, SyntaxToken startToken,
372private static TextSpan GetHintSpan(SyntaxNode node, int endPos)
390SyntaxNode node, SyntaxToken startToken,
401SyntaxNode node, bool autoCollapse, string type, bool isCollapsible)
414SyntaxNode node, SyntaxToken syntaxToken, bool compressEmptyLines,
428SyntaxNode node, SyntaxToken startToken, SyntaxToken endToken, bool compressEmptyLines,
443IEnumerable<SyntaxNode> syntaxList, bool compressEmptyLines, bool autoCollapse,
UseExpressionBody\UseExpressionBodyCodeRefactoringProvider.cs (30)
65var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
66var node = root.FindNode(textSpan);
83var declaration = TryGetDeclaration(helper, text, node, position);
93private static SyntaxNode? TryGetDeclaration(
94UseExpressionBodyHelper helper, SourceText text, SyntaxNode node, int position)
96var declaration = GetDeclaration(node, helper);
114CodeRefactoringContext context, SyntaxNode root, SyntaxNode declaration,
150private static SyntaxNode? GetDeclaration(SyntaxNode node, UseExpressionBodyHelper helper)
152for (var current = node; current != null; current = current.Parent)
162Document document, SyntaxNode root, SyntaxNode declaration,
167var newRoot = GetUpdatedRoot(semanticModel, root, declaration, helper, useExpressionBody, cancellationToken);
171private static SyntaxNode GetUpdatedRoot(
172SemanticModel semanticModel, SyntaxNode root, SyntaxNode declaration,
175var updatedDeclaration = helper.Update(semanticModel, declaration, useExpressionBody, cancellationToken);
177var parent = declaration is AccessorDeclarationSyntax
181var updatedParent = parent.ReplaceNode(declaration, updatedDeclaration)
197var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
204static IEnumerable<SyntaxNode> GetDeclarationsToFix(
206SyntaxNode root,
215var spanNode = root.FindNode(span);
217foreach (var node in spanNode.DescendantNodesAndSelf())
237SyntaxNode root,
238ImmutableArray<SyntaxNode> declarationsToFix,
244var currentRoot = root.TrackNodes(declarationsToFix);
247foreach (var declaration in declarationsToFix.Reverse())
253var currentDeclaration = currentRoot.GetCurrentNodes(declaration).Single();
Classification\SyntaxClassification\FunctionPointerUnmanagedCallingConventionClassifier.cs (1)
21SyntaxNode syntax,
CodeGeneration\CSharpSyntaxGenerator.cs (620)
65internal override SyntaxTrivia Trivia(SyntaxNode node)
75internal override SyntaxNode DocumentationCommentTrivia(IEnumerable<SyntaxNode> nodes, SyntaxTriviaList trailingTrivia, string endOfLineString)
88internal override SyntaxNode? DocumentationCommentTriviaWithUpdatedContent(SyntaxTrivia trivia, IEnumerable<SyntaxNode> content)
101public override SyntaxNode CompilationUnit(IEnumerable<SyntaxNode> declarations)
108private SyntaxList<UsingDirectiveSyntax> AsUsingDirectives(IEnumerable<SyntaxNode> declarations)
115private SyntaxNode? AsUsingDirective(SyntaxNode node)
125private static SyntaxList<MemberDeclarationSyntax> AsNamespaceMembers(IEnumerable<SyntaxNode> declarations)
132private static SyntaxNode? AsNamespaceMember(SyntaxNode declaration)
151public override SyntaxNode NamespaceImportDeclaration(SyntaxNode name)
154public override SyntaxNode AliasImportDeclaration(string aliasIdentifierName, SyntaxNode name)
157public override SyntaxNode NamespaceDeclaration(SyntaxNode name, IEnumerable<SyntaxNode> declarations)
166public override SyntaxNode FieldDeclaration(
168SyntaxNode type,
171SyntaxNode? initializer)
187private protected override SyntaxNode ParameterDeclaration(
188string name, SyntaxNode? type, SyntaxNode? initializer, RefKind refKind, bool isExtension, bool isParams, bool isScoped)
221private protected override SyntaxNode MethodDeclaration(
223IEnumerable<SyntaxNode>? parameters,
224IEnumerable<SyntaxNode>? typeParameters,
225SyntaxNode? returnType,
228IEnumerable<SyntaxNode>? statements)
258public override SyntaxNode OperatorDeclaration(OperatorKind kind, IEnumerable<SyntaxNode>? parameters = null, SyntaxNode? returnType = null, Accessibility accessibility = Accessibility.NotApplicable, DeclarationModifiers modifiers = default, IEnumerable<SyntaxNode>? statements = null)
263private protected override SyntaxNode OperatorDeclaration(string operatorName, bool isImplicitConversion, IEnumerable<SyntaxNode>? parameters = null, SyntaxNode? returnType = null, Accessibility accessibility = Accessibility.NotApplicable, DeclarationModifiers modifiers = default, IEnumerable<SyntaxNode>? statements = null)
351private static ParameterListSyntax AsParameterList(IEnumerable<SyntaxNode>? parameters)
358public override SyntaxNode ConstructorDeclaration(
360IEnumerable<SyntaxNode>? parameters,
363IEnumerable<SyntaxNode>? baseConstructorArguments,
364IEnumerable<SyntaxNode>? statements)
375private protected override SyntaxNode DestructorDeclaration(IMethodSymbol destructorMethod)
378public override SyntaxNode PropertyDeclaration(
380SyntaxNode type,
383IEnumerable<SyntaxNode>? getAccessorStatements,
384IEnumerable<SyntaxNode>? setAccessorStatements)
386SyntaxNode? getAccessor = null;
387SyntaxNode? setAccessor = null;
398private protected override SyntaxNode PropertyDeclaration(
400SyntaxNode type,
401SyntaxNode? getAccessor,
402SyntaxNode? setAccessor,
424public override SyntaxNode GetAccessorDeclaration(Accessibility accessibility, IEnumerable<SyntaxNode>? statements)
427private protected override SyntaxNode SetAccessorDeclaration(Accessibility accessibility, bool isInitOnly, IEnumerable<SyntaxNode>? statements)
431SyntaxKind kind, Accessibility accessibility, IEnumerable<SyntaxNode>? statements)
445public override SyntaxNode WithAccessorDeclarations(SyntaxNode declaration, IEnumerable<SyntaxNode> accessorDeclarations)
461private static AccessorListSyntax CreateAccessorList(AccessorListSyntax? accessorList, IEnumerable<SyntaxNode> accessorDeclarations)
469public override SyntaxNode IndexerDeclaration(
470IEnumerable<SyntaxNode> parameters,
471SyntaxNode type,
474IEnumerable<SyntaxNode>? getAccessorStatements,
475IEnumerable<SyntaxNode>? setAccessorStatements)
516private static BracketedParameterListSyntax AsBracketedParameterList(IEnumerable<SyntaxNode> parameters)
523private static AccessorDeclarationSyntax AccessorDeclaration(SyntaxKind kind, IEnumerable<SyntaxNode>? statements)
537public override SyntaxNode EventDeclaration(
539SyntaxNode type,
551public override SyntaxNode CustomEventDeclaration(
553SyntaxNode type,
556IEnumerable<SyntaxNode>? parameters,
557IEnumerable<SyntaxNode>? addAccessorStatements,
558IEnumerable<SyntaxNode>? removeAccessorStatements)
584public override SyntaxNode? AsPublicInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceTypeName, string? interfaceMemberName)
601public override SyntaxNode? AsPrivateInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceTypeName, string? interfaceMemberName)
617private SyntaxNode WithoutConstraints(SyntaxNode declaration)
630private static SyntaxNode WithInterfaceSpecifier(SyntaxNode declaration, ExplicitInterfaceSpecifierSyntax? specifier)
642private SyntaxNode AsImplementation(SyntaxNode declaration, Accessibility requiredAccess)
650private static SyntaxNode WithBodies(SyntaxNode declaration)
692private protected override SyntaxNode ClassDeclaration(
695IEnumerable<SyntaxNode>? typeParameters,
698SyntaxNode? baseType,
699IEnumerable<SyntaxNode>? interfaceTypes,
700IEnumerable<SyntaxNode>? members)
724private SyntaxList<MemberDeclarationSyntax> AsClassMembers(string className, IEnumerable<SyntaxNode>? members)
731private MemberDeclarationSyntax? AsClassMember(SyntaxNode node, string className)
748private protected override SyntaxNode StructDeclaration(
751IEnumerable<SyntaxNode>? typeParameters,
754IEnumerable<SyntaxNode>? interfaceTypes,
755IEnumerable<SyntaxNode>? members)
771private protected override SyntaxNode InterfaceDeclaration(
773IEnumerable<SyntaxNode>? typeParameters,
775IEnumerable<SyntaxNode>? interfaceTypes = null,
776IEnumerable<SyntaxNode>? members = null)
794private SyntaxList<MemberDeclarationSyntax> AsInterfaceMembers(IEnumerable<SyntaxNode>? members)
801internal override SyntaxNode AsInterfaceMember(SyntaxNode m)
870public override SyntaxNode EnumDeclaration(
874IEnumerable<SyntaxNode>? members)
879internal override SyntaxNode EnumDeclaration(string name, SyntaxNode? underlyingType, Accessibility accessibility = Accessibility.NotApplicable, DeclarationModifiers modifiers = default, IEnumerable<SyntaxNode>? members = null)
889public override SyntaxNode EnumMember(string name, SyntaxNode? expression)
897private EnumMemberDeclarationSyntax AsEnumMember(SyntaxNode node)
919private SeparatedSyntaxList<EnumMemberDeclarationSyntax> AsEnumMembers(IEnumerable<SyntaxNode>? members)
922private protected override SyntaxNode DelegateDeclaration(
924IEnumerable<SyntaxNode>? parameters,
925IEnumerable<SyntaxNode>? typeParameters,
926SyntaxNode? returnType,
940public override SyntaxNode Attribute(SyntaxNode name, IEnumerable<SyntaxNode>? attributeArguments)
943public override SyntaxNode AttributeArgument(string? name, SyntaxNode expression)
950private static AttributeArgumentListSyntax? AsAttributeArgumentList(IEnumerable<SyntaxNode>? arguments)
953private static AttributeArgumentSyntax AsAttributeArgument(SyntaxNode node)
982private static SyntaxList<AttributeListSyntax> AsAttributeLists(IEnumerable<SyntaxNode> attributes)
987private static AttributeListSyntax AsAttributeList(SyntaxNode node)
992private static readonly ConditionalWeakTable<SyntaxNode, IReadOnlyList<SyntaxNode>> s_declAttributes = new();
994public override IReadOnlyList<SyntaxNode> GetAttributes(SyntaxNode declaration)
1005private static readonly ConditionalWeakTable<SyntaxNode, IReadOnlyList<SyntaxNode>> s_declReturnAttributes = new();
1007public override IReadOnlyList<SyntaxNode> GetReturnAttributes(SyntaxNode declaration)
1021public override SyntaxNode InsertAttributes(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes)
1024private SyntaxNode InsertAttributesInternal(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes)
1045public override SyntaxNode InsertReturnAttributes(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes)
1059private SyntaxNode InsertReturnAttributesInternal(SyntaxNode d, int index, IEnumerable<SyntaxNode> attributes)
1080private static IEnumerable<AttributeListSyntax> AsReturnAttributes(IEnumerable<SyntaxNode> attributes)
1091private static SyntaxList<AttributeListSyntax> WithRequiredTargetSpecifier(SyntaxList<AttributeListSyntax> attributes, SyntaxNode declaration)
1101public override IReadOnlyList<SyntaxNode> GetAttributeArguments(SyntaxNode attributeDeclaration)
1126public override SyntaxNode InsertAttributeArguments(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributeArguments)
1129private static SyntaxNode InsertAttributeArgumentsInternal(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributeArguments)
1149private static AttributeArgumentListSyntax? GetAttributeArgumentList(SyntaxNode declaration)
1169private static SyntaxNode WithAttributeArgumentList(SyntaxNode declaration, AttributeArgumentListSyntax? argList)
1189internal static SyntaxList<AttributeListSyntax> GetAttributeLists(SyntaxNode declaration)
1200private static SyntaxNode WithAttributeLists(SyntaxNode declaration, SyntaxList<AttributeListSyntax> attributeLists)
1213internal override SyntaxNode? GetPrimaryConstructorParameterList(SyntaxNode declaration)
1216internal override ImmutableArray<SyntaxNode> GetTypeInheritance(SyntaxNode declaration)
1219: ImmutableArray<SyntaxNode>.Empty;
1221public override IReadOnlyList<SyntaxNode> GetNamespaceImports(SyntaxNode declaration)
1229public override SyntaxNode InsertNamespaceImports(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> imports)
1231var result = PreserveTrivia(declaration, d => InsertNamespaceImportsInternal(d, index, imports));
1236private SyntaxNode InsertNamespaceImportsInternal(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> imports)
1248public override IReadOnlyList<SyntaxNode> GetMembers(SyntaxNode declaration)
1258private static ImmutableArray<SyntaxNode> Flatten(IEnumerable<SyntaxNode> declarations)
1260var builder = ArrayBuilder<SyntaxNode>.GetInstance();
1262foreach (var declaration in declarations)
1303static void FlattenDeclaration(ArrayBuilder<SyntaxNode> builder, SyntaxNode declaration, VariableDeclarationSyntax variableDeclaration)
1316private static int GetDeclarationCount(SyntaxNode declaration)
1327private static SyntaxNode EnsureTypeDeclarationHasBody(SyntaxNode declaration)
1340public override SyntaxNode InsertMembers(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> members)
1368private IEnumerable<MemberDeclarationSyntax>? AsMembersOf(SyntaxNode declaration, IEnumerable<SyntaxNode>? members)
1371private SyntaxNode? AsMemberOf(SyntaxNode declaration, SyntaxNode member)
1382private static bool CanHaveAccessibility(SyntaxNode declaration)
1390public override Accessibility GetAccessibility(SyntaxNode declaration)
1399public override SyntaxNode WithAccessibility(SyntaxNode declaration, Accessibility accessibility)
1608public override DeclarationModifiers GetModifiers(SyntaxNode declaration)
1615private static SyntaxTokenList GetModifierTokens(SyntaxNode declaration)
1621private SyntaxNode WithModifiersInternal(SyntaxNode declaration, DeclarationModifiers modifiers)
1662private static SyntaxNode SetModifierTokens(SyntaxNode declaration, SyntaxTokenList modifiers)
1740private protected override SyntaxNode TypeParameter(string name)
1743private protected override SyntaxNode TypeParameter(ITypeParameterSymbol typeParameter)
1756private static TypeParameterListSyntax? AsTypeParameterList(IEnumerable<SyntaxNode>? typeParameterNodes)
1765private protected override SyntaxNode WithTypeParameters(SyntaxNode declaration, IEnumerable<SyntaxNode> typeParameters)
1778internal override SyntaxNode WithExplicitInterfaceImplementations(
1779SyntaxNode declaration,
1803private static SyntaxNode RemoveDefaultValue(ParameterSyntax parameter, bool removeDefaults)
1821private protected override SyntaxNode WithTypeConstraint(
1822SyntaxNode declaration, string typeParameterName, SpecialTypeConstraintKind kinds, bool isUnmanagedType, IEnumerable<SyntaxNode>? types)
1831private protected override SyntaxNode WithDefaultConstraint(SyntaxNode declaration, string typeParameterName)
1843IEnumerable<SyntaxNode>? types)
1889public override DeclarationKind GetDeclarationKind(SyntaxNode declaration)
2044private static bool ParentIsFieldDeclaration([NotNullWhen(true)] SyntaxNode? node)
2047private static bool ParentIsEventFieldDeclaration([NotNullWhen(true)] SyntaxNode? node)
2050private static bool ParentIsLocalDeclarationStatement([NotNullWhen(true)] SyntaxNode? node)
2053public override string GetName(SyntaxNode declaration)
2075public override SyntaxNode WithName(SyntaxNode declaration, string name)
2078private SyntaxNode WithNameInternal(SyntaxNode declaration, string name)
2115public override SyntaxNode? GetType(SyntaxNode declaration)
2154public override SyntaxNode WithType(SyntaxNode declaration, SyntaxNode type)
2157private static SyntaxNode WithTypeInternal(SyntaxNode declaration, SyntaxNode type)
2173private SyntaxNode Isolate(SyntaxNode declaration, Func<SyntaxNode, SyntaxNode> editor)
2176private SyntaxNode AsIsolatedDeclaration(SyntaxNode declaration)
2212private static SyntaxNode WithVariable(SyntaxNode declaration, VariableDeclaratorSyntax variable)
2223private static VariableDeclarationSyntax? GetVariableDeclaration(SyntaxNode declaration)
2232private static SyntaxNode WithVariableDeclaration(SyntaxNode declaration, VariableDeclarationSyntax variables)
2241private static SyntaxNode GetFullDeclaration(SyntaxNode declaration)
2272private SyntaxNode? AsNodeLike(SyntaxNode existingNode, SyntaxNode newNode)
2282var container = GetDeclaration(existingNode.Parent);
2297public override IReadOnlyList<SyntaxNode> GetParameters(SyntaxNode declaration)
2307public override SyntaxNode InsertParameters(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> parameters)
2320public override IReadOnlyList<SyntaxNode> GetSwitchSections(SyntaxNode switchStatement)
2326public override SyntaxNode InsertSwitchSections(SyntaxNode switchStatement, int index, IEnumerable<SyntaxNode> switchSections)
2350public override SyntaxNode? Visit(SyntaxNode? node)
2373internal override SyntaxNode? GetParameterListNode(SyntaxNode declaration)
2376private static SyntaxNode WithParameterList(SyntaxNode declaration, BaseParameterListSyntax list)
2422public override SyntaxNode? GetExpression(SyntaxNode declaration)
2472public override SyntaxNode WithExpression(SyntaxNode declaration, SyntaxNode expression)
2475private static SyntaxNode WithExpressionInternal(SyntaxNode declaration, SyntaxNode expression)
2548private static EqualsValueClauseSyntax? GetEqualsValue(SyntaxNode declaration)
2588private static SyntaxNode WithEqualsValue(SyntaxNode declaration, EqualsValueClauseSyntax? initializer)
2628public override IReadOnlyList<SyntaxNode> GetStatements(SyntaxNode declaration)
2650public override SyntaxNode WithStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
2675public override IReadOnlyList<SyntaxNode> GetAccessors(SyntaxNode declaration)
2681public override SyntaxNode InsertAccessors(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> accessors)
2702internal static AccessorListSyntax? GetAccessorList(SyntaxNode declaration)
2705private static bool CanHaveAccessors(SyntaxNode declaration)
2714private static SyntaxNode WithAccessorList(SyntaxNode declaration, AccessorListSyntax accessorList)
2721private static AccessorListSyntax AsAccessorList(IEnumerable<SyntaxNode> nodes, SyntaxKind parentKind)
2724private static AccessorDeclarationSyntax? AsAccessor(SyntaxNode node, SyntaxKind parentKind)
2752private static AccessorDeclarationSyntax? GetAccessor(SyntaxNode declaration, SyntaxKind kind)
2758private SyntaxNode WithAccessor(SyntaxNode declaration, SyntaxKind kind, AccessorDeclarationSyntax accessor)
2761private SyntaxNode WithAccessor(SyntaxNode declaration, AccessorListSyntax? accessorList, SyntaxKind kind, AccessorDeclarationSyntax? accessor)
2779public override IReadOnlyList<SyntaxNode> GetGetAccessorStatements(SyntaxNode declaration)
2785public override IReadOnlyList<SyntaxNode> GetSetAccessorStatements(SyntaxNode declaration)
2791public override SyntaxNode WithGetAccessorStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
2794public override SyntaxNode WithSetAccessorStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
2797private SyntaxNode WithAccessorStatements(SyntaxNode declaration, SyntaxKind kind, IEnumerable<SyntaxNode> statements)
2811public override IReadOnlyList<SyntaxNode> GetBaseAndInterfaceTypes(SyntaxNode declaration)
2824public override SyntaxNode AddBaseType(SyntaxNode declaration, SyntaxNode baseType)
2838public override SyntaxNode AddInterfaceType(SyntaxNode declaration, SyntaxNode interfaceType)
2852private static SyntaxNode AddBaseList(SyntaxNode declaration, BaseListSyntax baseList)
2854var newDecl = WithBaseList(declaration, baseList);
2860private static BaseListSyntax? GetBaseList(SyntaxNode declaration)
2865private static SyntaxNode WithBaseList(SyntaxNode declaration, BaseListSyntax baseList)
2874public override SyntaxNode ReplaceNode(SyntaxNode root, SyntaxNode declaration, SyntaxNode? newDeclaration)
2889var newFullDecl = AsIsolatedDeclaration(newDeclaration);
2890var fullDecl = GetFullDeclaration(declaration);
2898var newSubDecl = GetSubDeclarations(newFullDecl)[0];
2922private static bool AreInlineReplaceableSubDeclarations(SyntaxNode decl1, SyntaxNode decl2)
2938private static bool AreSimilarExceptForSubDeclarations(SyntaxNode? decl1, SyntaxNode? decl2)
2987private IEnumerable<SyntaxNode> SplitAndReplace(SyntaxNode multiPartDeclaration, int index, IEnumerable<SyntaxNode> newDeclarations)
2993var newNodes = new List<SyntaxNode>();
3017public override SyntaxNode InsertNodesBefore(SyntaxNode root, SyntaxNode declaration, IEnumerable<SyntaxNode> newDeclarations)
3036private SyntaxNode InsertNodesBeforeInternal(SyntaxNode root, SyntaxNode declaration, IEnumerable<SyntaxNode> newDeclarations)
3038var fullDecl = GetFullDeclaration(declaration);
3056public override SyntaxNode InsertNodesAfter(SyntaxNode root, SyntaxNode declaration, IEnumerable<SyntaxNode> newDeclarations)
3075private SyntaxNode InsertNodesAfterInternal(SyntaxNode root, SyntaxNode declaration, IEnumerable<SyntaxNode> newDeclarations)
3077var fullDecl = GetFullDeclaration(declaration);
3096private IEnumerable<SyntaxNode> SplitAndInsert(SyntaxNode multiPartDeclaration, int index, IEnumerable<SyntaxNode> newDeclarations)
3099var newNodes = new List<SyntaxNode>
3108private SyntaxNode WithSubDeclarationsRemoved(SyntaxNode declaration, int index, int count)
3111private static IReadOnlyList<SyntaxNode> GetSubDeclarations(SyntaxNode declaration)
3122public override SyntaxNode RemoveNode(SyntaxNode root, SyntaxNode node)
3125public override SyntaxNode RemoveNode(SyntaxNode root, SyntaxNode node, SyntaxRemoveOptions options)
3146private SyntaxNode RemoveNodeInternal(SyntaxNode root, SyntaxNode declaration, SyntaxRemoveOptions options)
3172var full = GetFullDeclaration(declaration);
3191var parent = declaration.Parent;
3210private static SyntaxNode ShiftTrivia(SyntaxNode root, SyntaxNode node)
3216var newNode = node.WithTrailingTrivia(node.GetTrailingTrivia().AddRange(previousToken.TrailingTrivia));
3234public override SyntaxNode AddEventHandler(SyntaxNode @event, SyntaxNode handler)
3237public override SyntaxNode RemoveEventHandler(SyntaxNode @event, SyntaxNode handler)
3240public override SyntaxNode AwaitExpression(SyntaxNode expression)
3243public override SyntaxNode NameOfExpression(SyntaxNode expression)
3246public override SyntaxNode ReturnStatement(SyntaxNode? expression = null)
3249public override SyntaxNode ThrowStatement(SyntaxNode? expression = null)
3252public override SyntaxNode ThrowExpression(SyntaxNode expression)
3255public override SyntaxNode IfStatement(SyntaxNode condition, IEnumerable<SyntaxNode> trueStatements, IEnumerable<SyntaxNode>? falseStatements = null)
3277IEnumerable<SyntaxNode>? statements = null,
3294private static SyntaxList<StatementSyntax> AsStatementList(IEnumerable<SyntaxNode>? nodes)
3297private static StatementSyntax AsStatement(SyntaxNode node)
3307public override SyntaxNode ExpressionStatement(SyntaxNode expression)
3310public override SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull)
3313public override SyntaxNode MemberBindingExpression(SyntaxNode name)
3316public override SyntaxNode ElementBindingExpression(IEnumerable<SyntaxNode> arguments)
3320private static SeparatedSyntaxList<ExpressionSyntax> AsExpressionList(IEnumerable<SyntaxNode> expressions)
3323public override SyntaxNode ArrayCreationExpression(SyntaxNode elementType, SyntaxNode size)
3329public override SyntaxNode ArrayCreationExpression(SyntaxNode elementType, IEnumerable<SyntaxNode> elements)
3337public override SyntaxNode ObjectCreationExpression(SyntaxNode type, IEnumerable<SyntaxNode> arguments)
3340internal override SyntaxNode ObjectCreationExpression(SyntaxNode type, SyntaxToken openParen, SeparatedSyntaxList<SyntaxNode> arguments, SyntaxToken closeParen)
3346private static ArgumentListSyntax CreateArgumentList(IEnumerable<SyntaxNode> arguments)
3349private static SeparatedSyntaxList<ArgumentSyntax> CreateArguments(IEnumerable<SyntaxNode> arguments)
3352private static ArgumentSyntax AsArgument(SyntaxNode argOrExpression)
3355public override SyntaxNode InvocationExpression(SyntaxNode expression, IEnumerable<SyntaxNode> arguments)
3358public override SyntaxNode ElementAccessExpression(SyntaxNode expression, IEnumerable<SyntaxNode> arguments)
3364private static SyntaxNode ParenthesizeNonSimple(SyntaxNode expression)
3367public override SyntaxNode IsTypeExpression(SyntaxNode expression, SyntaxNode type)
3370public override SyntaxNode TypeOfExpression(SyntaxNode type)
3373public override SyntaxNode TryCastExpression(SyntaxNode expression, SyntaxNode type)
3376public override SyntaxNode AssignmentStatement(SyntaxNode left, SyntaxNode right)
3379private static SyntaxNode CreateBinaryExpression(SyntaxKind syntaxKind, SyntaxNode left, SyntaxNode right)
3382public override SyntaxNode ValueEqualsExpression(SyntaxNode left, SyntaxNode right)
3385public override SyntaxNode ReferenceEqualsExpression(SyntaxNode left, SyntaxNode right)
3388public override SyntaxNode ValueNotEqualsExpression(SyntaxNode left, SyntaxNode right)
3391public override SyntaxNode ReferenceNotEqualsExpression(SyntaxNode left, SyntaxNode right)
3394public override SyntaxNode LessThanExpression(SyntaxNode left, SyntaxNode right)
3397public override SyntaxNode LessThanOrEqualExpression(SyntaxNode left, SyntaxNode right)
3400public override SyntaxNode GreaterThanExpression(SyntaxNode left, SyntaxNode right)
3403public override SyntaxNode GreaterThanOrEqualExpression(SyntaxNode left, SyntaxNode right)
3406public override SyntaxNode NegateExpression(SyntaxNode expression)
3409public override SyntaxNode AddExpression(SyntaxNode left, SyntaxNode right)
3412public override SyntaxNode SubtractExpression(SyntaxNode left, SyntaxNode right)
3415public override SyntaxNode MultiplyExpression(SyntaxNode left, SyntaxNode right)
3418public override SyntaxNode DivideExpression(SyntaxNode left, SyntaxNode right)
3421public override SyntaxNode ModuloExpression(SyntaxNode left, SyntaxNode right)
3424public override SyntaxNode BitwiseAndExpression(SyntaxNode left, SyntaxNode right)
3427public override SyntaxNode BitwiseNotExpression(SyntaxNode operand)
3430public override SyntaxNode LogicalAndExpression(SyntaxNode left, SyntaxNode right)
3433public override SyntaxNode LogicalOrExpression(SyntaxNode left, SyntaxNode right)
3436public override SyntaxNode LogicalNotExpression(SyntaxNode expression)
3441public override SyntaxNode ConditionalExpression(SyntaxNode condition, SyntaxNode whenTrue, SyntaxNode whenFalse)
3444public override SyntaxNode CoalesceExpression(SyntaxNode left, SyntaxNode right)
3447public override SyntaxNode ThisExpression()
3450public override SyntaxNode BaseExpression()
3453public override SyntaxNode TypedConstantExpression(TypedConstant value)
3456private protected override SyntaxNode GenerateExpression(ITypeSymbol? type, object? value, bool canUseFieldReference)
3459public override SyntaxNode GenericName(string identifier, IEnumerable<SyntaxNode> typeArguments)
3462internal override SyntaxNode GenericName(SyntaxToken identifier, IEnumerable<SyntaxNode> typeArguments)
3466public override SyntaxNode WithTypeArguments(SyntaxNode expression, IEnumerable<SyntaxNode> typeArguments)
3496public override SyntaxNode QualifiedName(SyntaxNode left, SyntaxNode right)
3499internal override SyntaxNode GlobalAliasedName(SyntaxNode name)
3504public override SyntaxNode NameExpression(INamespaceOrTypeSymbol namespaceOrTypeSymbol)
3507public override SyntaxNode TypeExpression(SpecialType specialType)
3529public override SyntaxNode ArrayTypeExpression(SyntaxNode type)
3532public override SyntaxNode NullableTypeExpression(SyntaxNode type)
3544internal override SyntaxNode CreateTupleType(IEnumerable<SyntaxNode> elements)
3547public override SyntaxNode TupleElementExpression(SyntaxNode type, string? name = null)
3550public override SyntaxNode Argument(string? name, RefKind refKind, SyntaxNode expression)
3558public override SyntaxNode LocalDeclarationStatement(SyntaxNode? type, string name, SyntaxNode? initializer, bool isConst)
3561public override SyntaxNode UsingStatement(SyntaxNode? type, string name, SyntaxNode expression, IEnumerable<SyntaxNode> statements)
3569public override SyntaxNode UsingStatement(SyntaxNode expression, IEnumerable<SyntaxNode> statements)
3577public override SyntaxNode LockStatement(SyntaxNode expression, IEnumerable<SyntaxNode> statements)
3584public override SyntaxNode TryCatchStatement(IEnumerable<SyntaxNode>? tryStatements, IEnumerable<SyntaxNode>? catchClauses, IEnumerable<SyntaxNode>? finallyStatements = null)
3592public override SyntaxNode CatchClause(SyntaxNode type, string name, IEnumerable<SyntaxNode> statements)
3600public override SyntaxNode WhileStatement(SyntaxNode condition, IEnumerable<SyntaxNode> statements)
3603public override SyntaxNode SwitchStatement(SyntaxNode expression, IEnumerable<SyntaxNode> caseClauses)
3624public override SyntaxNode SwitchSection(IEnumerable<SyntaxNode> expressions, IEnumerable<SyntaxNode> statements)
3627internal override SyntaxNode SwitchSectionFromLabels(IEnumerable<SyntaxNode> labels, IEnumerable<SyntaxNode> statements)
3634public override SyntaxNode DefaultSwitchSection(IEnumerable<SyntaxNode> statements)
3637private static SyntaxList<SwitchLabelSyntax> AsSwitchLabels(IEnumerable<SyntaxNode> expressions)
3649public override SyntaxNode ExitSwitchStatement()
3652internal override SyntaxNode ScopeBlock(IEnumerable<SyntaxNode> statements)
3655internal override SyntaxNode GlobalStatement(SyntaxNode statement)
3658public override SyntaxNode ValueReturningLambdaExpression(IEnumerable<SyntaxNode>? parameterDeclarations, SyntaxNode expression)
3667private static bool IsSimpleLambdaParameter(SyntaxNode node)
3670public override SyntaxNode VoidReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, SyntaxNode expression)
3673public override SyntaxNode ValueReturningLambdaExpression(IEnumerable<SyntaxNode>? parameterDeclarations, IEnumerable<SyntaxNode> statements)
3676public override SyntaxNode VoidReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, IEnumerable<SyntaxNode> statements)
3679public override SyntaxNode LambdaParameter(string identifier, SyntaxNode? type = null)
3682internal override SyntaxNode IdentifierName(SyntaxToken identifier)
3685internal override SyntaxNode NamedAnonymousObjectMemberDeclarator(SyntaxNode identifier, SyntaxNode expression)
3692public override SyntaxNode TupleExpression(IEnumerable<SyntaxNode> arguments)
3695internal override SyntaxNode RemoveAllComments(SyntaxNode node)
3697var modifiedNode = RemoveLeadingAndTrailingComments(node);
3735internal override SyntaxNode ParseExpression(string stringToParse)
3738internal override SyntaxNode ParseTypeName(string stringToParse)
3741internal override SyntaxNode ExtensionBlockDeclaration(
3742SyntaxNode extensionParameter,
3743IEnumerable<SyntaxNode>? typeParameters,
3744IEnumerable<SyntaxNode> members)
Simplification\CSharpSimplificationService.cs (20)
52public override SyntaxNode Expand(SyntaxNode node, SemanticModel semanticModel, SyntaxAnnotation? annotationForReplacedAliasIdentifier, Func<SyntaxNode, bool>? expandInsideNode, bool expandParameter, CancellationToken cancellationToken)
77public override SyntaxToken Expand(SyntaxToken token, SemanticModel semanticModel, Func<SyntaxNode, bool>? expandInsideNode, CancellationToken cancellationToken)
95public static SyntaxToken TryEscapeIdentifierToken(SyntaxToken syntaxToken, SyntaxNode parentOfToken)
113var parent = parentOfToken.Parent;
137public static T AppendElasticTriviaIfNecessary<T>(T rewrittenNode, T originalNode) where T : SyntaxNode
169protected override SemanticModel GetSpeculativeSemanticModel(ref SyntaxNode nodeToSpeculate, SemanticModel originalSemanticModel, SyntaxNode originalNode)
171var syntaxNodeToSpeculate = nodeToSpeculate;
177protected override ImmutableArray<NodeOrTokenToReduce> GetNodesAndTokensToReduce(SyntaxNode root, Func<SyntaxNodeOrToken, bool> isNodeOrTokenOutsideSimplifySpans)
180protected override bool NodeRequiresNonSpeculativeSemanticModel(SyntaxNode node)
185protected override void GetUnusedNamespaceImports(SemanticModel model, HashSet<SyntaxNode> namespaceImports, CancellationToken cancellationToken)
187var root = model.SyntaxTree.GetRoot(cancellationToken);
203private static bool IsTupleInDeconstruction(SyntaxNode tuple)
206var currentTuple = tuple;
209var parent = currentTuple.Parent;
220var grandParent = parent.Parent;
231protected override void AddImportDeclarations(CompilationUnitSyntax root, ArrayBuilder<SyntaxNode> importDeclarations)
241static void AddImportDeclarations(BaseNamespaceDeclarationSyntax baseNamespace, ArrayBuilder<SyntaxNode> importDeclarations)
Simplification\Reducers\CSharpMiscellaneousReducer.cs (7)
25private static readonly Func<ParameterSyntax, SemanticModel, SimplifierOptions, CancellationToken, SyntaxNode> s_simplifyParameter = SimplifyParameter;
67private static SyntaxNode SimplifyParameter(
83private static readonly Func<ParenthesizedLambdaExpressionSyntax, SemanticModel, SimplifierOptions, CancellationToken, SyntaxNode> s_simplifyParenthesizedLambdaExpression = SimplifyParenthesizedLambdaExpression;
85private static SyntaxNode SimplifyParenthesizedLambdaExpression(
111private static readonly Func<BlockSyntax, SemanticModel, CSharpSimplifierOptions, CancellationToken, SyntaxNode> s_simplifyBlock = SimplifyBlock;
113private static SyntaxNode SimplifyBlock(
176private static bool CanHaveEmbeddedStatement(SyntaxNode node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\SyntaxNodeExtensions.cs (74)
25public static LanguageVersion GetLanguageVersion(this SyntaxNode node)
28public static void Deconstruct(this SyntaxNode node, out SyntaxKind kind)
31public static bool IsKind<TNode>([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind, [NotNullWhen(true)] out TNode? result)
32where TNode : SyntaxNode
44public static bool IsParentKind([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind)
47public static bool IsParentKind<TNode>([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind, [NotNullWhen(true)] out TNode? result)
48where TNode : SyntaxNode
61this SyntaxNode node, SourceText? sourceText = null,
90public static bool IsAnyArgumentList([NotNullWhen(true)] this SyntaxNode? node)
99public static (SyntaxToken openBrace, SyntaxToken closeBrace) GetBraces(this SyntaxNode? node)
116public static bool IsEmbeddedStatementOwner([NotNullWhen(true)] this SyntaxNode? node)
130public static StatementSyntax? GetEmbeddedStatement(this SyntaxNode? node)
146public static BaseParameterListSyntax? GetParameterList(this SyntaxNode? declaration)
159public static SyntaxList<AttributeListSyntax> GetAttributeLists(this SyntaxNode? declaration)
172public static ConditionalAccessExpressionSyntax? GetParentConditionalAccessExpression(this SyntaxNode? node)
184var current = node;
251/// <inheritdoc cref="ISyntaxFacts.GetRootConditionalAccessExpression(SyntaxNode)"/>
253public static ConditionalAccessExpressionSyntax? GetRootConditionalAccessExpression(this SyntaxNode? node)
270public static ConditionalAccessExpressionSyntax? GetInnerMostConditionalAccessExpression(this SyntaxNode node)
281public static bool IsAsyncSupportingFunctionSyntax([NotNullWhen(true)] this SyntaxNode? node)
284public static bool IsCompoundAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
287public static bool IsLeftSideOfAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
291public static bool IsLeftSideOfAnyAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
294public static bool IsRightSideOfAnyAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
297public static bool IsLeftSideOfCompoundAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
308public static IEnumerable<UsingDirectiveSyntax> GetEnclosingUsingDirectives(this SyntaxNode node)
316public static IEnumerable<ExternAliasDirectiveSyntax> GetEnclosingExternAliasDirectives(this SyntaxNode node)
324public static bool IsUnsafeContext(this SyntaxNode node)
335public static bool IsInStaticContext(this SyntaxNode node)
337for (var current = node; current != null; current = current.Parent)
372public static BaseNamespaceDeclarationSyntax? GetInnermostNamespaceDeclarationWithUsings(this SyntaxNode contextNode)
395public static bool IsBreakableConstruct([NotNullWhen(true)] this SyntaxNode? node)
398public static bool IsContinuableConstruct([NotNullWhen(true)] this SyntaxNode? node)
413public static bool IsReturnableConstruct(this SyntaxNode node)
437public static bool ContainsYield(this SyntaxNode node)
440public static bool IsReturnableConstructOrTopLevelCompilationUnit(this SyntaxNode node)
443public static bool SpansPreprocessorDirective<TSyntaxNode>(this IEnumerable<TSyntaxNode> list) where TSyntaxNode : SyntaxNode
448where TNode : SyntaxNode
496public static bool ContainsInterleavedDirective(this SyntaxNode syntaxNode, CancellationToken cancellationToken)
500/// Similar to <see cref="ContainsInterleavedDirective(SyntaxNode, CancellationToken)"/> except that the span to check
503public static bool ContainsInterleavedDirective(this SyntaxNode syntaxNode, TextSpan span, CancellationToken cancellationToken)
542var structure = trivia.GetStructure()!;
584where TSyntaxNode : SyntaxNode
644public static ImmutableArray<SyntaxTrivia> GetLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
647public static TSyntaxNode GetNodeWithoutLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
650public static TSyntaxNode GetNodeWithoutLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node, out ImmutableArray<SyntaxTrivia> strippedTrivia) where TSyntaxNode : SyntaxNode
653public static ImmutableArray<SyntaxTrivia> GetLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
656public static TSyntaxNode GetNodeWithoutLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
659public static TSyntaxNode GetNodeWithoutLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node, out ImmutableArray<SyntaxTrivia> strippedTrivia) where TSyntaxNode : SyntaxNode
662public static bool IsVariableDeclaratorValue([NotNullWhen(true)] this SyntaxNode? node)
666public static BlockSyntax? FindInnermostCommonBlock(this IEnumerable<SyntaxNode> nodes)
669public static IEnumerable<SyntaxNode> GetAncestorsOrThis(this SyntaxNode? node, Func<SyntaxNode, bool> predicate)
671var current = node;
683public static (SyntaxToken openParen, SyntaxToken closeParen) GetParentheses(this SyntaxNode node)
713public static (SyntaxToken openBracket, SyntaxToken closeBracket) GetBrackets(this SyntaxNode? node)
726public static SyntaxTokenList GetModifiers(this SyntaxNode? member)
738public static SyntaxNode? WithModifiers(this SyntaxNode? member, SyntaxTokenList modifiers)
749public static void ForEachMember<TArg>(this SyntaxNode? node, Action<MemberDeclarationSyntax, TArg> callback, TArg arg)
774[NotNullWhen(true)] this SyntaxNode? node,
781for (var current = node; current != null; current = current.Parent)
825[NotNullWhen(true)] this SyntaxNode? node,
826[NotNullWhen(true)] out SyntaxNode? deconstructionLeft)
828SyntaxNode? previous = null;
829for (var current = node; current != null; current = current.Parent)
851where T : SyntaxNode
860where T : SyntaxNode
868where T : SyntaxNode
874public static T KeepCommentsAndAddElasticMarkers<T>(this T node) where T : SyntaxNode
879public static SyntaxNode WithPrependedNonIndentationTriviaFrom(
880this SyntaxNode to, SyntaxNode from)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Engine\CSharpFormatEngine.cs (1)
16SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\IndentBlockFormattingRule.cs (13)
47public override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
61private static void AddTypeParameterConstraintClauseOperation(List<IndentBlockOperation> list, SyntaxNode node)
70private void AddSwitchIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
129private void AddLabelIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
145private static void AddAlignmentBlockOperation(List<IndentBlockOperation> list, SyntaxNode node)
200private static void SetAlignmentBlockOperation(List<IndentBlockOperation> list, SyntaxNode baseNode, SyntaxNode body)
211private void AddBlockIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
248private static void AddBracketIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
289private static void AddParenthesizedPatternIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
315private static void AddEmbeddedStatementsIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
374private static bool IsWithinSwitchExpressionArmPattern(SyntaxNode node)
378for (var current = node; current != null; current = current.Parent)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\Precedence\AbstractCSharpPrecedenceService.cs (1)
11where TSyntax : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SemanticFacts\CSharpSemanticFacts.cs (35)
43public bool IsWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
46public bool IsOnlyWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
49public bool IsInOutContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
52public bool IsInRefContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
55public bool IsInInContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
58public bool CanReplaceWithRValue(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? expression, CancellationToken cancellationToken)
65foreach (var ancestor in token.GetAncestors<SyntaxNode>())
121SyntaxNode oldNode,
122SyntaxNode newNode,
178public ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode node)
192public SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
195public IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node)
206public ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node)
218public ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node)
243var node = syntaxRef.GetSyntax(cancellationToken);
254public IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken)
264public IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
267public IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
271public ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken)
274public ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken)
279public ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken)
301/// cref="ModelExtensions.GetSymbolInfo(SemanticModel, SyntaxNode, CancellationToken)"/>, but sometimes employs
305private ImmutableArray<ISymbol> GetSymbolInfo(SemanticModel semanticModel, SyntaxNode node, SyntaxToken token, CancellationToken cancellationToken)
431public bool IsInsideNameOfExpression(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
440var node = syntaxReference.GetSyntax(cancellationToken);
442foreach (var localFunction in node.DescendantNodes().Where(CSharpSyntaxFacts.Instance.IsLocalFunctionStatement))
455public bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, [NotNullWhen(true)] INamedTypeSymbol? expressionType, CancellationToken cancellationToken)
458public string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken)
461public IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node)
477private static bool IsInPreprocessingSymbolContext(SyntaxNode node)
487public CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination)
496var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
535var generatedRoot = await generatedDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
539var methodDeclaration = generatedRoot.FindNode(methodDeclarationSpan);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpHeaderFacts.cs (18)
24public override bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
50public override bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
56public override bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
62public override bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
68public override bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
74public override bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
83public override bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
89public override bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
95public override bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpSyntaxFacts.cs (319)
142public bool IsDirective([NotNullWhen(true)] SyntaxNode? node)
145public bool TryGetExternalSourceInfo([NotNullWhen(true)] SyntaxNode? node, out ExternalSourceInfo info)
166public bool IsNameOfSimpleMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
172public bool IsNameOfAnyMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
175public bool IsNameOfMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node)
182public SyntaxNode? GetStandaloneExpression(SyntaxNode? node)
185public SyntaxNode? GetRootConditionalAccessExpression(SyntaxNode? node)
188public bool IsDeclarationExpression([NotNullWhen(true)] SyntaxNode? node)
191public bool IsNamedArgument([NotNullWhen(true)] SyntaxNode? node)
194public bool IsNameOfNamedArgument([NotNullWhen(true)] SyntaxNode? node)
197public SyntaxNode? GetParameterList(SyntaxNode node)
200public bool IsParameterList([NotNullWhen(true)] SyntaxNode? node)
203public bool IsUsingDirectiveName([NotNullWhen(true)] SyntaxNode? node)
207public bool IsUsingAliasDirective([NotNullWhen(true)] SyntaxNode? node)
210public void GetPartsOfUsingAliasDirective(SyntaxNode node, out SyntaxToken globalKeyword, out SyntaxToken alias, out SyntaxNode name)
218public bool IsDeconstructionForEachStatement([NotNullWhen(true)] SyntaxNode? node)
221public bool IsUsingLocalDeclarationStatement([NotNullWhen(true)] SyntaxNode? node)
224public bool IsDeconstructionAssignment([NotNullWhen(true)] SyntaxNode? node)
227public Location GetDeconstructionReferenceLocation(SyntaxNode node)
237public bool IsStatement([NotNullWhen(true)] SyntaxNode? node)
240public bool IsExecutableStatement([NotNullWhen(true)] SyntaxNode? node)
243public bool IsGlobalStatement([NotNullWhen(true)] SyntaxNode? node)
246public SyntaxNode GetStatementOfGlobalStatement(SyntaxNode node)
249public bool IsMethodBody([NotNullWhen(true)] SyntaxNode? node)
261public SyntaxNode GetExpressionOfRefExpression(SyntaxNode node)
264public SyntaxNode? GetExpressionOfReturnStatement(SyntaxNode node)
275public bool HasImplicitBaseConstructorInitializer(SyntaxNode node)
311public bool IsPredefinedType(SyntaxNode? node)
314public bool IsPredefinedType(SyntaxNode? node, PredefinedType type)
535public bool IsPostfixUnaryExpression([NotNullWhen(true)] SyntaxNode? node)
538public bool IsElementBindingExpression([NotNullWhen(true)] SyntaxNode? node)
541public bool IsMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node)
544public bool IsPointerMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
547public void GetNameAndArityOfSimpleName(SyntaxNode node, out string name, out int arity)
554public bool LooksGeneric(SyntaxNode simpleName)
558public SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(SyntaxNode? genericName)
561public SyntaxNode? GetTargetOfMemberBinding(SyntaxNode? node)
564public SyntaxNode GetNameOfMemberBindingExpression(SyntaxNode node)
567public SyntaxNode? GetExpressionOfMemberAccessExpression(SyntaxNode node, bool allowImplicitTarget)
570public void GetPartsOfElementAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode argumentList)
577public SyntaxNode GetExpressionOfInterpolation(SyntaxNode node)
580public bool IsInStaticContext(SyntaxNode node)
583public bool IsInNamespaceOrTypeContext([NotNullWhen(true)] SyntaxNode? node)
586public bool IsBaseTypeList([NotNullWhen(true)] SyntaxNode? node)
589public SyntaxNode GetExpressionOfArgument(SyntaxNode node)
592public SyntaxNode GetExpressionOfAttributeArgument(SyntaxNode node)
595public RefKind GetRefKindOfArgument(SyntaxNode node)
598public bool IsArgument([NotNullWhen(true)] SyntaxNode? node)
601public bool IsAttributeArgument([NotNullWhen(true)] SyntaxNode? node)
604public bool IsSimpleArgument([NotNullWhen(true)] SyntaxNode? node)
611public bool IsInConstantContext([NotNullWhen(true)] SyntaxNode? node)
614public bool IsInConstructor(SyntaxNode node)
617public bool IsUnsafeContext(SyntaxNode node)
620public bool IsAttributeNamedArgumentIdentifier([NotNullWhen(true)] SyntaxNode? node)
623public SyntaxNode? GetContainingTypeDeclaration(SyntaxNode root, int position)
627.GetAncestors<SyntaxNode>()
631public SyntaxNode? GetContainingVariableDeclaratorOfFieldDeclaration(SyntaxNode? node)
634public bool IsNameOfSubpattern([NotNullWhen(true)] SyntaxNode? node)
639public bool IsPropertyPatternClause(SyntaxNode node)
643[NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? initializedInstance)
651var withInitializer = identifier.Parent.GetRequiredParent();
657var objectInitializer = identifier.Parent.GetRequiredParent();
674public bool IsAnonymousObjectMemberDeclaratorNameIdentifier([NotNullWhen(true)] SyntaxNode? expression)
678public bool IsAnyInitializerExpression([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? creationExpression)
693public bool IsElementAccessExpression(SyntaxNode? node)
697public SyntaxNode? ConvertToSingleLine(SyntaxNode? node, bool useElasticTrivia = false)
700public SyntaxNode? GetContainingMemberDeclaration(SyntaxNode root, int position, bool useFullSpan = true)
703public SyntaxNode? GetContainingMethodDeclaration(SyntaxNode root, int position, bool useFullSpan = true)
706private static SyntaxNode? GetContainingMemberDeclaration<TMemberDeclarationSyntax>(SyntaxNode root, int position, bool useFullSpan = true)
719var node = root.FindToken(position).Parent;
737public bool IsMethodLevelMember([NotNullWhen(true)] SyntaxNode? node)
745public bool IsTopLevelNodeWithMembers([NotNullWhen(true)] SyntaxNode? node)
748public string GetDisplayName(SyntaxNode? node, DisplayNameOptions options, string? rootNamespace = null)
772var parent = node.GetAncestor<TypeDeclarationSyntax>() ?? node.Parent;
810private string? GetName(SyntaxNode node, DisplayNameOptions options)
901public SyntaxList<SyntaxNode> GetMembersOfTypeDeclaration(SyntaxNode node)
904public SyntaxList<SyntaxNode> GetMembersOfNamespaceDeclaration(SyntaxNode node)
907public SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(SyntaxNode node)
910protected override void AppendMembers(SyntaxNode? node, ArrayBuilder<SyntaxNode> list, bool topLevel, bool methodLevel)
934public TextSpan GetMemberBodySpanForSpeculativeBinding(SyntaxNode node)
939var member = GetContainingMemberDeclaration(node, node.SpanStart);
950public SyntaxNode? TryGetBindableParent(SyntaxToken token)
952var node = token.Parent;
955var parent = node.Parent;
1039var structure = triviaTok.GetStructure();
1051public string GetNameForArgument(SyntaxNode? argument)
1054public string GetNameForAttributeArgument(SyntaxNode? argument)
1057public bool IsLeftSideOfDot([NotNullWhen(true)] SyntaxNode? node)
1060public SyntaxNode? GetRightSideOfDot(SyntaxNode? node)
1066public SyntaxNode? GetLeftSideOfDot(SyntaxNode? node, bool allowImplicitTarget)
1072public bool IsLeftSideOfExplicitInterfaceSpecifier([NotNullWhen(true)] SyntaxNode? node)
1075public bool IsLeftSideOfAssignment([NotNullWhen(true)] SyntaxNode? node)
1078public bool IsLeftSideOfAnyAssignment([NotNullWhen(true)] SyntaxNode? node)
1081public bool IsLeftSideOfCompoundAssignment([NotNullWhen(true)] SyntaxNode? node)
1084public SyntaxNode GetRightHandSideOfAssignment(SyntaxNode node)
1087public bool IsInferredAnonymousObjectMemberDeclarator([NotNullWhen(true)] SyntaxNode? node)
1090public bool IsOperandOfIncrementExpression([NotNullWhen(true)] SyntaxNode? node)
1093public static bool IsOperandOfDecrementExpression([NotNullWhen(true)] SyntaxNode? node)
1096public bool IsOperandOfIncrementOrDecrementExpression([NotNullWhen(true)] SyntaxNode? node)
1099public SyntaxList<SyntaxNode> GetContentsOfInterpolatedString(SyntaxNode interpolatedString)
1115public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfObjectCreationExpression(SyntaxNode objectCreationExpression)
1120public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfArgumentList(SyntaxNode argumentList)
1123public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfAttributeArgumentList(SyntaxNode argumentList)
1135public bool IsPragmaDirective(SyntaxTrivia trivia, out bool isDisable, out bool isActive, out SeparatedSyntaxList<SyntaxNode> errorCodes)
1141public bool IsDocumentationComment(SyntaxNode node)
1144public bool IsUsingOrExternOrImport([NotNullWhen(true)] SyntaxNode? node)
1147public bool IsGlobalAssemblyAttribute([NotNullWhen(true)] SyntaxNode? node)
1150public bool IsGlobalModuleAttribute([NotNullWhen(true)] SyntaxNode? node)
1153private static bool IsGlobalAttribute([NotNullWhen(true)] SyntaxNode? node, SyntaxKind attributeTarget)
1158public bool IsDeclaration(SyntaxNode? node)
1207public bool IsTypeDeclaration(SyntaxNode node)
1210public bool IsSimpleAssignmentStatement([NotNullWhen(true)] SyntaxNode? node)
1213public bool IsAnyAssignmentStatement([NotNullWhen(true)] SyntaxNode? node)
1217SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1224SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1226var expression = statement;
1238public SyntaxToken GetIdentifierOfSimpleName(SyntaxNode node)
1241public SyntaxToken GetIdentifierOfVariableDeclarator(SyntaxNode node)
1244public SyntaxToken GetIdentifierOfTypeDeclaration(SyntaxNode node)
1252public bool IsDeclaratorOfLocalDeclarationStatement(SyntaxNode declarator, SyntaxNode localDeclarationStatement)
1259public bool AreEquivalent(SyntaxNode? node1, SyntaxNode? node2)
1262public static SyntaxNode GetExpressionOfInvocationExpression(SyntaxNode node)
1265public bool IsExpressionOfForeach([NotNullWhen(true)] SyntaxNode? node)
1268public SyntaxNode GetExpressionOfExpressionStatement(SyntaxNode node)
1271public void GetPartsOfTupleExpression<TArgumentSyntax>(SyntaxNode node,
1272out SyntaxToken openParen, out SeparatedSyntaxList<TArgumentSyntax> arguments, out SyntaxToken closeParen) where TArgumentSyntax : SyntaxNode
1276arguments = (SeparatedSyntaxList<TArgumentSyntax>)(SeparatedSyntaxList<SyntaxNode>)tupleExpression.Arguments;
1283public SyntaxNode? GetMatchingDirective(SyntaxNode directive, CancellationToken cancellationToken)
1286public ImmutableArray<SyntaxNode> GetMatchingConditionalDirectives(SyntaxNode directive, CancellationToken cancellationToken)
1287=> ((DirectiveTriviaSyntax)directive).GetMatchingConditionalDirectives(cancellationToken).CastArray<SyntaxNode>();
1292public SyntaxTokenList GetModifiers(SyntaxNode? node)
1296public SyntaxNode? WithModifiers(SyntaxNode? node, SyntaxTokenList modifiers)
1299public SeparatedSyntaxList<SyntaxNode> GetVariablesOfLocalDeclarationStatement(SyntaxNode node)
1302public SyntaxNode? GetInitializerOfVariableDeclarator(SyntaxNode node)
1305public SyntaxNode? GetInitializerOfPropertyDeclaration(SyntaxNode node)
1308public SyntaxNode GetTypeOfVariableDeclarator(SyntaxNode node)
1311public SyntaxNode GetValueOfEqualsValueClause(SyntaxNode node)
1314public bool IsEqualsValueOfPropertyDeclaration(SyntaxNode? node)
1317public bool IsConversionExpression([NotNullWhen(true)] SyntaxNode? node)
1320public bool IsCastExpression([NotNullWhen(true)] SyntaxNode? node)
1323public void GetPartsOfCastExpression(SyntaxNode node, out SyntaxNode type, out SyntaxNode expression)
1340public SyntaxList<SyntaxNode> GetAttributeLists(SyntaxNode? node)
1343public bool IsParameterNameXmlElementSyntax([NotNullWhen(true)] SyntaxNode? node)
1346public SyntaxList<SyntaxNode> GetContentFromDocumentationCommentTriviaSyntax(SyntaxTrivia trivia)
1356public void GetPartsOfAnyIsTypeExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode type)
1363public void GetPartsOfIsPatternExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken isToken, out SyntaxNode right)
1371public bool IsAnyPattern([NotNullWhen(true)] SyntaxNode? node)
1374public SyntaxNode GetExpressionOfConstantPattern(SyntaxNode node)
1377public void GetPartsOfDeclarationPattern(SyntaxNode node, out SyntaxNode type, out SyntaxNode designation)
1384public void GetPartsOfRecursivePattern(SyntaxNode node, out SyntaxNode? type, out SyntaxNode? positionalPart, out SyntaxNode? propertyPart, out SyntaxNode? designation)
1400public bool IsBinaryPattern([NotNullWhen(true)] SyntaxNode? node)
1403public bool IsUnaryPattern([NotNullWhen(true)] SyntaxNode? node)
1406public void GetPartsOfParenthesizedPattern(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode pattern, out SyntaxToken closeParen)
1414public void GetPartsOfBinaryPattern(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1422public void GetPartsOfUnaryPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode pattern)
1429public void GetPartsOfRelationalPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode expression)
1436public SyntaxNode GetTypeOfTypePattern(SyntaxNode node)
1439public bool IsVerbatimInterpolatedStringExpression([NotNullWhen(true)] SyntaxNode? node)
1454public bool IsAnonymousFunctionExpression([NotNullWhen(true)] SyntaxNode? node)
1457public bool IsBaseNamespaceDeclaration([NotNullWhen(true)] SyntaxNode? node)
1460public bool IsBinaryExpression([NotNullWhen(true)] SyntaxNode? node)
1463public bool IsLiteralExpression([NotNullWhen(true)] SyntaxNode? node)
1466public bool IsMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
1469public bool IsMethodDeclaration([NotNullWhen(true)] SyntaxNode? node)
1472public bool IsSimpleName([NotNullWhen(true)] SyntaxNode? node)
1475public bool IsAnyName([NotNullWhen(true)] SyntaxNode? node)
1478public bool IsAnyType([NotNullWhen(true)] SyntaxNode? node)
1481public bool IsNamedMemberInitializer([NotNullWhen(true)] SyntaxNode? node)
1484public bool IsElementAccessInitializer([NotNullWhen(true)] SyntaxNode? node)
1487public bool IsObjectMemberInitializer([NotNullWhen(true)] SyntaxNode? node)
1490public bool IsObjectCollectionInitializer([NotNullWhen(true)] SyntaxNode? node)
1497public void GetPartsOfAliasQualifiedName(SyntaxNode node, out SyntaxNode alias, out SyntaxToken colonColonToken, out SyntaxNode name)
1505public void GetPartsOfArgumentList(SyntaxNode node, out SyntaxToken openParenToken, out SeparatedSyntaxList<SyntaxNode> arguments, out SyntaxToken closeParenToken)
1513public void GetPartsOfAttribute(SyntaxNode node, out SyntaxNode name, out SyntaxNode? argumentList)
1520public void GetPartsOfBaseObjectCreationExpression(SyntaxNode node, out SyntaxNode? argumentList, out SyntaxNode? initializer)
1527public void GetPartsOfBinaryExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1535public void GetPartsOfCompilationUnit(SyntaxNode node, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> attributeLists, out SyntaxList<SyntaxNode> members)
1544SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode whenNotNull)
1552public void GetPartsOfConditionalExpression(SyntaxNode node, out SyntaxNode condition, out SyntaxNode whenTrue, out SyntaxNode whenFalse)
1560public SyntaxNode GetExpressionOfForeachStatement(SyntaxNode statement)
1566public void GetPartsOfGenericName(SyntaxNode node, out SyntaxToken identifier, out SeparatedSyntaxList<SyntaxNode> typeArguments)
1573public void GetPartsOfInterpolationExpression(SyntaxNode node,
1574out SyntaxToken stringStartToken, out SyntaxList<SyntaxNode> contents, out SyntaxToken stringEndToken)
1582public void GetPartsOfInvocationExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode? argumentList)
1589public void GetPartsOfMemberAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode name)
1597public void GetPartsOfBaseNamespaceDeclaration(SyntaxNode node, out SyntaxNode name, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> members)
1605public void GetPartsOfNamedMemberInitializer(SyntaxNode node, out SyntaxNode identifier, out SyntaxNode expression)
1612public void GetPartsOfObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode type, out SyntaxNode? argumentList, out SyntaxNode? initializer)
1621public void GetPartsOfImplicitObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode argumentList, out SyntaxNode? initializer)
1629public void GetPartsOfParameter(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode? @default)
1637SyntaxNode node, out SyntaxToken openParen, out SyntaxNode expression, out SyntaxToken closeParen)
1645public void GetPartsOfPostfixUnaryExpression(SyntaxNode node, out SyntaxNode operand, out SyntaxToken operatorToken)
1652public void GetPartsOfPrefixUnaryExpression(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode operand)
1659public void GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1671public SyntaxNode GetArgumentListOfImplicitElementAccess(SyntaxNode node)
1674public SeparatedSyntaxList<SyntaxNode> GetAttributesOfAttributeList(SyntaxNode node)
1677public SyntaxNode GetExpressionOfAwaitExpression(SyntaxNode node)
1680public SyntaxNode GetExpressionOfThrowExpression(SyntaxNode node)
1683public SyntaxNode? GetExpressionOfThrowStatement(SyntaxNode node)
1686public SeparatedSyntaxList<SyntaxNode> GetInitializersOfObjectMemberInitializer(SyntaxNode node)
1689public SeparatedSyntaxList<SyntaxNode> GetExpressionsOfObjectCollectionInitializer(SyntaxNode node)
1692public SyntaxToken GetTokenOfLiteralExpression(SyntaxNode node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\SpeculationAnalyzer.cs (19)
71protected override SyntaxNode GetSemanticRootForSpeculation(ExpressionSyntax expression)
75SyntaxNode previousNode = null;
76SyntaxNode parentNodeToSpeculate = null;
77foreach (var node in expression.AncestorsAndSelf(ascendOutOfTrivia: false))
95public static bool CanSpeculateOnNode(SyntaxNode node)
104protected override void ValidateSpeculativeSemanticModel(SemanticModel speculativeSemanticModel, SyntaxNode nodeToSpeculate)
113protected override SemanticModel CreateSpeculativeSemanticModel(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel)
116public static SemanticModel CreateSpeculativeSemanticModelForNode(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel)
123public static SemanticModel CreateSpeculativeSemanticModelForNode(SyntaxNode nodeToSpeculate, SemanticModel semanticModel, int position, bool isInNamespaceOrTypeContext)
196SyntaxNode originalLambdaBody, replacedLambdaBody;
275SyntaxNode originalRoot)
295protected override bool ReplacementChangesSemanticsForNodeLanguageSpecific(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode previousOriginalNode, SyntaxNode previousReplacedNode)
580protected override bool ExpressionMightReferenceMember(SyntaxNode node)
662protected override bool IsParenthesizedExpression(SyntaxNode node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\CodeGeneration\CSharpCodeGenerationService.cs (24)
40public override CodeGenerationDestination GetDestination(SyntaxNode node)
43protected override IComparer<SyntaxNode> GetMemberComparer()
46protected override IList<bool>? GetAvailableInsertionIndices(SyntaxNode destination, CancellationToken cancellationToken)
311var finalMember = editor.GetChangedRoot();
341protected override TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> members)
377var attributeSyntaxToRemove = attributeToRemove.ApplicationSyntaxReference.GetSyntax(cancellationToken);
383SyntaxNode attributeToRemove,
443SyntaxNode attributeToRemove,
479IEnumerable<SyntaxNode> statements,
531IEnumerable<SyntaxNode> statements,
533CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
570TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, BaseMethodDeclarationSyntax baseMethodDeclaration) where TDeclarationNode : SyntaxNode
590public static BlockSyntax AddStatementsToBlock(BlockSyntax block, IEnumerable<SyntaxNode> statements)
613TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, LocalFunctionStatementSyntax localFunctionStatement) where TDeclarationNode : SyntaxNode
634TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, AnonymousFunctionExpressionSyntax anonymousFunctionSyntax) where TDeclarationNode : SyntaxNode
658public override SyntaxNode CreateEventDeclaration(
664public override SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CSharpCodeGenerationContextInfo info, CancellationToken cancellationToken)
672public override SyntaxNode? CreateMethodDeclaration(
721public override SyntaxNode CreatePropertyDeclaration(
728public override SyntaxNode CreateNamedTypeDeclaration(
734public override SyntaxNode CreateNamespaceDeclaration(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpAddImportsService.cs (24)
34protected override ImmutableArray<SyntaxNode> GetGlobalImports(
35SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken)
37using var result = TemporaryArray<SyntaxNode>.Empty;
58protected override SyntaxNode? GetAlias(UsingDirectiveSyntax usingOrAlias)
64protected override SyntaxNode Rewrite(
69SyntaxNode externContainer,
70SyntaxNode usingContainer,
71SyntaxNode staticUsingContainer,
72SyntaxNode aliasContainer,
74SyntaxNode root,
82var newRoot = rewriter.Visit(root);
86protected override SyntaxList<UsingDirectiveSyntax> GetUsingsAndAliases(SyntaxNode node)
94protected override SyntaxList<ExternAliasDirectiveSyntax> GetExterns(SyntaxNode node)
102protected override bool IsEquivalentImport(SyntaxNode a, SyntaxNode b)
110SyntaxNode externContainer,
111SyntaxNode usingContainer,
112SyntaxNode aliasContainer,
113SyntaxNode staticUsingContainer,
118public override SyntaxNode? Visit(SyntaxNode? node)
121public override SyntaxNode VisitNamespaceDeclaration(NamespaceDeclarationSyntax node)
124public override SyntaxNode? VisitFileScopedNamespaceDeclaration(FileScopedNamespaceDeclarationSyntax node)
144public override SyntaxNode VisitCompilationUnit(CompilationUnitSyntax node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpSyntaxGeneratorInternal.cs (95)
52public override SyntaxNode LocalDeclarationStatement(SyntaxNode? type, SyntaxToken name, SyntaxNode? initializer, bool isConst)
59public override SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer)
62public override SyntaxNode WithPropertyInitializer(SyntaxNode propertyDeclaration, SyntaxNode initializer)
70public override SyntaxNode EqualsValueClause(SyntaxNode value)
73public override SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value)
76internal static VariableDeclarationSyntax VariableDeclaration(SyntaxNode? type, SyntaxToken name, SyntaxNode? expression)
88public override SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull)
91public override SyntaxNode MemberBindingExpression(SyntaxNode name)
94public override SyntaxNode RefExpression(SyntaxNode expression)
97public override SyntaxNode AddParentheses(SyntaxNode expressionOrPattern, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
100internal static SyntaxNode Parenthesize(SyntaxNode expressionOrPattern, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
108public override SyntaxNode YieldReturnStatement(SyntaxNode expression)
117public override SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken)
120public override SyntaxNode InterpolatedStringText(SyntaxToken textToken)
130public override SyntaxNode Interpolation(SyntaxNode syntaxNode)
133public override SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment)
136public override SyntaxNode InterpolationFormatClause(string format)
141public override SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames)
190public override SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext)
193public override SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right)
201public override SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type)
209public override SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isKeyword, SyntaxNode pattern)
215public override SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right)
218public override SyntaxNode ConstantPattern(SyntaxNode expression)
221public override SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name)
226public override SyntaxNode LessThanRelationalPattern(SyntaxNode expression)
229public override SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression)
232public override SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression)
235public override SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression)
238public override SyntaxNode NotPattern(SyntaxNode pattern)
241public override SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right)
244public override SyntaxNode ParenthesizedPattern(SyntaxNode pattern)
247public override SyntaxNode TypePattern(SyntaxNode type)
250public override SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern)
255public override SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression)
258public override SyntaxNode DefaultExpression(SyntaxNode type)
261public override SyntaxNode DefaultExpression(ITypeSymbol type)
296public override SyntaxNode TypeExpression(ITypeSymbol typeSymbol, RefKind refKind)
307public override SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode simpleName)
339public override SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right)
342public static SyntaxNode CreateBinaryExpression(SyntaxKind syntaxKind, SyntaxNode left, SyntaxNode right)
345public override SyntaxNode IdentifierName(string identifier)
348public override SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression)
351internal static SyntaxNode ParenthesizeNonSimple(SyntaxNode expression)
AddImport\AbstractAddImportFeatureService.cs (34)
33where TSimpleNameSyntax : SyntaxNode
41protected abstract bool IsWithinImport(SyntaxNode node);
42protected abstract bool CanAddImport(SyntaxNode node, bool allowInHiddenRegions, CancellationToken cancellationToken);
43protected abstract bool CanAddImportForMember(string diagnosticId, ISyntaxFacts syntaxFacts, SyntaxNode node, out TSimpleNameSyntax nameNode);
44protected abstract bool CanAddImportForNamespace(string diagnosticId, SyntaxNode node, out TSimpleNameSyntax nameNode);
45protected abstract bool CanAddImportForDeconstruct(string diagnosticId, SyntaxNode node);
46protected abstract bool CanAddImportForGetAwaiter(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node);
47protected abstract bool CanAddImportForGetEnumerator(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node);
48protected abstract bool CanAddImportForGetAsyncEnumerator(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node);
49protected abstract bool CanAddImportForQuery(string diagnosticId, SyntaxNode node);
50protected abstract bool CanAddImportForTypeOrNamespace(string diagnosticId, SyntaxNode node, out TSimpleNameSyntax nameNode);
52protected abstract ISet<INamespaceSymbol> GetImportNamespacesInScope(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
53protected abstract ITypeSymbol GetDeconstructInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
54protected abstract ITypeSymbol GetQueryClauseInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
56protected abstract Task<Document> AddImportAsync(SyntaxNode contextNode, INamespaceOrTypeSymbol symbol, Document document, AddImportPlacementOptions options, CancellationToken cancellationToken);
57protected abstract Task<Document> AddImportAsync(SyntaxNode contextNode, IReadOnlyList<string> nameSpaceParts, Document document, AddImportPlacementOptions options, CancellationToken cancellationToken);
60SyntaxNode node, SemanticModel semanticModel, [NotNullWhen(true)] out SyntaxNode? objectCreationExpression);
63protected abstract (string description, bool hasExistingImport) GetDescription(Document document, AddImportPlacementOptions options, INamespaceOrTypeSymbol symbol, SemanticModel semanticModel, SyntaxNode root, CancellationToken cancellationToken);
94var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
95var node = root.FindToken(span.Start, findInsideTrivia: true)
137SyntaxNode node,
606private static ITypeSymbol? GetAwaitInfo(SemanticModel semanticModel, ISyntaxFacts syntaxFactsService, SyntaxNode node)
608var awaitExpression = FirstAwaitExpressionAncestor(syntaxFactsService, node);
613var innerExpression = syntaxFactsService.GetExpressionOfAwaitExpression(awaitExpression);
618private static ITypeSymbol? GetCollectionExpressionType(SemanticModel semanticModel, ISyntaxFacts syntaxFactsService, SyntaxNode node)
620var collectionExpression = FirstForeachCollectionExpressionAncestor(syntaxFactsService, node);
630protected static bool AncestorOrSelfIsAwaitExpression(ISyntaxFacts syntaxFactsService, SyntaxNode node)
633private static SyntaxNode? FirstAwaitExpressionAncestor(ISyntaxFacts syntaxFactsService, SyntaxNode node)
634=> node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFacts>((n, syntaxFactsService) => syntaxFactsService.IsAwaitExpression(n), syntaxFactsService);
636private static SyntaxNode? FirstForeachCollectionExpressionAncestor(ISyntaxFacts syntaxFactsService, SyntaxNode node)
637=> node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFacts>((n, syntaxFactsService) => syntaxFactsService.IsExpressionOfForeach(n), syntaxFactsService);
AddImport\References\Reference.cs (7)
77protected async Task<(SyntaxNode, Document)> ReplaceNameNodeAsync(
78SyntaxNode contextNode, Document document, CancellationToken cancellationToken)
90var root = contextNode.SyntaxTree.GetRoot(cancellationToken);
94var newRoot = await newDocument.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
95var newContextNode = newRoot.GetAnnotatedTokens(annotation).First().Parent;
101Document document, SyntaxNode node, bool cleanupDocument, CodeCleanupOptions options, CancellationToken cancellationToken);
104Document document, SyntaxNode node, bool cleanupDocument, CodeCleanupOptions options, CancellationToken cancellationToken)
AddImport\References\SymbolReference.cs (4)
49Document document, SyntaxNode contextNode,
59(var newContextNode, var newDocument) = await ReplaceNameNodeAsync(
76Document document, SyntaxNode node, bool cleanupDocument, CodeCleanupOptions options, CancellationToken cancellationToken)
124Document document, CodeCleanupOptions options, SyntaxNode node,
ChangeSignature\AbstractChangeSignatureService.cs (42)
47public abstract SyntaxNode? FindNodeToUpdate(Document document, SyntaxNode node);
52public abstract SyntaxNode ChangeSignature(
55SyntaxNode potentiallyUpdatedNode,
56SyntaxNode originalNode,
63protected abstract T TransferLeadingWhitespaceTrivia<T>(T newArgument, SyntaxNode oldArgument) where T : SyntaxNode;
72where TArgumentSyntax : SyntaxNode;
75where TArgumentSyntax : SyntaxNode;
170var syntax = await reference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
254var nodesToUpdate = new Dictionary<DocumentId, List<SyntaxNode>>();
255var definitionToUse = new Dictionary<SyntaxNode, ISymbol>();
336if (!TryGetNodeWithEditableSignatureOrAttributes(def, currentSolution, out var nodeToUpdate, out var documentId))
360if (!TryGetNodeWithEditableSignatureOrAttributes(location.Location, currentSolution, out var nodeToUpdate2, out var documentId2))
376var updatedRoots = new Dictionary<DocumentId, SyntaxNode>();
381var root = await doc.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
391var newRoot = root.ReplaceNodes(nodes, (originalNode, potentiallyUpdatedNode) =>
403var annotatedNodes = newRoot.GetAnnotatedNodes<SyntaxNode>(syntaxAnnotation: ChangeSignatureFormattingAnnotation);
406var formattedRoot = Formatter.Format(
418var changedDocuments = await ProducerConsumer<(DocumentId documentId, SyntaxNode newRoot)>.RunParallelAsync(
445private static void AddUpdatableNodeToDictionaries(Dictionary<DocumentId, List<SyntaxNode>> nodesToUpdate, DocumentId documentId, SyntaxNode nodeToUpdate, Dictionary<SyntaxNode, ISymbol> definitionToUse, ISymbol symbolWithSemanticParameters)
456private static bool TryGetNodeWithEditableSignatureOrAttributes(Location location, Solution solution, out SyntaxNode nodeToUpdate, out DocumentId documentId)
462var root = tree.GetRoot();
463var node = root.FindNode(location.SourceSpan, findInsideTrivia: true, getInnermostNodeForTie: true);
650where TNode : SyntaxNode
683Func<AddedParameter, T> createNewParameterMethod) where T : SyntaxNode
746protected ImmutableArray<SyntaxToken> GetSeparators<T>(SeparatedSyntaxList<T> arguments, int numSeparatorsToSkip) where T : SyntaxNode
774where TArgumentSyntax : SyntaxNode
813var expression = GenerateInferredCallsiteExpression(
915private SyntaxNode GenerateInferredCallsiteExpression(
971protected ImmutableArray<SyntaxTrivia> GetPermutedDocCommentTrivia(SyntaxNode node, ImmutableArray<SyntaxNode> permutedParamNodes, LanguageServices services, LineFormattingOptions options)
986var structuredTrivia = trivia.GetStructure();
993var updatedNodeList = ArrayBuilder<SyntaxNode>.GetInstance();
997var content = structuredContent[i];
1016var newDocComments = Generator.DocumentationCommentTriviaWithUpdatedContent(trivia, updatedNodeList.ToImmutableAndFree());
1022using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var extraNodeList);
1031var extraDocComments = Generator.DocumentationCommentTrivia(
1043protected static bool IsParamsArrayExpandedHelper(ISymbol symbol, int argumentCount, bool lastArgumentIsNamed, SemanticModel semanticModel, SyntaxNode lastArgumentExpression, CancellationToken cancellationToken)
1071protected static int GetParameterIndexFromInvocationArgument(SyntaxNode argument, Document document, SemanticModel semanticModel, CancellationToken cancellationToken)
CodeFixes\Suppression\AbstractSuppressionCodeFixProvider.cs (22)
47protected abstract SyntaxTriviaList CreatePragmaDisableDirectiveTrivia(Diagnostic diagnostic, Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine, CancellationToken cancellationToken);
48protected abstract SyntaxTriviaList CreatePragmaRestoreDirectiveTrivia(Diagnostic diagnostic, Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine, CancellationToken cancellationToken);
50protected abstract SyntaxNode AddGlobalSuppressMessageAttribute(
51SyntaxNode newRoot,
60protected abstract SyntaxNode AddLocalSuppressMessageAttribute(
61SyntaxNode targetNode, ISymbol targetSymbol, INamedTypeSymbol suppressMessageAttribute, Diagnostic diagnostic);
65protected abstract bool IsAttributeListWithAssemblyAttributes(SyntaxNode node);
68protected abstract bool IsSingleAttributeInAttributeList(SyntaxNode attribute);
92protected abstract SyntaxNode GetContainingStatement(SyntaxToken token);
95protected SyntaxToken GetAdjustedTokenForPragmaDisable(SyntaxToken token, SyntaxNode root, TextLineCollection lines)
97var containingStatement = GetContainingStatement(token);
117private SyntaxToken GetAdjustedTokenForPragmaRestore(SyntaxToken token, SyntaxNode root, TextLineCollection lines, int indexOfLine)
119var containingStatement = GetContainingStatement(token);
257public SyntaxNode? NodeWithTokens { get; set; }
258public SyntaxNode? TargetMemberNode { get; set; }
268var root = await syntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
282var nodeWithTokens = GetNodeWithTokens(startToken, endToken, root);
289var targetMemberNode = syntaxFacts.GetContainingMemberDeclaration(root, nodeWithTokens.SpanStart);
343internal SyntaxNode GetNodeWithTokens(SyntaxToken startToken, SyntaxToken endToken, SyntaxNode root)
CodeFixes\Suppression\AbstractSuppressionCodeFixProvider.PragmaHelpers.cs (12)
34var nodeWithTokens = suppressionTargetInfo.NodeWithTokens;
35var root = await nodeWithTokens.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
51SyntaxNode newNode;
61var newRoot = root.ReplaceNode(nodeWithTokens, newNode);
107Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode,
159Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode,
211var nodeWithTokens = suppressionTargetInfo.NodeWithTokens;
222var root = nodeWithTokens.SyntaxTree.GetRoot();
224var subtreeRoot = root.FindNode(new TextSpan(previousOfStart.FullSpan.Start, spanEnd - previousOfStart.FullSpan.Start));
241var newSubtreeRoot = subtreeRoot.ReplaceTokens([startToken, previousOfStart, endToken, nextOfEnd],
CodeLens\CodeLensReferencesService.cs (8)
43private static async Task<T?> FindAsync<T>(Solution solution, DocumentId documentId, SyntaxNode syntaxNode,
90public async Task<ReferenceCount?> GetReferenceCountAsync(Solution solution, DocumentId documentId, SyntaxNode syntaxNode, int maxSearchResults, CancellationToken cancellationToken)
121var node = GetEnclosingCodeElementNode(document, token, langServices, cancellationToken);
166private static SyntaxNode GetEnclosingCodeElementNode(Document document, SyntaxToken token, ICodeLensDisplayInfoService langServices, CancellationToken cancellationToken)
170var node = token.Parent;
198public async Task<ImmutableArray<ReferenceLocationDescriptorAndDocument>?> FindReferenceLocationsAsync(Solution solution, DocumentId documentId, SyntaxNode syntaxNode, CancellationToken cancellationToken)
370public Task<ImmutableArray<ReferenceMethodDescriptor>?> FindReferenceMethodsAsync(Solution solution, DocumentId documentId, SyntaxNode syntaxNode, CancellationToken cancellationToken)
386public async Task<string> GetFullyQualifiedNameAsync(Solution solution, DocumentId documentId, SyntaxNode syntaxNode,
CodeLens\ICodeLensReferencesService.cs (4)
24Task<ReferenceCount?> GetReferenceCountAsync(Solution solution, DocumentId documentId, SyntaxNode? syntaxNode, int maxSearchResults, CancellationToken cancellationToken);
29Task<ImmutableArray<ReferenceLocationDescriptorAndDocument>?> FindReferenceLocationsAsync(Solution solution, DocumentId documentId, SyntaxNode? syntaxNode, CancellationToken cancellationToken);
39Task<ImmutableArray<ReferenceMethodDescriptor>?> FindReferenceMethodsAsync(Solution solution, DocumentId documentId, SyntaxNode? syntaxNode, CancellationToken cancellationToken);
44Task<string?> GetFullyQualifiedNameAsync(Solution solution, DocumentId documentId, SyntaxNode? syntaxNode, CancellationToken cancellationToken);
CodeRefactorings\SyncNamespace\AbstractChangeNamespaceService.cs (60)
40public abstract Task<bool> CanChangeNamespaceAsync(Document document, SyntaxNode container, CancellationToken cancellationToken);
42public abstract Task<Solution> ChangeNamespaceAsync(Document document, SyntaxNode container, string targetNamespace, CancellationToken cancellationToken);
60public abstract bool TryGetReplacementReferenceSyntax(SyntaxNode reference, ImmutableArray<string> newNamespaceParts, ISyntaxFactsService syntaxFacts, [NotNullWhen(returnValue: true)] out SyntaxNode? old, [NotNullWhen(returnValue: true)] out SyntaxNode? @new);
71where TCompilationUnitSyntax : SyntaxNode
72where TMemberDeclarationSyntax : SyntaxNode
74where TNameSyntax : SyntaxNode
76where TCrefSyntax : SyntaxNode
92protected abstract SyntaxList<TMemberDeclarationSyntax> GetMemberDeclarationsInContainer(SyntaxNode compilationUnitOrNamespaceDecl);
94protected abstract Task<SyntaxNode?> TryGetApplicableContainerFromSpanAsync(Document document, TextSpan span, CancellationToken cancellationToken);
96protected abstract string GetDeclaredNamespace(SyntaxNode container);
100/// <see cref="IChangeNamespaceService.CanChangeNamespaceAsync(Document, SyntaxNode, CancellationToken)"/>
107protected abstract Task<ImmutableArray<(DocumentId id, SyntaxNode container)>> GetValidContainersFromAllLinkedDocumentsAsync(Document document, SyntaxNode container, CancellationToken cancellationToken);
109private static bool IsValidContainer(SyntaxNode container)
115public override async Task<bool> CanChangeNamespaceAsync(Document document, SyntaxNode container, CancellationToken cancellationToken)
132var syntaxRoot = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
165var namespaceToRename = namespaces[i];
171static async Task<ImmutableArray<SyntaxNode>> GetTopLevelNamespacesAsync(Document document, CancellationToken cancellationToken)
173var syntaxRoot = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
184SyntaxNode container,
269protected async Task<ImmutableArray<(DocumentId, SyntaxNode)>> TryGetApplicableContainersFromAllDocumentsAsync(
281using var _1 = ArrayBuilder<(DocumentId, SyntaxNode)>.GetInstance(ids.Length, out var containers);
286var container = await TryGetApplicableContainerFromSpanAsync(document, span, cancellationToken).ConfigureAwait(false);
312protected static async Task<Solution> AnnotateContainersAsync(Solution solution, ImmutableArray<(DocumentId, SyntaxNode)> containers, CancellationToken cancellationToken)
325Document document, SyntaxNode container, CancellationToken cancellationToken)
369SyntaxNode container,
402private static ImmutableArray<SyntaxNode> CreateImports(Document document, ImmutableArray<string> names, bool withFormatterAnnotation)
405var builder = new FixedSizeArrayBuilder<SyntaxNode>(names.Length);
412private static SyntaxNode CreateImport(SyntaxGenerator syntaxGenerator, string name, bool withFormatterAnnotation)
414var import = syntaxGenerator.NamespaceImportDeclaration(name);
436var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
437var container = root.GetAnnotatedNodes(ContainerAnnotation).Single();
487var fixedDocuments = await ProducerConsumer<(DocumentId documentId, SyntaxNode newRoot)>.RunParallelAsync(
579ImmutableArray<SyntaxNode> containersToAddImports;
614var root = await documentWithAddedImports.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
638private static SyntaxNode AddSimplifierAnnotationToPotentialReferences(
639ISyntaxFactsService syntaxFacts, SyntaxNode root, HashSet<string> allNamespaceNameParts)
649using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var namesToUpdate);
650foreach (var descendent in root.DescendantNodes(descendIntoTrivia: true))
663static SyntaxNode GetHighestNameOrCref(TNameSyntax name)
729private static async Task<(Document, ImmutableArray<SyntaxNode>)> FixReferencesAsync(
738var root = editor.OriginalRoot;
739using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var containers);
746var dummyImport = CreateImport(generator, "Dummy", withFormatterAnnotation: false);
770var refNode = root.FindNode(refLoc.ReferenceLocation.Location.SourceSpan, findInsideTrivia: true, getInnermostNodeForTie: true);
776refNode, newNamespaceParts, syntaxFacts, out var oldNode, out var newNode))
785var container = addImportService.GetImportContainer(root, refNode, dummyImport, addImportsOptions);
789foreach (var container in containers)
819var changedDocuments = await ProducerConsumer<(DocumentId documentId, SyntaxNode newRoot)>.RunParallelAsync(
836IEnumerable<SyntaxNode> importsToRemove,
857ImmutableArray<SyntaxNode> containers,
872foreach (var container in containers)
877var contextLocation = container is TNamespaceDeclarationSyntax
882var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
897private sealed class SyntaxNodeSpanStartComparer : IComparer<SyntaxNode>
905public int Compare(SyntaxNode? x, SyntaxNode? y)
Completion\Providers\AbstractAwaitCompletionProvider.cs (11)
59protected abstract int GetAsyncKeywordInsertionPosition(SyntaxNode declaration);
60protected abstract Task<TextChange?> GetReturnTypeChangeAsync(Solution solution, SemanticModel semanticModel, SyntaxNode declaration, CancellationToken cancellationToken);
62protected abstract SyntaxNode? GetAsyncSupportingDeclaration(SyntaxToken leftToken, int position);
64protected abstract ITypeSymbol? GetTypeSymbolOfExpression(SemanticModel semanticModel, SyntaxNode potentialAwaitableExpression, CancellationToken cancellationToken);
65protected abstract SyntaxNode? GetExpressionToPlaceAwaitInFrontOf(SyntaxTree syntaxTree, int position, CancellationToken cancellationToken);
96var declaration = GetAsyncSupportingDeclaration(leftToken, position);
183var root = await syntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
186var declaration = GetAsyncSupportingDeclaration(root.FindToken(leftTokenPosition), position);
227var expr = GetExpressionToPlaceAwaitInFrontOf(syntaxTree, position, cancellationToken);
267var potentialAwaitableExpression = GetExpressionToPlaceAwaitInFrontOf(syntaxTree, position, cancellationToken);
270var parentOfAwaitable = potentialAwaitableExpression.Parent;
ConvertForEachToFor\AbstractConvertForEachToForCodeRefactoringProvider.cs (16)
28where TStatementSyntax : SyntaxNode
43protected abstract (SyntaxNode start, SyntaxNode end) GetForEachBody(TForEachStatement foreachStatement);
86ISemanticFactsService semanticFacts, SemanticModel model, SyntaxNode location, string baseName, CancellationToken cancellationToken)
89protected static SyntaxNode GetCollectionVariableName(
91ForEachInfo foreachInfo, SyntaxNode foreachCollectionExpression, CancellationToken cancellationToken)
105SyntaxNode type, SyntaxNode foreachCollectionExpression, SyntaxNode collectionVariable)
119var expression = foreachCollectionExpression.WithoutAnnotations(SimplificationHelpers.DoNotSimplifyAnnotation);
120var collectionStatement = generator.LocalDeclarationStatement(
132SyntaxGenerator generator, SyntaxNode type, SyntaxToken foreachVariable,
133ITypeSymbol castType, SyntaxNode collectionVariable, SyntaxToken indexVariable)
135var memberAccess = generator.ElementAccessExpression(
143var localDecl = generator.LocalDeclarationStatement(
424var newRoot = editor.GetChangedRoot();
ConvertToInterpolatedString\AbstractConvertConcatenationToInterpolatedStringRefactoringProvider.cs (31)
26where TExpressionSyntax : SyntaxNode
52var declarator = top.FirstAncestorOrSelf<SyntaxNode>(syntaxFacts.IsVariableDeclarator);
70using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var pieces);
95foreach (var literal in stringLiterals)
118Document document, SyntaxNode top, bool isVerbatimStringLiteral, ImmutableArray<SyntaxNode> pieces, CancellationToken cancellationToken)
120var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
121var interpolatedString = await CreateInterpolatedStringAsync(
127protected async Task<SyntaxNode> CreateInterpolatedStringAsync(
130ImmutableArray<SyntaxNode> pieces,
145using var _ = ArrayBuilder<SyntaxNode>.GetInstance(pieces.Length, out var content);
148foreach (var piece in pieces)
168var existingInterpolatedStringTextNode = content.Last();
169var newText = ConcatenateTextToTextNode(generator, existingInterpolatedStringTextNode, textWithoutQuotes, valueTextWithEscapedBraces);
185foreach (var contentPart in contentParts)
195var newText = ConcatenateTextToTextNode(generator, content.Last(), contentPart.GetFirstToken().Text, contentPart.GetFirstToken().ValueText);
210var converted = TryRemoveToString(piece);
226SyntaxNode TryRemoveToString(SyntaxNode piece)
235syntaxFacts.GetPartsOfInvocationExpression(piece, out var memberAccess, out var argumentList);
238syntaxFacts.GetPartsOfMemberAccessExpression(memberAccess, out var expression, out var name);
256private static SyntaxNode ConcatenateTextToTextNode(SyntaxGenerator generator, SyntaxNode interpolatedStringTextNode, string textWithoutQuotes, string value)
267ArrayBuilder<SyntaxNode> pieces,
268SyntaxNode node,
278syntaxFacts.GetPartsOfBinaryExpression(node, out var left, out var right);
285ISyntaxFactsService syntaxFacts, SyntaxNode? expression,
ConvertTupleToStruct\AbstractConvertTupleToStructCodeRefactoringProvider.cs (42)
48where TExpressionSyntax : SyntaxNode
54where TArgumentSyntax : SyntaxNode
55where TTupleTypeSyntax : SyntaxNode
56where TTypeBlockSyntax : SyntaxNode
57where TNamespaceDeclarationSyntax : SyntaxNode
121SyntaxNode tupleExprOrTypeNode,
127var containingMember = GetContainingMember(context.Document, tupleExprOrTypeNode);
164private static SyntaxNode? GetContainingMember(Document document, SyntaxNode tupleExprOrTypeNode)
167return tupleExprOrTypeNode.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>((node, syntaxFacts) => syntaxFacts.IsMethodLevelMember(node), syntaxFacts);
183private static async Task<(SyntaxNode, INamedTypeSymbol)> TryGetTupleInfoAsync(
188var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
198var expressionOrType =
199parsedDocument.TryGetRelevantNode<TTupleTypeSyntax>(span, cancellationToken) as SyntaxNode ??
255var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
257var newRoot = root.ReplaceToken(token, token.WithAdditionalAnnotations(RenameAnnotation.Create()));
272var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
275var container = tupleExprOrTypeNode.GetAncestor<TNamespaceDeclarationSyntax>() ?? root;
327SyntaxNode tupleExprOrTypeNode, INamedTypeSymbol tupleType,
365var syntaxRoot = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
383foreach (var container in nodesToUpdate)
419Document document, SyntaxNode tupleExprOrTypeNode,
518Document startingDocument, SyntaxNode tupleExprOrTypeNode, CancellationToken cancellationToken)
543Document document, SyntaxNode tupleExprOrTypeNode)
545var containingMember = GetContainingMember(document, tupleExprOrTypeNode);
553Document document, SyntaxNode tupleExprOrTypeNode, INamedTypeSymbol namedTypeSymbol,
557var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
569var container = tupleExprOrTypeNode.GetAncestor<TNamespaceDeclarationSyntax>() ?? root;
591var newRoot = editor.GetChangedRoot();
615SyntaxNode startingNode, INamedTypeSymbol tupleType, TNameSyntax fullyQualifiedStructName,
617SyntaxNode containerToUpdate, CancellationToken cancellationToken)
635SyntaxNode startingNode, INamedTypeSymbol tupleType, TNameSyntax qualifiedTypeName,
637SyntaxNode containingMember, CancellationToken cancellationToken)
691TNameSyntax qualifiedTypeName, SyntaxNode startingCreationNode, TTupleExpressionSyntax childCreation,
735var expr = generator.SyntaxFacts.GetExpressionOfArgument(argument);
748Document document, SyntaxEditor editor, SyntaxNode startingNode,
751SyntaxNode containingMember, CancellationToken cancellationToken)
781TNameSyntax qualifiedTypeName, SyntaxNode startingNode, TTupleTypeSyntax childTupleType)
885var valueNode = generator.IdentifierName(ValueName);
886var arguments = tupleType.TupleElements.SelectAsArray<IFieldSymbol, SyntaxNode>(
890var convertToTupleStatement = generator.ReturnStatement(
893var convertToStructStatement = generator.ReturnStatement(
EditAndContinue\AbstractEditAndContinueAnalyzer.cs (354)
79private Action<SyntaxNode>? _testFaultInjector;
94internal abstract bool TryFindMemberDeclaration(SyntaxNode? root, SyntaxNode node, TextSpan activeSpan, out OneOrMany<SyntaxNode> declarations);
109internal abstract MemberBody? TryGetDeclarationBody(SyntaxNode node, ISymbol? symbol);
114internal abstract bool IsDeclarationWithSharedBody(SyntaxNode declaration, ISymbol member);
121protected abstract LambdaBody? FindEnclosingLambdaBody(SyntaxNode encompassingAncestor, SyntaxNode node);
123protected abstract Match<SyntaxNode> ComputeTopLevelMatch(SyntaxNode oldCompilationUnit, SyntaxNode newCompilationUnit);
124protected abstract BidirectionalMap<SyntaxNode>? ComputeParameterMap(SyntaxNode oldDeclaration, SyntaxNode newDeclaration);
125protected abstract IEnumerable<SequenceEdit> GetSyntaxSequenceEdits(ImmutableArray<SyntaxNode> oldNodes, ImmutableArray<SyntaxNode> newNodes);
133/// In case there are multiple breakpoint spans starting at the <see cref="SyntaxNode.SpanStart"/> of the <paramref name="node"/>,
144protected abstract bool TryGetActiveSpan(SyntaxNode node, int statementPart, int minLength, out TextSpan span);
154protected abstract IEnumerable<(SyntaxNode statement, int statementPart)> EnumerateNearStatements(SyntaxNode statement);
156protected abstract bool StatementLabelEquals(SyntaxNode node1, SyntaxNode node2);
165protected abstract bool AreEquivalentActiveStatements(SyntaxNode oldStatement, SyntaxNode newStatement, int statementPart);
175protected abstract bool IsNamespaceDeclaration(SyntaxNode node);
176protected abstract bool IsCompilationUnitWithGlobalStatements(SyntaxNode node);
177protected abstract bool IsGlobalStatement(SyntaxNode node);
182protected abstract IEnumerable<SyntaxNode> GetTopLevelTypeDeclarations(SyntaxNode compilationUnit);
192SyntaxNode? oldNode,
194SyntaxNode? newNode,
198Match<SyntaxNode> topMatch,
199IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
208SyntaxNode? oldNode,
209SyntaxNode? newNode,
216SyntaxNode? oldNode,
217SyntaxNode? newNode,
220Match<SyntaxNode> topMatch,
221IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
263protected abstract TextSpan? TryGetDiagnosticSpan(SyntaxNode node, EditKind editKind);
265internal TextSpan GetDiagnosticSpan(SyntaxNode node, EditKind editKind)
268protected virtual TextSpan GetBodyDiagnosticSpan(SyntaxNode node, EditKind editKind)
270var current = node.Parent;
288internal abstract TextSpan GetLambdaParameterDiagnosticSpan(SyntaxNode lambda, int ordinal);
310internal string GetDisplayName(SyntaxNode node, EditKind editKind = EditKind.Update)
361protected virtual string GetBodyDisplayName(SyntaxNode node, EditKind editKind = EditKind.Update)
363var current = node.Parent;
391protected abstract string? TryGetDisplayName(SyntaxNode node, EditKind editKind);
393protected virtual string GetSuspensionPointDisplayName(SyntaxNode node, EditKind editKind)
399protected abstract List<SyntaxNode> GetExceptionHandlingAncestors(SyntaxNode node, SyntaxNode root, bool isNonLeaf);
400protected abstract TextSpan GetExceptionHandlingRegion(SyntaxNode node, out bool coversAllChildren);
402internal abstract void ReportTopLevelSyntacticRudeEdits(RudeEditDiagnosticsBuilder diagnostics, Match<SyntaxNode> match, Edit<SyntaxNode> edit, Dictionary<SyntaxNode, EditKind> editMap);
403internal abstract void ReportEnclosingExceptionHandlingRudeEdits(RudeEditDiagnosticsBuilder diagnostics, IEnumerable<Edit<SyntaxNode>> exceptionHandlingEdits, SyntaxNode oldStatement, TextSpan newStatementSpan);
405internal abstract bool HasUnsupportedOperation(IEnumerable<SyntaxNode> newNodes, [NotNullWhen(true)] out SyntaxNode? unsupportedNode, out RudeEditKind rudeEdit);
409if (HasUnsupportedOperation(body.GetDescendantNodes(IsNotLambda), out var unsupportedNode, out var rudeEdit))
420IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap,
421SyntaxNode oldActiveStatement,
424SyntaxNode newActiveStatement,
430internal abstract void ReportInsertedMemberSymbolRudeEdits(RudeEditDiagnosticsBuilder diagnostics, ISymbol newSymbol, SyntaxNode newNode, bool insertingIntoExistingContainingType);
431internal abstract void ReportStateMachineSuspensionPointRudeEdits(DiagnosticContext diagnosticContext, SyntaxNode oldNode, SyntaxNode newNode);
433internal abstract Func<SyntaxNode, bool> IsLambda { get; }
434internal abstract Func<SyntaxNode, bool> IsNotLambda { get; }
435internal abstract Func<SyntaxNode, IEnumerable<SyntaxToken>> DescendantTokensIgnoringLambdaBodies { get; }
438internal abstract bool IsInterfaceDeclaration(SyntaxNode node);
439internal abstract bool IsRecordDeclaration(SyntaxNode node);
444internal abstract bool IsNestedFunction(SyntaxNode node);
446internal abstract bool IsLocalFunction(SyntaxNode node);
447internal abstract bool IsGenericLocalFunction(SyntaxNode node);
448internal abstract bool IsClosureScope(SyntaxNode node);
449internal abstract SyntaxNode GetCapturedParameterScope(SyntaxNode declaringMethodOrLambda);
450internal abstract IMethodSymbol GetLambdaExpressionSymbol(SemanticModel model, SyntaxNode lambdaExpression, CancellationToken cancellationToken);
451internal abstract SyntaxNode? GetContainingQueryExpression(SyntaxNode node);
452internal abstract bool QueryClauseLambdasTypeEquivalent(SemanticModel oldModel, SyntaxNode oldNode, SemanticModel newModel, SyntaxNode newNode, CancellationToken cancellationToken);
470internal abstract bool TryGetLambdaBodies(SyntaxNode node, [NotNullWhen(true)] out LambdaBody? body1, out LambdaBody? body2);
472internal abstract bool IsStateMachineMethod(SyntaxNode declaration);
478internal abstract SyntaxNode? TryGetContainingTypeDeclaration(SyntaxNode node);
484internal abstract bool IsDeclarationWithInitializer(SyntaxNode declaration);
494internal abstract bool IsPrimaryConstructorDeclaration(SyntaxNode declaration);
503internal abstract SyntaxNode EmptyCompilationUnit { get; }
624using var _3 = ArrayBuilder<(SyntaxNode OldNode, SyntaxNode NewNode, TextSpan DiagnosticSpan)>.GetInstance(out var triviaEdits);
754private async ValueTask<(SyntaxNode oldRoot, SyntaxNode newRoot)> GetSyntaxRootsAsync(Document? oldDocument, Document? newDocument, CancellationToken cancellationToken)
756SyntaxNode? oldRoot = null;
757SyntaxNode? newRoot = null;
776SyntaxNode GetEmptyRoot(ParseOptions options)
792private void ReportTopLevelSyntacticRudeEdits(RudeEditDiagnosticsBuilder diagnostics, EditScript<SyntaxNode> syntacticEdits, Dictionary<SyntaxNode, EditKind> editMap)
800internal Dictionary<SyntaxNode, EditKind> BuildEditMap(EditScript<SyntaxNode> editScript)
802var map = new Dictionary<SyntaxNode, EditKind>(editScript.Edits.Length);
950Match<SyntaxNode> topMatch,
975var node = TryGetNode(topMatch.OldRoot, oldStatementSpan.Start);
980foreach (var oldMemberDeclaration in oldMemberDeclarations)
982var hasPartner = topMatch.TryGetNewNode(oldMemberDeclaration, out var newMemberDeclaration);
995var oldStatementSyntax = oldBody.FindStatement(oldStatementSpan, out var _);
1004SyntaxNode? newStatement = null;
1008if (TryGetTrackedStatement(newActiveStatementSpans, oldActiveStatements[i].Statement.Id, newText, newBody, out var trackedStatement, out var trackedStatementPart))
1065internal readonly struct ActiveNode(int activeStatementIndex, SyntaxNode oldNode, LambdaBody? enclosingLambdaBody, int statementPart, SyntaxNode? newTrackedNode)
1068public readonly SyntaxNode OldNode = oldNode;
1069public readonly SyntaxNode? NewTrackedNode = newTrackedNode;
1106SyntaxNode? oldDeclaration,
1107SyntaxNode? newDeclaration,
1115Match<SyntaxNode> topMatch,
1196var oldStatementSyntax = oldMemberBody.FindStatement(oldStatementSpan, out var statementPart);
1217SyntaxNode? trackedNode = null;
1219if (TryGetTrackedStatement(newActiveStatementSpans, oldActiveStatements[activeStatementIndex].Statement.Id, newText, newMemberBody, out var newStatementSyntax, out var _))
1326var oldStatementSyntax = activeNode.OldNode;
1351SyntaxNode? newStatementSyntax;
1408var oldLambda = oldEnclosingLambdaBody.GetLambda();
1489private static bool TryGetTrackedStatement(ImmutableArray<ActiveStatementLineSpan> activeStatementSpans, ActiveStatementId id, SourceText text, MemberBody body, [NotNullWhen(true)] out SyntaxNode? trackedStatement, out int trackedStatementPart)
1534IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap,
1535SyntaxNode oldStatementSyntax,
1536SyntaxNode oldEncompassingAncestor,
1537SyntaxNode? newStatementSyntax,
1538SyntaxNode newEncompassingAncestor,
1563var edits = new MapBasedLongestCommonSubsequence<SyntaxNode>(forwardMap).GetEdits(oldAncestors, newAncestors);
1583ArrayBuilder<(DeclarationBodyMap map, SyntaxNode? oldLambda)>? lambdaBodyMaps = null;
1584SyntaxNode? currentOldLambda = null;
1600lambdaBodyMaps ??= ArrayBuilder<(DeclarationBodyMap, SyntaxNode?)>.GetInstance();
1634var map = new Dictionary<SyntaxNode, SyntaxNode>();
1635var additionalReverseMap = ImmutableDictionary.CreateBuilder<SyntaxNode, SyntaxNode>();
1740private static List<KeyValuePair<SyntaxNode, SyntaxNode>>? GetMatchingActiveNodes(IEnumerable<ActiveNode> activeNodes)
1743List<KeyValuePair<SyntaxNode, SyntaxNode>>? lazyKnownMatches = null;
1757public ActiveStatementExceptionRegions GetExceptionRegions(SyntaxNode root, TextSpan unmappedActiveStatementSpan, bool isNonLeaf, CancellationToken cancellationToken)
1759var node = root.FindToken(unmappedActiveStatementSpan.Start).Parent;
1766private ActiveStatementExceptionRegions GetExceptionRegions(List<SyntaxNode> exceptionHandlingAncestors, SyntaxTree tree, CancellationToken cancellationToken)
1799SyntaxNode oldEncompassingAncestor,
1800IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap,
1806var oldLambda = oldLambdaBody.GetLambda();
1822private TextSpan FindClosestActiveSpan(SyntaxNode statement, int statementPart)
1849internal TextSpan GetDeletedNodeActiveSpan(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode deletedNode)
1858if (forwardMap.TryGetValue(oldNode, out var newNode))
1867internal TextSpan GetDeletedDeclarationActiveSpan(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode deletedDeclaration)
1877var hasAncestor = TryGetMatchingAncestor(forwardMap, deletedDeclaration, out var newAncestor);
1889internal TextSpan GetDeletedNodeDiagnosticSpan(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode deletedNode)
1891var hasAncestor = TryGetMatchingAncestor(forwardMap, deletedNode, out var newAncestor);
1899private static bool TryGetMatchingAncestor(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode? oldNode, [NotNullWhen(true)] out SyntaxNode? newAncestor)
1917protected static bool HasParentEdit(IReadOnlyDictionary<SyntaxNode, EditKind> editMap, Edit<SyntaxNode> edit)
1919SyntaxNode node;
1937protected static bool HasEdit(IReadOnlyDictionary<SyntaxNode, EditKind> editMap, SyntaxNode? node, EditKind editKind)
1949protected void AddAroundActiveStatementRudeDiagnostic(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode? oldNode, SyntaxNode? newNode, TextSpan newActiveStatementSpan)
1967protected void AddRudeTypeUpdateAroundActiveStatement(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode newNode, ITypeSymbol oldType, ITypeSymbol newType)
1976protected void AddRudeUpdateAroundActiveStatement(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode newNode)
1985protected void AddRudeInsertAroundActiveStatement(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode newNode)
1994protected void AddRudeDeleteAroundActiveStatement(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode oldNode, TextSpan newActiveStatementSpan)
2005IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap,
2006SyntaxNode oldActiveStatement,
2007SyntaxNode oldEncompassingAncestor,
2009SyntaxNode newActiveStatement,
2010SyntaxNode newEncompassingAncestor,
2012Func<SyntaxNode, bool> nodeSelector,
2013Func<TSyntaxNode, OneOrMany<SyntaxNode>> getTypedNodes,
2017where TSyntaxNode : SyntaxNode
2049private void ReportRudeEditsAndInserts(List<SyntaxNode?>? oldNodes, List<SyntaxNode?> newNodes, RudeEditDiagnosticsBuilder diagnostics)
2055var newNode = newNodes[i];
2075List<SyntaxNode?> oldNodes,
2077List<SyntaxNode?> newNodes,
2080IReadOnlyDictionary<SyntaxNode, SyntaxNode>? reverseMap,
2081Func<TSyntaxNode, OneOrMany<SyntaxNode>> getTypedNodes,
2085where TSyntaxNode : SyntaxNode
2091var newNode = newNodes[newIndex];
2097SyntaxNode? oldNode;
2121else if (reverseMap.TryGetValue(newNode, out var oldPartner) && comparer((TSyntaxNode)oldPartner, (TSyntaxNode)newNode))
2172private static int IndexOfEquivalent<TSyntaxNode>(SyntaxNode newNode, List<SyntaxNode?> oldNodes, int startIndex, Func<TSyntaxNode, TSyntaxNode, bool> comparer)
2173where TSyntaxNode : SyntaxNode
2177var oldNode = oldNodes[i];
2187private static List<SyntaxNode?>? GetAncestors(SyntaxNode? root, SyntaxNode node, Func<SyntaxNode, bool> nodeSelector)
2189List<SyntaxNode?>? list = null;
2190var current = node;
2221Match<SyntaxNode> topMatch,
2222IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
2223[Out] ArrayBuilder<(SyntaxNode OldNode, SyntaxNode NewNode, TextSpan DiagnosticSpan)> triviaEdits,
2238using var _ = ArrayBuilder<(string filePath, int oldStartLine, int oldEndLine, int delta, SyntaxNode oldNode, SyntaxNode newNode)>.GetInstance(out var segments);
2682public readonly Dictionary<SyntaxNode, SyntaxMaps> ChangedDeclarations = [];
2699EditScript<SyntaxNode> editScript,
2700IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
2703IReadOnlyList<(SyntaxNode OldNode, SyntaxNode NewNode, TextSpan DiagnosticSpan)> triviaEdits,
2771var newTypeDeclaration = GetSymbolDeclarationSyntax(newSymbol, refs => refs.First(r => r.SyntaxTree == edit.NewNode!.SyntaxTree), cancellationToken);
3663SyntaxNode? newDeclaration,
3707(SyntaxNode? oldDeclaration, SyntaxNode? newDeclaration) GetSymbolDeclarationNodes(ISymbol? oldSymbol, ISymbol? newSymbol, SyntaxNode? oldNode, SyntaxNode? newNode)
4060var oldRoot = oldModel.SyntaxTree.GetRoot(cancellationToken);
4061foreach (var oldTypeDeclaration in GetTopLevelTypeDeclarations(oldRoot))
4091var newRoot = newModel.SyntaxTree.GetRoot(cancellationToken);
4092foreach (var newTypeDeclaration in GetTopLevelTypeDeclarations(newRoot))
4125private bool IsRestartRequired(ISymbol oldMember, SyntaxNode? oldDeclaration, Compilation oldCompilation, ISymbol newMember, SyntaxNode? newDeclaration, CancellationToken cancellationToken)
4168EditScript<SyntaxNode> editScript,
4176SyntaxNode? newDeclaration,
4259SyntaxNode? oldDeclaration,
4263SyntaxNode? newDeclaration,
4787/// and therefore not produced by <see cref="GetSymbolEdits(EditKind, SyntaxNode?, SyntaxNode?, DocumentSemanticModel, DocumentSemanticModel, Match{SyntaxNode}, IReadOnlyDictionary{SyntaxNode, EditKind}, SymbolInfoCache, CancellationToken)"/>
5160SyntaxNode? newNode,
5162Match<SyntaxNode>? topMatch,
5188private SyntaxNode GetDiagnosticNode(out int distance, CancellationToken cancellationToken)
5208var oldContainerDeclaration = analyzer.GetSymbolDeclarationSyntax(oldSymbol.ContainingSymbol, topMatch.OldRoot.SyntaxTree, cancellationToken);
5210topMatch.TryGetNewNode(oldContainerDeclaration, out var newContainerDeclaration))
5222var node = analyzer.GetSymbolDeclarationSyntax(newDiagnosticSymbol, newModel.SyntaxTree, cancellationToken);
5275public void Report(RudeEditKind kind, SyntaxNode locationNode, CancellationToken cancellationToken, string?[]? arguments = null)
5296var node = GetDiagnosticNode(out var distance, cancellationToken);
5301topMatch?.TryGetOldNode(node, out var oldNode) == true &&
5367SyntaxNode? newNode,
5369Match<SyntaxNode>? topMatch,
5482private static Func<SyntaxNode, SyntaxNode?> CreateSyntaxMapForEquivalentNodes(MemberBody oldBody, MemberBody newBody)
5490private static Func<SyntaxNode, SyntaxNode?> CreateSyntaxMap(DeclarationBodyMap bodyMap)
5495return newNode => reverseMatch.TryGetValue(newNode, out var oldNode) || additionalReverse.TryGetValue(newNode, out oldNode) ? oldNode : null;
5500IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseTopMatches,
5501IReadOnlyDictionary<SyntaxNode, SyntaxMaps> changedDeclarations)
5513foreach (var newDeclaration in newDeclarations)
5525if (reverseTopMatches.TryGetValue(newDeclaration, out var oldDeclaration))
5549foreach (var newDeclaration in newDeclarations)
5568Match<SyntaxNode> topMatch,
5622SyntaxNode? oldDeclaration = null;
5623SyntaxNode? newDeclaration = null;
5786var syntax = GetSymbolDeclarationSyntax(member, cancellationToken);
5833SyntaxNode? oldDeclaration,
5837SyntaxNode? newDeclaration,
5844out Func<SyntaxNode, RuntimeRudeEdit?>? runtimeRudeEdits,
5851using var _ = PooledDictionary<SyntaxNode, RudeEditDiagnostic>.GetInstance(out var runtimeRudeEditsBuilder);
5869var oldLambda = oldLambdaBody.GetLambda();
5870var newLambda = newLambdaBody.GetLambda();
5954ArrayBuilder<SyntaxNode>? lazyNewErroneousClauses = null;
5959lazyNewErroneousClauses ??= ArrayBuilder<SyntaxNode>.GetInstance();
5966foreach (var newQueryClause in from clause in lazyNewErroneousClauses
6038using var _2 = ArrayBuilder<SyntaxNode?>.GetInstance(newInLambdaCaptures.Length, fillWithValue: null, out var newCapturesToClosureScopes);
6042using var _3 = ArrayBuilder<SyntaxNode?>.GetInstance(oldInLambdaCaptures.Length, fillWithValue: null, out var oldCapturesToClosureScopes);
6099bool CanAddNewLambda(SyntaxNode newLambda, LambdaBody newLambdaBody1, LambdaBody? newLambdaBody2)
6161private IEnumerable<(SyntaxNode lambda, LambdaBody lambdaBody1, LambdaBody? lambdaBody2)> GetLambdaBodies(MemberBody? body)
6168foreach (var root in body.RootNodes)
6170foreach (var node in root.DescendantNodesAndSelf())
6180private IEnumerable<LambdaBody> GetEnclosingLambdaBodies(SyntaxNode encompassingAncestor, SyntaxNode node)
6374foreach (var expressionOrStatement in lambdaBody.GetExpressionsAndStatements())
6414protected abstract SyntaxNode? GetSymbolDeclarationSyntax(ISymbol symbol, Func<ImmutableArray<SyntaxReference>, SyntaxReference?> selector, CancellationToken cancellationToken);
6416protected SyntaxNode GetSymbolDeclarationSyntax(ISymbol symbol, CancellationToken cancellationToken)
6419protected SyntaxNode? GetSingleSymbolDeclarationSyntax(ISymbol symbol, CancellationToken cancellationToken)
6422protected SyntaxNode? GetSymbolDeclarationSyntax(ISymbol symbol, SyntaxTree tree, CancellationToken cancellationToken)
6425protected abstract ISymbol? GetDeclaredSymbol(SemanticModel model, SyntaxNode declaration, CancellationToken cancellationToken);
6427protected ISymbol GetRequiredDeclaredSymbol(SemanticModel model, SyntaxNode declaration, CancellationToken cancellationToken)
6458var lambda = parameter.ContainingSymbol is IMethodSymbol { MethodKind: MethodKind.LambdaMethod or MethodKind.LocalFunction } containingLambda ?
6473IReadOnlyDictionary<SyntaxNode, SyntaxNode>? parameterMap,
6474IReadOnlyDictionary<SyntaxNode, SyntaxNode> bodyMap,
6480SyntaxNode? mappedParameter = null;
6487else if (bodyMap.TryGetValue(parameterKey.ContainingLambda, out var mappedContainingLambdaSyntax))
6492if (bodyMap.TryGetValue(parameterKey.Syntax, out var mappedParameter))
6511private readonly record struct CapturedParameterKey(ParameterKind Kind, SyntaxNode? Syntax = null, SyntaxNode? ContainingLambda = null);
6515SyntaxNode? oldDeclaration,
6518SyntaxNode? newDeclaration,
6522[Out] ArrayBuilder<SyntaxNode?> newCapturesToClosureScopes, // {new capture index -> new closure scope}
6523[Out] ArrayBuilder<SyntaxNode?> oldCapturesToClosureScopes, // {old capture index -> old closure scope}
6524[Out] Dictionary<SyntaxNode, RudeEditDiagnostic> closureRudeEdits,
6527BidirectionalMap<SyntaxNode>? parameterMap = null;
6549using var _1 = PooledDictionary<SyntaxNode, int>.GetInstance(out var oldLocalCaptures);
6593var newCaptureSyntax = GetSymbolDeclarationSyntax(local, cancellationToken);
6596if (!bodyMap.Reverse.TryGetValue(newCaptureSyntax, out var mappedOldSyntax) ||
6662var oldScope = GetCapturedVariableScope(oldSymbol, cancellationToken);
6663var newScope = GetCapturedVariableScope(newSymbol, cancellationToken);
6679SyntaxNode oldLambda,
6680SyntaxNode newLambda,
6682IDictionary<SyntaxNode, RudeEditDiagnostic> runtimeRudeEditsBuilder,
6744private SyntaxNode GetCapturedVariableScope(ISymbol local, CancellationToken cancellationToken)
6750var scope = GetCapturedParameterScope(GetSymbolDeclarationSyntax(local.ContainingSymbol, cancellationToken));
6755var node = GetSymbolDeclarationSyntax(local, cancellationToken);
6768private static bool AreEquivalentClosureScopes(SyntaxNode? oldScope, SyntaxNode? newScope, IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap)
6775return reverseMap.TryGetValue(newScope, out var mappedScope) && mappedScope == oldScope;
6818private SyntaxNode? GetFirstChangedChildIgnoringLambdaBodies(SyntaxNode oldNode, SyntaxNode newNode)
6828private static SyntaxNode? FindPartner(OneOrMany<SyntaxNode> rootNodes, OneOrMany<SyntaxNode> otherRootNodes, SyntaxNode otherNode)
6834var otherRootNode = otherRootNodes[i];
6844internal static SyntaxNode FindPartner(SyntaxNode root, SyntaxNode otherRoot, SyntaxNode otherNode)
6852var originalLeftNode = otherNode;
6855var rightNode = root;
6876/// This is a copy of <see cref="SyntaxNode.ChildThatContainsPosition"/> that also returns the index of the child node.
6878internal static SyntaxNodeOrToken ChildThatContainsPosition(SyntaxNode self, int position, out int childIndex)
6912internal static void FindLeafNodeAndPartner(SyntaxNode leftRoot, int leftPosition, SyntaxNode rightRoot, out SyntaxNode leftNode, out SyntaxNode? rightNode)
6946private static SyntaxNode? TryGetNode(SyntaxNode root, int position)
6949internal static void AddNodes<T>(ArrayBuilder<SyntaxNode> nodes, SyntaxList<T> list)
6950where T : SyntaxNode
6958internal static void AddNodes<T>(ArrayBuilder<SyntaxNode> nodes, SeparatedSyntaxList<T>? list)
6959where T : SyntaxNode
7028private bool InGenericLocalContext(SyntaxNode node, OneOrMany<SyntaxNode> roots)
7030var current = node;
7072public IMethodSymbol? GetEncompassingPrimaryConstructor(SyntaxNode declaration, ISymbol symbol, CancellationToken cancellationToken)
7180internal Action<SyntaxNode>? FaultInjector
7186internal void ReportTopLevelSyntacticRudeEdits(RudeEditDiagnosticsBuilder diagnostics, EditScript<SyntaxNode> syntacticEdits, Dictionary<SyntaxNode, EditKind> editMap)
EditAndContinue\DeclarationBodyMap.cs (23)
15SpecializedCollections.EmptyReadOnlyDictionary<SyntaxNode, SyntaxNode>(),
16SpecializedCollections.EmptyReadOnlyDictionary<SyntaxNode, SyntaxNode>(),
17ImmutableDictionary<SyntaxNode, SyntaxNode>.Empty);
19public IReadOnlyDictionary<SyntaxNode, SyntaxNode> Forward { get; }
20public IReadOnlyDictionary<SyntaxNode, SyntaxNode> Reverse { get; }
22public ImmutableDictionary<SyntaxNode, SyntaxNode> AdditionalReverseMapping { get; }
25IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMatch,
26IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMatch,
27ImmutableDictionary<SyntaxNode, SyntaxNode> additionalReverseMapping)
36public static DeclarationBodyMap FromMatch(Match<SyntaxNode> match)
37=> new(match.Matches, match.ReverseMatches, ImmutableDictionary<SyntaxNode, SyntaxNode>.Empty);
39public DeclarationBodyMap WithAdditionalMapping(SyntaxNode oldNode, SyntaxNode newNode)
EmbeddedLanguages\AbstractLanguageDetector.cs (8)
30protected abstract bool IsArgumentToWellKnownAPI(SyntaxToken token, SyntaxNode argumentNode, SemanticModel semanticModel, CancellationToken cancellationToken, out TOptions options);
37protected abstract bool TryGetOptions(SemanticModel semanticModel, ITypeSymbol exprType, SyntaxNode expr, CancellationToken cancellationToken, out TOptions options);
108SyntaxNode argument,
113var argumentList = argument.GetRequiredParent();
117foreach (var siblingArg in arguments)
121var expr = syntaxFacts.IsArgument(argument)
139protected static string? GetNameOfType(SyntaxNode? typeNode, ISyntaxFacts syntaxFacts)
153protected string? GetNameOfInvokedExpression(SyntaxNode invokedExpression)
EmbeddedLanguages\EmbeddedLanguageDetector.cs (33)
102for (var node = token.Parent; node != null; node = node.Parent)
165var interpolationFormatClause = token.Parent;
166var interpolation = interpolationFormatClause?.Parent;
170var expression = syntaxFacts.GetExpressionOfInterpolation(interpolation);
216var container = TryFindContainer(token);
232syntaxFacts.GetPartsOfNamedMemberInitializer(container.Parent, out var name, out _);
238var statement = container.FirstAncestorOrSelf<SyntaxNode>(syntaxFacts.IsStatement);
241syntaxFacts.GetPartsOfAssignmentStatement(statement, out var left, out var right);
254var variableDeclarator = container.Parent.Parent;
264var property = container.Parent.GetRequiredParent();
303var container = TryFindContainer(token);
307var statement = container.FirstAncestorOrSelf<SyntaxNode>(syntaxFacts.IsStatement);
310syntaxFacts.GetPartsOfAssignmentStatement(statement, out var left, out var right);
319var variableDeclarator = container.Parent.Parent;
333SyntaxNode tokenParent,
344var block = tokenParent.AncestorsAndSelf().FirstOrDefault(blockFacts.IsExecutableBlock);
349foreach (var statement in blockFacts.GetExecutableBlockStatements(block))
360SyntaxNode tokenParent,
376var typeDeclaration = tokenParent.AncestorsAndSelf().FirstOrDefault(syntaxFacts.IsTypeDeclaration);
386SyntaxNode node,
393foreach (var descendent in node.DescendantNodesAndSelf())
419private SyntaxNode? TryFindContainer(SyntaxToken token)
422var node = syntaxFacts.WalkUpParentheses(token.GetRequiredParent());
424if (syntaxFacts.IsAnyInitializerExpression(node.Parent, out var instance))
440SyntaxNode argument,
456SyntaxNode argument,
470SyntaxNode left,
540private static string? GetNameOfType(SyntaxNode? typeNode, ISyntaxFacts syntaxFacts)
554private string? GetNameOfInvokedExpression(SyntaxNode invokedExpression)
EmbeddedLanguages\Json\LanguageServices\JsonLanguageDetector.cs (11)
127SyntaxNode argumentNode,
133var argumentList = argumentNode.GetRequiredParent();
134var invocationOrCreation = argumentList.Parent;
137var invokedExpression = syntaxFacts.GetExpressionOfInvocationExpression(invocationOrCreation);
160SemanticModel semanticModel, ITypeSymbol exprType, SyntaxNode expr, CancellationToken cancellationToken, out JsonOptions options)
176syntaxFacts.GetPartsOfBaseObjectCreationExpression(expr, out var argumentList, out var objectInitializer);
180foreach (var initializer in initializers)
184syntaxFacts.GetPartsOfNamedMemberInitializer(initializer, out var name, out var initExpr);
205SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
ExtractMethod\MethodExtractor.CodeGenerator.cs (27)
50public abstract OperationStatus<ImmutableArray<SyntaxNode>> GetNewMethodStatements(
51SyntaxNode insertionPointNode, CancellationToken cancellationToken);
57where TNodeUnderContainer : SyntaxNode
94protected abstract SyntaxNode GetCallSiteContainerFromOutermostMoveInVariable();
96protected abstract Task<SyntaxNode> GenerateBodyForCallSiteContainerAsync(SyntaxNode insertionPointNode, SyntaxNode outermostCallSiteContainer, CancellationToken cancellationToken);
97protected abstract IMethodSymbol GenerateMethodDefinition(SyntaxNode insertionPointNode, CancellationToken cancellationToken);
98protected abstract bool ShouldLocalFunctionCaptureParameter(SyntaxNode node);
140private static SyntaxNode GetInsertionPoint(SemanticDocument document)
146var insertionPoint = GetInsertionPoint(semanticDocument);
170var outermostCallSiteContainer = GetOutermostCallSiteContainerToProcess(cancellationToken);
172var rootWithUpdatedCallSite = this.SemanticDocument.Root.ReplaceNode(
179var finalRoot = LocalFunction
185SyntaxNode InsertLocalFunction()
193var localMethod = codeGenerationService.CreateMethodDeclaration(newMethodDefinition, CodeGenerationDestination.Unspecified, info, cancellationToken);
196var destination = GetInsertionPoint(documentWithUpdatedCallSite);
197var updatedDestination = codeGenerationService.AddStatements(destination, [localMethod], info, cancellationToken);
199var finalRoot = documentWithUpdatedCallSite.Root.ReplaceNode(destination, updatedDestination);
203SyntaxNode InsertNormalMethod()
208var mappedMember = GetInsertionPoint(documentWithUpdatedCallSite);
218var destination = mappedMember.Parent ?? mappedMember;
228var newContainer = codeGenerationService.AddMethod(destination, newMethodDefinition, info, cancellationToken);
229var finalRoot = documentWithUpdatedCallSite.Root.ReplaceNode(destination, newContainer);
234private SyntaxNode GetOutermostCallSiteContainerToProcess(CancellationToken cancellationToken)
236var callSiteContainer = GetCallSiteContainerFromOutermostMoveInVariable();
301(TStatementSyntax)(SyntaxNode)await GetStatementOrInitializerContainingInvocationToExtractedMethodAsync(cancellationToken).ConfigureAwait(false));
GenerateEqualsAndGetHashCodeFromMembers\GenerateEqualsAndGetHashCodeFromMembersCodeRefactoringProvider.cs (8)
76var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
80if (!helpers.IsOnTypeHeader(root, textSpan.Start, out var typeDeclaration) &&
185var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
186var typeDeclaration = syntaxFacts.GetContainingTypeDeclaration(root, textSpan.Start);
200Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> selectedMembers,
240Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
257Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
294Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
GenerateType\AbstractGenerateTypeService.cs (13)
32where TExpressionSyntax : SyntaxNode
33where TTypeDeclarationSyntax : SyntaxNode
34where TArgumentSyntax : SyntaxNode
59Solution updatedSolution, SyntaxNode modifiedRoot, Document document, TSimpleNameSyntax simpleName, string includeUsingsOrImports, CancellationToken cancellationToken);
65public abstract Task<(INamespaceSymbol, INamespaceOrTypeSymbol, Location)> GetOrGenerateEnclosingNamespaceSymbolAsync(INamedTypeSymbol namedTypeSymbol, string[] containers, Document selectedDocument, SyntaxNode selectedDocumentRoot, CancellationToken cancellationToken);
69SyntaxNode node,
101SyntaxNode node,
140private static bool CanGenerateIntoContainingNamespace(SemanticDocument semanticDocument, SyntaxNode node, CancellationToken cancellationToken)
147var decl = declarationService.GetDeclarations(containingNamespace)
150.FirstOrDefault(node.GetAncestorsOrThis<SyntaxNode>().Contains);
159SyntaxNode node,
185IEnumerable<SyntaxNode> typeArguments,
198var argument = i < arguments.Count ? arguments[i] : null;
Highlighting\Keywords\AbstractKeywordHighlighter.cs (9)
16where TNode : SyntaxNode
18protected sealed override bool IsHighlightableNode(SyntaxNode node)
21protected sealed override void AddHighlightsForNode(SyntaxNode node, List<TextSpan> highlights, CancellationToken cancellationToken)
33protected abstract bool IsHighlightableNode(SyntaxNode node);
39SyntaxNode root, int position, List<TextSpan> highlights, CancellationToken cancellationToken)
50for (var parent = token.Parent; parent != null; parent = parent.Parent)
78protected abstract void AddHighlightsForNode(SyntaxNode node, List<TextSpan> highlights, CancellationToken cancellationToken);
83internal void AddTouchingTokens(SyntaxNode root, int position, ref TemporaryArray<SyntaxToken> tokens)
91SyntaxNode root, int position, ref TemporaryArray<SyntaxToken> tokens, bool findInsideTrivia)
InitializeParameter\AbstractAddParameterCheckCodeRefactoringProvider.cs (47)
39where TTypeDeclarationSyntax : SyntaxNode
40where TParameterSyntax : SyntaxNode
41where TStatementSyntax : SyntaxNode
42where TExpressionSyntax : SyntaxNode
63protected abstract bool CanOffer(SyntaxNode body);
70SyntaxNode functionDeclaration,
73ImmutableArray<SyntaxNode> listOfParameterNodes,
81foreach (var parameterNode in listOfParameterNodes)
103SyntaxNode functionDeclaration,
185var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
188var functionDeclaration = firstParameterNode.FirstAncestorOrSelf<SyntaxNode>(IsFunctionDeclaration);
243var syntax = statement.Syntax;
544SyntaxNode functionDeclaration,
567SyntaxNode functionDeclaration,
583SyntaxNode functionDeclaration,
599SyntaxNode functionDeclaration,
606var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
621var statementToAddAfter = GetStatementToAddCheckAfter(semanticModel, parameter, blockStatement, cancellationToken);
626var newRoot = editor.GetChangedRoot();
633SyntaxNode functionDeclaration,
638var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
648var parameterIdentifierName = generator.IdentifierName(parameter.Name);
649var typeOfParameterExpression = generator.TypeOfExpression(generator.TypeExpression(parameter.Type));
651SyntaxNode enumIsDefinedInvocation;
670var finalCondition = generator.LogicalNotExpression(enumIsDefinedInvocation);
672var throwStatement = generator.ThrowStatement(
681var enumIsDefinedCheckStatement = generator.IfStatement(finalCondition, [throwStatement]);
684var statementToAddAfter = GetStatementToAddCheckAfter(semanticModel, parameter, blockStatement, cancellationToken);
687var newRoot = editor.GetChangedRoot();
737var parameterNameExpression = generator.IdentifierName(parameter.Name);
738var zeroLiteralExpression = generator.LiteralExpression(0);
739var condition = includeZero
743var parameterNameOfExpression = generator.NameOfExpression(parameterNameExpression);
744var throwStatement = generator.ThrowStatement(
791private static SyntaxNode? GetStatementToAddCheckAfter(
920var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
923var coalesce = generator.CoalesceExpression(
928var newRoot = root.ReplaceNode(assignmentExpression.Value.Syntax, coalesce);
941private static SyntaxNode GetTypeNode(
951private static SyntaxNode CreateArgumentNullException(
959private SyntaxNode CreateArgumentException(
969var nameofExpression = generator.NameOfExpression(generator.IdentifierName(parameter.Name));
977private SyntaxNode CreateExceptionMessageArgument(string messageTemplate, SyntaxGenerator generator, SyntaxNode parameterNameOfExpression)
983using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var content);
1016private static SyntaxNode InterpolatedStringText(SyntaxGenerator generator, string content, string value)
InitializeParameter\AbstractInitializeMemberFromParameterCodeRefactoringProviderMemberCreation.cs (27)
40where TTypeDeclarationSyntax : SyntaxNode
41where TParameterSyntax : SyntaxNode
42where TStatementSyntax : SyntaxNode
43where TExpressionSyntax : SyntaxNode
47protected abstract SyntaxNode RemoveThrowNotImplemented(SyntaxNode propertySyntax);
50Document document, SyntaxNode functionDeclaration, IMethodSymbol method, IBlockOperation? blockStatementOpt,
51ImmutableArray<SyntaxNode> listOfParameterNodes, TextSpan parameterSpan,
61SyntaxNode constructorDeclaration,
105SyntaxNode constructorDeclaration,
156SyntaxNode constructorDeclaration,
190SyntaxNode constructorDeclaration,
239SyntaxNode functionDeclaration,
358SyntaxNode constructorDeclaration,
371var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
372var nodesToTrack = new List<SyntaxNode> { constructorDeclaration };
376var trackedRoot = root.TrackNodes(nodesToTrack);
387var currentRoot = await currentDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
389var currentConstructorDeclaration = currentRoot.GetCurrentNode(constructorDeclaration);
422SyntaxNode constructorDeclaration,
453var propertySyntax = await declarationService.GetDeclarations(finalFieldOrProperty)[0].GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
454var withoutThrowNotImplemented = RemoveThrowNotImplemented(propertySyntax);
459var otherRoot = await propertySyntax.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
471SyntaxNode constructorDeclaration,
481var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
540SyntaxNode typeDeclaration, CancellationToken cancellationToken)
551var symbolSyntax = symbol.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
InlineHints\AbstractInlineParameterNameHintsService.cs (13)
28SyntaxNode node,
29ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> buffer,
32protected abstract bool IsIndexer(SyntaxNode node, IParameterSymbol parameter);
59var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
63using var _ = ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)>.GetInstance(out var buffer);
65foreach (var node in root.DescendantNodes(textSpan, n => n.Span.IntersectsWith(textSpan)))
79void AddHintsIfAppropriate(SyntaxNode node)
125ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> parameterHints)
135ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> parameterHints)
153ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> parameterHints)
279private static bool ParameterMatchesArgumentName(SyntaxNode argument, IParameterSymbol parameter, ISyntaxFactsService syntaxFacts)
285protected static string GetIdentifierNameFromArgument(SyntaxNode argument, ISyntaxFactsService syntaxFacts)
287var identifierNameSyntax =
IntroduceParameter\AbstractIntroduceParameterCodeRefactoringProvider.cs (18)
30where TExpressionSyntax : SyntaxNode
34where TArgumentSyntax : SyntaxNode
43protected abstract SyntaxNode GenerateExpressionFromOptionalParameter(IParameterSymbol parameterSymbol);
44protected abstract SyntaxNode UpdateArgumentListSyntax(SyntaxNode argumentList, SeparatedSyntaxList<TArgumentSyntax> arguments);
45protected abstract SyntaxNode? GetLocalDeclarationFromDeclarator(SyntaxNode variableDecl);
63var containingMethod = expression.FirstAncestorOrSelf<SyntaxNode>(node => generator.GetParameterListNode(node) is not null);
120private static bool IsValidExpression(SyntaxNode expression, ISyntaxFactsService syntaxFacts)
145var invalidNode = expression.FirstAncestorOrSelf<SyntaxNode>(node => syntaxFacts.IsAttributeArgument(node) || syntaxFacts.IsParameter(node));
155TExpressionSyntax expression, IMethodSymbol methodSymbol, SyntaxNode containingMethod,
216foreach (var variable in variablesInExpression)
252IMethodSymbol methodSymbol, SyntaxNode containingMethod, Dictionary<Document, List<TExpressionSyntax>> methodCallSites, bool allOccurrences, IntroduceParameterCodeActionKind selectedCodeAction,
259var changedRoots = await ProducerConsumer<(DocumentId documentId, SyntaxNode newRoot)>.RunParallelAsync(
271var newRoot = await rewriter.RewriteDocumentAsync(compilation, document, invocations, cancellationToken).ConfigureAwait(false);
311var reference = refLocation.Location.FindNode(cancellationToken).GetRequiredParent();
IntroduceParameter\IntroduceParameterDocumentRewriter.cs (51)
28SyntaxNode containingMethod,
39private readonly SyntaxNode _containerMethod = containingMethod;
43public async Task<SyntaxNode> RewriteDocumentAsync(Compilation compilation, Document document, List<TExpressionSyntax> invocations, CancellationToken cancellationToken)
108private bool ShouldRemoveVariableDeclaratorContainingExpression([NotNullWhen(true)] out string? varDeclName, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
110var declarator = _expression?.Parent?.Parent;
145var parameterList = _syntaxFacts.GetParameterList(_containerMethod);
227private async Task<SyntaxNode> ModifyDocumentInvocationsTrampolineOverloadAndIntroduceParameterAsync(Compilation compilation, Document currentDocument,
231var root = await currentDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
252var argumentListSyntax = _syntaxFacts.GetArgumentListOfInvocationExpression(invocation);
268var newMethodNode = _actionKind is IntroduceParameterCodeActionKind.Trampoline
275var parameter = _generator.ParameterDeclaration(parameterName, _generator.TypeExpression(parameterType));
312SyntaxNode GenerateNewArgumentListSyntaxForTrampoline(Compilation compilation, SemanticModel invocationSemanticModel,
313Dictionary<IParameterSymbol, int> parameterToArgumentMap, SyntaxNode currentArgumentListSyntax,
314SyntaxNode argumentListSyntax, SyntaxNode invocation, ImmutableArray<IParameterSymbol> validParameters,
321var requiredArguments = new List<SyntaxNode>();
331var conditionalRoot = _syntaxFacts.GetRootConditionalAccessExpression(invocation);
333var newMethodInvocation = GenerateNewMethodInvocation(invocation, requiredArguments, newMethodIdentifier);
344var expressionsWithConditionalAccessors = conditionalRoot.ReplaceNode(invocation, newMethodInvocation);
359private SyntaxNode GenerateNewMethodInvocation(SyntaxNode invocation, List<SyntaxNode> arguments, string newMethodIdentifier)
361var methodName = _generator.IdentifierName(newMethodIdentifier);
362var fullExpression = _syntaxFacts.GetExpressionOfInvocationExpression(invocation);
365var receiverExpression = _syntaxFacts.GetExpressionOfMemberAccessExpression(fullExpression);
396private async Task<SyntaxNode> ExtractMethodAsync(ImmutableArray<IParameterSymbol> validParameters, string newMethodIdentifier, SyntaxGenerator generator, CancellationToken cancellationToken)
399var returnStatement = generator.ReturnStatement(_expression.WithoutTrivia());
401var newMethodDeclaration = await CreateMethodDeclarationAsync(returnStatement,
428private async Task<SyntaxNode> GenerateNewMethodOverloadAsync(int insertionIndex, SyntaxGenerator generator, CancellationToken cancellationToken)
435var memberName = _methodSymbol.IsGenericMethod
438var invocation = generator.InvocationExpression(memberName, arguments);
440var newStatement = _methodSymbol.ReturnsVoid
444var newMethodDeclaration = await CreateMethodDeclarationAsync(newStatement,
449private async Task<SyntaxNode> CreateMethodDeclarationAsync(SyntaxNode newStatement, ImmutableArray<IParameterSymbol>? validParameters,
458var newMethodDeclaration = info.Service.CreateMethodDeclaration(newMethod, CodeGenerationDestination.Unspecified, info, cancellationToken);
489private async Task<SyntaxNode> ModifyDocumentInvocationsAndIntroduceParameterAsync(Compilation compilation, Document document, int insertionIndex,
492var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
502var argumentListSyntax = invocation is TObjectCreationExpressionSyntax
536var parameter = _generator.ParameterDeclaration(name: parameterName, type:
552SeparatedSyntaxList<SyntaxNode> updatedInvocationArguments)
559var updatedInvocationArgument = updatedInvocationArguments[index];
560var argumentExpression = _syntaxFacts.GetExpressionOfArgument(updatedInvocationArgument);
561var parenthesizedArgumentExpression = editor.Generator.AddParentheses(argumentExpression, includeElasticTrivia: false);
566var generatedExpression = _service.GenerateExpressionFromOptionalParameter(mappedParameter);
567var parenthesizedGeneratedExpression = editor.Generator.AddParentheses(generatedExpression, includeElasticTrivia: false);
580SeparatedSyntaxList<TArgumentSyntax> invocationArguments, SyntaxNode newArgumentExpression,
590SeparatedSyntaxList<SyntaxNode> invocationArguments, int methodInsertionIndex,
594foreach (var invocationArgument in invocationArguments)
616Dictionary<IParameterSymbol, int> mapping, SeparatedSyntaxList<SyntaxNode> arguments,
654if (ShouldRemoveVariableDeclaratorContainingExpression(out _, out var localDeclaration))
MetadataAsSource\AbstractMetadataAsSourceService+CompatAbstractMetadataFormattingRule.cs (8)
22public sealed override void AddSuppressOperations(ArrayBuilder<SuppressOperation> list, SyntaxNode node, in NextSuppressOperationAction nextOperation)
30public sealed override void AddAnchorIndentationOperations(List<AnchorIndentationOperation> list, SyntaxNode node, in NextAnchorIndentationOperationAction nextOperation)
38public sealed override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
46public sealed override void AddAlignTokensOperations(List<AlignTokensOperation> list, SyntaxNode node, in NextAlignTokensOperationAction nextOperation)
77public virtual void AddSuppressOperationsSlow(ArrayBuilder<SuppressOperation> list, SyntaxNode node, ref NextSuppressOperationAction nextOperation)
83public virtual void AddAnchorIndentationOperationsSlow(List<AnchorIndentationOperation> list, SyntaxNode node, ref NextAnchorIndentationOperationAction nextOperation)
89public virtual void AddIndentBlockOperationsSlow(List<IndentBlockOperation> list, SyntaxNode node, ref NextIndentBlockOperationAction nextOperation)
95public virtual void AddAlignTokensOperationsSlow(List<AlignTokensOperation> list, SyntaxNode node, ref NextAlignTokensOperationAction nextOperation)
PullMemberUp\MembersPuller.cs (25)
99var destinationSyntaxNode = codeGenerationService.FindMostRelevantNameSpaceOrTypeDeclaration(
114var destinationWithMembersAdded = info.Service.AddMembers(destinationSyntaxNode, symbolsToPullUp, info, cancellationToken);
121foreach (var declaration in symbolToDeclarationsMap[analysisResult.Member])
198SyntaxNode memberDeclaration,
227SyntaxNode eventDeclaration,
232var declaration = editor.Generator.GetDeclaration(eventDeclaration);
253var publicAndNonStaticSyntax = codeGenerationService.CreateEventDeclaration(publicAndNonStaticSymbol, CodeGenerationDestination.ClassType, eventGenerationInfo, cancellationToken);
275var destinationSyntaxNode = codeGenerationService.FindMostRelevantNameSpaceOrTypeDeclaration(
306var newDestination = codeGenerationService
309using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var sourceImports);
328foreach (var syntax in symbolToDeclarations[analysisResult.Member])
346var declarationSyntax = originalMemberEditor.Generator.GetDeclaration(syntax);
389var destinationRoot = AddLeadingTriviaBeforeFirstMember(
404private static SyntaxTriviaList GetLeadingTriviaBeforeFirstMember(SyntaxNode root, ISyntaxFactsService syntaxFacts)
408var firstMember = members.First();
412private static SyntaxNode RemoveLeadingTriviaBeforeFirstMember(SyntaxNode root, ISyntaxFactsService syntaxFacts)
416var firstMember = members.First();
420private static SyntaxNode AddLeadingTriviaBeforeFirstMember(SyntaxNode root, ISyntaxFactsService syntaxFacts, SyntaxTriviaList trivia)
424var firstMember = members.First();
433private static ImmutableArray<SyntaxNode> GetImports(SyntaxNode start, ISyntaxFactsService syntaxFacts)
468private static async Task<ImmutableDictionary<ISymbol, ImmutableArray<SyntaxNode>>> InitializeSymbolToDeclarationsMapAsync(
474var symbolToDeclarationsBuilder = ImmutableDictionary.CreateBuilder<ISymbol, ImmutableArray<SyntaxNode>>();
QuickInfo\CommonSemanticQuickInfoProvider.cs (22)
134var root = linkedModel.SyntaxTree.GetRoot(cancellationToken);
174protected abstract bool GetBindableNodeForTokenIndicatingLambda(SyntaxToken token, [NotNullWhen(returnValue: true)] out SyntaxNode? found);
175protected abstract bool GetBindableNodeForTokenIndicatingPossibleIndexerAccess(SyntaxToken token, [NotNullWhen(returnValue: true)] out SyntaxNode? found);
183protected virtual string? GetNullabilityAnalysis(SemanticModel semanticModel, ISymbol symbol, SyntaxNode node, CancellationToken cancellationToken) => null;
191var bindableParent = syntaxFacts.TryGetBindableParent(token);
212var tokenParent = token.GetRequiredParent();
213var nodeToRewrite = GetNodeToRewrite(tokenParent);
217var root = semanticModel.SyntaxTree.GetRoot(cancellationToken);
225for (var current = nodeToRewrite;
238syntaxFacts.GetPartsOfAnyIsTypeExpression(current, out var left, out _);
244syntaxFacts.GetPartsOfIsPatternExpression(current, out var left, out _, out _);
253var newRoot = editor.GetChangedRoot();
258var newBindableParent = syntaxFacts.TryGetBindableParent(newToken);
272SyntaxNode? GetNodeToRewrite(SyntaxNode node)
274var last = node;
275for (var current = last.Parent; current != null; last = current, current = current.Parent)
282syntaxFacts.GetPartsOfAnyIsTypeExpression(current, out var left, out _);
289syntaxFacts.GetPartsOfIsPatternExpression(current, out var left, out _, out _);
307var bindableParent = syntaxFacts.TryGetBindableParent(token);
364if (GetBindableNodeForTokenIndicatingLambda(token, out var lambdaSyntax))
370if (GetBindableNodeForTokenIndicatingPossibleIndexerAccess(token, out var elementAccessExpression))
ReplaceConditionalWithStatements\AbstractReplaceConditionalWithStatementsCodeRefactoringProvider.cs (29)
29where TExpressionSyntax : SyntaxNode
31where TStatementSyntax : SyntaxNode
33where TArgumentSyntax : SyntaxNode
34where TArgumentListSyntax : SyntaxNode
35where TVariableSyntax : SyntaxNode
36where TVariableDeclaratorSyntax : SyntaxNode
37where TEqualsValueClauseSyntax : SyntaxNode
85private static TConditionalExpressionSyntax? TryFindConditional(SyntaxNode? top, CancellationToken cancellationToken)
90foreach (var node in top.DescendantNodesAndSelf(DescendIntoChildren))
99bool DescendIntoChildren(SyntaxNode node)
201var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
214var newRoot = root.ReplaceNode(statement, ifStatement);
226var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
231var declarator = syntaxFacts.GetVariablesOfLocalDeclarationStatement(localDeclarationStatement).Single();
232var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(declarator);
234var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
238var identifier = generator.IdentifierName(symbol.Name);
250var newRoot = root.ReplaceNode(
259SyntaxNode WrapGlobal(TStatementSyntax statement)
266SyntaxNode container,
268Func<SyntaxNode, SyntaxNode> wrapConvertedSyntax,
287syntaxFacts.GetPartsOfConditionalExpression(conditionalExpression, out var condition, out var whenTrue, out var whenFalse);
294SyntaxNode Rewrite(TExpressionSyntax expression)
299var containerWithConditionalReplaced = container.ReplaceNode(conditionalExpression, TryConvert(expression, conditionalType).WithTriviaFrom(conditionalExpression));
304SyntaxNode TryConvert(SyntaxNode expression, ITypeSymbol? conditionalType)
ReplacePropertyWithMethods\AbstractReplacePropertyWithMethodsService.cs (33)
23where TExpressionSyntax : SyntaxNode
24where TCrefSyntax : SyntaxNode
25where TStatementSyntax : SyntaxNode
26where TPropertySyntax : SyntaxNode
28public abstract SyntaxNode GetPropertyNodeToReplace(SyntaxNode propertyDeclaration);
29public abstract Task<ImmutableArray<SyntaxNode>> GetReplacementMembersAsync(
30Document document, IPropertySymbol property, SyntaxNode propertyDeclaration, IFieldSymbol? propertyBackingField, string desiredGetMethodName, string desiredSetMethodName, CancellationToken cancellationToken);
33protected abstract TCrefSyntax CreateCrefSyntax(TCrefSyntax originalCref, SyntaxToken identifierToken, SyntaxNode? parameterType);
35protected abstract TExpressionSyntax UnwrapCompoundAssignment(SyntaxNode compoundAssignment, TExpressionSyntax readExpression);
36public async Task<SyntaxNode?> GetPropertyDeclarationAsync(CodeRefactoringContext context)
39protected static SyntaxNode GetFieldReference(SyntaxGenerator generator, IFieldSymbol propertyBackingField)
41var memberName = generator.IdentifierName(propertyBackingField.Name);
56SyntaxEditor editor, SyntaxNode identifierName,
72private delegate TExpressionSyntax GetWriteValue(ReferenceReplacer replacer, SyntaxNode parent);
163var literalOne = replacer.Generator.LiteralExpression(1);
165var writeValue = replacer._syntaxFacts.IsOperandOfIncrementExpression(replacer._expression)
185private static readonly Func<SyntaxNode, SyntaxGenerator, ReplaceParentArgs, SyntaxNode> replaceParentCallback =
191var writeExpression = replacer.GetWriteExpression(
255var declarator = _expression.Parent;
258var newDeclarator = Generator.NamedAnonymousObjectMemberDeclarator(
304SyntaxNode? parameterType;
319private SyntaxNode QualifyIfAppropriate(IFieldSymbol propertyBackingField, SyntaxNode newIdentifierName)
324var container = propertyBackingField.IsStatic
341var newIdentifierName = QualifyIfAppropriate(_propertyBackingField, Generator.IdentifierName(newIdentifierToken));
356private SyntaxNode GetWriteExpression(
364var newIdentifierName = QualifyIfAppropriate(_propertyBackingField, Generator.IdentifierName(newIdentifierToken));
388string desiredName, SyntaxNode? argument, bool keepTrivia, string? conflictMessage)
393var newIdentifierName = Generator.IdentifierName(newIdentifier);
405var invocation = Generator.InvocationExpression(updatedExpression, arguments);
418private SyntaxNode GetSetInvocationExpression(
SolutionCrawler\AbstractDocumentDifferenceService.cs (14)
17protected abstract bool IsContainedInMemberBody(SyntaxNode oldMember, TextSpan span);
19public async Task<SyntaxNode?> GetChangedMemberAsync(Document oldDocument, Document newDocument, CancellationToken cancellationToken)
56if (!oldDocument.TryGetSyntaxRoot(out var oldRoot) ||
57!newDocument.TryGetSyntaxRoot(out var newRoot))
104private SyntaxNode? GetChangedMember(
105ISyntaxFactsService syntaxFactsService, SyntaxNode oldRoot, SyntaxNode newRoot, TextChangeRange range)
113var oldMember = syntaxFactsService.GetContainingMemberDeclaration(oldRoot, range.Span.Start);
114var newMember = syntaxFactsService.GetContainingMemberDeclaration(newRoot, range.Span.Start);
138private static SyntaxNode? GetBestGuessChangedMember(
139ISyntaxFactsService syntaxFactsService, SyntaxNode oldRoot, SyntaxNode newRoot, TextChangeRange range)
154var oldMember = syntaxFactsService.GetContainingMemberDeclaration(oldRoot, range.Span.Start);
155var newMember = syntaxFactsService.GetContainingMemberDeclaration(newRoot, range.Span.Start);
SplitOrMergeIfStatements\AbstractMergeIfStatementsCodeRefactoringProvider.cs (27)
22protected abstract bool IsApplicableSpan(SyntaxNode node, TextSpan span, out SyntaxNode ifOrElseIf);
28Document document, SyntaxNode ifOrElseIf, CancellationToken cancellationToken, out SyntaxNode upperIfOrElseIf);
31Document document, SyntaxNode ifOrElseIf, CancellationToken cancellationToken, out SyntaxNode lowerIfOrElseIf);
33protected abstract SyntaxNode GetChangedRoot(Document document, SyntaxNode root, SyntaxNode upperIfOrElseIf, SyntaxNode lowerIfOrElseIf);
38var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
39var node = root.FindNode(textSpan, getInnermostNodeForTie: true);
41if (IsApplicableSpan(node, textSpan, out var ifOrElseIf))
46if (await CanBeMergedUpAsync(document, ifOrElseIf, cancellationToken, out var upperIfOrElseIf).ConfigureAwait(false))
49if (await CanBeMergedDownAsync(document, ifOrElseIf, cancellationToken, out var lowerIfOrElseIf).ConfigureAwait(false))
68var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
70var upperIfOrElseIf = FindIfOrElseIf(upperIfOrElseIfSpan, ifGenerator, root);
71var lowerIfOrElseIf = FindIfOrElseIf(lowerIfOrElseIfSpan, ifGenerator, root);
76var newRoot = GetChangedRoot(document, root, upperIfOrElseIf, lowerIfOrElseIf);
79static SyntaxNode FindIfOrElseIf(TextSpan span, IIfLikeStatementGenerator ifGenerator, SyntaxNode root)
81var innerMatch = root.FindNode(span, getInnermostNodeForTie: true);
82return innerMatch?.FirstAncestorOrSelf<SyntaxNode>(
87protected static IReadOnlyList<SyntaxNode> WalkDownScopeBlocks(
89IReadOnlyList<SyntaxNode> statements)
100protected static IReadOnlyList<SyntaxNode> WalkUpScopeBlocks(
102IReadOnlyList<SyntaxNode> statements)
SplitOrMergeIfStatements\AbstractSplitIfStatementCodeRefactoringProvider.cs (22)
24protected abstract Task<SyntaxNode> GetChangedRootAsync(
26SyntaxNode root,
27SyntaxNode ifOrElseIf,
28SyntaxNode leftCondition,
29SyntaxNode rightCondition,
35var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
48if (IsPartOfBinaryExpressionChain(token, GetLogicalExpressionKind(syntaxKinds), out var rootExpression) &&
49ifGenerator.IsCondition(rootExpression, out var ifOrElseIf))
64var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
67var ifOrElseIf = FindIfOrElseIf(ifOrElseIfSpan);
71var newRoot = await GetChangedRootAsync(document, root, ifOrElseIf, left, right, cancellationToken).ConfigureAwait(false);
74SyntaxNode FindIfOrElseIf(TextSpan span)
76var innerMatch = root.FindNode(span, getInnermostNodeForTie: true);
77return innerMatch?.FirstAncestorOrSelf<SyntaxNode>(
82private static bool IsPartOfBinaryExpressionChain(SyntaxToken token, int syntaxKind, out SyntaxNode rootExpression)
98private static (SyntaxNode left, SyntaxNode right) SplitBinaryExpressionChain(
99SyntaxToken token, SyntaxNode rootExpression, ISyntaxFactsService syntaxFacts)
108syntaxFacts.GetPartsOfBinaryExpression(token.Parent, out var parentLeft, out _, out var parentRight);
110var left = parentLeft;
111var right = rootExpression.ReplaceNode(token.Parent, parentRight);
SplitOrMergeIfStatements\Consecutive\AbstractMergeConsecutiveIfStatementsCodeRefactoringProvider.cs (24)
56Document document, SyntaxNode ifOrElseIf, CancellationToken cancellationToken, out SyntaxNode firstIfOrElseIf)
69Document document, SyntaxNode ifOrElseIf, CancellationToken cancellationToken, out SyntaxNode secondIfOrElseIf)
81protected sealed override SyntaxNode GetChangedRoot(Document document, SyntaxNode root, SyntaxNode firstIfOrElseIf, SyntaxNode secondIfOrElseIf)
87var newCondition = generator.LogicalOrExpression(
140SyntaxNode ifOrElseIf,
141out SyntaxNode parentIfOrElseIf)
151SyntaxNode ifOrElseIf,
152out SyntaxNode elseIfClause)
163SyntaxNode ifOrElseIf,
165out SyntaxNode previousStatement)
177SyntaxNode ifOrElseIf,
179out SyntaxNode nextStatement)
191SyntaxNode firstStatement,
192SyntaxNode secondStatement,
229SyntaxNode ifOrElseIf,
231out SyntaxNode statement)
249SyntaxNode ifStatement1,
250SyntaxNode ifStatement2,
251out IReadOnlyList<SyntaxNode> statements)
SplitOrMergeIfStatements\IIfLikeStatementGenerator.cs (32)
18bool IsIfOrElseIf(SyntaxNode node);
20bool IsCondition(SyntaxNode expression, out SyntaxNode ifOrElseIf);
22bool IsElseIfClause(SyntaxNode node, out SyntaxNode parentIfOrElseIf);
24bool HasElseIfClause(SyntaxNode ifOrElseIf, out SyntaxNode elseIfClause);
26SyntaxNode GetCondition(SyntaxNode ifOrElseIf);
31SyntaxNode GetRootIfStatement(SyntaxNode ifOrElseIf);
36ImmutableArray<SyntaxNode> GetElseIfAndElseClauses(SyntaxNode ifOrElseIf);
38SyntaxNode WithCondition(SyntaxNode ifOrElseIf, SyntaxNode condition);
40SyntaxNode WithStatementInBlock(SyntaxNode ifOrElseIf, SyntaxNode statement);
42SyntaxNode WithStatementsOf(SyntaxNode ifOrElseIf, SyntaxNode otherIfOrElseIf);
44SyntaxNode WithElseIfAndElseClausesOf(SyntaxNode ifStatement, SyntaxNode otherIfStatement);
49SyntaxNode ToIfStatement(SyntaxNode ifOrElseIf);
54SyntaxNode ToElseIfClause(SyntaxNode ifOrElseIf);
60void InsertElseIfClause(SyntaxEditor editor, SyntaxNode afterIfOrElseIf, SyntaxNode elseIfClause);
65void RemoveElseIfClause(SyntaxEditor editor, SyntaxNode elseIfClause);
SplitOrMergeIfStatements\Nested\AbstractMergeNestedIfStatementsCodeRefactoringProvider.cs (21)
44Document document, SyntaxNode ifOrElseIf, CancellationToken cancellationToken, out SyntaxNode outerIfOrElseIf)
57Document document, SyntaxNode ifOrElseIf, CancellationToken cancellationToken, out SyntaxNode innerIfStatement)
69protected sealed override SyntaxNode GetChangedRoot(Document document, SyntaxNode root, SyntaxNode outerIfOrElseIf, SyntaxNode innerIfStatement)
77var newCondition = generator.LogicalAndExpression(
81var newIfOrElseIf = ifGenerator.WithStatementsOf(
91SyntaxNode statement,
92out SyntaxNode ifOrElseIf)
120SyntaxNode ifOrElseIf,
121out SyntaxNode ifStatement)
149SyntaxNode outerIfOrElseIf,
150SyntaxNode innerIfStatement,
200var outerIfStatement = ifGenerator.GetRootIfStatement(outerIfOrElseIf);
232SyntaxNode elseIfOrElseClause1,
233SyntaxNode elseIfOrElseClause2)
247var condition1 = ifGenerator.GetCondition(elseIfOrElseClause1);
248var condition2 = ifGenerator.GetCondition(elseIfOrElseClause2);
src\roslyn\src\Analyzers\Core\Analyzers\AddAccessibilityModifiers\IAddAccessibilityModifiersService.cs (1)
19SyntaxNode member,
src\roslyn\src\Analyzers\Core\Analyzers\RemoveUnnecessarySuppressions\AbstractRemoveUnnecessaryPragmaSuppressionsDiagnosticAnalyzer.cs (23)
49protected abstract bool ContainsPragmaDirective(SyntaxNode root);
127var root = tree.GetRoot(cancellationToken);
166using var _5 = PooledDictionary<string, List<SyntaxNode>>.GetInstance(out var idToSuppressMessageAttributesMap);
167using var _6 = PooledDictionary<SyntaxNode, bool>.GetInstance(out var suppressMessageAttributesToIsUsedMap);
210foreach (var attributeNode in attributeNodes)
226SyntaxNode root,
251foreach (var errorCodeNode in errorCodeNodes)
297SyntaxNode idNode,
391SyntaxNode root,
512PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
513PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
586PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
587PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
596var attributeNode = await attribute.ApplicationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
597foreach (var node in suppressMessageAttributesForId)
611PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
663PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
733SyntaxNode root,
736PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
737PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
749using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(discardLargeInstances: false, out var declarationNodes);
755foreach (var node in declarationNodes)
819var attributeNode = await attribute.ApplicationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
src\roslyn\src\Analyzers\Core\Analyzers\SimplifyTypeNames\SimplifyTypeNamesDiagnosticAnalyzerBase.cs (8)
64internal abstract bool IsCandidate(SyntaxNode node);
66SemanticModel model, SyntaxNode node, TSimplifierOptions options,
96protected abstract bool IsIgnoredCodeBlock(SyntaxNode codeBlock);
97protected abstract ImmutableArray<Diagnostic> AnalyzeCodeBlock(CodeBlockAnalysisContext context, SyntaxNode root);
98protected abstract ImmutableArray<Diagnostic> AnalyzeSemanticModel(SemanticModelAnalysisContext context, SyntaxNode root, TextSpanMutableIntervalTree? codeBlockIntervalTree);
100public bool TrySimplify(SemanticModel model, SyntaxNode node, [NotNullWhen(true)] out Diagnostic? diagnostic, TSimplifierOptions options, AnalyzerOptions analyzerOptions, CancellationToken cancellationToken)
223var root = context.GetAnalysisRoot(findInTrivia: true);
279var root = context.GetAnalysisRoot(findInTrivia: true);
src\roslyn\src\Analyzers\Core\Analyzers\UseAutoProperty\AbstractUseAutoPropertyAnalyzer.cs (27)
38where TPropertyDeclaration : SyntaxNode
39where TConstructorDeclaration : SyntaxNode
40where TFieldDeclaration : SyntaxNode
41where TVariableDeclarator : SyntaxNode
42where TExpression : SyntaxNode
49private static readonly ObjectPool<ConcurrentSet<SyntaxNode>> s_nodeSetPool = new(() => []);
51private static readonly ObjectPool<ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>>> s_fieldToUsageLocationPool = new(() => []);
58protected static void AddFieldUsage(ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites, IFieldSymbol field, SyntaxNode location)
61private static void ClearAndFree(ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> multiMap)
89protected abstract SyntaxNode GetFieldNode(TFieldDeclaration fieldDeclaration, TVariableDeclarator variableDeclarator);
94HashSet<string> fieldNames, ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> ineligibleFieldUsageIfOutsideProperty, SemanticModel semanticModel, SyntaxNode codeBlock, CancellationToken cancellationToken);
202var analysisRoot = context.GetAnalysisRoot(findInTrivia: false);
203foreach (var node in analysisRoot.DescendantNodes())
212if (!shouldAnalyze && analysisRoot.FirstAncestorOrSelf<SyntaxNode>(node => node is TPropertyDeclaration or TFieldDeclaration) == null)
222ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldReads,
223ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites,
225SyntaxNode codeBlock,
538ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> ineligibleFieldUsageIfOutsideProperty,
539ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldReads,
540ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites,
625static bool NotWithinProperty(IEnumerable<SyntaxNode> nodes, TPropertyDeclaration propertyDeclaration)
627foreach (var node in nodes)
636static IEnumerable<SyntaxNode> NonConstructorLocations(IEnumerable<SyntaxNode> nodes)
643var fieldNode = GetFieldNode(result.FieldDeclaration, variableDeclarator);
src\roslyn\src\Analyzers\Core\Analyzers\UseCompoundAssignment\UseCompoundAssignmentUtilities.cs (7)
41ISyntaxFacts syntaxFacts, SyntaxNode expr, SemanticModel semanticModel, CancellationToken cancellationToken)
47ISyntaxFacts syntaxFacts, SyntaxNode expr, SemanticModel semanticModel,
73out _, out var expression, out _);
81out var subExpr, out _);
89out var expression, out var whenNotNull);
99SyntaxNode expr, SemanticModel semanticModel, bool isTopLevel, CancellationToken cancellationToken)
src\roslyn\src\Analyzers\Core\Analyzers\UseNullPropagation\AbstractUseNullPropagationDiagnosticAnalyzer.cs (13)
55where TExpressionSyntax : SyntaxNode
56where TStatementSyntax : SyntaxNode
113public (TExpressionSyntax conditionalPart, SyntaxNode whenPart)? GetPartsOfConditionalExpression(
162conditionalExpression, out var condition, out var whenTrue, out var whenFalse);
303syntaxFacts.GetPartsOfBinaryExpression(condition, out var conditionLeft, out var conditionRight);
324var expression = syntaxFacts.GetExpressionOfInvocationExpression(invocation);
325var nameNode = syntaxFacts.IsIdentifierName(expression)
417syntaxFacts.GetPartsOfCastExpression(node, out var type, out var expression);
446syntaxFacts.GetPartsOfAssignmentExpressionOrStatement(node, out var left, out _, out _);
src\roslyn\src\Analyzers\Core\CodeFixes\AddExplicitCast\AbstractAddExplicitCastCodeFixProvider.cs (13)
21where TExpressionSyntax : SyntaxNode
30protected abstract void GetPartsOfCastOrConversionExpression(TExpressionSyntax expression, out SyntaxNode type, out TExpressionSyntax castedExpression);
48Document document, SemanticModel semanticModel, SyntaxNode root,
60Document document, SemanticModel semanticModel, SyntaxNode root,
71var root = await document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
114private (SyntaxNode finalTarget, SyntaxNode finalReplacement) ApplyFix(
134(SyntaxNode finalTarget, SyntaxNode finalReplacement) ApplyFixWorker()
139GetPartsOfCastOrConversionExpression(targetNode, out var castTypeNode, out var castedExpression);
159protected virtual (SyntaxNode finalTarget, SyntaxNode finalReplacement) Cast(SemanticModel semanticModel, TExpressionSyntax targetNode, ITypeSymbol conversionType)
216var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
src\roslyn\src\Analyzers\Core\CodeFixes\ConvertToAsync\AbstractConvertToAsyncCodeFixProvider.cs (9)
18protected abstract Task<string> GetDescriptionAsync(Diagnostic diagnostic, SyntaxNode node, SemanticModel semanticModel, CancellationToken cancellationToken);
19protected abstract Task<(SyntaxTree syntaxTree, SyntaxNode root)?> GetRootInOtherSyntaxTreeAsync(SyntaxNode node, SemanticModel semanticModel, Diagnostic diagnostic, CancellationToken cancellationToken);
23var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
24if (!TryGetNode(root, context.Span, out var node))
38SyntaxNode root, TextSpan span, [NotNullWhen(true)] out SyntaxNode? node)
41var ancestors = root.FindToken(span.Start).GetAncestors<SyntaxNode>();
52SyntaxNode node, Document document, Diagnostic diagnostic, CancellationToken cancellationToken)
src\roslyn\src\Analyzers\Core\CodeFixes\FileHeaders\AbstractFileHeaderCodeFixProvider.cs (8)
46private async Task<SyntaxNode> GetTransformedSyntaxRootAsync(Document document, CancellationToken cancellationToken)
55internal static async Task<SyntaxNode> GetTransformedSyntaxRootAsync(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, Document document, string? fileHeaderTemplate, CancellationToken cancellationToken)
58var root = await tree.GetRootAsync(cancellationToken).ConfigureAwait(false);
78SyntaxNode newSyntaxRoot;
91private static SyntaxNode ReplaceHeader(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, SyntaxNode root, string expectedFileHeader)
173private static SyntaxNode AddHeader(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, SyntaxNode root, string expectedFileHeader)
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateConstructor\AbstractGenerateConstructorService.cs (9)
27where TExpressionSyntax : SyntaxNode
30protected abstract bool IsSimpleNameGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
31protected abstract bool IsConstructorInitializerGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
32protected abstract bool IsImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
34protected abstract bool TryInitializeImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
35protected abstract bool TryInitializeSimpleNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
36protected abstract bool TryInitializeConstructorInitializerGeneration(SemanticDocument document, SyntaxNode constructorInitializer, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
37protected abstract bool TryInitializeSimpleAttributeNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
80public async Task<ImmutableArray<CodeAction>> GenerateConstructorAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateParameterizedMember\AbstractGenerateConversionService.cs (6)
19where TExpressionSyntax : SyntaxNode
22protected abstract bool IsImplicitConversionGeneration(SyntaxNode node);
23protected abstract bool IsExplicitConversionGeneration(SyntaxNode node);
24protected abstract bool TryInitializeImplicitConversionState(SemanticDocument document, SyntaxNode expression, ISet<TypeKind> classInterfaceModuleStructTypes, CancellationToken cancellationToken, out SyntaxToken identifierToken, [NotNullWhen(true)] out IMethodSymbol? methodSymbol, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
25protected abstract bool TryInitializeExplicitConversionState(SemanticDocument document, SyntaxNode expression, ISet<TypeKind> classInterfaceModuleStructTypes, CancellationToken cancellationToken, out SyntaxToken identifierToken, [NotNullWhen(true)] out IMethodSymbol? methodSymbol, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
29SyntaxNode node,
src\roslyn\src\Analyzers\Core\CodeFixes\GenerateVariable\AbstractGenerateVariableService.cs (6)
22where TExpressionSyntax : SyntaxNode
24protected abstract bool IsExplicitInterfaceGeneration(SyntaxNode node);
25protected abstract bool IsIdentifierNameGeneration(SyntaxNode node);
27protected abstract bool TryInitializeExplicitInterfaceState(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken identifierToken, out IPropertySymbol propertySymbol, out INamedTypeSymbol typeToGenerateIn);
30protected abstract bool TryConvertToLocalDeclaration(ITypeSymbol type, SyntaxToken identifierToken, SemanticModel semanticModel, CancellationToken cancellationToken, out SyntaxNode newRoot);
34SyntaxNode node,
src\roslyn\src\Analyzers\Core\CodeFixes\ImplementAbstractClass\ImplementAbstractClassData.cs (14)
27Document document, ImplementTypeOptions options, SyntaxNode classNode, SyntaxToken classIdentifier,
33private readonly SyntaxNode _classNode = classNode;
41Document document, SyntaxNode classNode, SyntaxToken classIdentifier, CancellationToken cancellationToken)
77Document document, SyntaxNode classNode, SyntaxToken classIdentifier, CancellationToken cancellationToken)
96var classNodeToAddMembersTo = _classNode;
113var updatedClassNode = info.Service.AddMembers(
119var root = await _document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
120var newRoot = root.ReplaceNode(_classNode, updatedClassNode);
180var body = throughMember == null
248Func<SyntaxNode, SyntaxNode, SyntaxNode> createAddOrRemoveHandler)
254var throughExpression = generator.CreateDelegateThroughExpression(@event, throughMember);
255var statement = generator.ExpressionStatement(createAddOrRemoveHandler(
src\roslyn\src\Analyzers\Core\CodeFixes\ImplementInterface\AbstractImplementInterfaceService.cs (17)
27where TTypeDeclarationSyntax : SyntaxNode
37protected abstract bool TryInitializeState(Document document, SemanticModel model, SyntaxNode interfaceNode, CancellationToken cancellationToken,
38[NotNullWhen(true)] out SyntaxNode? classOrStructDecl,
43protected abstract SyntaxNode AddCommentInsideIfStatement(SyntaxNode ifDisposingStatement, SyntaxTriviaList trivia);
44protected abstract SyntaxNode CreateFinalizer(SyntaxGenerator generator, INamedTypeSymbol classType, string disposeMethodDisplayString);
46protected abstract bool IsTypeInInterfaceBaseList([NotNullWhen(true)] SyntaxNode? type);
47protected abstract void AddInterfaceTypes(TTypeDeclarationSyntax typeDeclaration, ArrayBuilder<SyntaxNode> result);
49public ImmutableArray<SyntaxNode> GetInterfaceTypes(SyntaxNode typeDeclaration)
51using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var result);
59Document document, ImplementTypeOptions options, SyntaxNode node, CancellationToken cancellationToken)
78private async Task<ImplementInterfaceInfo?> AnalyzeAsync(Document document, SyntaxNode interfaceType, CancellationToken cancellationToken)
84protected TNode AddComment<TNode>(string comment, TNode node) where TNode : SyntaxNode
87protected TNode AddComments<TNode>(string comment1, string comment2, TNode node) where TNode : SyntaxNode
90protected TNode AddComments<TNode>(string[] comments, TNode node) where TNode : SyntaxNode
146public async Task<ImmutableArray<CodeAction>> GetCodeActionsAsync(Document document, SyntaxNode? interfaceType, CancellationToken cancellationToken)
src\roslyn\src\Analyzers\Core\CodeFixes\MakeMethodAsynchronous\AbstractMakeMethodAsynchronousCodeFixProvider.cs (19)
25protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
33protected abstract SyntaxNode FixMethodSignature(
37SyntaxNode node,
51var node = GetContainingFunction(diagnostic, cancellationToken);
134var syntaxNode = semanticDocument.Root.FindNode(location.Location.SourceSpan, getInnermostNodeForTie: true);
149SyntaxNode syntaxNode,
154foreach (var currentNode in syntaxNode.GetAncestorsOrThis<SyntaxNode>())
182private static IMethodSymbol? GetMethodSymbol(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
204var node = GetContainingFunction(diagnostic, cancellationToken);
249private SyntaxNode? GetContainingFunction(Diagnostic diagnostic, CancellationToken cancellationToken)
252var node = token.GetAncestor(IsAsyncSupportingFunctionSyntax);
260SyntaxNode node,
276var newRoot = await newDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
277if (syntaxPath.TryResolve(newRoot, out SyntaxNode? newNode))
293SyntaxNode node,
296var newNode = FixMethodSignature(addAsyncModifier: true, keepVoid, methodSymbol, node, knownTypes);
308var partialDefinitionNode = partialDefinitionLocation.FindNode(cancellationToken);
309var fixedPartialDefinitionNode =
src\roslyn\src\Analyzers\Core\CodeFixes\MakeMethodSynchronous\AbstractMakeMethodSynchronousCodeFixProvider.cs (27)
24protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
25protected abstract SyntaxNode RemoveAsyncTokenAndFixReturnType(IMethodSymbol methodSymbol, SyntaxNode node, KnownTaskTypes knownTypes);
35var node = token.GetAncestor(IsAsyncSupportingFunctionSyntax);
50Document document, SyntaxNode node, CancellationToken cancellationToken)
71private async Task<Solution> RenameThenRemoveAsyncTokenAsync(Document document, SyntaxNode node, IMethodSymbol methodSymbol, CancellationToken cancellationToken)
83var newRoot = await newDocument.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
84if (syntaxPath.TryResolve(newRoot, out SyntaxNode? newNode))
95Document document, IMethodSymbol methodSymbol, SyntaxNode node, CancellationToken cancellationToken)
101var newNode = RemoveAsyncTokenAndFixReturnType(methodSymbol, node, knownTypes)
104var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
105var newRoot = root.ReplaceNode(node, newNode);
120var syntaxRoot = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
121var methodDeclaration = syntaxRoot.GetAnnotatedNodes(annotation).FirstOrDefault();
173var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
180var newRoot = editor.GetChangedRoot();
195var nameNode = token.Parent;
207var expressionNode = nameNode;
221var invocationExpression = expressionNode.Parent;
227var awaitExpression = invocationExpression.GetRequiredParent();
235var parentMemberAccessExpression = invocationExpression.GetRequiredParent();
236var parentMemberAccessExpressionNameNode = syntaxFacts.GetNameOfMemberAccessExpression(parentMemberAccessExpression);
241var parentExpression = parentMemberAccessExpression.Parent;
244var awaitExpression = parentExpression.GetRequiredParent();
247var currentConfigureAwaitInvocation = syntaxFacts.GetExpressionOfAwaitExpression(currentAwaitExpression);
248var currentMemberAccess = syntaxFacts.GetExpressionOfInvocationExpression(currentConfigureAwaitInvocation);
249var currentInvocationExpression = syntaxFacts.GetExpressionOfMemberAccessExpression(currentMemberAccess);
src\roslyn\src\Analyzers\Core\CodeFixes\RemoveAsyncModifier\AbstractRemoveAsyncModifierCodeFixProvider.cs (38)
20where TReturnStatementSyntax : SyntaxNode
21where TExpressionSyntax : SyntaxNode
23protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
24protected abstract SyntaxNode RemoveAsyncModifier(SyntaxGenerator generator, SyntaxNode methodLikeNode);
25protected abstract SyntaxNode? ConvertToBlockBody(SyntaxNode node, TExpressionSyntax expressionBody);
36var node = token.GetAncestor(IsAsyncSupportingFunctionSyntax);
67var node = token.GetAncestor(IsAsyncSupportingFunctionSyntax);
93private static IMethodSymbol? GetMethodSymbol(SyntaxNode node, SemanticModel semanticModel, CancellationToken cancellationToken)
106private SyntaxNode RemoveAsyncModifier(
110SyntaxNode node,
117var expression = generator.GetExpression(node);
123var blockBodiedNode = ConvertToBlockBody(node, expressionBody);
135var newExpressionBody = WrapExpressionWithTaskFromResult(generator, expressionBody, returnType, knownTypes);
155private static ControlFlowAnalysis? GetControlFlowAnalysis(SyntaxGenerator generator, SemanticModel semanticModel, SyntaxNode node)
166private static SyntaxNode AddReturnStatement(SyntaxGenerator generator, SyntaxNode node)
169private SyntaxNode ChangeReturnStatements(
173SyntaxNode node,
185var returnExpression = syntaxFacts.GetExpressionOfReturnStatement(returnSyntax);
189var returnTaskCompletedTask = GetReturnTaskCompletedTaskStatement(generator, returnType, knownTypes);
195var newExpression = WrapExpressionWithTaskFromResult(generator, returnExpression, returnType, knownTypes);
203private static SyntaxNode GetReturnTaskCompletedTaskStatement(SyntaxGenerator generator, ITypeSymbol returnType, KnownTaskTypes knownTypes)
205SyntaxNode invocation;
208var taskTypeExpression = TypeExpressionForStaticMemberAccess(generator, knownTypes.TaskType);
216var statement = generator.ReturnStatement(invocation);
220private static SyntaxNode WrapExpressionWithTaskFromResult(SyntaxGenerator generator, SyntaxNode expression, ITypeSymbol returnType, KnownTaskTypes knownTypes)
224var taskTypeExpression = TypeExpressionForStaticMemberAccess(generator, knownTypes.TaskType!);
226var memberName = generator.GenericName(nameof(Task.FromResult), unwrappedReturnType);
227var taskFromResult = generator.MemberAccessExpression(taskTypeExpression, memberName);
238private static SyntaxNode TypeExpressionForStaticMemberAccess(SyntaxGenerator generator, INamedTypeSymbol typeSymbol)
243var typeExpression = generator.TypeExpression(typeSymbol);
247static SyntaxNode QualifiedNameToMemberAccess(int qualifiedNameSyntaxKind, int memberAccessExpressionSyntaxKind, SyntaxNode expression, SyntaxGenerator generator)
251var left = QualifiedNameToMemberAccess(qualifiedNameSyntaxKind, memberAccessExpressionSyntaxKind, expression.ChildNodes().First(), generator);
252var right = expression.ChildNodes().Last();
src\roslyn\src\Analyzers\Core\CodeFixes\RemoveUnusedParametersAndValues\AbstractRemoveUnusedValuesCodeFixProvider.cs (77)
47where TExpressionSyntax : SyntaxNode
48where TStatementSyntax : SyntaxNode
53where TVariableDeclaratorSyntax : SyntaxNode
54where TSwitchCaseBlockSyntax : SyntaxNode
55where TSwitchCaseLabelOrClauseSyntax : SyntaxNode
75protected abstract SyntaxNode? TryUpdateNameForFlaggedNode(SyntaxNode node, SyntaxToken newName);
99protected abstract SyntaxNode GetReplacementNodeForCompoundAssignment(
100SyntaxNode originalCompoundAssignment,
101SyntaxNode newAssignmentTarget,
109protected abstract SyntaxNode GetReplacementNodeForVarPattern(SyntaxNode originalVarPattern, SyntaxNode newNameNode);
121protected virtual SyntaxNode? TryUpdateParentOfUpdatedNode(SyntaxNode parent, SyntaxNode newNameNode, SyntaxEditor editor, ISyntaxFacts syntaxFacts, SemanticModel semanticModel) => null;
130protected abstract SyntaxNode ComputeReplacementNode(SyntaxNode originalOldNode, SyntaxNode changedOldNode, SyntaxNode proposedReplacementNode);
164var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
165var node = root.FindNode(context.Span, getInnermostNodeForTie: true);
239private static IEnumerable<IGrouping<SyntaxNode, Diagnostic>> GetDiagnosticsGroupedByMember(
242SyntaxNode root,
264private static IEnumerable<IGrouping<SyntaxNode, Diagnostic>> GetDiagnosticsGroupedByMember(
267SyntaxNode root)
278var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
288var newRoot = await GetNewRootAsync(preprocessedDocument, formattingOptions, diagnostics, cancellationToken).ConfigureAwait(false);
292private async Task<SyntaxNode> GetNewRootAsync(
298var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
324var containingMemberDeclaration = diagnosticsToFix.Key;
334var currentRoot = editor.GetChangedRoot();
335var newRoot = await PostProcessDocumentAsync(document, options, currentRoot,
349SyntaxNode root,
350SyntaxNode containingMemberDeclaration,
386SyntaxNode root,
411var expression = syntaxFacts.GetExpressionOfExpressionStatement(expressionStatement);
427var expression = syntaxFacts.GetExpressionOfExpressionStatement(node);
429var localDecl = editor.Generator.LocalDeclarationStatement(
445SyntaxNode root,
446SyntaxNode containingMemberDeclaration,
469using var _1 = PooledDictionary<SyntaxNode, SyntaxNode>.GetInstance(out var nodeReplacementMap);
470using var _2 = PooledHashSet<SyntaxNode>.GetInstance(out var nodesToRemove);
471using var _3 = PooledHashSet<(TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode node)>.GetInstance(out var nodesToAdd);
473using var _4 = PooledHashSet<SyntaxNode>.GetInstance(out var processedNodes);
549var newNameNode = TryUpdateNameForFlaggedNode(node, newNameToken);
569var newParentNode = TryUpdateParentOfUpdatedNode(node.GetRequiredParent(), newNameNode, editor, syntaxFacts, semanticModel);
645foreach (var node in nodesToRemove)
673IEnumerable<(SyntaxNode node, bool isUnusedLocalAssignment)> GetNodesToFix()
677var node = root.FindNode(diagnostic.Location.SourceSpan, getInnermostNodeForTie: true);
691void InsertLocalDeclarationStatement(TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode node)
694var insertionNode = node.FirstAncestorOrSelf<SyntaxNode>(
724bool ShouldRemoveStatement(TLocalDeclarationStatementSyntax localDeclarationStatement, out SeparatedSyntaxList<SyntaxNode> variables)
730foreach (var variable in variables)
744private async Task<SyntaxNode> PostProcessDocumentAsync(
747SyntaxNode currentRoot,
773private static async Task<SyntaxNode> PostProcessDocumentCoreAsync(
774Func<SyntaxNode, Document, SyntaxFormattingOptions, CancellationToken, Task<SyntaxNode>> processMemberDeclarationAsync,
775SyntaxNode currentRoot,
784var newRoot = await newDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
785using var _1 = PooledDictionary<SyntaxNode, SyntaxNode>.GetInstance(out var memberDeclReplacementsMap);
787foreach (var memberDecl in newRoot.DescendantNodes().Where(n => n.HasAnnotation(s_memberAnnotation)))
789var newMemberDecl = await processMemberDeclarationAsync(memberDecl, newDocument, options, cancellationToken).ConfigureAwait(false);
805private async Task<SyntaxNode> ReplaceDiscardDeclarationsWithAssignmentsAsync(SyntaxNode memberDeclaration, Document document, SyntaxFormattingOptions options, CancellationToken cancellationToken)
821private async Task<SyntaxNode> AdjustLocalDeclarationsAsync(
822SyntaxNode memberDeclaration,
843var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
844var rootWithTrackedNodes = root.TrackNodes(originalDeclStatementsToMoveOrRemove);
902var rootWithRemovedDeclaration = root.RemoveNode(newDecl, SyntaxGenerator.DefaultRemoveOptions | SyntaxRemoveOptions.KeepLeadingTrivia);
929SyntaxNode memberDeclaration,
934private readonly SyntaxNode _memberDeclaration = memberDeclaration;
940public SyntaxToken GenerateUniqueNameAtSpanStart(SyntaxNode node)
src\roslyn\src\Analyzers\Core\CodeFixes\UseAutoProperty\AbstractUseAutoPropertyCodeFixProvider.cs (30)
47where TTypeDeclarationSyntax : SyntaxNode
48where TPropertyDeclaration : SyntaxNode
49where TVariableDeclarator : SyntaxNode
50where TConstructorDeclaration : SyntaxNode
51where TExpression : SyntaxNode
63protected abstract TPropertyDeclaration GetPropertyDeclaration(SyntaxNode node);
64protected abstract SyntaxNode GetNodeToRemove(TVariableDeclarator declarator);
69Document document, SyntaxNode finalPropertyDeclaration);
71protected abstract Task<SyntaxNode> UpdatePropertyAsync(
141var updatedProperty = await GetUpdatedPropertyDeclarationAsync().ConfigureAwait(false);
182var nodeToRemove = GetNodeToRemove(declarator);
228var declaratorTreeRoot = await fieldDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
235var finalFieldRoot = await FormatAsync(updatedFieldDocument, updatedProperty, cancellationToken).ConfigureAwait(false);
242var fieldTreeRoot = await fieldDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
243var propertyTreeRoot = await propertyDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
245var newFieldTreeRoot = fieldTreeRoot.RemoveNode(nodeToRemove, syntaxRemoveOptions);
247var newPropertyTreeRoot = propertyTreeRoot.ReplaceNode(propertyDeclaration, updatedProperty);
261async ValueTask<SyntaxNode> GetUpdatedPropertyDeclarationAsync()
284var updatedProperty = await UpdatePropertyAsync(
336var newNameNode = generator.IdentifierName(property.Name);
343var node = location.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
353var qualifiedName = generator.MemberAccessExpression(
430ISyntaxFacts syntaxFacts, SyntaxNode nodeToRemove)
441ISyntaxFactsService syntaxFacts, TPropertyDeclaration property, SyntaxNode fieldToRemove)
454private async Task<SyntaxNode> FormatAsync(
456SyntaxNode finalPropertyDeclaration,
533var node = location.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
540var assignment = node.GetRequiredParent();
541var rightSide = syntaxFacts.GetRightHandSideOfAssignment(assignment);
567var node = location.Location.FindNode(getInnermostNodeForTie: true, cancellationToken);
src\roslyn\src\Analyzers\Core\CodeFixes\UseCoalesceExpression\AbstractUseCoalesceExpressionForIfNullStatementCheckCodeFixProvider.cs (18)
28SemanticModel semanticModel, SyntaxNode expressionToCoalesce,
29SyntaxNode leftAssignmentPart, SyntaxNode rightAssignmentPart,
42var expressionToCoalesce = diagnostic.AdditionalLocations[0].FindNode(getInnermostNodeForTie: true, cancellationToken);
43var ifStatement = diagnostic.AdditionalLocations[1].FindNode(getInnermostNodeForTie: true, cancellationToken);
44var whenTrueStatement = diagnostic.AdditionalLocations[2].FindNode(getInnermostNodeForTie: true, cancellationToken);
55var containingStatement = expressionToCoalesce.FirstAncestorOrSelf<SyntaxNode>(syntaxFacts.IsStatement);
72ImmutableArray<SyntaxTrivia> GetLeadingComments(SyntaxNode node)
83SyntaxNode TryAddExplicitCast(SyntaxNode expressionToCoalesce, SyntaxNode whenTrueStatement)
95syntaxFacts.GetPartsOfAssignmentStatement(whenTrueStatement, out var left, out var right);
103SyntaxNode GetWhenNullExpression(SyntaxNode whenTrueStatement)
107syntaxFacts.GetPartsOfAssignmentStatement(whenTrueStatement, out _, out var right);
112var expression = syntaxFacts.GetExpressionOfThrowStatement(whenTrueStatement);
src\roslyn\src\Analyzers\Core\CodeFixes\UseCoalesceExpression\UseCoalesceExpressionForTernaryConditionalCheckCodeFixProvider.cs (18)
60var root = editor.OriginalRoot;
61var conditionalExpression = root.FindNode(diagnostic.AdditionalLocations[0].SourceSpan, getInnermostNodeForTie: true);
62var conditionalPartHigh = root.FindNode(diagnostic.AdditionalLocations[1].SourceSpan);
63var whenPart = root.FindNode(diagnostic.AdditionalLocations[2].SourceSpan);
65conditionalExpression, out var condition, out var whenTrue, out var whenFalse);
67var conditionalPartLow = syntaxFacts.WalkDownParentheses(conditionalPartHigh);
72c, out var currentCondition, out var currentWhenTrue, out var currentWhenFalse);
74var coalesceExpression = GetCoalesceExpression(
90private static SyntaxNode GetCoalesceExpression(
92SyntaxNode whenPart, SyntaxNode whenTrue,
93SyntaxNode conditionalPartLow,
94SyntaxNode currentWhenTrue, SyntaxNode currentWhenFalse)
src\roslyn\src\Analyzers\Core\CodeFixes\UseNullPropagation\AbstractUseNullPropagationCodeFixProvider.cs (26)
37TElementBindingArgumentListSyntax> : ForkingSyntaxEditorBasedCodeFixProvider<SyntaxNode>
44where TExpressionSyntax : SyntaxNode
45where TStatementSyntax : SyntaxNode
55where TElementBindingArgumentListSyntax : SyntaxNode
57protected abstract SyntaxNode PostProcessElseIf(TIfStatementSyntax ifStatement, TStatementSyntax newWhenTrueStatement);
82SyntaxNode conditionalExpressionOrIfStatement,
105var root = editor.OriginalRoot;
117conditionalExpression, out _, out var whenTrue, out _);
135conditionalExpression, out var currentCondition, out var currentWhenTrue, out var currentWhenFalse);
137var currentWhenPartToCheck = whenPart == whenTrue ? currentWhenTrue : currentWhenFalse;
139var unwrappedCurrentWhenPartToCheck = syntaxFacts.WalkDownParentheses(currentWhenPartToCheck);
148var newNode = CreateConditionalAccessExpression(
163var root = editor.OriginalRoot;
175SyntaxNode nodeToBeReplaced = ifStatement;
229using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var replacementNodes);
242TContainer container, SyntaxNode match) where TContainer : SyntaxNode
248var memberAccess = match.Parent;
249var nameNode = syntaxFacts.GetNameOfMemberAccessExpression(memberAccess);
271TContainer whenPart, SyntaxNode match, SyntaxNode matchParent) where TContainer : SyntaxNode
275var memberAccess = matchParent;
307private (TExpressionSyntax conditionalPart, SyntaxNode whenPart)? GetPartsOfConditionalExpression(
src\roslyn\src\Compilers\Core\AnalyzerDriver\DeclarationComputer.cs (14)
17internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, ArrayBuilder<SyntaxNode>? executableCodeBlocks, CancellationToken cancellationToken)
23internal static DeclarationInfo GetDeclarationInfo(SyntaxNode node, ISymbol? declaredSymbol, ArrayBuilder<SyntaxNode>? executableCodeBlocks)
25var codeBlocks = ImmutableArray<SyntaxNode>.Empty;
36internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, CancellationToken cancellationToken)
38return GetDeclarationInfo(model, node, getSymbol, (ArrayBuilder<SyntaxNode>?)null, cancellationToken);
41internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, SyntaxNode executableCodeBlock, CancellationToken cancellationToken)
43var builder = ArrayBuilder<SyntaxNode>.GetInstance();
52internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, CancellationToken cancellationToken, params SyntaxNode[] executableCodeBlocks)
54var builder = ArrayBuilder<SyntaxNode>.GetInstance();
63private static ISymbol? GetDeclaredSymbol(SemanticModel model, SyntaxNode node, bool getSymbol, CancellationToken cancellationToken)
Wrapping\BinaryExpression\AbstractBinaryExpressionWrapper.cs (6)
22where TBinaryExpressionSyntax : SyntaxNode
44Document document, int position, SyntaxNode node, SyntaxWrappingOptions options, bool containsSyntaxError, CancellationToken cancellationToken)
104PrecedenceKind precedence, SyntaxNode expr, ArrayBuilder<SyntaxNodeOrToken> result)
115_syntaxFacts.GetPartsOfBinaryExpression(currentNodeOrToken.AsNode()!, out var left, out var opToken, out var right);
127bool IsValidBinaryExpression(PrecedenceKind precedence, SyntaxNode? node)
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\DefineAccessorsForAttributeArguments.Fixer.cs (10)
26SyntaxNode root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
27SyntaxNode node = root.FindNode(context.Span);
37SyntaxNode parameter = generator.GetDeclaration(node, DeclarationKind.Parameter);
50SyntaxNode property = generator.GetDeclaration(node, DeclarationKind.Property);
77private static async Task<Document> AddAccessorAsync(Document document, SyntaxNode parameter, CancellationToken cancellationToken)
100SyntaxNode newProperty = editor.Generator.PropertyDeclaration(propName,
123private static async Task<Document> MakePublicAsync(Document document, SyntaxNode getMethod, SyntaxNode property, CancellationToken cancellationToken)
137SyntaxNode setter = editor.Generator.GetAccessor(property, DeclarationKind.SetAccessor);
151private static async Task<Document> RemoveSetterAsync(Document document, SyntaxNode setMethod, CancellationToken cancellationToken)
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\EquatableAnalyzer.Fixer.cs (16)
37SyntaxNode root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
39SyntaxNode declaration = root.FindNode(context.Span);
91private static async Task<Document> ImplementEquatableInStructAsync(Document document, SyntaxNode declaration,
98var equalsMethod = generator.MethodDeclaration(
116private static async Task<Document> OverrideObjectEqualsAsync(Document document, SyntaxNode declaration,
122var argumentName = generator.IdentifierName("obj");
124SyntaxNode returnStatement;
139var equalsMethod = generator.MethodDeclaration(
175private static SyntaxNode GetReturnStatementForExplicitClass(SyntaxGenerator generator,
176INamedTypeSymbol typeSymbol, SyntaxNode argumentName, INamedTypeSymbol equatableType)
190private static SyntaxNode GetReturnStatementForExplicitStruct(SyntaxGenerator generator,
191INamedTypeSymbol typeSymbol, SyntaxNode argumentName, INamedTypeSymbol equatableType)
209private static SyntaxNode GetReturnStatementForImplicitClass(SyntaxGenerator generator,
210INamedTypeSymbol typeSymbol, SyntaxNode argumentName)
221private static SyntaxNode GetReturnStatementForImplicitStruct(SyntaxGenerator generator,
222INamedTypeSymbol typeSymbol, SyntaxNode argumentName)
Microsoft.CodeQuality.Analyzers\ApiDesignGuidelines\UriParametersShouldNotBeStrings.Fixer.cs (11)
51var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
52var parameter = root.FindNode(span, getInnermostNodeForTie: true);
59var methodNode = generator.GetDeclaration(parameter, DeclarationKind.Method);
66var targetNode = generator.GetDeclaration(parameter, DeclarationKind.Class) ?? generator.GetDeclaration(parameter, DeclarationKind.Struct);
76private static async Task<Document> AddMethodAsync(Document document, TextSpan span, SyntaxNode methodNode, SyntaxNode targetNode, INamedTypeSymbol uriType, CancellationToken cancellationToken)
91var newMethod = CreateNewMethod(generator, methodSymbol, parameterIndex, editor.SemanticModel.Compilation, uriType);
97private static SyntaxNode CreateNewMethod(
101var originalParameter = generator.ParameterDeclaration(methodSymbol.Parameters[parameterIndex]);
104var newParameter = generator.ReplaceNode(originalParameter, generator.GetType(originalParameter), generator.TypeExpression(uriType));
107var original = generator.MethodDeclaration(methodSymbol, generator.DefaultMethodBody(compilation));
Microsoft.CodeQuality.Analyzers\Maintainability\UseCrossPlatformIntrinsicsFixer.cs (12)
28SyntaxNode node = editor.OriginalRoot.FindNode(diagnostic.Location.SourceSpan, getInnermostNodeForTie: true);
48protected virtual SyntaxNode ReplaceNode(SyntaxNode currentNode, SyntaxGenerator generator, RuleKind ruleKind)
64protected abstract SyntaxNode ReplaceWithUnaryOperator(SyntaxNode currentNode, SyntaxGenerator generator, Func<SyntaxNode, SyntaxNode?> unaryOpFunc);
66protected abstract SyntaxNode ReplaceWithBinaryOperator(SyntaxNode currentNode, SyntaxGenerator generator, bool isCommutative, Func<SyntaxNode, SyntaxNode, SyntaxNode?> binaryOpFunc);
Microsoft.NetCore.Analyzers\Performance\ConstantExpectedAnalyzer.cs (11)
381var syntax = attributeData.ApplicationSyntaxReference?.GetSyntax() ?? parameterSymbol.DeclaringSyntaxReferences[0].GetSyntax();
406var syntax = attributeData.ApplicationSyntaxReference?.GetSyntax() ?? parameterSymbol.DeclaringSyntaxReferences[0].GetSyntax();
586public abstract Location? GetMinLocation(SyntaxNode attributeSyntax);
587public abstract Location? GetMaxLocation(SyntaxNode attributeSyntax);
589public static ImmutableArray<Diagnostic> ParameterIsInvalid(string expectedTypeName, SyntaxNode attributeSyntax) => ImmutableArray.Create(Diagnostic.Create(CA1856.UnsupportedTypeRule, attributeSyntax.GetLocation(), expectedTypeName));
591public Diagnostic MinIsIncompatible(string expectedTypeName, SyntaxNode attributeSyntax) => Diagnostic.Create(CA1856.IncompatibleConstantTypeRule, GetMinLocation(attributeSyntax)!, ConstantExpectedMin, expectedTypeName);
593public Diagnostic MaxIsIncompatible(string expectedTypeName, SyntaxNode attributeSyntax) => Diagnostic.Create(CA1856.IncompatibleConstantTypeRule, GetMaxLocation(attributeSyntax)!, ConstantExpectedMax, expectedTypeName);
595public Diagnostic MinIsOutOfRange(SyntaxNode attributeSyntax, string typeMinValue, string typeMaxValue) => Diagnostic.Create(CA1856.InvalidBoundsRule, GetMinLocation(attributeSyntax)!, ConstantExpectedMin, typeMinValue, typeMaxValue);
597public Diagnostic MaxIsOutOfRange(SyntaxNode attributeSyntax, string typeMinValue, string typeMaxValue) => Diagnostic.Create(CA1856.InvalidBoundsRule, GetMaxLocation(attributeSyntax)!, ConstantExpectedMax, typeMinValue, typeMaxValue);
599public static Diagnostic MinMaxIsInverted(SyntaxNode attributeSyntax) => Diagnostic.Create(CA1856.InvertedRangeRule, attributeSyntax.GetLocation());
601public ImmutableArray<Diagnostic> GetError(ErrorKind errorFlags, IParameterSymbol parameterSymbol, SyntaxNode attributeSyntax, string typeMinValue, string typeMaxValue)
Microsoft.NetCore.Analyzers\Performance\DoNotUseCountWhenAnyCanBeUsed.Fixer.cs (14)
57var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
58var node = root.FindNode(context.Span);
66this.TryGetFixer(node, operation!, isAsync, out var expression, out var arguments))
84SyntaxNode node,
87[NotNullWhen(returnValue: true)] out SyntaxNode? expression,
88[NotNullWhen(returnValue: true)] out IEnumerable<SyntaxNode>? arguments);
94private readonly SyntaxNode _pattern;
95private readonly SyntaxNode _expression;
96private readonly IEnumerable<SyntaxNode> _arguments;
102SyntaxNode pattern,
103SyntaxNode expression,
104IEnumerable<SyntaxNode> arguments,
129var memberAccess = generator.MemberAccessExpression(this._expression.WithoutTrailingTrivia(), this._isAsync ? AsyncMethodName : SyncMethodName);
130var replacementSyntax = generator.InvocationExpression(memberAccess, _arguments);
Microsoft.NetCore.Analyzers\Performance\PreferHashDataOverComputeHash.Fixer.cs (52)
28var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
36!Helper.TryGetHashCreationNodes(root, diagnostic, out var createHashNode, out var disposeNodes))
57private readonly SyntaxNode _root;
58public HashDataCodeAction(Document document, HashInstanceTarget hashInstanceTarget, PreferHashDataOverComputeHashFixHelper helper, SyntaxNode root)
72var root = _helper.TrackTarget(_root, _hashInstanceTarget);
117SyntaxNode root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
138private HashInstanceTarget[]? CollectTargets(SyntaxNode root, IGrouping<SyntaxTree, Diagnostic> grouping, CancellationToken cancellationToken)
140var dictionary = PooledDictionary<SyntaxNode, HashInstanceTarget>.GetInstance();
162if (!_helper.TryGetHashCreationNode(root, d, out var createNode, out var hashCreationIndex))
182internal SyntaxNode FixDocumentRoot(SyntaxNode root, HashInstanceTarget[] hashInstanceTargets)
195public HashInstanceTarget(SyntaxNode createNode, SyntaxNode[]? disposeNodes)
207public SyntaxNode? CreateNode { get; }
210public SyntaxNode[]? DisposeNodes { get; }
216public ComputeHashSyntaxHolder(SyntaxNode computeHashNode, PreferHashDataOverComputeHashAnalyzer.ComputeType computeType, string hashTypeName)
222public SyntaxNode ComputeHashNode { get; }
269public bool TryComputeHashNode(SyntaxNode root, Diagnostic diagnostic, [NotNullWhen(true)] out ComputeHashSyntaxHolder? computeHashHolder)
278var computeHashNode = root.FindNode(diagnostic.Location.SourceSpan, getInnermostNodeForTie: true);
291public bool TryGetHashCreationNodes(SyntaxNode root, Diagnostic diagnostic, [NotNullWhen(true)] out SyntaxNode? createNode, out SyntaxNode[]? disposeNodes)
303public bool TryGetHashCreationNode(SyntaxNode root, Diagnostic diagnostic, [NotNullWhen(true)] out SyntaxNode? createNode, out int hashCreationIndex)
317public SyntaxNode[]? GetDisposeNodes(SyntaxNode root, Diagnostic diagnostic, int hashCreationIndex)
326var disposeNodes = new SyntaxNode[disposeCount];
330var node = root.FindNode(additionalLocations[hashCreationIndex + i + 1].SourceSpan);
342public SyntaxNode TrackTargets(SyntaxNode root, HashInstanceTarget[] targets)
344var list = new List<SyntaxNode>();
366public SyntaxNode TrackTarget(SyntaxNode root, HashInstanceTarget target)
368var list = new List<SyntaxNode>();
387public SyntaxNode FixHashInstanceTarget(SyntaxNode root, HashInstanceTarget hashInstanceTarget)
392var tracked = root.GetCurrentNode(c.ComputeHashNode)!;
393var hashDataNode = GetHashDataSyntaxNode(c.ComputeType, namespacePrefix, c.HashTypeName, tracked);
409foreach (var disposeNode in hashInstanceTarget.DisposeNodes)
411var trackedDisposeNode = root.GetCurrentNode(disposeNode)!;
417protected SyntaxNode RemoveNodeWithFormatting(SyntaxNode root, SyntaxNode nodeToRemove)
430var parent = nodeToRemove.Parent!;
432var newParent = parent.RemoveNode(nodeToRemove, option)!
449protected abstract SyntaxNode GetHashDataSyntaxNode(PreferHashDataOverComputeHashAnalyzer.ComputeType computeType, string? namespacePrefix, string hashTypeName, SyntaxNode computeHashNode);
450protected abstract SyntaxNode FixHashCreateNode(SyntaxNode root, SyntaxNode createNode);
451protected abstract string? GetQualifiedPrefixNamespaces(SyntaxNode computeHashNode, SyntaxNode? createNode);
Microsoft.NetCore.Analyzers\Performance\RecommendCaseInsensitiveStringComparison.Fixer.cs (26)
28protected abstract IEnumerable<SyntaxNode> GetNewArgumentsForInvocation(SyntaxGenerator generator,
30string? leftOffendingMethod, string? rightOffendingMethod, out SyntaxNode? mainInvocationInstance);
32protected abstract IEnumerable<SyntaxNode> GetNewArgumentsForBinary(SyntaxGenerator generator, SyntaxNode rightNode, SyntaxNode typeMemberAccess);
44SyntaxNode root = await doc.GetRequiredSyntaxRootAsync(ct).ConfigureAwait(false);
46if (root.FindNode(context.Span, getInnermostNodeForTie: true) is not SyntaxNode node)
141private Task<Document> FixInvocationAsync(SyntaxGenerator generator, Document doc, SyntaxNode root, IInvocationOperation mainInvocation,
173IEnumerable<SyntaxNode> newArguments = GetNewArgumentsForInvocation(generator,
175leftOffendingMethod, rightOffendingMethod, out SyntaxNode? mainInvocationInstance);
177SyntaxNode stringMemberAccessExpression = generator.MemberAccessExpression(mainInvocationInstance, mainInvocation.TargetMethod.Name);
179SyntaxNode newInvocation = generator.InvocationExpression(stringMemberAccessExpression, newArguments).WithTriviaFrom(mainInvocation.Syntax);
181SyntaxNode newRoot = generator.ReplaceNode(root, mainInvocation.Syntax, newInvocation.WithTriviaFrom(mainInvocation.Syntax));
185private Task<Document> FixBinaryAsync(SyntaxGenerator generator, Document doc, SyntaxNode root, IBinaryOperation binaryOperation,
188SyntaxNode leftNode = binaryOperation.LeftOperand is IInvocationOperation leftInvocation ?
192SyntaxNode rightNode = binaryOperation.RightOperand is IInvocationOperation rightInvocation ?
196SyntaxNode memberAccess = generator.MemberAccessExpression(leftNode, RCISCAnalyzer.StringEqualsMethodName).WithTriviaFrom(leftNode);
198SyntaxNode stringComparisonTypeExpression = generator.TypeExpressionForStaticMemberAccess(stringComparisonType);
200SyntaxNode typeMemberAccess = generator.MemberAccessExpression(stringComparisonTypeExpression, caseChangingApproachValue);
202IEnumerable<SyntaxNode> newArguments = GetNewArgumentsForBinary(generator, rightNode, typeMemberAccess);
204SyntaxNode equalsInvocation = generator.InvocationExpression(memberAccess, newArguments);
207var replacement = binaryOperation.OperatorKind == BinaryOperatorKind.NotEquals ?
211SyntaxNode newRoot = generator.ReplaceNode(root, binaryOperation.Syntax, replacement.WithTriviaFrom(binaryOperation.Syntax));
215protected static SyntaxNode GetNewStringComparisonArgument(SyntaxGenerator generator,
219SyntaxNode stringComparisonEnumValueAccess = generator.MemberAccessExpression(
225SyntaxNode stringComparisonArgument = isAnyArgumentNamed ?
Microsoft.NetCore.Analyzers\Performance\UsePropertyInsteadOfCountMethodWhenAvailable.Fixer.cs (14)
51var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
52var node = root.FindNode(context.Span, getInnermostNodeForTie: true);
57TryGetExpression(node, out var expressionNode, out var nameNode))
75SyntaxNode invocationNode,
76[NotNullWhen(returnValue: true)] out SyntaxNode? memberAccessNode,
77[NotNullWhen(returnValue: true)] out SyntaxNode? nameNode);
88private readonly SyntaxNode _invocationNode;
89private readonly SyntaxNode _memberAccessNode;
90private readonly SyntaxNode _nameNode;
95SyntaxNode invocationNode,
96SyntaxNode memberAccessNode,
97SyntaxNode nameNode,
118var replacementSyntax = generator.ReplaceNode(this._memberAccessNode, this._nameNode, generator.IdentifierName(_propertyName))
Microsoft.NetCore.Analyzers\Performance\UseSearchValues.Fixer.cs (31)
36var root = await context.Document.GetSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
42var node = root.FindNode(context.Span, getInnermostNodeForTie: true);
56protected abstract ValueTask<(SyntaxNode TypeDeclaration, INamedTypeSymbol? TypeSymbol, bool IsRealType)> GetTypeSymbolAsync(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
58protected abstract SyntaxNode ReplaceSearchValuesFieldName(SyntaxNode node);
60protected abstract SyntaxNode GetDeclaratorInitializer(SyntaxNode syntax);
62protected abstract SyntaxNode? TryReplaceArrayCreationWithInlineLiteralExpression(IOperation operation);
64private async Task<Document> ConvertToSearchValuesAsync(Document document, SyntaxNode argumentNode, CancellationToken cancellationToken)
85SyntaxNode createArgument = CreateSearchValuesCreateArgument(argumentOperation.Syntax, argumentOperation.Value, out SyntaxNode? memberToRemove, cancellationToken);
112(var typeDeclaration, var typeSymbol, bool isRealType) = await GetTypeSymbolAsync(semanticModel, argumentNode, cancellationToken).ConfigureAwait(false);
126var newField = generator.FieldDeclaration(
168private static void ImportSystemNamespaceIfNeeded(DocumentEditor editor, INamedTypeSymbol memoryExtensions, SyntaxNode node)
174SyntaxNode withoutSystemImport = editor.GetChangedRoot();
175SyntaxNode systemNamespaceImportStatement = editor.Generator.NamespaceImportDeclaration(nameof(System));
176SyntaxNode withSystemImport = editor.Generator.AddNamespaceImports(withoutSystemImport, systemNamespaceImportStatement);
269private SyntaxNode CreateSearchValuesCreateArgument(SyntaxNode originalSyntax, IOperation argument, out SyntaxNode? memberToRemove, CancellationToken cancellationToken)
271SyntaxNode createArgument = CreateSearchValuesCreateArgumentCore(originalSyntax, argument, out memberToRemove, cancellationToken);
290private SyntaxNode CreateSearchValuesCreateArgumentCore(SyntaxNode originalSyntax, IOperation argument, out SyntaxNode? memberToRemove, CancellationToken cancellationToken)
306else if (TryGetArgumentFromLocalOrFieldReference(argument, out SyntaxNode? createArgument, out memberToRemove))
319bool TryGetArgumentFromStringToCharArray(IOperation operation, [NotNullWhen(true)] out SyntaxNode? createArgument, out SyntaxNode? memberToRemove)
341bool TryGetArgumentFromLocalOrFieldReference(IOperation operation, [NotNullWhen(true)] out SyntaxNode? createArgument, out SyntaxNode? memberToRemove)
367SyntaxNode GetDeclarator(ISymbol symbol)
Microsoft.NetCore.Analyzers\Performance\UseStartsWithInsteadOfIndexOfComparisonWithZero.Fixer.cs (18)
26var root = await document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
27var node = root.FindNode(context.Span, getInnermostNodeForTie: true);
33var instance = root.FindNode(diagnostic.AdditionalLocations[0].SourceSpan);
34var arguments = new SyntaxNode[diagnostic.AdditionalLocations.Count - 1];
66var lengthAccess = generator.MemberAccessExpression(instance, "Length");
67var zeroLiteral = generator.LiteralExpression(0);
69var indexed = generator.ElementAccessExpression(instance, zeroLiteral);
70var ch = root.FindNode(arguments[0].Span, getInnermostNodeForTie: true);
72var replacement = shouldNegate
91protected abstract SyntaxNode HandleCharStringComparisonOverload(SyntaxGenerator generator, SyntaxNode instance, SyntaxNode[] arguments, bool shouldNegate);
92protected abstract SyntaxNode AppendElasticMarker(SyntaxNode replacement);
94protected static SyntaxNode CreateStartsWithInvocationFromArguments(SyntaxGenerator generator, SyntaxNode instance, SyntaxNode[] arguments, bool shouldNegate)
96var expression = generator.InvocationExpression(generator.MemberAccessExpression(instance, "StartsWith"), arguments);
Microsoft.NetCore.Analyzers\Performance\UseStringContainsCharOverloadWithSingleCharacters.Fixer.cs (8)
22var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
23var violatingNode = root.FindNode(context.Span, getInnermostNodeForTie: true);
38protected abstract bool TryGetArgumentName(SyntaxNode violatingNode, out string argumentName);
39protected abstract bool TryGetLiteralValueFromNode(SyntaxNode violatingNode, out char charLiteral);
49private readonly SyntaxNode _nodeToBeFixed;
56public ReplaceStringLiteralWithCharLiteralCodeAction(Document document, SyntaxNode nodeToBeFixed, char sourceCharLiteral)
63public ReplaceStringLiteralWithCharLiteralCodeAction(Document document, SyntaxNode nodeToBeFixed, char sourceCharLiteral, string? argumentName) : this(document, nodeToBeFixed, sourceCharLiteral)
71var newExpression = editor.Generator.LiteralExpression(_sourceCharLiteral);
Microsoft.NetCore.Analyzers\Performance\UseStringMethodCharOverloadWithSingleCharacters.Fixer.cs (7)
23var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
24var argumentListNode = root.FindNode(context.Span, getInnermostNodeForTie: true);
38protected abstract bool TryGetChar(SemanticModel model, SyntaxNode argumentListNode, out char c);
40protected abstract CodeAction CreateCodeAction(Document document, SyntaxNode argumentListNode, char sourceCharLiteral);
45private readonly SyntaxNode _argumentListNode;
48protected ReplaceStringLiteralWithCharLiteralCodeAction(Document document, SyntaxNode argumentListNode, char sourceCharLiteral)
59protected abstract void ApplyFix(DocumentEditor editor, SemanticModel model, SyntaxNode oldArgumentListNode, char c);
Microsoft.NetCore.Analyzers\Runtime\DetectPreviewFeatureAnalyzer.cs (22)
215protected abstract SyntaxNode? GetPreviewInterfaceNodeForTypeImplementingPreviewInterface(ISymbol typeSymbol, ISymbol previewInterfaceSymbol);
217protected abstract SyntaxNode? GetConstraintSyntaxNodeForTypeConstrainedByPreviewTypes(ISymbol typeOrMethodSymbol, ISymbol previewInterfaceConstraintSymbol);
219protected abstract SyntaxNode? GetPreviewReturnTypeSyntaxNodeForMethodOrProperty(ISymbol methodOrPropertySymbol, ISymbol previewReturnTypeSymbol);
221protected abstract SyntaxNode? GetPreviewParameterSyntaxNodeForMethod(IMethodSymbol methodSymbol, ISymbol parameterSymbol);
223protected abstract SyntaxNode? GetPreviewSyntaxNodeForFieldsOrEvents(ISymbol fieldOrEventSymbol, ISymbol previewSymbol);
225protected abstract SyntaxNode? GetPreviewImplementsClauseSyntaxNodeForMethodOrProperty(ISymbol methodOrPropertySymbol, ISymbol previewSymbol);
342SyntaxNode? node = GetPreviewSyntaxNodeForFieldsOrEvents(symbol, symbolType);
357out SyntaxNode? syntaxNode,
396SyntaxNode? interfaceNode = GetPreviewInterfaceNodeForTypeImplementingPreviewInterface(symbol, anInterface);
412out SyntaxNode? syntaxNode))
429SyntaxNode? baseTypeNode = GetPreviewInterfaceNodeForTypeImplementingPreviewInterface(symbol, baseType);
442private SyntaxNode? GetPreviewSyntaxNodeFromSymbols(ISymbol symbol,
461out SyntaxNode? previewSyntaxNode,
543SyntaxNode? previewImplementsClause = null;
583SyntaxNode? returnTypeNode = GetPreviewReturnTypeSyntaxNodeForMethodOrProperty(method.IsPropertyGetter() ? method.AssociatedSymbol! : method, methodReturnType);
599SyntaxNode? returnTypeNode = GetPreviewReturnTypeSyntaxNodeForMethodOrProperty(method.IsPropertyGetter() ? method.AssociatedSymbol! : method, innerPreviewSymbol);
622SyntaxNode? previewParameterNode = GetPreviewParameterSyntaxNodeForMethod(method, parameterType);
637out SyntaxNode? syntaxNode,
656out SyntaxNode? referencedPreviewTypeSyntaxNode))
732out SyntaxNode? _,
851out SyntaxNode? previewSyntaxNode)
933SyntaxNode node,
Microsoft.NetCore.Analyzers\Runtime\DoNotUseEnumerableMethodsOnIndexableCollectionsInsteadUseTheCollectionDirectly.Fixer.cs (18)
47var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
48var invocationNode = root.FindNode(context.Span, getInnermostNodeForTie: true);
60var collectionSyntax = invocationOperation.GetInstanceSyntax();
84private Task<Document> UseCollectionDirectlyAsync(Document document, SyntaxNode root, SyntaxNode invocationNode, SyntaxNode collectionSyntax, string methodName)
88var elementAccessNode = GetReplacementNode(methodName, generator, collectionSyntax);
94var newRoot = root.ReplaceNode(invocationNode, elementAccessNode.WithTrailingTrivia(invocationNode.GetTrailingTrivia()));
98private SyntaxNode? GetReplacementNode(string methodName, SyntaxGenerator generator, SyntaxNode collectionSyntax)
100var adjustedCollectionSyntax = AdjustSyntaxNode(collectionSyntax);
101var adjustedCollectionSyntaxNoTrailingTrivia = adjustedCollectionSyntax.WithoutTrailingTrivia();
105var zeroLiteral = generator.LiteralExpression(0);
114var countMemberAccess = generator.MemberAccessExpression(collectionSyntax.WithoutTrailingTrivia(), CountPropertyName);
115var oneLiteral = generator.LiteralExpression(1);
118var substraction = generator.SubtractExpression(countMemberAccess, oneLiteral);
132private protected abstract SyntaxNode? AdjustSyntaxNode(SyntaxNode? syntaxNode);
Microsoft.NetCore.Analyzers\Runtime\ForwardCancellationTokenToInvocations.Fixer.cs (24)
21where TArgumentSyntax : SyntaxNode
26SyntaxNode node,
32SyntaxNode invocationNode,
33[NotNullWhen(returnValue: true)] out SyntaxNode? expression,
40protected abstract SyntaxNode GetConditionalOperationInvocationExpression(SyntaxNode invocationNode);
42protected abstract SyntaxNode GetTypeSyntaxForArray(IArrayTypeSymbol type);
43protected abstract IEnumerable<SyntaxNode> GetExpressions(ImmutableArray<TArgumentSyntax> newArguments);
44protected abstract SyntaxNode GetArrayCreationExpression(SyntaxGenerator generator, SyntaxNode typeSyntax, IEnumerable<SyntaxNode> expressions);
56SyntaxNode root = await doc.GetRequiredSyntaxRootAsync(ct).ConfigureAwait(false);
58if (root.FindNode(context.Span, getInnermostNodeForTie: true) is not SyntaxNode node)
95if (!TryGetExpressionAndArguments(invocation.Syntax, out SyntaxNode? expression, out ImmutableArray<TArgumentSyntax> newArguments))
103SyntaxNode newRoot = TryGenerateNewDocumentRoot(doc, root, invocation, argumentName!, parameterName!, expression, newArguments, paramsArrayType);
116private SyntaxNode TryGenerateNewDocumentRoot(
118SyntaxNode root,
122SyntaxNode expression,
128ImmutableArray<SyntaxNode> newArguments;
132var typeSyntax = GetTypeSyntaxForArray(paramsArrayType);
139newArguments = currentArguments.CastArray<SyntaxNode>();
142SyntaxNode identifier = generator.IdentifierName(invocationTokenArgumentName);
143SyntaxNode cancellationTokenArgument;
156SyntaxNode newInvocationWithArguments = generator.InvocationExpression(expression, newArguments).WithTriviaFrom(invocation.Syntax);
Microsoft.NetCore.Analyzers\Runtime\PreferConstCharOverConstUnitString.Fixer.cs (10)
30SyntaxNode root = await doc.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
31if (root.FindNode(context.Span) is SyntaxNode expression)
103static async Task<Document> HandleStringLiteral(ILiteralOperation argumentLiteral, Document doc, SyntaxNode root, CancellationToken cancellationToken)
109SyntaxNode charLiteralExpressionNode = generator.LiteralExpression(charValue);
110var newRoot = generator.ReplaceNode(root, argumentLiteral.Syntax, charLiteralExpressionNode);
114static async Task<Document> HandleVariableDeclarator(IVariableDeclaratorOperation variableDeclaratorOperation, Document doc, SyntaxNode root, CancellationToken cancellationToken)
126SyntaxNode charLiteralExpressionNode = generator.LiteralExpression(charValue);
127var charTypeNode = generator.TypeExpression(SpecialType.System_Char);
128var charSyntaxNode = generator.LocalDeclarationStatement(charTypeNode, currentSymbol.Name, charLiteralExpressionNode, isConst: true);
130var newRoot = generator.ReplaceNode(root, variableGroupDeclarationOperation.Syntax, charSyntaxNode);
Microsoft.NetCore.Analyzers\Runtime\PreferStreamAsyncMemoryOverloads.Fixer.cs (33)
37protected abstract SyntaxNode? GetArgumentByPositionOrName(IInvocationOperation invocation, int index, string name, out bool isNamed);
41protected abstract bool IsPassingZeroAndBufferLength(SemanticModel model, SyntaxNode bufferValueNode, SyntaxNode offsetValueNode, SyntaxNode countValueNode);
44protected abstract SyntaxNode GetNodeWithNullability(IInvocationOperation invocation);
47protected abstract SyntaxNode GetNamedArgument(SyntaxGenerator generator, SyntaxNode node, bool isNamed, string newName);
50protected abstract SyntaxNode GetNamedMemberInvocation(SyntaxGenerator generator, SyntaxNode node, string memberName);
62SyntaxNode root = await doc.GetRequiredSyntaxRootAsync(ct).ConfigureAwait(false);
64if (root.FindNode(context.Span, getInnermostNodeForTie: true) is not SyntaxNode node)
82SyntaxNode? bufferNode = GetArgumentByPositionOrName(invocation, 0, "buffer", out bool isBufferNamed);
88SyntaxNode? offsetNode = GetArgumentByPositionOrName(invocation, 1, "offset", out bool isOffsetNamed);
94SyntaxNode? countNode = GetArgumentByPositionOrName(invocation, 2, "count", out bool isCountNamed);
101SyntaxNode? cancellationTokenNode = GetArgumentByPositionOrName(invocation, 3, "cancellationToken", out bool isCancellationTokenNamed);
120private Task<Document> FixInvocationAsync(SemanticModel model, Document doc, SyntaxNode root,
122SyntaxNode bufferNode, bool isBufferNamed,
123SyntaxNode offsetNode, bool isOffsetNamed,
124SyntaxNode countNode, bool isCountNamed,
125SyntaxNode? cancellationTokenNode, bool isCancellationTokenNamed)
130SyntaxNode streamInstanceNode = GetNodeWithNullability(invocation);
133SyntaxNode replacedInvocationNode;
147SyntaxNode namedStartNode = GetNamedArgument(generator, offsetNode, isOffsetNamed, "start");
148SyntaxNode namedLengthNode = GetNamedArgument(generator, countNode, isCountNamed, "length");
151SyntaxNode asMemoryExpressionNode = GetNamedMemberInvocation(generator, bufferNode, "AsMemory");
152SyntaxNode asMemoryInvocationNode = generator.InvocationExpression(
163SyntaxNode asyncMethodNode = generator.MemberAccessExpression(streamInstanceNode, methodName);
166SyntaxNode[] nodeArguments;
169SyntaxNode namedCancellationTokenNode = GetNamedArgument(generator, cancellationTokenNode, isCancellationTokenNamed, "cancellationToken");
170nodeArguments = new SyntaxNode[] { replacedInvocationNode, namedCancellationTokenNode.WithTriviaFrom(cancellationTokenNode) };
174nodeArguments = new SyntaxNode[] { replacedInvocationNode };
177SyntaxNode newInvocationExpression = generator.InvocationExpression(asyncMethodNode, nodeArguments).WithTriviaFrom(streamInstanceNode);
178SyntaxNode newRoot = generator.ReplaceNode(root, invocation.Syntax, newInvocationExpression.WithTriviaFrom(invocation.Syntax));
Microsoft.NetCore.Analyzers\Runtime\TestForEmptyStringsUsingStringLength.Fixer.cs (35)
31SyntaxNode root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
32SyntaxNode node = root.FindNode(context.Span);
34SyntaxNode expressionSyntax = GetExpression(node);
61private FixResolution? TryGetFixResolution(SyntaxNode expressionSyntax, SemanticModel model, CancellationToken cancellationToken)
66SyntaxNode leftOperand = GetLeftOperand(expressionSyntax);
67SyntaxNode rightOperand = GetRightOperand(expressionSyntax);
81SyntaxNode? target = GetInvocationTarget(expressionSyntax);
94private static bool ContainsSystemStringEmpty(SyntaxNode expressionSyntax, SemanticModel model, CancellationToken cancellationToken)
111SyntaxNode typeNameSyntax = editor.Generator.TypeExpression(SpecialType.System_String);
112SyntaxNode nullOrEmptyMemberSyntax = editor.Generator.MemberAccessExpression(typeNameSyntax, "IsNullOrEmpty");
113SyntaxNode nullOrEmptyInvocationSyntax = editor.Generator.InvocationExpression(nullOrEmptyMemberSyntax, fixResolution.Target.WithoutTrailingTrivia());
115SyntaxNode replacementSyntax = fixResolution.UsesEqualsOperator ? nullOrEmptyInvocationSyntax : editor.Generator.LogicalNotExpression(nullOrEmptyInvocationSyntax);
116SyntaxNode replacementAnnotatedSyntax = replacementSyntax.WithAdditionalAnnotations(Formatter.Annotation).WithTriviaFrom(fixResolution.ExpressionSyntax);
126SyntaxNode leftOperand = GetLeftOperand(fixResolution.ExpressionSyntax);
127SyntaxNode rightOperand = GetRightOperand(fixResolution.ExpressionSyntax);
132SyntaxNode zeroLengthSyntax = editor.Generator.LiteralExpression(0);
144SyntaxNode replacementSyntax = fixResolution.UsesEqualsOperator ?
148SyntaxNode replacementAnnotatedSyntax = replacementSyntax.WithAdditionalAnnotations(Formatter.Annotation);
155private static bool ContainsEmptyStringLiteral(SyntaxNode node, SemanticModel model, CancellationToken cancellationToken)
159protected abstract SyntaxNode GetExpression(SyntaxNode node);
160protected abstract bool IsFixableBinaryExpression(SyntaxNode node);
161protected abstract bool IsFixableInvocationExpression(SyntaxNode node);
162protected abstract bool IsEqualsOperator(SyntaxNode node);
163protected abstract bool IsNotEqualsOperator(SyntaxNode node);
164protected abstract SyntaxNode GetLeftOperand(SyntaxNode binaryExpressionSyntax);
165protected abstract SyntaxNode GetRightOperand(SyntaxNode binaryExpressionSyntax);
166protected abstract SyntaxNode? GetInvocationTarget(SyntaxNode node);
170public SyntaxNode ExpressionSyntax { get; }
171public SyntaxNode Target { get; }
174public FixResolution(SyntaxNode expressionSyntax, SyntaxNode target, bool usesEqualsOperator)
Microsoft.NetCore.Analyzers\Runtime\UseExceptionThrowHelpersFixer.cs (17)
33SyntaxNode root = await doc.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
35if (TryGetFixInfo(doc, root, model, context.Diagnostics[0], out INamedTypeSymbol? typeSymbol, out string? methodName, out SyntaxNode? node, out SyntaxNode? arg, out SyntaxNode? other))
51SyntaxNode root,
56[NotNullWhen(true)] out SyntaxNode? node,
57[NotNullWhen(true)] out SyntaxNode? arg,
58[NotNullWhen(true)] out SyntaxNode? other)
111SyntaxNode node,
112SyntaxNode arg,
113SyntaxNode other,
122other is not null ? new SyntaxNode[] { arg, other } : new SyntaxNode[] { arg })).WithTriviaFrom(node));
135SyntaxNode root = editor.OriginalRoot;
140if (TryGetFixInfo(document, root, model, diagnostic, out INamedTypeSymbol? typeSymbol, out string? methodName, out SyntaxNode? node, out SyntaxNode? arg, out SyntaxNode? other))
Microsoft.NetCore.Analyzers\Runtime\UseSpanBasedStringConcat.Fixer.cs (14)
28private protected abstract SyntaxNode ReplaceInvocationMethodName(SyntaxGenerator generator, SyntaxNode invocationSyntax, string newName);
43SyntaxNode root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
47if (root.FindNode(context.Span, getInnermostNodeForTie: true) is not SyntaxNode concatExpressionSyntax)
91SyntaxNode stringTypeNameSyntax = generator.TypeExpressionForStaticMemberAccess(symbols.StringType);
92SyntaxNode concatMemberAccessSyntax = generator.MemberAccessExpression(stringTypeNameSyntax, roscharConcatMethod.Name);
98var arguments = ImmutableArray.CreateBuilder<SyntaxNode>(operands.Length);
106SyntaxNode concatMethodInvocationSyntax = generator.InvocationExpression(concatMemberAccessSyntax, arguments.MoveToImmutable())
110SyntaxNode newRoot = generator.ReplaceNode(root, concatExpressionSyntax, concatMethodInvocationSyntax);
119private SyntaxNode ConvertOperandToArgument(in RequiredSymbols symbols, SyntaxGenerator generator, IOperation operand)
126SyntaxNode invocationSyntax = invocation.Syntax;
131var renamedArgumentSyntax = generator.Argument(AsSpanStartParameterName, RefKind.None, namedStartIndexArgument.Value.Syntax);
135var asSpanInvocationSyntax = ReplaceInvocationMethodName(generator, invocationSyntax, AsSpanName).WithAddImportsAnnotation().WithAdditionalAnnotations(s_asSpanSymbolAnnotation);
144var stringLiteral = generator.LiteralExpression(literalValue.ToString()).WithTriviaFrom(literalOperation.Syntax);
src\sdk\src\Microsoft.CodeAnalysis.NetAnalyzers\src\Utilities\Workspaces\SyntaxGeneratorExtensions.cs (58)
31/// A <see cref="SyntaxNode"/> representing the declaration.
33public static SyntaxNode DefaultOperatorEqualityDeclaration(this SyntaxGenerator generator,
36var leftArgument = generator.IdentifierName(LeftIdentifierName);
37var rightArgument = generator.IdentifierName(RightIdentifierName);
39List<SyntaxNode> statements = new List<SyntaxNode>();
74/// <returns>A <see cref="SyntaxNode"/> representing the type reference expression.</returns>
75public static SyntaxNode TypeExpressionForStaticMemberAccess(this SyntaxGenerator generator, INamedTypeSymbol typeSymbol)
80var typeExpression = generator.TypeExpression(typeSymbol);
84static SyntaxNode QualifiedNameToMemberAccess(int qualifiedNameSyntaxKind, int memberAccessExpressionSyntaxKind, SyntaxNode expression, SyntaxGenerator generator)
88var left = QualifiedNameToMemberAccess(qualifiedNameSyntaxKind, memberAccessExpressionSyntaxKind, expression.ChildNodes().First(), generator);
89var right = expression.ChildNodes().Last();
107/// A <see cref="SyntaxNode"/> representing the declaration.
109public static SyntaxNode DefaultOperatorInequalityDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
111var leftArgument = generator.IdentifierName(LeftIdentifierName);
112var rightArgument = generator.IdentifierName(RightIdentifierName);
114var returnStatement = generator.ReturnStatement(
133/// A <see cref="SyntaxNode"/> representing the declaration.
135public static SyntaxNode DefaultOperatorLessThanDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
137var leftArgument = generator.IdentifierName(LeftIdentifierName);
138var rightArgument = generator.IdentifierName(RightIdentifierName);
140SyntaxNode expression;
171var returnStatement = generator.ReturnStatement(expression);
185/// A <see cref="SyntaxNode"/> representing the declaration.
187public static SyntaxNode DefaultOperatorLessThanOrEqualDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
189var leftArgument = generator.IdentifierName(LeftIdentifierName);
190var rightArgument = generator.IdentifierName(RightIdentifierName);
192SyntaxNode expression;
218var returnStatement = generator.ReturnStatement(expression);
232/// A <see cref="SyntaxNode"/> representing the declaration.
234public static SyntaxNode DefaultOperatorGreaterThanDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
236var leftArgument = generator.IdentifierName(LeftIdentifierName);
237var rightArgument = generator.IdentifierName(RightIdentifierName);
239SyntaxNode expression;
266var returnStatement = generator.ReturnStatement(expression);
280/// A <see cref="SyntaxNode"/> representing the declaration.
282public static SyntaxNode DefaultOperatorGreaterThanOrEqualDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
284var leftArgument = generator.IdentifierName(LeftIdentifierName);
285var rightArgument = generator.IdentifierName(RightIdentifierName);
287SyntaxNode expression;
317var returnStatement = generator.ReturnStatement(expression);
321private static SyntaxNode ComparisonOperatorDeclaration(this SyntaxGenerator generator, OperatorKind operatorKind, INamedTypeSymbol containingType, params SyntaxNode[] statements)
347/// A <see cref="SyntaxNode"/> representing the declaration.
349public static SyntaxNode DefaultEqualsOverrideDeclaration(this SyntaxGenerator generator, Compilation compilation, INamedTypeSymbol containingType)
351var argumentName = generator.IdentifierName("obj");
353List<SyntaxNode> statements = new List<SyntaxNode>();
402/// A <see cref="SyntaxNode"/> representing the declaration.
404public static SyntaxNode DefaultGetHashCodeOverrideDeclaration(
425public static IEnumerable<SyntaxNode> DefaultMethodBody(
431public static SyntaxNode DefaultMethodStatement(this SyntaxGenerator generator, Compilation compilation)
438public static SyntaxNode? TryGetContainingDeclaration(this SyntaxGenerator generator, SyntaxNode? node, DeclarationKind kind)
469/// A <see cref="SyntaxNode"/> representing an unused identifier name.
472public static SyntaxNode FirstUnusedIdentifierName(this SyntaxGenerator generator, SemanticModel semanticModel, int position, string baseName, int maxTries = int.MaxValue)
474var identifierName = generator.IdentifierName(baseName);
AddImport\VisualBasicAddImportFeatureService.vb (20)
27Protected Overrides Function IsWithinImport(node As SyntaxNode) As Boolean
31Protected Overrides Function CanAddImport(node As SyntaxNode, allowInHiddenRegions As Boolean, cancellationToken As CancellationToken) As Boolean
38node As SyntaxNode,
98Protected Overrides Function CanAddImportForNamespace(diagnosticId As String, node As SyntaxNode, ByRef nameNode As SimpleNameSyntax) As Boolean
111Protected Overrides Function CanAddImportForDeconstruct(diagnosticId As String, node As SyntaxNode) As Boolean
116Protected Overrides Function CanAddImportForGetAwaiter(diagnosticId As String, syntaxFactsService As ISyntaxFacts, node As SyntaxNode) As Boolean
121Protected Overrides Function CanAddImportForGetEnumerator(diagnosticId As String, syntaxFactsService As ISyntaxFacts, node As SyntaxNode) As Boolean
125Protected Overrides Function CanAddImportForGetAsyncEnumerator(diagnosticId As String, syntaxFactsService As ISyntaxFacts, node As SyntaxNode) As Boolean
129Protected Overrides Function CanAddImportForQuery(diagnosticId As String, node As SyntaxNode) As Boolean
135diagnosticId As String, node As SyntaxNode, ByRef nameNode As SimpleNameSyntax) As Boolean
161Private Shared Function CanAddImportForTypeOrNamespaceCore(node As SyntaxNode, ByRef nameNode As SimpleNameSyntax) As Boolean
194root As SyntaxNode,
219Protected Overrides Function GetImportNamespacesInScope(semanticModel As SemanticModel, node As SyntaxNode, cancellationToken As CancellationToken) As ISet(Of INamespaceSymbol)
223Protected Overrides Function GetDeconstructInfo(semanticModel As SemanticModel, node As SyntaxNode, cancellationToken As CancellationToken) As ITypeSymbol
229node As SyntaxNode,
279contextNode As SyntaxNode,
291contextNode As SyntaxNode,
310contextNode As SyntaxNode,
329node As SyntaxNode,
331ByRef objectCreateExpression As SyntaxNode) As Boolean
ChangeSignature\VisualBasicChangeSignatureService.vb (29)
151Private Shared Function TryGetSelectedIndexFromDeclaration(position As Integer, matchingNode As SyntaxNode) As Integer
156Private Shared Function GetMatchingNode(node As SyntaxNode, restrictToDeclarations As Boolean) As SyntaxNode
175Private Shared Function IsInSymbolHeader(matchingNode As SyntaxNode, position As Integer) As Boolean
203matchingNode As SyntaxNode,
227Public Overrides Function FindNodeToUpdate(document As Document, node As SyntaxNode) As SyntaxNode
242Private Shared Function GetNodeContainingTargetNode(originalNode As SyntaxNode, matchingNode As SyntaxNode) As SyntaxNode
261Private Shared Function GetUpdatableNode(matchingNode As SyntaxNode) As SyntaxNode
276potentiallyUpdatedNode As SyntaxNode,
277originalNode As SyntaxNode,
280cancellationToken As CancellationToken) As SyntaxNode
522Private Shared Function IsParamsArrayExpanded(semanticModel As SemanticModel, node As SyntaxNode, symbolInfo As SymbolInfo, cancellationToken As CancellationToken) As Boolean
580Private Function UpdateDeclaration(Of T As SyntaxNode)(
632Private Function VerifyAndPermuteParamNodes(paramNodes As ImmutableArray(Of XmlElementSyntax), declarationSymbol As ISymbol, updatedSignature As SignatureChange) As ImmutableArray(Of SyntaxNode)
640Return ImmutableArray(Of SyntaxNode).Empty
644Return ImmutableArray(Of SyntaxNode).Empty
652Return ImmutableArray(Of SyntaxNode).Empty
657Return ImmutableArray(Of SyntaxNode).Empty
665Dim permutedParams = ArrayBuilder(Of SyntaxNode).GetInstance()
744Protected Overrides Function TransferLeadingWhitespaceTrivia(Of T As SyntaxNode)(newArgument As T, oldArgument As SyntaxNode) As T
760Protected Overrides Function CreateExplicitParamsArrayFromIndividualArguments(Of TArgumentSyntax As SyntaxNode)(newArguments As SeparatedSyntaxList(Of TArgumentSyntax), indexInExistingList As Integer, parameterSymbol As IParameterSymbol) As TArgumentSyntax
766Protected Overrides Function AddNameToArgument(Of TArgumentSyntax As SyntaxNode)(newArgument As TArgumentSyntax, name As String) As TArgumentSyntax
769Return CType(CType(simpleArgument.WithNameColonEquals(NameColonEquals(IdentifierName(name))), SyntaxNode), TArgumentSyntax)
774Return CType(CType(omittedArgument, SyntaxNode), TArgumentSyntax)
CodeFixes\GenerateEndConstruct\GenerateEndConstructCodeFixProvider.vb (13)
72Dim beginStatement = token.GetAncestors(Of SyntaxNode) _
114Private Shared Function IsCandidate(node As SyntaxNode) As Boolean
127Private Shared Function GetBeginStatement(node As SyntaxNode) As SyntaxNode
142(Function(n As TryBlockSyntax) DirectCast(n, SyntaxNode)),
147Private Shared Function GetEndStatement(node As SyntaxNode) As SyntaxNode
149(Function(n As MultiLineIfBlockSyntax) DirectCast(n.EndIfStatement, SyntaxNode)),
188updatedProperty = DirectCast(gen.WithGetAccessorStatements(updatedProperty, Array.Empty(Of SyntaxNode)()), PropertyBlockSyntax)
192updatedProperty = DirectCast(gen.WithSetAccessorStatements(updatedProperty, Array.Empty(Of SyntaxNode)()), PropertyBlockSyntax)
199Public Shared Function GetDescription(node As SyntaxNode) As String
213Private Shared Async Function GenerateEndConstructAsync(document As Document, endStatement As SyntaxNode, cancellationToken As CancellationToken) As Task(Of Document)
231Private Shared Async Function InsertEndConstructAsync(document As Document, endStatement As SyntaxNode, cancellationToken As CancellationToken) As Task(Of Document)
CodeFixes\IncorrectExitContinue\IncorrectExitContinueCodeFixProvider.AddKeywordCodeAction.vb (8)
15Private ReadOnly _node As SyntaxNode
16Private ReadOnly _containingBlock As SyntaxNode
18Private ReadOnly _updateNode As Func(Of SyntaxNode, SyntaxNode, SyntaxKind, Document, CancellationToken, StatementSyntax)
21Public Sub New(node As SyntaxNode,
23containingBlock As SyntaxNode,
25updateNode As Func(Of SyntaxNode, SyntaxNode, SyntaxKind, Document, CancellationToken, StatementSyntax))
CodeFixes\IncorrectExitContinue\IncorrectExitContinueCodeFixProvider.ReplaceKeywordCodeAction.vb (8)
16Private ReadOnly _node As SyntaxNode
18Private ReadOnly _updateNode As Func(Of SyntaxNode, SyntaxNode, SyntaxKind, Document, CancellationToken, StatementSyntax)
19Private ReadOnly _containingBlock As SyntaxNode
22Public Sub New(createBlockKind As SyntaxKind, invalidToken As SyntaxToken, syntax As SyntaxNode, containingBlock As SyntaxNode, document As Document,
23updateNode As Func(Of SyntaxNode, SyntaxNode, SyntaxKind, Document, CancellationToken, StatementSyntax))
CodeFixes\IncorrectExitContinue\IncorrectExitContinueCodeFixProvider.vb (20)
69Dim node = token.GetAncestors(Of SyntaxNode) _
94Private Sub CreateContinueCodeActions(document As SemanticDocument, node As SyntaxNode, enclosingblocks As IEnumerable(Of SyntaxNode), ByRef codeActions As List(Of CodeAction), cancellationToken As CancellationToken)
126Private Sub CreateExitCodeActions(document As SemanticDocument, node As SyntaxNode, enclosingblocks As IEnumerable(Of SyntaxNode), ByRef codeActions As List(Of CodeAction), cancellationToken As CancellationToken)
158Private Shared Function GetEnclosingBlockKinds(enclosingblocks As IEnumerable(Of SyntaxNode), enclosingDeclaration As ISymbol) As IEnumerable(Of SyntaxKind)
179Private Shared Function GetEnclosingContinuableBlockKinds(enclosingblocks As IEnumerable(Of SyntaxNode)) As IEnumerable(Of SyntaxKind)
191Private Function CreateExitStatement(exitSyntax As SyntaxNode, containingBlock As SyntaxNode,
210Private Function CreateContinueStatement(continueSyntax As SyntaxNode, containingBlock As SyntaxNode,
305Private Shared Sub CreateAddKeywordActions(node As SyntaxNode,
307enclosingBlock As SyntaxNode,
309updateNode As Func(Of SyntaxNode, SyntaxNode, SyntaxKind, Document, CancellationToken, StatementSyntax),
316node As SyntaxNode,
317enclosingBlock As SyntaxNode,
319updateNode As Func(Of SyntaxNode, SyntaxNode, SyntaxKind, Document, CancellationToken, StatementSyntax),
329Private Shared Function CreateDeleteString(node As SyntaxNode) As String
CodeFixes\Suppression\VisualBasicSuppressionCodeFixProvider.vb (13)
27Protected Overrides Function CreatePragmaRestoreDirectiveTrivia(diagnostic As Diagnostic, formatNode As Func(Of SyntaxNode, CancellationToken, SyntaxNode), needsLeadingEndOfLine As Boolean, needsTrailingEndOfLine As Boolean, cancellationToken As CancellationToken) As SyntaxTriviaList
34Protected Overrides Function CreatePragmaDisableDirectiveTrivia(diagnostic As Diagnostic, formatNode As Func(Of SyntaxNode, CancellationToken, SyntaxNode), needsLeadingEndOfLine As Boolean, needsTrailingEndOfLine As Boolean, cancellationToken As CancellationToken) As SyntaxTriviaList
54formatNode As Func(Of SyntaxNode, CancellationToken, SyntaxNode),
81Protected Overrides Function GetContainingStatement(token As SyntaxToken) As SyntaxNode
101Protected Overrides Function IsAttributeListWithAssemblyAttributes(node As SyntaxNode) As Boolean
116newRoot As SyntaxNode,
123cancellationToken As CancellationToken) As SyntaxNode
151targetNode As SyntaxNode,
154diagnostic As Diagnostic) As SyntaxNode
208Protected Overrides Function IsSingleAttributeInAttributeList(attribute As SyntaxNode) As Boolean
CodeRefactorings\SyncNamespace\VisualBasicChangeNamespaceService.vb (9)
34Public Overrides Function TryGetReplacementReferenceSyntax(reference As SyntaxNode, newNamespaceParts As ImmutableArray(Of String), syntaxFacts As ISyntaxFactsService, ByRef old As SyntaxNode, ByRef [new] As SyntaxNode) As Boolean
70Protected Overrides Function GetValidContainersFromAllLinkedDocumentsAsync(document As Document, container As SyntaxNode, cancellationToken As CancellationToken) As Task(Of ImmutableArray(Of (DocumentId, SyntaxNode)))
71Return SpecializedTasks.Default(Of ImmutableArray(Of (DocumentId, SyntaxNode)))()
80Protected Overrides Function GetMemberDeclarationsInContainer(container As SyntaxNode) As SyntaxList(Of StatementSyntax)
85Protected Overrides Function TryGetApplicableContainerFromSpanAsync(document As Document, span As TextSpan, cancellationToken As CancellationToken) As Task(Of SyntaxNode)
90Protected Overrides Function GetDeclaredNamespace(container As SyntaxNode) As String
Completion\CompletionProviders\ImplementsClauseCompletionProvider.vb (3)
190Private Function GetInterfacesAndContainers(position As Integer, node As SyntaxNode, semanticModel As SemanticModel, kind As SyntaxKind, cancellationToken As CancellationToken) As ImmutableArray(Of ISymbol)
227Private Shared Sub AddAliasesAndContainers(symbol As ISymbol, interfacesAndContainers As ICollection(Of ISymbol), node As SyntaxNode, semanticModel As SemanticModel)
245Private Shared Sub AddAlias(symbol As ISymbol, interfacesAndContainers As ICollection(Of ISymbol), node As SyntaxNode, semanticModel As SemanticModel)
EditAndContinue\SyntaxComparer.vb (45)
20Public Sub New(oldRoot As SyntaxNode, newRoot As SyntaxNode, oldRootChildren As IEnumerable(Of SyntaxNode), newRootChildren As IEnumerable(Of SyntaxNode), Optional matchingLambdas As Boolean = False, Optional compareStatementSyntax As Boolean = False)
26Protected Overrides Function IsLambdaBodyStatementOrExpression(node As SyntaxNode) As Boolean
307Friend Overrides Function Classify(kind As Integer, node As SyntaxNode, ByRef isLeaf As Boolean) As Integer
312Friend Overloads Function Classify(kind As SyntaxKind, nodeOpt As SyntaxNode, ByRef isLeaf As Boolean, ignoreVariableDeclarations As Boolean) As Label
320Friend Shared Function ClassifyStatementSyntax(kind As SyntaxKind, nodeOpt As SyntaxNode, ByRef isLeaf As Boolean) As Label
726Private Shared Function ClassifyTopSyntax(kind As SyntaxKind, nodeOpt As SyntaxNode, ByRef isLeaf As Boolean, ignoreVariableDeclarations As Boolean) As Label
870Protected Overrides Function GetLabel(node As SyntaxNode) As Integer
878Friend Function GetLabelImpl(node As SyntaxNode) As Label
903Public Overrides Function ValuesEqual(left As SyntaxNode, right As SyntaxNode) As Boolean
939Protected Overrides Function TryComputeWeightedDistance(leftNode As SyntaxNode, rightNode As SyntaxNode, ByRef distance As Double) As Boolean
948Dim getParts = Function(node As SyntaxNode)
1032Dim ifParts = Function(node As SyntaxNode)
1056Dim elseStatements = Function(node As SyntaxNode)
1080Dim getParts = Function(node As SyntaxNode)
1138Private Shared Function ComputeWeightedDistance(leftHeader As SyntaxNode,
1140rightHeader As SyntaxNode,
1145Private Shared Function ComputeWeightedDistance(leftControlVariable As SyntaxNode,
1146leftHeader As SyntaxNode,
1148rightControlVariable As SyntaxNode,
1149rightHeader As SyntaxNode,
1211Private Shared Function TryGetName(node As SyntaxNode) As SyntaxNodeOrToken?
1294Public Overrides Function GetDistance(oldNode As SyntaxNode, newNode As SyntaxNode) As Double
1313Friend Shared Function ComputeValueDistance(leftNode As SyntaxNode, rightNode As SyntaxNode) As Double
1343Friend Overloads Shared Function ComputeDistance(Of TSyntaxNode As SyntaxNode)(oldList As SyntaxList(Of TSyntaxNode), newList As SyntaxList(Of TSyntaxNode)) As Double
1347Friend Overloads Shared Function ComputeDistance(Of TSyntaxNode As SyntaxNode)(oldList As SeparatedSyntaxList(Of TSyntaxNode), newList As SeparatedSyntaxList(Of TSyntaxNode)) As Double
1354Friend Shared Iterator Function GetDescendantTokensIgnoringSeparators(Of TSyntaxNode As SyntaxNode)(list As SyntaxList(Of TSyntaxNode)) As IEnumerable(Of SyntaxToken)
1365Private Shared Iterator Function GetDescendantTokensIgnoringSeparators(Of TSyntaxNode As SyntaxNode)(list As SeparatedSyntaxList(Of TSyntaxNode)) As IEnumerable(Of SyntaxToken)
1379Public Overloads Shared Function ComputeDistance(oldNode As SyntaxNode, newNode As SyntaxNode) As Double
1419Public Overloads Shared Function ComputeDistance(oldTokens As IEnumerable(Of SyntaxNode), newTokens As IEnumerable(Of SyntaxNode)) As Double
1426Public Shared Function GetSequenceEdits(oldNodes As IEnumerable(Of SyntaxNode), newNodes As IEnumerable(Of SyntaxNode)) As IEnumerable(Of SequenceEdit)
1433Public Shared Function GetSequenceEdits(oldNodes As ImmutableArray(Of SyntaxNode), newNodes As ImmutableArray(Of SyntaxNode)) As IEnumerable(Of SequenceEdit)
1462Inherits LongestCommonImmutableArraySubsequence(Of SyntaxNode)
1466Protected Overrides Function Equals(oldElement As SyntaxNode, newElement As SyntaxNode) As Boolean
EditAndContinue\VisualBasicEditAndContinueAnalyzer.vb (153)
29Friend Overrides Function TryFindMemberDeclaration(rootOpt As SyntaxNode, node As SyntaxNode, activeSpan As TextSpan, <Out> ByRef declarations As OneOrMany(Of SyntaxNode)) As Boolean
58declarations = OneOrMany.Create(Of SyntaxNode)(variableDeclarator.Names(0))
60declarations = OneOrMany.Create(variableDeclarator.Names.SelectAsArray(Function(n) CType(n, SyntaxNode)))
87Friend Overrides Function TryGetDeclarationBody(node As SyntaxNode, symbol As ISymbol) As MemberBody
91Friend Overrides Function IsDeclarationWithSharedBody(declaration As SyntaxNode, member As ISymbol) As Boolean
102body As SyntaxNode,
103partnerBody As SyntaxNode,
104<Out> ByRef partnerStatement As SyntaxNode,
105<Out> ByRef statementPart As Integer) As SyntaxNode
114Dim node As SyntaxNode = Nothing
157Friend Overrides Function IsClosureScope(node As SyntaxNode) As Boolean
161Friend Overrides Function GetCapturedParameterScope(methodOrLambda As SyntaxNode) As SyntaxNode
165Protected Overrides Function FindEnclosingLambdaBody(encompassingAncestor As SyntaxNode, node As SyntaxNode) As LambdaBody
167Dim body As SyntaxNode = Nothing
178Protected Overrides Function ComputeTopLevelMatch(oldCompilationUnit As SyntaxNode, newCompilationUnit As SyntaxNode) As Match(Of SyntaxNode)
182Protected Overrides Function ComputeParameterMap(oldDeclaration As SyntaxNode, newDeclaration As SyntaxNode) As BidirectionalMap(Of SyntaxNode)?
193Dim map = BidirectionalMap(Of SyntaxNode).FromMatch(If(primaryMatch, secondaryMatch))
202Private Shared Function GetTopLevelMatch(oldNode As SyntaxNode, newNode As SyntaxNode) As Match(Of SyntaxNode)
206Private Shared Function GetDeclarationParameterLists(declaration As SyntaxNode) As (Primary As SyntaxNode, Secondary As SyntaxNode)
225Protected Overrides Function IsNamespaceDeclaration(node As SyntaxNode) As Boolean
230Private Shared Function IsTypeDeclaration(node As SyntaxNode) As Boolean
234Protected Overrides Function IsCompilationUnitWithGlobalStatements(node As SyntaxNode) As Boolean
238Protected Overrides Function IsGlobalStatement(node As SyntaxNode) As Boolean
242Protected Overrides Iterator Function GetTopLevelTypeDeclarations(compilationUnit As SyntaxNode) As IEnumerable(Of SyntaxNode)
276Protected Overrides Function GetSyntaxSequenceEdits(oldNodes As ImmutableArray(Of SyntaxNode), newNodes As ImmutableArray(Of SyntaxNode)) As IEnumerable(Of SequenceEdit)
280Friend Overrides ReadOnly Property EmptyCompilationUnit As SyntaxNode
291Protected Overrides Function StatementLabelEquals(node1 As SyntaxNode, node2 As SyntaxNode) As Boolean
295Private Shared Function ChildrenCompiledInBody(node As SyntaxNode) As Boolean
306Protected Overrides Function TryGetActiveSpan(node As SyntaxNode, statementPart As Integer, minLength As Integer, <Out> ByRef span As TextSpan) As Boolean
310Protected Overrides Iterator Function EnumerateNearStatements(statement As SyntaxNode) As IEnumerable(Of ValueTuple(Of SyntaxNode, Integer))
318Dim lastBlockStatement As SyntaxNode = Nothing
382Private Shared Function GetFieldOrPropertyModifiers(node As SyntaxNode) As SyntaxTokenList?
392Private Shared Function AreEquivalentIgnoringLambdaBodies(left As SyntaxNode, right As SyntaxNode) As Boolean
401Protected Overrides Function AreEquivalentActiveStatements(oldStatement As SyntaxNode, newStatement As SyntaxNode, statementPart As Integer) As Boolean
434Private Shared Function HasMultiInitializer(modifiedIdentifier As SyntaxNode) As Boolean
443Friend Overrides Function IsInterfaceDeclaration(node As SyntaxNode) As Boolean
447Friend Overrides Function IsRecordDeclaration(node As SyntaxNode) As Boolean
452Friend Overrides Function TryGetContainingTypeDeclaration(node As SyntaxNode) As SyntaxNode
456Friend Overrides Function IsDeclarationWithInitializer(declaration As SyntaxNode) As Boolean
486Friend Overrides Function IsPrimaryConstructorDeclaration(declaration As SyntaxNode) As Boolean
508Protected Overrides Function GetSymbolDeclarationSyntax(symbol As ISymbol, selector As Func(Of ImmutableArray(Of SyntaxReference), SyntaxReference), cancellationToken As CancellationToken) As SyntaxNode
613Protected Overrides Function GetDeclaredSymbol(model As SemanticModel, declaration As SyntaxNode, cancellationToken As CancellationToken) As ISymbol
683oldNode As SyntaxNode,
684newNode As SyntaxNode,
724oldNode As SyntaxNode,
726newNode As SyntaxNode,
730topMatch As Match(Of SyntaxNode),
731editMap As IReadOnlyDictionary(Of SyntaxNode, EditKind),
871node As SyntaxNode,
919Private Function GetParameterContainingMemberOrType(node As SyntaxNode, otherNode As SyntaxNode, model As SemanticModel, fromOtherMap As IReadOnlyDictionary(Of SyntaxNode, SyntaxNode), cancellationToken As CancellationToken) As ISymbol
926Dim declaration As SyntaxNode = Nothing
936Private Shared Function GetContainingDeclaration(node As SyntaxNode) As SyntaxNode
940Friend Overrides ReadOnly Property IsLambda As Func(Of SyntaxNode, Boolean)
946Friend Overrides ReadOnly Property IsNotLambda As Func(Of SyntaxNode, Boolean)
952Friend Overrides ReadOnly Property DescendantTokensIgnoringLambdaBodies As Func(Of SyntaxNode, IEnumerable(Of SyntaxToken))
964Friend Overrides Function IsNestedFunction(node As SyntaxNode) As Boolean
968Friend Overrides Function IsLocalFunction(node As SyntaxNode) As Boolean
972Friend Overrides Function IsGenericLocalFunction(node As SyntaxNode) As Boolean
976Friend Overrides Function TryGetLambdaBodies(node As SyntaxNode, <Out> ByRef body1 As LambdaBody, <Out> ByRef body2 As LambdaBody) As Boolean
977Dim bodyNode1 As SyntaxNode = Nothing
978Dim bodyNode2 As SyntaxNode = Nothing
988Friend Overrides Function GetLambdaExpressionSymbol(model As SemanticModel, lambdaExpression As SyntaxNode, cancellationToken As CancellationToken) As IMethodSymbol
995Friend Overrides Function GetContainingQueryExpression(node As SyntaxNode) As SyntaxNode
999Friend Overrides Function QueryClauseLambdasTypeEquivalent(oldModel As SemanticModel, oldNode As SyntaxNode, newModel As SemanticModel, newNode As SyntaxNode, cancellationToken As CancellationToken) As Boolean
1057Protected Overrides Function TryGetDiagnosticSpan(node As SyntaxNode, editKind As EditKind) As TextSpan?
1061Protected Overloads Shared Function GetDiagnosticSpan(node As SyntaxNode, editKind As EditKind) As TextSpan
1065Private Shared Function TryGetDiagnosticSpanImpl(node As SyntaxNode, editKind As EditKind) As TextSpan?
1069Protected Overrides Function GetBodyDiagnosticSpan(node As SyntaxNode, editKind As EditKind) As TextSpan
1074Friend Shared Function TryGetDiagnosticSpanImpl(kind As SyntaxKind, node As SyntaxNode, editKind As EditKind) As TextSpan?
1306Private Overloads Shared Function GetDiagnosticSpan(ifKeyword As SyntaxToken, condition As SyntaxNode, thenKeywordOpt As SyntaxToken) As TextSpan
1403Friend Overrides Function GetLambdaParameterDiagnosticSpan(lambda As SyntaxNode, ordinal As Integer) As TextSpan
1446Protected Overrides Function TryGetDisplayName(node As SyntaxNode, editKind As EditKind) As String
1450Protected Overloads Shared Function GetDisplayName(node As SyntaxNode, editKind As EditKind) As String
1460Protected Overrides Function GetBodyDisplayName(node As SyntaxNode, Optional editKind As EditKind = EditKind.Update) As String
1464Private Shared Function TryGetDisplayNameImpl(node As SyntaxNode, editKind As EditKind) As String
1693Private ReadOnly _match As Match(Of SyntaxNode)
1694Private ReadOnly _oldNode As SyntaxNode
1695Private ReadOnly _newNode As SyntaxNode
1701oldNode As SyntaxNode,
1702newNode As SyntaxNode,
1704Optional match As Match(Of SyntaxNode) = Nothing,
1764Private Sub ClassifyMove(newNode As SyntaxNode)
1787Private Sub ClassifyReorder(oldNode As SyntaxNode, newNode As SyntaxNode)
1810Private Sub ClassifyInsert(node As SyntaxNode)
1842Private Sub ClassifyDelete(oldNode As SyntaxNode)
1869Private Sub ClassifyUpdate(newNode As SyntaxNode)
1893match As Match(Of SyntaxNode),
1894edit As Edit(Of SyntaxNode),
1895editMap As Dictionary(Of SyntaxNode, EditKind))
1926Friend Overrides Function HasUnsupportedOperation(nodes As IEnumerable(Of SyntaxNode), <Out> ByRef unsupportedNode As SyntaxNode, <Out> ByRef rudeEdit As RudeEditKind) As Boolean
1969Friend Overrides Sub ReportInsertedMemberSymbolRudeEdits(diagnostics As RudeEditDiagnosticsBuilder, newSymbol As ISymbol, newNode As SyntaxNode, insertingIntoExistingContainingType As Boolean)
2044Protected Overrides Function GetExceptionHandlingAncestors(node As SyntaxNode, root As SyntaxNode, isNonLeaf As Boolean) As List(Of SyntaxNode)
2045Dim result = New List(Of SyntaxNode)()
2081exceptionHandlingEdits As IEnumerable(Of Edit(Of SyntaxNode)),
2082oldStatement As SyntaxNode,
2093Private Shared Function AreExceptionHandlingPartsEquivalent(oldNode As SyntaxNode, newNode As SyntaxNode) As Boolean
2115Protected Overrides Function GetExceptionHandlingRegion(node As SyntaxNode, <Out> ByRef coversAllChildren As Boolean) As TextSpan
2145Friend Overrides Function IsStateMachineMethod(declaration As SyntaxNode) As Boolean
2150Friend Shared Function GetStateMachineInfo(body As SyntaxNode) As StateMachineInfo
2161Friend Overrides Sub ReportStateMachineSuspensionPointRudeEdits(diagnosticContext As DiagnosticContext, oldNode As SyntaxNode, newNode As SyntaxNode)
2176Private Shared Function FindContainingStatementPart(node As SyntaxNode) As SyntaxNode
2202Private Shared Function HasNoSpilledState(awaitExpression As SyntaxNode, containingStatementPart As SyntaxNode) As Boolean
2247Private Shared Function GetExpressionFromStatementPart(statement As SyntaxNode) As ExpressionSyntax
2260Private Shared Function IsSimpleAwaitAssignment(node As SyntaxNode, awaitExpression As SyntaxNode) As Boolean
2273forwardMap As IReadOnlyDictionary(Of SyntaxNode, SyntaxNode),
2274oldActiveStatement As SyntaxNode,
2277newActiveStatement As SyntaxNode,
2291Private Shared Function FindOnErrorOrResumeStatement(newBody As DeclarationBody) As SyntaxNode
2311forwardMap As IReadOnlyDictionary(Of SyntaxNode, SyntaxNode),
2312oldActiveStatement As SyntaxNode,
2313oldEncompassingAncestor As SyntaxNode,
2315newActiveStatement As SyntaxNode,
2316newEncompassingAncestor As SyntaxNode,
2331getTypedNodes:=Function(n) OneOrMany.Create(Of SyntaxNode)(n.SyncLockStatement.Expression),
2338getTypedNodes:=Function(n) OneOrMany.Create(Of SyntaxNode)(n.WithStatement.Expression),
2346getTypedNodes:=Function(n) OneOrMany.Create(Of SyntaxNode)(n.UsingStatement.Expression),
2353getTypedNodes:=Function(n) OneOrMany.Create(Of SyntaxNode)(n.ForEachStatement.Expression),
ExtractMethod\Extensions.vb (26)
17Public Function GetUnparenthesizedExpression(node As SyntaxNode) As ExpressionSyntax
27Public Function GetStatementContainer(node As SyntaxNode) As SyntaxNode
39Public Function GetStatementUnderContainer(node As SyntaxNode) As ExecutableStatementSyntax
56Public Function ContainStatement(node As SyntaxNode, statement As StatementSyntax) As Boolean
68Public Function GetOutermostNodeWithSameSpan(initialNode As SyntaxNode, predicate As Func(Of SyntaxNode, Boolean)) As SyntaxNode
87Return CType(If(lastNode, initialNode), SyntaxNode)
91Public Function PartOfConstantInitializerExpression(node As SyntaxNode) As Boolean
97Private Function PartOfConstantInitializerExpression(Of T As SyntaxNode)(node As SyntaxNode, modifiersGetter As Func(Of T, SyntaxTokenList)) As Boolean
117Public Function IsArgumentForByRefParameter(node As SyntaxNode, model As SemanticModel, cancellationToken As CancellationToken) As Boolean
225Public Function ContainsFieldInitializer(node As SyntaxNode) As Boolean
232Public Function ContainsDotMemberAccess(node As SyntaxNode) As Boolean
233Dim predicate = Function(n As SyntaxNode)
269Dim predicate As Func(Of SyntaxNode, Boolean) =
295Return token.GetAncestors(Of SyntaxNode)().Any(predicate)
299Public Function ContainedInValidType(node As SyntaxNode) As Boolean
325Public Function UnderValidContext(ByVal node As SyntaxNode) As Boolean
328Dim predicate As Func(Of SyntaxNode, Boolean) =
339If Not node.GetAncestorsOrThis(Of SyntaxNode)().Any(predicate) Then
351Public Function IsReturnableConstruct(node As SyntaxNode) As Boolean
358Public Function HasSyntaxAnnotation([set] As HashSet(Of SyntaxAnnotation), node As SyntaxNode) As Boolean
370Public Function ToSeparatedList(Of T As SyntaxNode)(nodes As IEnumerable(Of Tuple(Of T, SyntaxToken))) As SeparatedSyntaxList(Of T)
463Public Function IsExpressionInCast(node As SyntaxNode) As Boolean
GenerateType\VisualBasicGenerateTypeService.vb (8)
374genericName.TypeArgumentList.Arguments.OfType(Of SyntaxNode)().ToList(),
375Enumerable.Repeat(Of SyntaxNode)(Nothing, state.SimpleName.Arity))
419Public Overrides Async Function GetOrGenerateEnclosingNamespaceSymbolAsync(namedTypeSymbol As INamedTypeSymbol, containers() As String, selectedDocument As Document, selectedDocumentRoot As SyntaxNode, cancellationToken As CancellationToken) As Task(Of (INamespaceSymbol, INamespaceOrTypeSymbol, Location))
461Private Shared Function GetDeclaringNamespace(containers As List(Of String), indexDone As Integer, localRoot As SyntaxNode) As NamespaceStatementSyntax
556Dim node As SyntaxNode = expression
588Private Shared Function IsAllContainingTypeBlocksPublic(node As SyntaxNode) As Boolean
613modifiedRoot As SyntaxNode,
624Dim root As SyntaxNode = Nothing
SignatureHelp\AbstractIntrinsicOperatorSignatureHelpProvider.vb (4)
13Friend MustInherit Class AbstractIntrinsicOperatorSignatureHelpProvider(Of TSyntaxNode As SyntaxNode)
20Private Function TryGetSyntaxNode(root As SyntaxNode, position As Integer, syntaxFacts As ISyntaxFactsService, triggerReason As SignatureHelpTriggerReason, cancellationToken As CancellationToken, ByRef node As TSyntaxNode) As Boolean
84Protected Overridable Function GetCurrentArgumentStateWorker(node As SyntaxNode, position As Integer) As SignatureHelpState
105Private Function GetCurrentArgumentState(root As SyntaxNode, position As Integer, syntaxFacts As ISyntaxFactsService, currentSpan As TextSpan, cancellationToken As CancellationToken) As SignatureHelpState
SolutionExplorer\VisualBasicSolutionExplorerSymbolTreeItemProvider.vb (6)
176Private Shared Sub AddMethodStatement(documentId As DocumentId, container As SyntaxNode, methodStatement As MethodStatementSyntax, items As ArrayBuilder(Of SymbolTreeItemData), nameBuilder As StringBuilder)
199Private Shared Sub AddConstructorStatement(documentId As DocumentId, container As SyntaxNode, constructorStatement As SubNewStatementSyntax, items As ArrayBuilder(Of SymbolTreeItemData), nameBuilder As StringBuilder)
213Private Shared Sub AddOperatorStatement(documentId As DocumentId, container As SyntaxNode, operatorStatement As OperatorStatementSyntax, items As ArrayBuilder(Of SymbolTreeItemData), nameBuilder As StringBuilder)
229Private Shared Sub AddPropertyStatement(documentId As DocumentId, container As SyntaxNode, propertystatement As PropertyStatementSyntax, items As ArrayBuilder(Of SymbolTreeItemData), nameBuilder As StringBuilder)
244Private Shared Sub AddEventStatement(documentId As DocumentId, container As SyntaxNode, eventStatement As EventStatementSyntax, items As ArrayBuilder(Of SymbolTreeItemData), nameBuilder As StringBuilder)
260container As SyntaxNode,
SplitOrMergeIfStatements\VisualBasicIfLikeStatementGenerator.vb (36)
22Public Function IsIfOrElseIf(node As SyntaxNode) As Boolean Implements IIfLikeStatementGenerator.IsIfOrElseIf
27Public Function IsCondition(expression As SyntaxNode, ByRef ifOrElseIf As SyntaxNode) As Boolean Implements IIfLikeStatementGenerator.IsCondition
46Public Function IsElseIfClause(node As SyntaxNode, ByRef parentIfOrElseIf As SyntaxNode) As Boolean Implements IIfLikeStatementGenerator.IsElseIfClause
50parentIfOrElseIf = If(index > 0, ifBlock.ElseIfBlocks(index - 1), DirectCast(ifBlock, SyntaxNode))
58Public Function HasElseIfClause(ifOrElseIf As SyntaxNode, ByRef elseIfClause As SyntaxNode) As Boolean Implements IIfLikeStatementGenerator.HasElseIfClause
77Public Function GetCondition(ifOrElseIf As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.GetCondition
87Public Function GetRootIfStatement(ifOrElseIf As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.GetRootIfStatement
97Public Function GetElseIfAndElseClauses(ifOrElseIf As SyntaxNode) As ImmutableArray(Of SyntaxNode) Implements IIfLikeStatementGenerator.GetElseIfAndElseClauses
111Private Shared Function AddIfNotNull(list As SyntaxList(Of SyntaxNode), node As SyntaxNode) As SyntaxList(Of SyntaxNode)
115Public Function WithCondition(ifOrElseIf As SyntaxNode, condition As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.WithCondition
127Public Function WithStatementInBlock(ifOrElseIf As SyntaxNode, statement As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.WithStatementInBlock
131Public Function WithStatementsOf(ifOrElseIf As SyntaxNode, otherIfOrElseIf As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.WithStatementsOf
135Public Function WithElseIfAndElseClausesOf(ifStatement As SyntaxNode, otherIfStatement As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.WithElseIfAndElseClausesOf
141Public Function ToIfStatement(ifOrElseIf As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.ToIfStatement
163Public Function ToElseIfClause(ifOrElseIf As SyntaxNode) As SyntaxNode Implements IIfLikeStatementGenerator.ToElseIfClause
180Public Sub InsertElseIfClause(editor As SyntaxEditor, afterIfOrElseIf As SyntaxNode, elseIfClause As SyntaxNode) Implements IIfLikeStatementGenerator.InsertElseIfClause
196Public Sub RemoveElseIfClause(editor As SyntaxEditor, elseIfClause As SyntaxNode) Implements IIfLikeStatementGenerator.RemoveElseIfClause
src\roslyn\src\Analyzers\VisualBasic\Analyzers\OrderModifiers\VisualBasicOrderModifiersDiagnosticAnalyzer.vb (1)
31root As SyntaxNode)
src\roslyn\src\Analyzers\VisualBasic\CodeFixes\ConvertToAsync\VisualBasicConvertToAsyncFunctionCodeFixProvider.vb (5)
39Protected Overrides Async Function GetDescriptionAsync(diagnostic As Diagnostic, node As SyntaxNode, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Task(Of String)
44Protected Overrides Async Function GetRootInOtherSyntaxTreeAsync(node As SyntaxNode, semanticModel As SemanticModel, diagnostic As Diagnostic, cancellationToken As CancellationToken) As Task(Of (SyntaxTree As SyntaxTree, root As SyntaxNode)?)
57Private Shared Async Function GetMethodFromExpressionAsync(oldNode As SyntaxNode, semanticModel As SemanticModel, cancellationToken As CancellationToken) As Task(Of Tuple(Of SyntaxNode, MethodBlockSyntax))
src\roslyn\src\Analyzers\VisualBasic\CodeFixes\GenerateConstructor\VisualBasicGenerateConstructorService.vb (7)
24Protected Overrides Function IsImplicitObjectCreation(document As SemanticDocument, node As SyntaxNode, cancellationToken As CancellationToken) As Boolean
28Protected Overrides Function TryInitializeImplicitObjectCreation(document As SemanticDocument, node As SyntaxNode, cancellationToken As CancellationToken, ByRef token As SyntaxToken, ByRef arguments As ImmutableArray(Of Argument(Of ExpressionSyntax)), ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
50Protected Overrides Function IsConstructorInitializerGeneration(document As SemanticDocument, node As SyntaxNode, cancellationToken As CancellationToken) As Boolean
58node As SyntaxNode,
87Protected Overrides Function IsSimpleNameGeneration(document As SemanticDocument, node As SyntaxNode, cancellationToken As CancellationToken) As Boolean
93node As SyntaxNode,
128node As SyntaxNode,
src\roslyn\src\Analyzers\VisualBasic\CodeFixes\GenerateParameterizedMember\VisualBasicGenerateConversionService.vb (9)
32Protected Overrides Function IsExplicitConversionGeneration(node As SyntaxNode) As Boolean
36Protected Overrides Function IsImplicitConversionGeneration(node As SyntaxNode) As Boolean
43Private Shared Function IsInImplementsClause(node As SyntaxNode) As Boolean
47Private Shared Function IsInMemberAccessExpression(node As SyntaxNode) As Boolean
55Protected Overrides Function TryInitializeExplicitConversionState(document As SemanticDocument, expression As SyntaxNode, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef identifierToken As SyntaxToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
69Protected Overrides Function TryInitializeImplicitConversionState(document As SemanticDocument, expression As SyntaxNode, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef identifierToken As SyntaxToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
83Private Shared Function TryGetConversionMethodAndTypeToGenerateIn(document As SemanticDocument, expression As SyntaxNode, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
109Private Shared Function IsCastExpression(node As SyntaxNode) As Boolean
129Private Shared Function TryGetImplicitConversionMethodAndTypeToGenerateIn(document As SemanticDocument, expression As SyntaxNode, classInterfaceModuleStructTypes As ISet(Of TypeKind), cancellationToken As CancellationToken, ByRef methodSymbol As IMethodSymbol, ByRef typeToGenerateIn As INamedTypeSymbol) As Boolean
src\roslyn\src\Compilers\VisualBasic\BasicAnalyzerDriver\VisualBasicDeclarationComputer.vb (41)
26node As SyntaxNode,
42node As SyntaxNode,
43shouldSkip As Func(Of SyntaxNode, Integer?, Boolean),
70builder.Add(New DeclarationInfo(name, ImmutableArray(Of SyntaxNode).Empty, declaredSymbol))
80Dim attributes As ArrayBuilder(Of SyntaxNode) = Nothing
81Using ArrayBuilder(Of SyntaxNode).GetInstance(attributes)
89Dim attributes As ArrayBuilder(Of SyntaxNode) = Nothing
90Using ArrayBuilder(Of SyntaxNode).GetInstance(attributes)
98Dim codeBlocks As ArrayBuilder(Of SyntaxNode) = Nothing
99Using ArrayBuilder(Of SyntaxNode).GetInstance(codeBlocks)
111Dim codeBlocks As ArrayBuilder(Of SyntaxNode) = Nothing
112Using ArrayBuilder(Of SyntaxNode).GetInstance(codeBlocks)
120Dim attributes As ArrayBuilder(Of SyntaxNode) = Nothing
121Using ArrayBuilder(Of SyntaxNode).GetInstance(attributes)
123Dim codeBlocks As ArrayBuilder(Of SyntaxNode) = Nothing
124Using ArrayBuilder(Of SyntaxNode).GetInstance(codeBlocks)
143Dim codeBlocks As ArrayBuilder(Of SyntaxNode) = Nothing
144Using ArrayBuilder(Of SyntaxNode).GetInstance(codeBlocks)
152Dim codeBlocks As ArrayBuilder(Of SyntaxNode) = Nothing
153Using ArrayBuilder(Of SyntaxNode).GetInstance(codeBlocks)
166Dim attributes As ArrayBuilder(Of SyntaxNode) = Nothing
167Using ArrayBuilder(Of SyntaxNode).GetInstance(attributes)
180Dim attributes As ArrayBuilder(Of SyntaxNode) = Nothing
181Using ArrayBuilder(Of SyntaxNode).GetInstance(attributes)
191Dim attributes As ArrayBuilder(Of SyntaxNode) = Nothing
192Using ArrayBuilder(Of SyntaxNode).GetInstance(attributes)
202Dim codeBlocks As ArrayBuilder(Of SyntaxNode) = Nothing
203Using ArrayBuilder(Of SyntaxNode).GetInstance(codeBlocks)
214Dim codeBlocks As ArrayBuilder(Of SyntaxNode) = Nothing
215Using ArrayBuilder(Of SyntaxNode).GetInstance(codeBlocks)
227Private Shared Sub AddAttributes(attributeStatements As SyntaxList(Of AttributesStatementSyntax), builder As ArrayBuilder(Of SyntaxNode))
233Private Shared Sub AddPropertyStatementCodeBlocks(propertyStatement As PropertyStatementSyntax, builder As ArrayBuilder(Of SyntaxNode))
234Dim initializer As SyntaxNode = propertyStatement.Initializer
246Private Shared Sub AddMethodBaseCodeBlocks(methodBase As MethodBaseSyntax, builder As ArrayBuilder(Of SyntaxNode))
288Private Shared Sub AddReturnTypeAttributes(asClause As AsClauseSyntax, builder As ArrayBuilder(Of SyntaxNode))
294Private Shared Sub AddAttributes(attributeLists As SyntaxList(Of AttributeListSyntax), builder As ArrayBuilder(Of SyntaxNode))
302Private Shared Sub AddParameterListInitializersAndAttributes(parameterList As ParameterListSyntax, builder As ArrayBuilder(Of SyntaxNode))
310Private Shared Sub AddParameterInitializersAndAttributes(parameter As ParameterSyntax, builder As ArrayBuilder(Of SyntaxNode))
315Private Shared Function GetInitializerNode(variableDeclarator As VariableDeclaratorSyntax) As SyntaxNode
316Dim initializer As SyntaxNode = variableDeclarator.Initializer
324Private Shared Function GetAsNewClauseInitializer(asClause As AsClauseSyntax) As SyntaxNode
CaseCorrection\AbstractCaseCorrectionService.cs (7)
20protected abstract void AddReplacements(SemanticModel? semanticModel, SyntaxNode root, ImmutableArray<TextSpan> spans, ConcurrentDictionary<SyntaxToken, SyntaxToken> replacements, CancellationToken cancellationToken);
29var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
37var newRoot = CaseCorrect(semanticModel, root, spans, cancellationToken);
41public SyntaxNode CaseCorrect(SyntaxNode root, ImmutableArray<TextSpan> spans, CancellationToken cancellationToken)
44private SyntaxNode CaseCorrect(SemanticModel? semanticModel, SyntaxNode root, ImmutableArray<TextSpan> spans, CancellationToken cancellationToken)
Classification\AbstractClassificationService.cs (6)
27private Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>>? _getNodeClassifiers;
185(Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>>, Func<SyntaxToken, ImmutableArray<ISyntaxClassifier>>) GetExtensionClassifiers(
203var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
208SolutionServices services, SyntaxNode? root, ImmutableArray<TextSpan> textSpans, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken)
231public TextChangeRange? ComputeSyntacticChangeRange(SolutionServices services, SyntaxNode oldRoot, SyntaxNode newRoot, TimeSpan timeout, CancellationToken cancellationToken)
Classification\SyntaxClassification\AbstractSyntaxClassificationService.cs (5)
19public abstract void AddSyntacticClassifications(SyntaxNode root, ImmutableArray<TextSpan> textSpans, SegmentedList<ClassifiedSpan> result, CancellationToken cancellationToken);
29Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>> getNodeClassifiers,
50Func<SyntaxNode, ImmutableArray<ISyntaxClassifier>> getNodeClassifiers,
59public TextChangeRange? ComputeSyntacticChangeRange(SyntaxNode oldRoot, SyntaxNode newRoot, TimeSpan timeout, CancellationToken cancellationToken)
CodeCleanup\AbstractCodeCleanerService.cs (28)
27protected abstract ImmutableArray<TextSpan> GetSpansToAvoid(SyntaxNode root);
42var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
62var annotatedRoot = newNode;
73public async Task<SyntaxNode> CleanupAsync(SyntaxNode root, ImmutableArray<TextSpan> spans, SyntaxFormattingOptions options, SolutionServices services, ImmutableArray<ICodeCleanupProvider> providers, CancellationToken cancellationToken)
104var annotatedRoot = newNode;
115SyntaxNode node,
149SyntaxNode node,
269private static (SyntaxNode newNode, List<(SyntaxAnnotation previous, SyntaxAnnotation next)> annotations) AnnotateNodeForTextSpans(
270SyntaxNode root, ImmutableArray<TextSpan> spans, CancellationToken cancellationToken)
313var newNode = InjectAnnotations(root, tokenAnnotationMap);
321SyntaxNode root, ImmutableArray<TextSpan> spans, CancellationToken cancellationToken)
359SyntaxNode root, TextSpan span,
382SyntaxNode root, TextSpan span,
404private static SyntaxToken FindTokenOnRightOfPosition(SyntaxNode root, int position)
418private static SyntaxToken FindTokenOnLeftOfPosition(SyntaxNode root, int position)
458Func<SyntaxNode, ImmutableArray<TextSpan>> spanGetter,
483var root = await currentDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
521SyntaxNode root, Func<SyntaxNode, ImmutableArray<TextSpan>> spanGetter)
535private async Task<SyntaxNode> IterateAllCodeCleanupProvidersAsync(
536SyntaxNode originalRoot,
537SyntaxNode annotatedRoot,
539Func<SyntaxNode, ImmutableArray<TextSpan>> spanGetter,
546var currentRoot = annotatedRoot;
547SyntaxNode? previousRoot = null;
593private static SyntaxNode InjectAnnotations(SyntaxNode node, Dictionary<SyntaxToken, List<SyntaxAnnotation>> map)
CodeCleanup\CodeCleaner.cs (5)
62var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
87public static Task<SyntaxNode> CleanupAsync(SyntaxNode root, TextSpan span, SyntaxFormattingOptions options, SolutionServices services, ImmutableArray<ICodeCleanupProvider> providers = default, CancellationToken cancellationToken = default)
94public static Task<SyntaxNode> CleanupAsync(SyntaxNode root, ImmutableArray<TextSpan> spans, SyntaxFormattingOptions options, SolutionServices services, ImmutableArray<ICodeCleanupProvider> providers = default, CancellationToken cancellationToken = default)
Differencing\AbstractSyntaxComparer.cs (38)
12internal abstract class AbstractSyntaxComparer : TreeComparer<SyntaxNode>
19protected readonly SyntaxNode? _oldRoot;
20protected readonly SyntaxNode? _newRoot;
21private readonly IEnumerable<SyntaxNode>? _oldRootChildren;
22private readonly IEnumerable<SyntaxNode>? _newRootChildren;
31SyntaxNode? oldRoot,
32SyntaxNode? newRoot,
33IEnumerable<SyntaxNode>? oldRootChildren,
34IEnumerable<SyntaxNode>? newRootChildren,
45protected internal sealed override bool TreesEqual(SyntaxNode oldNode, SyntaxNode newNode)
48protected internal sealed override TextSpan GetSpan(SyntaxNode node)
55protected abstract bool TryComputeWeightedDistance(SyntaxNode oldNode, SyntaxNode newNode, out double distance);
57protected abstract bool IsLambdaBodyStatementOrExpression(SyntaxNode node);
59protected internal override bool TryGetParent(SyntaxNode node, [NotNullWhen(true)] out SyntaxNode? parent)
76protected internal override IEnumerable<SyntaxNode>? GetChildren(SyntaxNode node)
91private IEnumerable<SyntaxNode> EnumerateChildren(SyntaxNode node)
93foreach (var child in node.ChildNodes())
106foreach (var descendant in child.DescendantNodes(DescendIntoChildren))
116private bool DescendIntoChildren(SyntaxNode node)
119protected internal sealed override IEnumerable<SyntaxNode> GetDescendants(SyntaxNode node)
125private IEnumerable<SyntaxNode> EnumerateDescendants(IEnumerable<SyntaxNode> nodes)
127foreach (var node in nodes)
134foreach (var descendant in EnumerateDescendants(node))
144private IEnumerable<SyntaxNode> EnumerateDescendants(SyntaxNode node)
150var descendantNode = descendant.AsNode();
160bool ShouldEnumerateChildren(SyntaxNode child)
179protected bool HasChildren(SyntaxNode node)
195internal bool HasLabel(SyntaxNode node)
198internal abstract int Classify(int kind, SyntaxNode? node, out bool isLeaf);
200protected internal override int GetLabel(SyntaxNode node)
Editing\SyntaxEditor.cs (81)
14/// particular tree <em>in order</em>. Changes are given a <see cref="SyntaxNode"/> they will apply to in the
23/// Each change has its given <see cref="SyntaxNode"/> tracked, using a <see cref="SyntaxAnnotation"/>, producing a
31/// A change first attempts to find its <see cref="SyntaxNode"/> in the 'current' root. If that node cannot be
37/// cref="SyntaxNode"/> found in the current root. The 'current' root will then be updated by replacing the current
51/// <para/> If a client wants to make a replacement, then find the <em>value</em> <see cref="SyntaxNode"/> put into
63public SyntaxEditor(SyntaxNode root, Workspace workspace)
71public SyntaxEditor(SyntaxNode root, HostWorkspaceServices services)
79public SyntaxEditor(SyntaxNode root, SolutionServices services)
85internal SyntaxEditor(SyntaxNode root, SyntaxGenerator generator)
92/// The <see cref="SyntaxNode"/> that was specified when the <see cref="SyntaxEditor"/> was constructed.
94public SyntaxNode OriginalRoot { get; }
97/// A <see cref="SyntaxGenerator"/> to use to create and change <see cref="SyntaxNode"/>'s.
104public SyntaxNode GetChangedRoot()
108var newRoot = OriginalRoot.TrackNodes(nodes);
119public void TrackNode(SyntaxNode node)
129public void RemoveNode(SyntaxNode node)
137public void RemoveNode(SyntaxNode node, SyntaxRemoveOptions options)
149public void ReplaceNode(SyntaxNode node, Func<SyntaxNode, SyntaxGenerator, SyntaxNode> computeReplacement)
158internal void ReplaceNode(SyntaxNode node, Func<SyntaxNode, SyntaxGenerator, IEnumerable<SyntaxNode>> computeReplacement)
167internal void ReplaceNode<TArgument>(SyntaxNode node, Func<SyntaxNode, SyntaxGenerator, TArgument, SyntaxNode> computeReplacement, TArgument argument)
181public void ReplaceNode(SyntaxNode node, SyntaxNode newNode)
195public void InsertBefore(SyntaxNode node, IEnumerable<SyntaxNode> newNodes)
209public void InsertBefore(SyntaxNode node, SyntaxNode newNode)
217public void InsertAfter(SyntaxNode node, IEnumerable<SyntaxNode> newNodes)
231public void InsertAfter(SyntaxNode node, SyntaxNode newNode)
234private void CheckNodeInOriginalTree(SyntaxNode node)
245private abstract class Change(SyntaxNode node)
247internal readonly SyntaxNode OriginalNode = node;
249public SyntaxNode Apply(SyntaxNode root, SyntaxGenerator generator)
251var currentNode = root.GetCurrentNode(OriginalNode);
258protected static SyntaxNode ValidateNewRoot(SyntaxNode? root)
261protected abstract SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator);
264private sealed class NoChange(SyntaxNode node) : Change(node)
266protected override SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator)
270private sealed class RemoveChange(SyntaxNode node, SyntaxRemoveOptions options) : Change(node)
272protected override SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator)
278private readonly Func<SyntaxNode, SyntaxGenerator, SyntaxNode?> _modifier;
281SyntaxNode node,
282Func<SyntaxNode, SyntaxGenerator, SyntaxNode?> modifier)
289protected override SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator)
294SyntaxNode node,
295Func<SyntaxNode, SyntaxGenerator, IEnumerable<SyntaxNode>> modifier) : Change(node)
297protected override SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator)
302SyntaxNode node,
303Func<SyntaxNode, SyntaxGenerator, TArgument, SyntaxNode> modifier,
306protected override SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator)
310private sealed class InsertChange(SyntaxNode node, IEnumerable<SyntaxNode> newNodes, bool isBefore) : Change(node)
312private readonly List<SyntaxNode> _newNodes = [.. newNodes];
314protected override SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator)
Editing\SyntaxEditorExtensions.cs (38)
11public static void SetAccessibility(this SyntaxEditor editor, SyntaxNode declaration, Accessibility accessibility)
14public static void SetModifiers(this SyntaxEditor editor, SyntaxNode declaration, DeclarationModifiers modifiers)
17internal static void RemoveAllAttributes(this SyntaxEditor editor, SyntaxNode declaration)
20internal static void RemoveAllComments(this SyntaxEditor editor, SyntaxNode declaration)
23internal static void RemoveAllTypeInheritance(this SyntaxEditor editor, SyntaxNode declaration)
26public static void SetName(this SyntaxEditor editor, SyntaxNode declaration, string name)
29public static void SetType(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode type)
32public static void SetTypeParameters(this SyntaxEditor editor, SyntaxNode declaration, IEnumerable<string> typeParameters)
35public static void SetTypeConstraint(this SyntaxEditor editor, SyntaxNode declaration, string typeParameterName, SpecialTypeConstraintKind kind, IEnumerable<SyntaxNode> types)
38public static void SetExpression(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode expression)
41public static void SetStatements(this SyntaxEditor editor, SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
44public static void SetGetAccessorStatements(this SyntaxEditor editor, SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
47public static void SetSetAccessorStatements(this SyntaxEditor editor, SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
50public static void AddParameter(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode parameter)
53public static void InsertParameter(this SyntaxEditor editor, SyntaxNode declaration, int index, SyntaxNode parameter)
56public static void AddAttribute(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode attribute)
59public static void AddReturnAttribute(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode attribute)
62public static void AddAttributeArgument(this SyntaxEditor editor, SyntaxNode attributeDeclaration, SyntaxNode attributeArgument)
65public static void AddMember(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode member)
68public static void InsertMembers(this SyntaxEditor editor, SyntaxNode declaration, int index, IEnumerable<SyntaxNode> members)
71public static void AddInterfaceType(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode interfaceType)
74public static void AddBaseType(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode baseType)
77internal static void RemovePrimaryConstructor(this SyntaxEditor editor, SyntaxNode declaration)
Editing\SyntaxGenerator.cs (806)
29/// possible. For example, generating <see cref="MemberAccessExpression(SyntaxNode, string)"/>
86public SyntaxNode? GetDeclaration(SyntaxNode? node)
104public SyntaxNode? GetDeclaration(SyntaxNode? node, DeclarationKind kind)
122public abstract SyntaxNode FieldDeclaration(
124SyntaxNode type,
127SyntaxNode? initializer = null);
132public SyntaxNode FieldDeclaration(IFieldSymbol field)
136var initializer = field.HasConstantValue ? this.LiteralExpression(field.ConstantValue, canUseFieldReference) : null;
143public SyntaxNode FieldDeclaration(IFieldSymbol field, SyntaxNode? initializer)
161public SyntaxNode MethodDeclaration(
163IEnumerable<SyntaxNode>? parameters = null,
165SyntaxNode? returnType = null,
168IEnumerable<SyntaxNode>? statements = null)
175private protected abstract SyntaxNode MethodDeclaration(
177IEnumerable<SyntaxNode>? parameters,
178IEnumerable<SyntaxNode>? typeParameters,
179SyntaxNode? returnType,
182IEnumerable<SyntaxNode>? statements);
187public SyntaxNode MethodDeclaration(IMethodSymbol method, IEnumerable<SyntaxNode>? statements = null)
190internal SyntaxNode MethodDeclaration(IMethodSymbol method, string name, IEnumerable<SyntaxNode>? statements = null)
192var decl = MethodDeclaration(
256public virtual SyntaxNode OperatorDeclaration(
258IEnumerable<SyntaxNode>? parameters = null,
259SyntaxNode? returnType = null,
262IEnumerable<SyntaxNode>? statements = null)
267private protected abstract SyntaxNode OperatorDeclaration(
270IEnumerable<SyntaxNode>? parameters = null,
271SyntaxNode? returnType = null,
274IEnumerable<SyntaxNode>? statements = null);
279public SyntaxNode OperatorDeclaration(IMethodSymbol method, IEnumerable<SyntaxNode>? statements = null)
284var decl = OperatorDeclaration(
300public SyntaxNode ParameterDeclaration(
302SyntaxNode? type = null,
303SyntaxNode? initializer = null,
310private protected abstract SyntaxNode ParameterDeclaration(
312SyntaxNode? type,
313SyntaxNode? initializer,
322public SyntaxNode ParameterDeclaration(IParameterSymbol symbol, SyntaxNode? initializer = null)
335private protected abstract SyntaxNode TypeParameter(ITypeParameterSymbol typeParameter);
336private protected abstract SyntaxNode TypeParameter(string name);
338private protected abstract SyntaxNode GenerateExpression(ITypeSymbol? type, object? value, bool canUseFieldReference);
353public abstract SyntaxNode PropertyDeclaration(
355SyntaxNode type,
358IEnumerable<SyntaxNode>? getAccessorStatements = null,
359IEnumerable<SyntaxNode>? setAccessorStatements = null);
364public SyntaxNode PropertyDeclaration(
366IEnumerable<SyntaxNode>? getAccessorStatements = null,
367IEnumerable<SyntaxNode>? setAccessorStatements = null)
373SyntaxNode? getAccessor = null;
374SyntaxNode? setAccessor = null;
391var propDecl = PropertyDeclaration(
408private protected abstract SyntaxNode PropertyDeclaration(
410SyntaxNode type,
411SyntaxNode? getAccessor,
412SyntaxNode? setAccessor,
416public SyntaxNode WithAccessorDeclarations(SyntaxNode declaration, params SyntaxNode[] accessorDeclarations)
417=> WithAccessorDeclarations(declaration, (IEnumerable<SyntaxNode>)accessorDeclarations);
419public abstract SyntaxNode WithAccessorDeclarations(SyntaxNode declaration, IEnumerable<SyntaxNode> accessorDeclarations);
421public abstract SyntaxNode GetAccessorDeclaration(
423IEnumerable<SyntaxNode>? statements = null);
425public SyntaxNode SetAccessorDeclaration(
427IEnumerable<SyntaxNode>? statements = null)
430private protected abstract SyntaxNode SetAccessorDeclaration(
431Accessibility accessibility, bool isInitOnly, IEnumerable<SyntaxNode>? statements);
436public abstract SyntaxNode IndexerDeclaration(
437IEnumerable<SyntaxNode> parameters,
438SyntaxNode type,
441IEnumerable<SyntaxNode>? getAccessorStatements = null,
442IEnumerable<SyntaxNode>? setAccessorStatements = null);
447public SyntaxNode IndexerDeclaration(
449IEnumerable<SyntaxNode>? getAccessorStatements = null,
450IEnumerable<SyntaxNode>? setAccessorStatements = null)
452var indexerDecl = IndexerDeclaration(
472public abstract SyntaxNode AddEventHandler(SyntaxNode @event, SyntaxNode handler);
477public abstract SyntaxNode RemoveEventHandler(SyntaxNode @event, SyntaxNode handler);
482public abstract SyntaxNode EventDeclaration(
484SyntaxNode type,
491public SyntaxNode EventDeclaration(IEventSymbol symbol)
493var ev = EventDeclaration(
511public abstract SyntaxNode CustomEventDeclaration(
513SyntaxNode type,
516IEnumerable<SyntaxNode>? parameters = null,
517IEnumerable<SyntaxNode>? addAccessorStatements = null,
518IEnumerable<SyntaxNode>? removeAccessorStatements = null);
523public SyntaxNode CustomEventDeclaration(
525IEnumerable<SyntaxNode>? addAccessorStatements = null,
526IEnumerable<SyntaxNode>? removeAccessorStatements = null)
544public abstract SyntaxNode ConstructorDeclaration(
546IEnumerable<SyntaxNode>? parameters = null,
549IEnumerable<SyntaxNode>? baseConstructorArguments = null,
550IEnumerable<SyntaxNode>? statements = null);
555public SyntaxNode ConstructorDeclaration(
557IEnumerable<SyntaxNode>? baseConstructorArguments = null,
558IEnumerable<SyntaxNode>? statements = null)
569private protected abstract SyntaxNode DestructorDeclaration(IMethodSymbol destructorMethod);
575public SyntaxNode? AsPublicInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceType)
582public abstract SyntaxNode? AsPublicInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceType, string? interfaceMemberName);
588public SyntaxNode? AsPrivateInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceType)
595public abstract SyntaxNode? AsPrivateInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceType, string? interfaceMemberName);
600public SyntaxNode ClassDeclaration(
605SyntaxNode? baseType = null,
606IEnumerable<SyntaxNode>? interfaceTypes = null,
607IEnumerable<SyntaxNode>? members = null)
613private protected abstract SyntaxNode ClassDeclaration(
616IEnumerable<SyntaxNode>? typeParameters,
619SyntaxNode? baseType,
620IEnumerable<SyntaxNode>? interfaceTypes,
621IEnumerable<SyntaxNode>? members);
626public SyntaxNode StructDeclaration(
631IEnumerable<SyntaxNode>? interfaceTypes = null,
632IEnumerable<SyntaxNode>? members = null)
638private protected abstract SyntaxNode StructDeclaration(
641IEnumerable<SyntaxNode>? typeParameters,
644IEnumerable<SyntaxNode>? interfaceTypes,
645IEnumerable<SyntaxNode>? members);
650public SyntaxNode InterfaceDeclaration(
654IEnumerable<SyntaxNode>? interfaceTypes = null,
655IEnumerable<SyntaxNode>? members = null)
661private protected abstract SyntaxNode InterfaceDeclaration(
663IEnumerable<SyntaxNode>? typeParameters,
665IEnumerable<SyntaxNode>? interfaceTypes,
666IEnumerable<SyntaxNode>? members);
671public abstract SyntaxNode EnumDeclaration(
675IEnumerable<SyntaxNode>? members = null);
680internal abstract SyntaxNode EnumDeclaration(
682SyntaxNode? underlyingType,
685IEnumerable<SyntaxNode>? members = null);
690internal abstract SyntaxNode ExtensionBlockDeclaration(
691SyntaxNode extensionParameter,
692IEnumerable<SyntaxNode>? typeParameters,
693IEnumerable<SyntaxNode> members);
698public abstract SyntaxNode EnumMember(string name, SyntaxNode? expression = null);
703public SyntaxNode DelegateDeclaration(
705IEnumerable<SyntaxNode>? parameters = null,
707SyntaxNode? returnType = null,
715private protected abstract SyntaxNode DelegateDeclaration(
717IEnumerable<SyntaxNode>? parameters,
718IEnumerable<SyntaxNode>? typeParameters,
719SyntaxNode? returnType,
726public SyntaxNode Declaration(ISymbol symbol)
767var declaration = type.TypeKind switch
913private SyntaxNode WithTypeParametersAndConstraints(SyntaxNode declaration, ImmutableArray<ITypeParameterSymbol> typeParameters)
939internal abstract SyntaxNode WithExplicitInterfaceImplementations(
940SyntaxNode declaration, ImmutableArray<ISymbol> explicitInterfaceImplementations, bool removeDefaults = true);
945public SyntaxNode WithTypeParameters(SyntaxNode declaration, IEnumerable<string> typeParameters)
948private protected abstract SyntaxNode WithTypeParameters(SyntaxNode declaration, IEnumerable<SyntaxNode> typeParameters);
953public SyntaxNode WithTypeParameters(SyntaxNode declaration, params string[] typeParameters)
960public SyntaxNode WithTypeConstraint(SyntaxNode declaration, string typeParameterName, SpecialTypeConstraintKind kinds, IEnumerable<SyntaxNode>? types = null)
964private protected abstract SyntaxNode WithTypeConstraint(
965SyntaxNode declaration, string typeParameterName, SpecialTypeConstraintKind kinds, bool isUnamangedType, IEnumerable<SyntaxNode>? types);
967private protected abstract SyntaxNode WithDefaultConstraint(SyntaxNode declaration, string typeParameterName);
972public SyntaxNode WithTypeConstraint(SyntaxNode declaration, string typeParameterName, SpecialTypeConstraintKind kinds, params SyntaxNode[] types)
973=> WithTypeConstraint(declaration, typeParameterName, kinds, (IEnumerable<SyntaxNode>)types);
978public SyntaxNode WithTypeConstraint(SyntaxNode declaration, string typeParameterName, params SyntaxNode[] types)
979=> WithTypeConstraint(declaration, typeParameterName, SpecialTypeConstraintKind.None, (IEnumerable<SyntaxNode>)types);
986public abstract SyntaxNode NamespaceDeclaration(SyntaxNode name, IEnumerable<SyntaxNode> declarations);
993public SyntaxNode NamespaceDeclaration(SyntaxNode name, params SyntaxNode[] declarations)
994=> NamespaceDeclaration(name, (IEnumerable<SyntaxNode>)declarations);
1001public SyntaxNode NamespaceDeclaration(string name, IEnumerable<SyntaxNode> declarations)
1009public SyntaxNode NamespaceDeclaration(string name, params SyntaxNode[] declarations)
1010=> NamespaceDeclaration(DottedName(name), (IEnumerable<SyntaxNode>)declarations);
1016public abstract SyntaxNode CompilationUnit(IEnumerable<SyntaxNode> declarations);
1022public SyntaxNode CompilationUnit(params SyntaxNode[] declarations)
1023=> CompilationUnit((IEnumerable<SyntaxNode>)declarations);
1029public abstract SyntaxNode NamespaceImportDeclaration(SyntaxNode name);
1035public SyntaxNode NamespaceImportDeclaration(string name)
1043public SyntaxNode AliasImportDeclaration(string aliasIdentifierName, INamespaceOrTypeSymbol symbol)
1051public abstract SyntaxNode AliasImportDeclaration(string aliasIdentifierName, SyntaxNode name);
1056public abstract SyntaxNode Attribute(SyntaxNode name, IEnumerable<SyntaxNode>? attributeArguments = null);
1061public SyntaxNode Attribute(string name, IEnumerable<SyntaxNode>? attributeArguments = null)
1067public SyntaxNode Attribute(string name, params SyntaxNode[] attributeArguments)
1068=> Attribute(name, (IEnumerable<SyntaxNode>)attributeArguments);
1073public SyntaxNode Attribute(AttributeData attribute)
1089public abstract SyntaxNode AttributeArgument(string? name, SyntaxNode expression);
1094public SyntaxNode AttributeArgument(SyntaxNode expression)
1100public SyntaxNode RemoveAllAttributes(SyntaxNode declaration)
1107internal abstract SyntaxNode RemoveAllComments(SyntaxNode node);
1109internal SyntaxNode RemovePrimaryConstructor(SyntaxNode declaration)
1111var node = GetPrimaryConstructorParameterList(declaration);
1115internal abstract SyntaxNode? GetPrimaryConstructorParameterList(SyntaxNode declaration);
1117internal SyntaxNode RemoveLeadingAndTrailingComments(SyntaxNode node)
1133internal SyntaxNode RemoveAllTypeInheritance(SyntaxNode declaration)
1136internal abstract ImmutableArray<SyntaxNode> GetTypeInheritance(SyntaxNode declaration);
1141public abstract IReadOnlyList<SyntaxNode> GetAttributes(SyntaxNode declaration);
1146public abstract SyntaxNode InsertAttributes(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes);
1151public SyntaxNode InsertAttributes(SyntaxNode declaration, int index, params SyntaxNode[] attributes)
1152=> this.InsertAttributes(declaration, index, (IEnumerable<SyntaxNode>)attributes);
1157public SyntaxNode AddAttributes(SyntaxNode declaration, IEnumerable<SyntaxNode> attributes)
1163public SyntaxNode AddAttributes(SyntaxNode declaration, params SyntaxNode[] attributes)
1164=> AddAttributes(declaration, (IEnumerable<SyntaxNode>)attributes);
1169public abstract IReadOnlyList<SyntaxNode> GetReturnAttributes(SyntaxNode declaration);
1174public abstract SyntaxNode InsertReturnAttributes(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes);
1179public SyntaxNode InsertReturnAttributes(SyntaxNode declaration, int index, params SyntaxNode[] attributes)
1180=> this.InsertReturnAttributes(declaration, index, (IEnumerable<SyntaxNode>)attributes);
1185public SyntaxNode AddReturnAttributes(SyntaxNode declaration, IEnumerable<SyntaxNode> attributes)
1191public SyntaxNode AddReturnAttributes(SyntaxNode declaration, params SyntaxNode[] attributes)
1192=> AddReturnAttributes(declaration, (IEnumerable<SyntaxNode>)attributes);
1197public abstract IReadOnlyList<SyntaxNode> GetAttributeArguments(SyntaxNode attributeDeclaration);
1202public abstract SyntaxNode InsertAttributeArguments(SyntaxNode attributeDeclaration, int index, IEnumerable<SyntaxNode> attributeArguments);
1207public SyntaxNode AddAttributeArguments(SyntaxNode attributeDeclaration, IEnumerable<SyntaxNode> attributeArguments)
1213public abstract IReadOnlyList<SyntaxNode> GetNamespaceImports(SyntaxNode declaration);
1218public abstract SyntaxNode InsertNamespaceImports(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> imports);
1223public SyntaxNode InsertNamespaceImports(SyntaxNode declaration, int index, params SyntaxNode[] imports)
1224=> this.InsertNamespaceImports(declaration, index, (IEnumerable<SyntaxNode>)imports);
1229public SyntaxNode AddNamespaceImports(SyntaxNode declaration, IEnumerable<SyntaxNode> imports)
1235public SyntaxNode AddNamespaceImports(SyntaxNode declaration, params SyntaxNode[] imports)
1236=> this.AddNamespaceImports(declaration, (IEnumerable<SyntaxNode>)imports);
1241public abstract IReadOnlyList<SyntaxNode> GetMembers(SyntaxNode declaration);
1246public abstract SyntaxNode InsertMembers(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> members);
1251public SyntaxNode InsertMembers(SyntaxNode declaration, int index, params SyntaxNode[] members)
1252=> this.InsertMembers(declaration, index, (IEnumerable<SyntaxNode>)members);
1257public SyntaxNode AddMembers(SyntaxNode declaration, IEnumerable<SyntaxNode> members)
1263public SyntaxNode AddMembers(SyntaxNode declaration, params SyntaxNode[] members)
1264=> this.AddMembers(declaration, (IEnumerable<SyntaxNode>)members);
1269public abstract Accessibility GetAccessibility(SyntaxNode declaration);
1274public abstract SyntaxNode WithAccessibility(SyntaxNode declaration, Accessibility accessibility);
1279public abstract DeclarationModifiers GetModifiers(SyntaxNode declaration);
1284public SyntaxNode WithModifiers(SyntaxNode declaration, DeclarationModifiers modifiers)
1285=> WithModifiers<SyntaxNode>(declaration, modifiers);
1288where TSyntaxNode : SyntaxNode;
1293public abstract DeclarationKind GetDeclarationKind(SyntaxNode declaration);
1298public abstract string GetName(SyntaxNode declaration);
1303public abstract SyntaxNode WithName(SyntaxNode declaration, string name);
1308public abstract SyntaxNode? GetType(SyntaxNode declaration);
1313public abstract SyntaxNode WithType(SyntaxNode declaration, SyntaxNode type);
1318public abstract IReadOnlyList<SyntaxNode> GetParameters(SyntaxNode declaration);
1320internal abstract SyntaxNode? GetParameterListNode(SyntaxNode declaration);
1325public abstract SyntaxNode InsertParameters(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> parameters);
1330public SyntaxNode AddParameters(SyntaxNode declaration, IEnumerable<SyntaxNode> parameters)
1336public abstract IReadOnlyList<SyntaxNode> GetSwitchSections(SyntaxNode switchStatement);
1341public abstract SyntaxNode InsertSwitchSections(SyntaxNode switchStatement, int index, IEnumerable<SyntaxNode> switchSections);
1346public SyntaxNode AddSwitchSections(SyntaxNode switchStatement, IEnumerable<SyntaxNode> switchSections)
1352public abstract SyntaxNode? GetExpression(SyntaxNode declaration);
1357public abstract SyntaxNode WithExpression(SyntaxNode declaration, SyntaxNode expression);
1362public abstract IReadOnlyList<SyntaxNode> GetStatements(SyntaxNode declaration);
1367public abstract SyntaxNode WithStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements);
1372public abstract IReadOnlyList<SyntaxNode> GetAccessors(SyntaxNode declaration);
1377public SyntaxNode? GetAccessor(SyntaxNode declaration, DeclarationKind kind)
1383public abstract SyntaxNode InsertAccessors(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> accessors);
1388public SyntaxNode AddAccessors(SyntaxNode declaration, IEnumerable<SyntaxNode> accessors)
1394public abstract IReadOnlyList<SyntaxNode> GetGetAccessorStatements(SyntaxNode declaration);
1399public abstract SyntaxNode WithGetAccessorStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements);
1404public abstract IReadOnlyList<SyntaxNode> GetSetAccessorStatements(SyntaxNode declaration);
1409public abstract SyntaxNode WithSetAccessorStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements);
1414public abstract IReadOnlyList<SyntaxNode> GetBaseAndInterfaceTypes(SyntaxNode declaration);
1419public abstract SyntaxNode AddBaseType(SyntaxNode declaration, SyntaxNode baseType);
1424public abstract SyntaxNode AddInterfaceType(SyntaxNode declaration, SyntaxNode interfaceType);
1426internal abstract SyntaxNode AsInterfaceMember(SyntaxNode member);
1435public virtual SyntaxNode ReplaceNode(SyntaxNode root, SyntaxNode node, SyntaxNode? newDeclaration)
1438internal static SyntaxNode ReplaceNode(SyntaxNode root, SyntaxNode node, IEnumerable<SyntaxNode> newDeclarations)
1447public virtual SyntaxNode InsertNodesBefore(SyntaxNode root, SyntaxNode node, IEnumerable<SyntaxNode> newDeclarations)
1453public virtual SyntaxNode InsertNodesAfter(SyntaxNode root, SyntaxNode node, IEnumerable<SyntaxNode> newDeclarations)
1459public virtual SyntaxNode RemoveNode(SyntaxNode root, SyntaxNode node)
1465public virtual SyntaxNode RemoveNode(SyntaxNode root, SyntaxNode node, SyntaxRemoveOptions options)
1471public SyntaxNode RemoveNodes(SyntaxNode root, IEnumerable<SyntaxNode> declarations)
1473var newRoot = root.TrackNodes(declarations);
1475foreach (var declaration in declarations)
1477var newDeclaration = newRoot.GetCurrentNode(declaration);
1493internal abstract SeparatedSyntaxList<TElement> SeparatedList<TElement>(SyntaxNodeOrTokenList list) where TElement : SyntaxNode;
1495internal abstract SeparatedSyntaxList<TElement> SeparatedList<TElement>(IEnumerable<TElement> nodes, IEnumerable<SyntaxToken> separators) where TElement : SyntaxNode;
1520protected static SyntaxNode? PreserveTrivia<TNode>(TNode? node, Func<TNode, SyntaxNode> nodeChanger) where TNode : SyntaxNode
1529var changedNode = nodeChanger(nodeWithoutTrivia);
1540protected static SyntaxNode ReplaceWithTrivia(SyntaxNode root, SyntaxNode original, SyntaxNode replacement)
1542var combinedTriviaReplacement =
1549protected static SyntaxNode ReplaceWithTrivia<TNode>(SyntaxNode root, TNode original, Func<TNode, SyntaxNode> replacer)
1550where TNode : SyntaxNode
1555protected static SyntaxNode ReplaceWithTrivia(SyntaxNode root, SyntaxToken original, SyntaxToken replacement)
1568public abstract TNode ClearTrivia<TNode>([MaybeNull] TNode node) where TNode : SyntaxNode;
1585protected static SyntaxNode ReplaceRange(SyntaxNode root, SyntaxNode node, IEnumerable<SyntaxNode> replacements)
1587var first = replacements.First();
1588var trackedFirst = first.TrackNodes(first);
1589var newRoot = root.ReplaceNode(node, trackedFirst);
1590var currentFirst = newRoot.GetCurrentNode(first);
1597where TNode : SyntaxNode
1608where TNode : SyntaxNode
1626public abstract SyntaxNode ExpressionStatement(SyntaxNode expression);
1632public abstract SyntaxNode ReturnStatement(SyntaxNode? expression = null);
1638internal SyntaxNode YieldReturnStatement(SyntaxNode expression)
1645public abstract SyntaxNode ThrowStatement(SyntaxNode? expression = null);
1650public abstract SyntaxNode ThrowExpression(SyntaxNode expression);
1661/// <see cref="LocalDeclarationStatement(ITypeSymbol, string, SyntaxNode, bool)"/>.
1669public abstract SyntaxNode LocalDeclarationStatement(
1670SyntaxNode? type, string identifier, SyntaxNode? initializer = null, bool isConst = false);
1672internal SyntaxNode LocalDeclarationStatement(SyntaxNode? type, SyntaxToken identifier, SyntaxNode? initializer = null, bool isConst = false)
1675internal SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer)
1678internal SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value)
1684public SyntaxNode LocalDeclarationStatement(ITypeSymbol type, string name, SyntaxNode? initializer = null, bool isConst = false)
1690public SyntaxNode LocalDeclarationStatement(string name, SyntaxNode initializer)
1691=> LocalDeclarationStatement(type: (SyntaxNode?)null, name, initializer);
1696internal SyntaxNode LocalDeclarationStatement(SyntaxToken name, SyntaxNode initializer)
1705public abstract SyntaxNode IfStatement(
1706SyntaxNode condition, IEnumerable<SyntaxNode> trueStatements, IEnumerable<SyntaxNode>? falseStatements = null);
1714public SyntaxNode IfStatement(SyntaxNode condition, IEnumerable<SyntaxNode> trueStatements, SyntaxNode falseStatement)
1720public abstract SyntaxNode SwitchStatement(SyntaxNode expression, IEnumerable<SyntaxNode> sections);
1725public SyntaxNode SwitchStatement(SyntaxNode expression, params SyntaxNode[] sections)
1726=> SwitchStatement(expression, (IEnumerable<SyntaxNode>)sections);
1731public abstract SyntaxNode SwitchSection(IEnumerable<SyntaxNode> caseExpressions, IEnumerable<SyntaxNode> statements);
1733internal abstract SyntaxNode SwitchSectionFromLabels(IEnumerable<SyntaxNode> labels, IEnumerable<SyntaxNode> statements);
1738public SyntaxNode SwitchSection(SyntaxNode caseExpression, IEnumerable<SyntaxNode> statements)
1744public abstract SyntaxNode DefaultSwitchSection(IEnumerable<SyntaxNode> statements);
1749public abstract SyntaxNode ExitSwitchStatement();
1754public abstract SyntaxNode UsingStatement(SyntaxNode? type, string name, SyntaxNode expression, IEnumerable<SyntaxNode> statements);
1759public SyntaxNode UsingStatement(string name, SyntaxNode expression, IEnumerable<SyntaxNode> statements)
1765public abstract SyntaxNode UsingStatement(SyntaxNode expression, IEnumerable<SyntaxNode> statements);
1770public abstract SyntaxNode LockStatement(SyntaxNode expression, IEnumerable<SyntaxNode> statements);
1775public abstract SyntaxNode TryCatchStatement(IEnumerable<SyntaxNode> tryStatements, IEnumerable<SyntaxNode>? catchClauses, IEnumerable<SyntaxNode>? finallyStatements = null);
1780public SyntaxNode TryCatchStatement(IEnumerable<SyntaxNode> tryStatements, params SyntaxNode[] catchClauses)
1781=> TryCatchStatement(tryStatements, (IEnumerable<SyntaxNode>?)catchClauses);
1786public SyntaxNode TryFinallyStatement(IEnumerable<SyntaxNode> tryStatements, IEnumerable<SyntaxNode> finallyStatements)
1792public abstract SyntaxNode CatchClause(SyntaxNode type, string identifier, IEnumerable<SyntaxNode> statements);
1797public SyntaxNode CatchClause(ITypeSymbol type, string identifier, IEnumerable<SyntaxNode> statements)
1803public abstract SyntaxNode WhileStatement(SyntaxNode condition, IEnumerable<SyntaxNode> statements);
1808internal abstract SyntaxNode ScopeBlock(IEnumerable<SyntaxNode> statements);
1810internal abstract SyntaxNode GlobalStatement(SyntaxNode statement);
1820internal SyntaxNode InterpolatedStringText(SyntaxToken textToken)
1822internal SyntaxNode Interpolation(SyntaxNode syntaxNode)
1824internal SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken)
1826internal SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment)
1828internal SyntaxNode InterpolationFormatClause(string format)
1835public SyntaxNode DefaultExpression(SyntaxNode type)
1838public SyntaxNode DefaultExpression(ITypeSymbol type)
1844public abstract SyntaxNode ThisExpression();
1849public abstract SyntaxNode BaseExpression();
1854public SyntaxNode LiteralExpression(object? value)
1860private SyntaxNode LiteralExpression(object? value, bool canUseFieldReference)
1866public abstract SyntaxNode TypedConstantExpression(TypedConstant value);
1871public SyntaxNode FalseLiteralExpression()
1877public SyntaxNode TrueLiteralExpression()
1883public SyntaxNode NullLiteralExpression()
1890public SyntaxNode IdentifierName(string identifier)
1893internal abstract SyntaxNode IdentifierName(SyntaxToken identifier);
1895internal abstract SyntaxNode NamedAnonymousObjectMemberDeclarator(SyntaxNode identifier, SyntaxNode expression);
1900public abstract SyntaxNode GenericName(string identifier, IEnumerable<SyntaxNode> typeArguments);
1902internal abstract SyntaxNode GenericName(SyntaxToken identifier, IEnumerable<SyntaxNode> typeArguments);
1907public SyntaxNode GenericName(string identifier, IEnumerable<ITypeSymbol> typeArguments)
1913public SyntaxNode GenericName(string identifier, params SyntaxNode[] typeArguments)
1914=> GenericName(identifier, (IEnumerable<SyntaxNode>)typeArguments);
1919public SyntaxNode GenericName(string identifier, params ITypeSymbol[] typeArguments)
1926public abstract SyntaxNode WithTypeArguments(SyntaxNode expression, IEnumerable<SyntaxNode> typeArguments);
1932public SyntaxNode WithTypeArguments(SyntaxNode expression, params SyntaxNode[] typeArguments)
1933=> WithTypeArguments(expression, (IEnumerable<SyntaxNode>)typeArguments);
1940public abstract SyntaxNode QualifiedName(SyntaxNode left, SyntaxNode right);
1945internal abstract SyntaxNode GlobalAliasedName(SyntaxNode name);
1950public SyntaxNode DottedName(string dottedName)
1960SyntaxNode? name = null;
1983public abstract SyntaxNode NameExpression(INamespaceOrTypeSymbol namespaceOrTypeSymbol);
1988public SyntaxNode TypeExpression(ITypeSymbol typeSymbol)
1996public SyntaxNode TypeExpression(ITypeSymbol typeSymbol, bool addImport)
1998var expression = TypeExpression(typeSymbol);
2007public abstract SyntaxNode TypeExpression(SpecialType specialType);
2012public abstract SyntaxNode ArrayTypeExpression(SyntaxNode type);
2017public abstract SyntaxNode NullableTypeExpression(SyntaxNode type);
2022public SyntaxNode TupleTypeExpression(IEnumerable<SyntaxNode> elements)
2037internal abstract SyntaxNode CreateTupleType(IEnumerable<SyntaxNode> elements);
2042public SyntaxNode TupleTypeExpression(params SyntaxNode[] elements)
2043=> TupleTypeExpression((IEnumerable<SyntaxNode>)elements);
2048public SyntaxNode TupleTypeExpression(IEnumerable<ITypeSymbol> elementTypes, IEnumerable<string>? elementNames = null)
2072public abstract SyntaxNode TupleElementExpression(SyntaxNode type, string? name = null);
2077public SyntaxNode TupleElementExpression(ITypeSymbol type, string? name = null)
2084public abstract SyntaxNode AssignmentStatement(SyntaxNode left, SyntaxNode right);
2089public abstract SyntaxNode ValueEqualsExpression(SyntaxNode left, SyntaxNode right);
2094public abstract SyntaxNode ReferenceEqualsExpression(SyntaxNode left, SyntaxNode right);
2099public abstract SyntaxNode ValueNotEqualsExpression(SyntaxNode left, SyntaxNode right);
2104public abstract SyntaxNode ReferenceNotEqualsExpression(SyntaxNode left, SyntaxNode right);
2109public abstract SyntaxNode LessThanExpression(SyntaxNode left, SyntaxNode right);
2114public abstract SyntaxNode LessThanOrEqualExpression(SyntaxNode left, SyntaxNode right);
2119public abstract SyntaxNode GreaterThanExpression(SyntaxNode left, SyntaxNode right);
2124public abstract SyntaxNode GreaterThanOrEqualExpression(SyntaxNode left, SyntaxNode right);
2129public abstract SyntaxNode NegateExpression(SyntaxNode expression);
2134public abstract SyntaxNode AddExpression(SyntaxNode left, SyntaxNode right);
2139public abstract SyntaxNode SubtractExpression(SyntaxNode left, SyntaxNode right);
2144public abstract SyntaxNode MultiplyExpression(SyntaxNode left, SyntaxNode right);
2149public abstract SyntaxNode DivideExpression(SyntaxNode left, SyntaxNode right);
2154public abstract SyntaxNode ModuloExpression(SyntaxNode left, SyntaxNode right);
2159public abstract SyntaxNode BitwiseAndExpression(SyntaxNode left, SyntaxNode right);
2164public SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right)
2170public abstract SyntaxNode BitwiseNotExpression(SyntaxNode operand);
2175public abstract SyntaxNode LogicalAndExpression(SyntaxNode left, SyntaxNode right);
2180public abstract SyntaxNode LogicalOrExpression(SyntaxNode left, SyntaxNode right);
2185public abstract SyntaxNode LogicalNotExpression(SyntaxNode expression);
2190public abstract SyntaxNode ConditionalExpression(SyntaxNode condition, SyntaxNode whenTrue, SyntaxNode whenFalse);
2195/// cref="ElementBindingExpression(IEnumerable{SyntaxNode})"/> to generate the <paramref
2198public abstract SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull);
2203public abstract SyntaxNode MemberBindingExpression(SyntaxNode name);
2208public abstract SyntaxNode ElementBindingExpression(IEnumerable<SyntaxNode> arguments);
2213public SyntaxNode ElementBindingExpression(params SyntaxNode[] arguments)
2214=> ElementBindingExpression((IEnumerable<SyntaxNode>)arguments);
2219public abstract SyntaxNode CoalesceExpression(SyntaxNode left, SyntaxNode right);
2224public SyntaxNode MemberAccessExpression(SyntaxNode? expression, SyntaxNode memberName)
2227internal SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode memberName)
2230internal SyntaxNode RefExpression(SyntaxNode expression)
2236public SyntaxNode MemberAccessExpression(SyntaxNode? expression, string memberName)
2242public abstract SyntaxNode ArrayCreationExpression(SyntaxNode elementType, SyntaxNode size);
2247public abstract SyntaxNode ArrayCreationExpression(SyntaxNode elementType, IEnumerable<SyntaxNode> elements);
2252public abstract SyntaxNode ObjectCreationExpression(SyntaxNode namedType, IEnumerable<SyntaxNode> arguments);
2254internal abstract SyntaxNode ObjectCreationExpression(
2255SyntaxNode namedType, SyntaxToken openParen, SeparatedSyntaxList<SyntaxNode> arguments, SyntaxToken closeParen);
2260public SyntaxNode ObjectCreationExpression(ITypeSymbol type, IEnumerable<SyntaxNode> arguments)
2266public SyntaxNode ObjectCreationExpression(SyntaxNode type, params SyntaxNode[] arguments)
2267=> ObjectCreationExpression(type, (IEnumerable<SyntaxNode>)arguments);
2272public SyntaxNode ObjectCreationExpression(ITypeSymbol type, params SyntaxNode[] arguments)
2273=> ObjectCreationExpression(type, (IEnumerable<SyntaxNode>)arguments);
2278public abstract SyntaxNode InvocationExpression(SyntaxNode expression, IEnumerable<SyntaxNode> arguments);
2283public SyntaxNode InvocationExpression(SyntaxNode expression, params SyntaxNode[] arguments)
2284=> InvocationExpression(expression, (IEnumerable<SyntaxNode>)arguments);
2289public abstract SyntaxNode Argument(string? name, RefKind refKind, SyntaxNode expression);
2294public SyntaxNode Argument(RefKind refKind, SyntaxNode expression)
2300public SyntaxNode Argument(SyntaxNode expression)
2306public abstract SyntaxNode ElementAccessExpression(SyntaxNode expression, IEnumerable<SyntaxNode> arguments);
2311public SyntaxNode ElementAccessExpression(SyntaxNode expression, params SyntaxNode[] arguments)
2312=> ElementAccessExpression(expression, (IEnumerable<SyntaxNode>)arguments);
2317public abstract SyntaxNode TypeOfExpression(SyntaxNode type);
2322public abstract SyntaxNode IsTypeExpression(SyntaxNode expression, SyntaxNode type);
2327public SyntaxNode IsTypeExpression(SyntaxNode expression, ITypeSymbol type)
2333public abstract SyntaxNode TryCastExpression(SyntaxNode expression, SyntaxNode type);
2338public SyntaxNode TryCastExpression(SyntaxNode expression, ITypeSymbol type)
2344public SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression)
2350public SyntaxNode CastExpression(ITypeSymbol type, SyntaxNode expression)
2356public SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression)
2362public SyntaxNode ConvertExpression(ITypeSymbol type, SyntaxNode expression)
2368public abstract SyntaxNode ValueReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, SyntaxNode expression);
2373public abstract SyntaxNode VoidReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, SyntaxNode expression);
2378public abstract SyntaxNode ValueReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, IEnumerable<SyntaxNode> statements);
2383public abstract SyntaxNode VoidReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, IEnumerable<SyntaxNode> statements);
2388public SyntaxNode ValueReturningLambdaExpression(string parameterName, SyntaxNode expression)
2394public SyntaxNode VoidReturningLambdaExpression(string parameterName, SyntaxNode expression)
2400public SyntaxNode ValueReturningLambdaExpression(string parameterName, IEnumerable<SyntaxNode> statements)
2406public SyntaxNode VoidReturningLambdaExpression(string parameterName, IEnumerable<SyntaxNode> statements)
2412public SyntaxNode ValueReturningLambdaExpression(SyntaxNode expression)
2413=> ValueReturningLambdaExpression((IEnumerable<SyntaxNode>?)null, expression);
2418public SyntaxNode VoidReturningLambdaExpression(SyntaxNode expression)
2419=> VoidReturningLambdaExpression((IEnumerable<SyntaxNode>?)null, expression);
2424public SyntaxNode ValueReturningLambdaExpression(IEnumerable<SyntaxNode> statements)
2425=> ValueReturningLambdaExpression((IEnumerable<SyntaxNode>?)null, statements);
2430public SyntaxNode VoidReturningLambdaExpression(IEnumerable<SyntaxNode> statements)
2431=> VoidReturningLambdaExpression((IEnumerable<SyntaxNode>?)null, statements);
2436public abstract SyntaxNode LambdaParameter(string identifier, SyntaxNode? type = null);
2441public SyntaxNode LambdaParameter(string identifier, ITypeSymbol type)
2447public abstract SyntaxNode AwaitExpression(SyntaxNode expression);
2452internal SyntaxNode AddParentheses(SyntaxNode expression, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
2458public abstract SyntaxNode NameOfExpression(SyntaxNode expression);
2463public abstract SyntaxNode TupleExpression(IEnumerable<SyntaxNode> arguments);
2468internal abstract SyntaxNode ParseExpression(string stringToParse);
2470internal abstract SyntaxNode ParseTypeName(string stringToParse);
2472internal abstract SyntaxTrivia Trivia(SyntaxNode node);
2474internal abstract SyntaxNode DocumentationCommentTrivia(IEnumerable<SyntaxNode> nodes, SyntaxTriviaList trailingTrivia, string endOfLineString);
2476internal abstract SyntaxNode? DocumentationCommentTriviaWithUpdatedContent(SyntaxTrivia trivia, IEnumerable<SyntaxNode> content);
FindSymbols\FindReferences\Finders\AbstractReferenceFinder.cs (16)
45var parent = symbol.IsDelegateType()
54ISymbol searchSymbol, FindReferencesDocumentState state, SyntaxNode node, CancellationToken cancellationToken)
218SyntaxNode node,
227var directive = node.GetRequiredParent();
374SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData);
387foreach (var node in state.Root.DescendantNodesAndSelf())
406SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData)
445SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData)
451foreach (var expression in expressions)
484SyntaxNode node,
524SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData)
562SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData)
593SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData)
637SyntaxNode node,
646SyntaxNode node, FindReferencesDocumentState state)
663void TryAddAdditionalProperty(SyntaxNode? node, string key)
FindSymbols\FindReferences\Finders\PropertySymbolReferenceFinder.cs (16)
89var constructorSyntax = constructor.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
212foreach (var node in indexerReferenceExpressions)
232private static (bool matched, CandidateReason reason, SyntaxNode indexerReference) ComputeIndexerInformation(
235SyntaxNode node,
260private static (bool matched, CandidateReason reason, SyntaxNode indexerReference) ComputeIndexerMemberCRefInformation(
261IPropertySymbol symbol, FindReferencesDocumentState state, SyntaxNode node, CancellationToken cancellationToken)
269private static (bool matched, CandidateReason reason, SyntaxNode indexerReference) ComputeConditionalAccessInformation(
270IPropertySymbol symbol, SyntaxNode node, FindReferencesDocumentState state, CancellationToken cancellationToken)
274syntaxFacts.GetPartsOfConditionalAccessExpression(node, out _, out var indexerReference);
288private static (bool matched, CandidateReason reason, SyntaxNode? indexerReference) ComputeElementAccessInformation(
289IPropertySymbol symbol, SyntaxNode node, FindReferencesDocumentState state, CancellationToken cancellationToken)
292state.SyntaxFacts.GetPartsOfElementAccessExpression(node, out var expression, out var indexerReference);
305private static (bool matched, CandidateReason reason, SyntaxNode indexerReference) ComputeImplicitElementAccessInformation(
306IPropertySymbol symbol, SyntaxNode node, FindReferencesDocumentState state, CancellationToken cancellationToken)
308var argumentList = state.SyntaxFacts.GetArgumentListOfImplicitElementAccess(node);
FindSymbols\SyntaxTree\SyntaxTreeIndex_Create.cs (17)
40ProjectState project, SyntaxNode root, Checksum checksum, CancellationToken _)
91var node = current.AsNode();
225bool IsPartialClass(SyntaxNode node)
241private static bool IsGlobalSuppressMessageAttribute(ISyntaxFactsService syntaxFacts, SyntaxNode node)
246var name = syntaxFacts.GetNameOfAttribute(node);
249syntaxFacts.GetPartsOfQualifiedName(name, out _, out _, out var right);
267SyntaxNode node)
284foreach (var attributeList in attributeLists)
286foreach (var attribute in syntaxFacts.GetAttributesOfAttributeList(attributeList))
288syntaxFacts.GetPartsOfAttribute(attribute, out var attributeName, out var argumentList);
296var versionArg = syntaxFacts.GetExpressionOfAttributeArgument(arguments[0]);
297var dataArg = syntaxFacts.GetExpressionOfAttributeArgument(arguments[1]);
312syntaxFacts.GetPartsOfQualifiedName(attributeName, out _, out _, out var right);
336SyntaxNode node)
341syntaxFacts.GetPartsOfUsingAliasDirective(node, out var globalToken, out var alias, out var usingTarget);
346syntaxFacts.GetPartsOfQualifiedName(usingTarget, out _, out _, out var right);
Formatting\Formatter.cs (34)
94var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
134var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
153public static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
156internal static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken)
159private static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
179internal static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
190public static SyntaxNode Format(SyntaxNode node, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
193internal static SyntaxNode Format(SyntaxNode node, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken)
205public static SyntaxNode Format(SyntaxNode node, TextSpan span, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
208internal static SyntaxNode Format(SyntaxNode node, TextSpan span, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken)
220public static SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
223private static SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
229internal static SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
232private static IFormattingResult? GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
256internal static IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
267public static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
270internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken)
282public static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, TextSpan span, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
285internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, TextSpan span, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken = default)
297public static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
300internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken = default)
303private static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
311internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken = default)
LanguageServices\DeclaredSymbolFactoryService\AbstractDeclaredSymbolInfoFactoryService.cs (10)
26where TCompilationUnitSyntax : SyntaxNode
27where TUsingDirectiveSyntax : SyntaxNode
33where TMemberDeclarationSyntax : SyntaxNode
34where TNameSyntax : SyntaxNode
70SyntaxNode container, TTypeDeclarationSyntax typeDeclaration, StringTable stringTable, string containerDisplayName, string fullyQualifiedContainerName);
72SyntaxNode container, TEnumDeclarationSyntax enumDeclaration, StringTable stringTable, string containerDisplayName, string fullyQualifiedContainerName);
74SyntaxNode container, TMemberDeclarationSyntax memberDeclaration, StringTable stringTable, ArrayBuilder<DeclaredSymbolInfo> declaredSymbolInfos, string containerDisplayName, string fullyQualifiedContainerName);
78SyntaxNode container, TMemberDeclarationSyntax memberDeclaration, StringTable stringTable, ArrayBuilder<DeclaredSymbolInfo> declaredSymbolInfos, string containerDisplayName, string fullyQualifiedContainerName, CancellationToken cancellationToken);
163SyntaxNode root,
184SyntaxNode container,
Simplification\Simplifier.cs (15)
62public static async Task<TNode> ExpandAsync<TNode>(TNode node, Document document, Func<SyntaxNode, bool>? expandInsideNode = null, bool expandParameter = false, CancellationToken cancellationToken = default) where TNode : SyntaxNode
81public static TNode Expand<TNode>(TNode node, SemanticModel semanticModel, Workspace workspace, Func<SyntaxNode, bool>? expandInsideNode = null, bool expandParameter = false, CancellationToken cancellationToken = default) where TNode : SyntaxNode
92internal static TNode Expand<TNode>(TNode node, SemanticModel semanticModel, SolutionServices services, Func<SyntaxNode, bool>? expandInsideNode = null, bool expandParameter = false, CancellationToken cancellationToken = default) where TNode : SyntaxNode
103var result = services.GetRequiredLanguageService<ISimplificationService>(node.Language)
112public static async Task<SyntaxToken> ExpandAsync(SyntaxToken token, Document document, Func<SyntaxNode, bool>? expandInsideNode = null, CancellationToken cancellationToken = default)
126public static SyntaxToken Expand(SyntaxToken token, SemanticModel semanticModel, Workspace workspace, Func<SyntaxNode, bool>? expandInsideNode = null, CancellationToken cancellationToken = default)
137internal static SyntaxToken Expand(SyntaxToken token, SemanticModel semanticModel, SolutionServices services, Func<SyntaxNode, bool>? expandInsideNode = null, CancellationToken cancellationToken = default)
159var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
167var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
187var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
195var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
248var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
src\0bf6ba47805c8821\AbstractMoveDeclarationNearReferenceService.cs (20)
27where TStatementSyntax : SyntaxNode
29where TVariableDeclaratorSyntax : SyntaxNode
31protected abstract bool IsMeaningfulBlock(SyntaxNode node);
32protected abstract bool CanMoveToBlock(ILocalSymbol localSymbol, SyntaxNode currentBlock, SyntaxNode destinationBlock);
33protected abstract SyntaxNode GetVariableDeclaratorSymbolNode(TVariableDeclaratorSyntax variableDeclarator);
36protected abstract Task<bool> TypesAreCompatibleAsync(Document document, ILocalSymbol localSymbol, TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode right, CancellationToken cancellationToken);
38public async Task<(bool canMove, bool mayChangeSemantics)> CanMoveDeclarationNearReferenceAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
47private async Task<State> ComputeStateAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
78Document document, SyntaxNode localDeclarationStatement, CancellationToken cancellationToken)
84var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
114var newRoot = editor.GetChangedRoot();
151var originalNextStatement = state.OutermostBlockStatements[statementIndex + 1];
187var blocks = state.InnermostBlock.GetAncestorsOrThis<SyntaxNode>();
188foreach (var block in blocks)
211var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(state.VariableDeclarator);
218syntaxFacts.GetPartsOfAssignmentStatement(firstStatement, out var left, out var right);
243out var _, out var operatorToken, out var right);
src\30958ef190fa2467\SyntaxGeneratorInternal.cs (98)
37public abstract SyntaxNode LocalDeclarationStatement(
38SyntaxNode? type, SyntaxToken identifier, SyntaxNode? initializer = null, bool isConst = false);
43public SyntaxNode LocalDeclarationStatement(SyntaxToken name, SyntaxNode initializer)
46public abstract SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer);
51public abstract SyntaxNode WithPropertyInitializer(SyntaxNode propertyDeclaration, SyntaxNode initializer);
53public abstract SyntaxNode EqualsValueClause(SyntaxNode value);
54public abstract SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value);
58public abstract SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull);
60public abstract SyntaxNode MemberBindingExpression(SyntaxNode name);
62public abstract SyntaxNode RefExpression(SyntaxNode expression);
67public abstract SyntaxNode AddParentheses(SyntaxNode expression, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true);
73public abstract SyntaxNode YieldReturnStatement(SyntaxNode expression);
78/// <see cref="LocalDeclarationStatement(SyntaxNode, SyntaxToken, SyntaxNode, bool)"/>.
84public abstract SyntaxNode InterpolatedStringText(SyntaxToken textToken);
85public abstract SyntaxNode Interpolation(SyntaxNode syntaxNode);
86public abstract SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken);
87public abstract SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment);
88public abstract SyntaxNode InterpolationFormatClause(string format);
89public abstract SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames);
106public abstract SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext);
108public abstract SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right);
110public abstract SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type);
119public abstract SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isToken, SyntaxNode pattern);
121public abstract SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right);
122public abstract SyntaxNode ConstantPattern(SyntaxNode expression);
123public abstract SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name);
124public abstract SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression);
125public abstract SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression);
126public abstract SyntaxNode LessThanRelationalPattern(SyntaxNode expression);
127public abstract SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression);
128public abstract SyntaxNode NotPattern(SyntaxNode pattern);
129public abstract SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right);
130public abstract SyntaxNode ParenthesizedPattern(SyntaxNode pattern);
131public abstract SyntaxNode TypePattern(SyntaxNode type);
132public abstract SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern);
136public abstract SyntaxNode DefaultExpression(ITypeSymbol type);
137public abstract SyntaxNode DefaultExpression(SyntaxNode type);
139public abstract SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression);
141public SyntaxNode CastExpression(ITypeSymbol type, SyntaxNode expression)
144public SyntaxNode TypeExpression(ITypeSymbol typeSymbol)
147public abstract SyntaxNode TypeExpression(ITypeSymbol typeSymbol, RefKind refKind);
149public abstract SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right);
151public SyntaxNode MemberAccessExpression(SyntaxNode? expression, SyntaxNode memberName)
157public abstract SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode memberName);
158public abstract SyntaxNode IdentifierName(string identifier);
160public abstract SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression);
161public SyntaxNode ConvertExpression(ITypeSymbol type, SyntaxNode expression)
src\5f6f2f95b47c3dc6\SemanticModelWorkspaceServiceFactory.SemanticModelWorkspaceService.cs (6)
15internal readonly struct SemanticModelReuseInfo(SemanticModel previousNonSpeculativeSemanticModel, SemanticModel currentSemanticModel, SyntaxNode bodyNode, VersionStamp topLevelSementicVersion)
31public readonly SyntaxNode BodyNode = bodyNode;
94public async ValueTask<SemanticModel> ReuseExistingSpeculativeModelAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
100var bodyNode = reuseService.TryGetContainingMethodBodyForSpeculation(node);
138ImmutableDictionary<DocumentId, SemanticModelReuseInfo?> map, Document document, SyntaxNode bodyNode, CancellationToken cancellationToken)
177SyntaxNode bodyNode,
src\ce8c1e82c1124a2b\AbstractInitializerParameterService.cs (23)
20where TStatementSyntax : SyntaxNode
22protected abstract bool IsFunctionDeclaration(SyntaxNode node);
24protected abstract SyntaxNode? GetAccessorBody(IMethodSymbol accessor, CancellationToken cancellationToken);
26protected abstract SyntaxNode GetBody(SyntaxNode methodNode);
27protected abstract SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement);
34SyntaxEditor editor, SyntaxNode functionDeclaration, bool returnsVoid, SyntaxNode? statementToAddAfter, TStatementSyntax statement);
37SyntaxNode functionDeclaration,
45var functionBody = GetBody(functionDeclaration);
79public void InsertStatement(SyntaxEditor editor, SyntaxNode functionDeclaration, bool returnsVoid, SyntaxNode? statementToAddAfter, SyntaxNode statement)
90var parameterDeclaration = parameterReference.GetSyntax(cancellationToken);
92var functionDeclaration = parameterDeclaration.FirstAncestorOrSelf<SyntaxNode>(IsFunctionDeclaration);
115SyntaxNode functionDeclaration,
123var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
135SyntaxNode constructorDeclaration,
159var statementToAddAfter = TryGetStatementToAddInitializationAfter(parameter, blockStatement);
164private SyntaxNode? TryGetStatementToAddInitializationAfter(
195using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var accessors);
209foreach (var accessorBody in accessors)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\AnalysisContextExtensions.cs (10)
149public static SyntaxNode GetAnalysisRoot(this SyntaxTreeAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
155public static SyntaxNode GetAnalysisRoot(this SemanticModelAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
163public static SyntaxNode GetAnalysisRoot(this SymbolStartAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
175public static SyntaxNode GetAnalysisRoot(this SymbolAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
185public static SyntaxNode GetAnalysisRoot(this OperationBlockStartAnalysisContext context, IOperation operationBlock, bool findInTrivia, bool getInnermostNodeForTie = false)
191public static SyntaxNode GetAnalysisRoot(this OperationBlockAnalysisContext context, IOperation operationBlock, bool findInTrivia, bool getInnermostNodeForTie = false)
197public static SyntaxNode GetAnalysisRoot(this OperationAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
203public static SyntaxNode GetAnalysisRoot(this SyntaxNodeAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
209public static SyntaxNode GetAnalysisRoot<TSyntaxKind>(this CodeBlockStartAnalysisContext<TSyntaxKind> context, bool findInTrivia, bool getInnermostNodeForTie = false) where TSyntaxKind : struct
215public static SyntaxNode GetAnalysisRoot(this CodeBlockAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SemanticModelExtensions.cs (14)
36public static DataFlowAnalysis AnalyzeRequiredDataFlow(this SemanticModel semanticModel, SyntaxNode statementOrExpression)
39public static DataFlowAnalysis AnalyzeRequiredDataFlow(this SemanticModel semanticModel, SyntaxNode firstStatement, SyntaxNode lastStatement)
42public static ControlFlowAnalysis AnalyzeRequiredControlFlow(this SemanticModel semanticModel, SyntaxNode statement)
45public static ControlFlowAnalysis AnalyzeRequiredControlFlow(this SemanticModel semanticModel, SyntaxNode firstStatement, SyntaxNode lastStatement)
48public static ISymbol GetRequiredDeclaredSymbol(this SemanticModel semanticModel, SyntaxNode declaration, CancellationToken cancellationToken)
54public static IOperation GetRequiredOperation(this SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
108this SemanticModel semanticModel, SyntaxNode? container, CancellationToken cancellationToken, Func<SyntaxNode, bool>? descendInto = null)
112using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var stack);
115while (stack.TryPop(out var current))
126if (child.AsNode(out var childNode) &&
215SyntaxNode expression,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxNodeExtensions.cs (127)
23public static SyntaxNode GetRequiredParent(this SyntaxNode node)
26public static IEnumerable<SyntaxNodeOrToken> DepthFirstTraversal(this SyntaxNode node)
29public static IEnumerable<SyntaxNode> DepthFirstTraversalNodes(this SyntaxNode node)
32public static IEnumerable<SyntaxNode> GetAncestors(this SyntaxNode node)
34var current = node.Parent;
44public static IEnumerable<TNode> GetAncestors<TNode>(this SyntaxNode node)
45where TNode : SyntaxNode
47var current = node.Parent;
59public static TNode? GetAncestor<TNode>(this SyntaxNode node)
60where TNode : SyntaxNode
62var current = node.Parent;
76public static TNode? GetAncestorOrThis<TNode>(this SyntaxNode? node)
77where TNode : SyntaxNode
82public static IEnumerable<TNode> GetAncestorsOrThis<TNode>(this SyntaxNode? node)
83where TNode : SyntaxNode
85var current = node;
97public static bool HasAncestor<TNode>(this SyntaxNode node)
98where TNode : SyntaxNode
104this SyntaxNode node, TextSpan searchSpan, Func<SyntaxNode, bool> predicate)
105where TSyntaxNode : SyntaxNode
109var nodes = new LinkedList<SyntaxNode>();
114var currentNode = nodes.First!.Value;
129public static bool CheckParent<T>([NotNullWhen(returnValue: true)] this SyntaxNode? node, Func<T, bool> valueChecker) where T : SyntaxNode
145public static bool IsChildNode<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
146where TParent : SyntaxNode
154var ancestorNode = childGetter(ancestor);
162public static bool IsFoundUnder<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
163where TParent : SyntaxNode
171var child = childGetter(ancestor);
174return node.GetAncestorsOrThis<SyntaxNode>().Contains(child);
177public static SyntaxNode GetCommonRoot(this SyntaxNode node1, SyntaxNode node2)
183using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var set);
184set.AddRange(node2.GetAncestorsOrThis<SyntaxNode>());
186foreach (var ancestor in node1.AncestorsAndSelf())
195public static int Width(this SyntaxNode node)
198public static int FullWidth(this SyntaxNode node)
201public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes, Func<SyntaxNode, bool> predicate)
204public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes)
214using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var commonAncestorsStack);
215using var _2 = PooledHashSet<SyntaxNode>.GetInstance(out var commonAncestorsSet);
218foreach (var node in nodes)
225foreach (var ancestor in node.ValueAncestorsAndSelf())
239var commonAncestor = FindCommonAncestor(node, commonAncestorsSet);
281static SyntaxNode? FindCommonAncestor(SyntaxNode node, HashSet<SyntaxNode> commonAncestorsSet)
283foreach (var ancestor in node.ValueAncestorsAndSelf())
293public static TSyntaxNode? FindInnermostCommonNode<TSyntaxNode>(this IEnumerable<SyntaxNode> nodes) where TSyntaxNode : SyntaxNode
296public static TextSpan GetContainedSpan(this IEnumerable<SyntaxNode> nodes)
302foreach (var node in nodes)
312public static bool OverlapsHiddenPosition(this SyntaxNode node, CancellationToken cancellationToken)
315public static bool OverlapsHiddenPosition(this SyntaxNode node, TextSpan span, CancellationToken cancellationToken)
318public static bool OverlapsHiddenPosition(this SyntaxNode declaration, SyntaxNode startNode, SyntaxNode endNode, CancellationToken cancellationToken)
327public static IEnumerable<T> GetAnnotatedNodes<T>(this SyntaxNode node, SyntaxAnnotation syntaxAnnotation) where T : SyntaxNode
341IEnumerable<SyntaxNode> nodes,
342Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>> computeReplacementAsync,
343CancellationToken cancellationToken) where TRootNode : SyntaxNode
365CancellationToken cancellationToken) where TRootNode : SyntaxNode
378CancellationToken cancellationToken) where TRoot : SyntaxNode
389IEnumerable<SyntaxNode>? nodes,
390Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>>? computeReplacementNodeAsync,
396where TRoot : SyntaxNode
403var nodeReplacements = new Dictionary<SyntaxNode, SyntaxNode>();
439if (nodesToReplace.TryGetValue(span, out var currentNode))
441var original = (SyntaxNode?)retryAnnotations.GetAnnotations(currentNode).SingleOrDefault() ?? currentNode;
442var newNode = await computeReplacementNodeAsync!(original, currentNode, cancellationToken).ConfigureAwait(false);
472if (rewritten != original || !nodeReplacements.TryGetValue(original, out var replaced))
598SyntaxNode root,
615this SyntaxNode root,
654this SyntaxNode root,
691params SyntaxTrivia[] trivia) where T : SyntaxNode
703SyntaxTriviaList trivia) where T : SyntaxNode
715IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
725params SyntaxTrivia[] trivia) where T : SyntaxNode
737SyntaxTriviaList trivia) where T : SyntaxNode
749IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
760IEnumerable<SyntaxTrivia> trailingTrivia) where T : SyntaxNode
785public static SyntaxNode FindNode(this SyntaxNode root, TextSpan? span, bool findInTrivia, bool getInnermostNodeForTie)
793public static SyntaxNode? GetParent(this SyntaxNode node, bool ascendOutOfTrivia)
795var parent = node.Parent;
807public static TNode? FirstAncestorOrSelfUntil<TNode>(this SyntaxNode? node, Func<SyntaxNode, bool> predicate)
808where TNode : SyntaxNode
810for (var current = node; current != null; current = current.GetParent(ascendOutOfTrivia: true))
827SyntaxNode root,
830where TDirectiveTriviaSyntax : SyntaxNode
836where TDirectiveTriviaSyntax : SyntaxNode
856SyntaxNode root,
944public static SyntaxTriviaList GetLeadingTriviaIncludingMissingTokens(this SyntaxNode node)
960public static SyntaxTriviaList GetTrailingTriviaIncludingMissingTokens(this SyntaxNode node)
979public static SyntaxNode WithLeadingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
984public static SyntaxNode WithTrailingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
989public static SyntaxNode WithTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
998public static ValueAncestorsAndSelfEnumerable ValueAncestorsAndSelf(this SyntaxNode syntaxNode, bool ascendOutOfTrivia = true)
1001public readonly struct ValueAncestorsAndSelfEnumerable(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1006public struct Enumerator(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1008public SyntaxNode Current { get; private set; } = null!;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxTokenExtensions.cs (12)
15public static SyntaxNode? GetAncestor(this SyntaxToken token, Func<SyntaxNode, bool>? predicate)
16=> token.GetAncestor<SyntaxNode>(predicate);
18public static T? GetAncestor<T>(this SyntaxToken token, Func<T, bool>? predicate = null) where T : SyntaxNode
21public static T GetRequiredAncestor<T>(this SyntaxToken token, Func<T, bool>? predicate = null) where T : SyntaxNode
25where T : SyntaxNode
32public static IEnumerable<SyntaxNode> GetAncestors(this SyntaxToken token, Func<SyntaxNode, bool> predicate)
39public static SyntaxNode GetCommonRoot(this SyntaxToken token1, SyntaxToken token2)
42public static bool CheckParent<T>(this SyntaxToken token, Func<T, bool> valueChecker) where T : SyntaxNode
58public static SyntaxToken FindTokenFromEnd(this SyntaxNode root, int position, bool includeZeroWidth = true, bool findInsideTrivia = false)
153public static SyntaxNode GetRequiredParent(this SyntaxToken token)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\AbstractSyntaxFormatting.cs (3)
28protected abstract IFormattingResult CreateAggregatedFormattingResult(SyntaxNode node, IList<AbstractFormattingResult> results, TextSpanMutableIntervalTree? formattingSpans = null);
30protected abstract AbstractFormattingResult Format(SyntaxNode node, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, SyntaxToken startToken, SyntaxToken endToken, CancellationToken cancellationToken);
32public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\BaseIndentationFormattingRule.cs (7)
19private readonly SyntaxNode? _commonNode;
22public BaseIndentationFormattingRule(SyntaxNode root, TextSpan span, int baseIndentation, AbstractFormattingRule? vbHelperFormattingRule = null)
31public override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
54private void AddNextIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
133private static void SetInnermostNodeForSpan(SyntaxNode root, ref TextSpan span, out SyntaxToken token1, out SyntaxToken token2, out SyntaxNode? commonNode)
149private static void GetTokens(SyntaxNode root, TextSpan span, out SyntaxToken token1, out SyntaxToken token2)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\CompatAbstractFormattingRule.cs (8)
17public sealed override void AddSuppressOperations(ArrayBuilder<SuppressOperation> list, SyntaxNode node, in NextSuppressOperationAction nextOperation)
25public sealed override void AddAnchorIndentationOperations(List<AnchorIndentationOperation> list, SyntaxNode node, in NextAnchorIndentationOperationAction nextOperation)
33public sealed override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
41public sealed override void AddAlignTokensOperations(List<AlignTokensOperation> list, SyntaxNode node, in NextAlignTokensOperationAction nextOperation)
72public virtual void AddSuppressOperationsSlow(ArrayBuilder<SuppressOperation> list, SyntaxNode node, ref NextSuppressOperationAction nextOperation)
78public virtual void AddAnchorIndentationOperationsSlow(List<AnchorIndentationOperation> list, SyntaxNode node, ref NextAnchorIndentationOperationAction nextOperation)
84public virtual void AddIndentBlockOperationsSlow(List<IndentBlockOperation> list, SyntaxNode node, ref NextIndentBlockOperationAction nextOperation)
90public virtual void AddAlignTokensOperationsSlow(List<AlignTokensOperation> list, SyntaxNode node, ref NextAlignTokensOperationAction nextOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAlignTokensOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAnchorIndentationOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextIndentBlockOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextSuppressOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\HeaderFacts\AbstractHeaderFacts.cs (29)
19public abstract bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
20public abstract bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration);
21public abstract bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter);
22public abstract bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method);
23public abstract bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction);
24public abstract bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration);
25public abstract bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement);
26public abstract bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement);
27public abstract bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement);
29public bool IsOnHeader(SyntaxNode root, int position, SyntaxNode ownerOfHeader, SyntaxNodeOrToken lastTokenOrNodeOfHeader)
30=> IsOnHeader(root, position, ownerOfHeader, lastTokenOrNodeOfHeader, ImmutableArray<SyntaxNode>.Empty);
33SyntaxNode root,
35SyntaxNode ownerOfHeader,
38where THoleSyntax : SyntaxNode
75protected TNode? TryGetAncestorForLocation<TNode>(SyntaxNode root, int position, out SyntaxNode? untypedResult) where TNode : SyntaxNode
97protected int GetStartOfNodeExcludingAttributes(SyntaxNode root, SyntaxNode node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\HeaderFacts\IHeaderFacts.cs (18)
16bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
18bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration);
19bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter);
20bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method);
21bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction);
22bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration);
23bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement);
24bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement);
25bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\RefactoringHelpers\AbstractRefactoringHelpers.cs (62)
18where TExpressionSyntax : SyntaxNode
19where TArgumentSyntax : SyntaxNode
20where TExpressionStatementSyntax : SyntaxNode
25public abstract bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
27private static void AddNode<TSyntaxNode>(bool allowEmptyNodes, ref TemporaryArray<TSyntaxNode> result, TSyntaxNode node) where TSyntaxNode : SyntaxNode
60SourceText sourceText, SyntaxNode root, TextSpan selectionRaw, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
160private static bool IsWantedTypeExpressionLike<TSyntaxNode>() where TSyntaxNode : SyntaxNode
179SourceText sourceText, SyntaxNode root, int location)
286CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
293var leftNode = tokenToLeft.Parent;
320SyntaxNode root,
325CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
331var rightNode = tokenToRightOrIn.Parent;
365SyntaxNode root,
370CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
372var selectionNode = root.FindNode(selectionTrimmed, getInnermostNodeForTie: true);
373var prevNode = selectionNode;
411protected virtual IEnumerable<SyntaxNode> ExtractNodesSimple(SyntaxNode? node, ISyntaxFacts syntaxFacts)
429var localDeclarationStatement = syntaxFacts.IsLocalDeclarationStatement(node) ? node : node.Parent!;
439var declaredVariable = variables.First();
445var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(declaredVariable);
448var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
461var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(node);
464var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
476syntaxFacts.GetPartsOfAssignmentExpressionOrStatement(node, out _, out _, out var rightSide);
498protected virtual IEnumerable<SyntaxNode> ExtractNodesInHeader(SyntaxNode root, int location, IHeaderFacts headerFacts)
501if (headerFacts.IsOnPropertyDeclarationHeader(root, location, out var propertyDeclaration))
505if (headerFacts.IsOnParameterHeader(root, location, out var parameter))
509if (headerFacts.IsOnMethodHeader(root, location, out var method))
513if (headerFacts.IsOnLocalFunctionHeader(root, location, out var localFunction))
517if (headerFacts.IsOnLocalDeclarationHeader(root, location, out var localDeclaration))
521if (headerFacts.IsOnIfStatementHeader(root, location, out var ifStatement))
525if (headerFacts.IsOnForeachHeader(root, location, out var foreachStatement))
528if (headerFacts.IsOnTypeHeader(root, location, out var typeDeclaration))
534SyntaxNode root,
539CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
546var ancestor = token.Parent;
572IEnumerable<SyntaxNode> nodes, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
574foreach (var node in nodes)
586public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
589public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
592public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
595public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
598public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
601public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
604public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
607public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
610public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFacts.cs (24)
52bool IsWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
59bool IsOnlyWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
60bool IsInOutContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
61bool IsInRefContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
62bool IsInInContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
64bool CanReplaceWithRValue(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? expression, CancellationToken cancellationToken);
73bool TryGetSpeculativeSemanticModel(SemanticModel oldSemanticModel, SyntaxNode oldNode, SyntaxNode newNode, [NotNullWhen(true)] out SemanticModel? speculativeModel);
80ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode forEachStatement);
81SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
83IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node);
85ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node);
87ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node);
91IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken);
93IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
94IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
96ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
97ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
99ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken);
101bool IsInsideNameOfExpression(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
108bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, [NotNullWhen(true)] INamedTypeSymbol? expressionType, CancellationToken cancellationToken);
110string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken);
121IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node);
125CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFacts.cs (307)
122bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node);
123bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node, PredefinedType type);
173bool IsUsingOrExternOrImport([NotNullWhen(true)] SyntaxNode? node);
174bool IsGlobalAssemblyAttribute([NotNullWhen(true)] SyntaxNode? node);
175bool IsGlobalModuleAttribute([NotNullWhen(true)] SyntaxNode? node);
176bool IsDeclaration([NotNullWhen(true)] SyntaxNode? node);
178bool IsUsingAliasDirective([NotNullWhen(true)] SyntaxNode? node);
183bool IsPragmaDirective(SyntaxTrivia trivia, out bool isDisable, out bool isActive, out SeparatedSyntaxList<SyntaxNode> errorCodes);
186SyntaxNode? GetMatchingDirective(SyntaxNode directive, CancellationToken cancellationToken);
187ImmutableArray<SyntaxNode> GetMatchingConditionalDirectives(SyntaxNode directive, CancellationToken cancellationToken);
189bool IsDocumentationComment(SyntaxNode node);
196bool TryGetExternalSourceInfo([NotNullWhen(true)] SyntaxNode? directive, out ExternalSourceInfo info);
198bool IsDeclarationExpression([NotNullWhen(true)] SyntaxNode? node);
200bool IsConversionExpression([NotNullWhen(true)] SyntaxNode? node);
201bool IsCastExpression([NotNullWhen(true)] SyntaxNode? node);
203bool IsExpressionOfForeach([NotNullWhen(true)] SyntaxNode? node);
204SyntaxNode GetExpressionOfForeachStatement(SyntaxNode statement);
206void GetPartsOfTupleExpression<TArgumentSyntax>(SyntaxNode node,
207out SyntaxToken openParen, out SeparatedSyntaxList<TArgumentSyntax> arguments, out SyntaxToken closeParen) where TArgumentSyntax : SyntaxNode;
209bool IsVerbatimInterpolatedStringExpression([NotNullWhen(true)] SyntaxNode? node);
212bool IsLeftSideOfAssignment([NotNullWhen(true)] SyntaxNode? node);
214bool IsAnyAssignmentStatement([NotNullWhen(true)] SyntaxNode? statement);
215bool IsSimpleAssignmentStatement([NotNullWhen(true)] SyntaxNode? statement);
216void GetPartsOfAssignmentStatement(SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
217void GetPartsOfAssignmentExpressionOrStatement(SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
220bool IsLeftSideOfAnyAssignment([NotNullWhen(true)] SyntaxNode? node);
222bool IsLeftSideOfCompoundAssignment([NotNullWhen(true)] SyntaxNode? node);
223SyntaxNode GetRightHandSideOfAssignment(SyntaxNode node);
225bool IsInferredAnonymousObjectMemberDeclarator([NotNullWhen(true)] SyntaxNode? node);
226bool IsOperandOfIncrementExpression([NotNullWhen(true)] SyntaxNode? node);
227bool IsOperandOfIncrementOrDecrementExpression([NotNullWhen(true)] SyntaxNode? node);
229bool IsLeftSideOfDot([NotNullWhen(true)] SyntaxNode? node);
230SyntaxNode? GetRightSideOfDot(SyntaxNode? node);
244SyntaxNode? GetLeftSideOfDot(SyntaxNode? node, bool allowImplicitTarget = false);
246bool IsLeftSideOfExplicitInterfaceSpecifier([NotNullWhen(true)] SyntaxNode? node);
248bool IsNameOfSimpleMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
249bool IsNameOfAnyMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
250bool IsNameOfMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node);
259SyntaxNode? GetStandaloneExpression(SyntaxNode? node);
268SyntaxNode? GetRootConditionalAccessExpression(SyntaxNode? node);
277SyntaxNode? GetExpressionOfMemberAccessExpression(SyntaxNode node, bool allowImplicitTarget = false);
279SyntaxNode? GetTargetOfMemberBinding(SyntaxNode? node);
281SyntaxNode GetNameOfMemberBindingExpression(SyntaxNode node);
283bool IsPointerMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
285bool IsNamedArgument([NotNullWhen(true)] SyntaxNode? node);
286bool IsNameOfNamedArgument([NotNullWhen(true)] SyntaxNode? node);
287SyntaxNode? GetParameterList(SyntaxNode node);
288bool IsParameterList([NotNullWhen(true)] SyntaxNode? node);
292void GetPartsOfElementAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode argumentList);
294SyntaxNode GetExpressionOfArgument(SyntaxNode node);
295SyntaxNode GetExpressionOfAttributeArgument(SyntaxNode node);
296SyntaxNode GetExpressionOfInterpolation(SyntaxNode node);
298bool IsElementBindingExpression([NotNullWhen(true)] SyntaxNode? node);
299bool IsMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node);
300bool IsPostfixUnaryExpression([NotNullWhen(true)] SyntaxNode? node);
302SyntaxToken GetIdentifierOfSimpleName(SyntaxNode node);
303SyntaxToken GetIdentifierOfTypeDeclaration(SyntaxNode node);
304SyntaxToken GetIdentifierOfVariableDeclarator(SyntaxNode node);
305SyntaxNode GetTypeOfVariableDeclarator(SyntaxNode node);
311bool IsSimpleArgument([NotNullWhen(true)] SyntaxNode? node);
312bool IsArgument([NotNullWhen(true)] SyntaxNode? node);
313bool IsAttributeArgument([NotNullWhen(true)] SyntaxNode? node);
314RefKind GetRefKindOfArgument(SyntaxNode node);
316void GetNameAndArityOfSimpleName(SyntaxNode node, out string name, out int arity);
317bool LooksGeneric(SyntaxNode simpleName);
319SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(SyntaxNode? genericName);
321SyntaxList<SyntaxNode> GetContentsOfInterpolatedString(SyntaxNode interpolatedString);
323SeparatedSyntaxList<SyntaxNode> GetArgumentsOfObjectCreationExpression(SyntaxNode node);
324SeparatedSyntaxList<SyntaxNode> GetArgumentsOfArgumentList(SyntaxNode node);
325SeparatedSyntaxList<SyntaxNode> GetArgumentsOfAttributeArgumentList(SyntaxNode node);
327bool IsUsingDirectiveName([NotNullWhen(true)] SyntaxNode? node);
330SyntaxList<SyntaxNode> GetAttributeLists(SyntaxNode? node);
331SeparatedSyntaxList<SyntaxNode> GetAttributesOfAttributeList(SyntaxNode node);
333bool IsAttributeNamedArgumentIdentifier([NotNullWhen(true)] SyntaxNode? node);
334bool IsMemberInitializerNamedAssignmentIdentifier([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? initializedInstance);
335bool IsAnonymousObjectMemberDeclaratorNameIdentifier([NotNullWhen(true)] SyntaxNode? node);
336bool IsAnyInitializerExpression([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? creationExpression);
338bool IsDirective([NotNullWhen(true)] SyntaxNode? node);
339bool IsStatement([NotNullWhen(true)] SyntaxNode? node);
340bool IsExecutableStatement([NotNullWhen(true)] SyntaxNode? node);
341bool IsGlobalStatement([NotNullWhen(true)] SyntaxNode? node);
342SyntaxNode GetStatementOfGlobalStatement(SyntaxNode node);
344bool IsDeconstructionAssignment([NotNullWhen(true)] SyntaxNode? node);
345bool IsDeconstructionForEachStatement([NotNullWhen(true)] SyntaxNode? node);
346bool IsUsingLocalDeclarationStatement(SyntaxNode node);
360bool IsMethodBody([NotNullWhen(true)] SyntaxNode? node);
362bool IsDeclaratorOfLocalDeclarationStatement(SyntaxNode declarator, SyntaxNode localDeclarationStatement);
363SeparatedSyntaxList<SyntaxNode> GetVariablesOfLocalDeclarationStatement(SyntaxNode node);
364SyntaxNode? GetInitializerOfVariableDeclarator(SyntaxNode node);
365SyntaxNode? GetInitializerOfPropertyDeclaration(SyntaxNode node);
369bool HasImplicitBaseConstructorInitializer(SyntaxNode constructorDeclaration);
372bool IsElementAccessExpression([NotNullWhen(true)] SyntaxNode? node);
390bool IsInStaticContext(SyntaxNode node);
391bool IsUnsafeContext(SyntaxNode node);
393bool IsInNamespaceOrTypeContext([NotNullWhen(true)] SyntaxNode? node);
395bool IsBaseTypeList([NotNullWhen(true)] SyntaxNode? node);
397bool IsInConstantContext([NotNullWhen(true)] SyntaxNode? node);
398bool IsInConstructor(SyntaxNode node);
399bool IsMethodLevelMember([NotNullWhen(true)] SyntaxNode? node);
400bool IsTopLevelNodeWithMembers([NotNullWhen(true)] SyntaxNode? node);
403bool AreEquivalent(SyntaxNode? node1, SyntaxNode? node2);
405string GetDisplayName(SyntaxNode? node, DisplayNameOptions options, string? rootNamespace = null);
408SyntaxNode? GetContainingTypeDeclaration(SyntaxNode root, int position);
409SyntaxNode? GetContainingMemberDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
410SyntaxNode? GetContainingMethodDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
411SyntaxNode? GetContainingVariableDeclaratorOfFieldDeclaration(SyntaxNode? node);
415SyntaxNode? ConvertToSingleLine(SyntaxNode? node, bool useElasticTrivia = false);
418void AddTopLevelAndMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
420void AddTopLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
422void AddMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
424SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(SyntaxNode typeDeclaration);
425SyntaxList<SyntaxNode> GetMembersOfNamespaceDeclaration(SyntaxNode typeDeclaration);
426SyntaxList<SyntaxNode> GetMembersOfTypeDeclaration(SyntaxNode typeDeclaration);
432/// Given a <see cref="SyntaxNode"/>, return the <see cref="TextSpan"/> representing the span of the member body
438TextSpan GetMemberBodySpanForSpeculativeBinding(SyntaxNode node);
446SyntaxNode? TryGetBindableParent(SyntaxToken token);
449/// Given a <see cref="SyntaxNode"/>, that represents and argument return the string representation of
453string GetNameForArgument(SyntaxNode? argument);
456/// Given a <see cref="SyntaxNode"/>, that represents an attribute argument return the string representation of
460string GetNameForAttributeArgument(SyntaxNode? argument);
462bool IsNameOfSubpattern([NotNullWhen(true)] SyntaxNode? node);
463bool IsPropertyPatternClause(SyntaxNode node);
465bool IsAnyPattern([NotNullWhen(true)] SyntaxNode? node);
466bool IsBinaryPattern([NotNullWhen(true)] SyntaxNode? node);
467bool IsUnaryPattern([NotNullWhen(true)] SyntaxNode? node);
469SyntaxNode GetExpressionOfConstantPattern(SyntaxNode node);
470SyntaxNode GetTypeOfTypePattern(SyntaxNode node);
472void GetPartsOfParenthesizedPattern(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode pattern, out SyntaxToken closeParen);
473void GetPartsOfBinaryPattern(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
474void GetPartsOfDeclarationPattern(SyntaxNode node, out SyntaxNode type, out SyntaxNode designation);
475void GetPartsOfRecursivePattern(SyntaxNode node, out SyntaxNode? type, out SyntaxNode? positionalPart, out SyntaxNode? propertyPart, out SyntaxNode? designation);
476void GetPartsOfRelationalPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode expression);
477void GetPartsOfUnaryPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode pattern);
481SyntaxTokenList GetModifiers(SyntaxNode? node);
485SyntaxNode? WithModifiers(SyntaxNode? node, SyntaxTokenList modifiers);
488Location GetDeconstructionReferenceLocation(SyntaxNode node);
493bool IsParameterNameXmlElementSyntax([NotNullWhen(true)] SyntaxNode? node);
495SyntaxList<SyntaxNode> GetContentFromDocumentationCommentTriviaSyntax(SyntaxTrivia trivia);
501bool IsAnonymousFunctionExpression([NotNullWhen(true)] SyntaxNode? node);
502bool IsBaseNamespaceDeclaration([NotNullWhen(true)] SyntaxNode? node);
503bool IsTypeDeclaration(SyntaxNode node);
504bool IsBinaryExpression([NotNullWhen(true)] SyntaxNode? node);
505bool IsLiteralExpression([NotNullWhen(true)] SyntaxNode? node);
506bool IsMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
507bool IsMethodDeclaration([NotNullWhen(true)] SyntaxNode? node);
508bool IsSimpleName([NotNullWhen(true)] SyntaxNode? node);
509bool IsAnyName([NotNullWhen(true)] SyntaxNode? node);
510bool IsAnyType([NotNullWhen(true)] SyntaxNode? node);
512bool IsNamedMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
513bool IsElementAccessInitializer([NotNullWhen(true)] SyntaxNode? node);
515bool IsObjectMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
516bool IsObjectCollectionInitializer([NotNullWhen(true)] SyntaxNode? node);
522void GetPartsOfAliasQualifiedName(SyntaxNode node, out SyntaxNode alias, out SyntaxToken colonColonToken, out SyntaxNode name);
523void GetPartsOfAnyIsTypeExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode type);
524void GetPartsOfArgumentList(SyntaxNode node, out SyntaxToken openParenToken, out SeparatedSyntaxList<SyntaxNode> arguments, out SyntaxToken closeParenToken);
525void GetPartsOfAttribute(SyntaxNode node, out SyntaxNode name, out SyntaxNode? argumentList);
526void GetPartsOfBaseNamespaceDeclaration(SyntaxNode node, out SyntaxNode name, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> members);
527void GetPartsOfBaseObjectCreationExpression(SyntaxNode node, out SyntaxNode? argumentList, out SyntaxNode? initializer);
528void GetPartsOfBinaryExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
529void GetPartsOfCastExpression(SyntaxNode node, out SyntaxNode type, out SyntaxNode expression);
530void GetPartsOfCompilationUnit(SyntaxNode node, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> attributeLists, out SyntaxList<SyntaxNode> members);
531void GetPartsOfConditionalAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode whenNotNull);
532void GetPartsOfConditionalExpression(SyntaxNode node, out SyntaxNode condition, out SyntaxNode whenTrue, out SyntaxNode whenFalse);
533void GetPartsOfGenericName(SyntaxNode node, out SyntaxToken identifier, out SeparatedSyntaxList<SyntaxNode> typeArguments);
534void GetPartsOfInterpolationExpression(SyntaxNode node, out SyntaxToken stringStartToken, out SyntaxList<SyntaxNode> contents, out SyntaxToken stringEndToken);
535void GetPartsOfInvocationExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode? argumentList);
536void GetPartsOfIsPatternExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken isToken, out SyntaxNode right);
537void GetPartsOfMemberAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode name);
538void GetPartsOfNamedMemberInitializer(SyntaxNode node, out SyntaxNode name, out SyntaxNode expression);
539void GetPartsOfObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode type, out SyntaxNode? argumentList, out SyntaxNode? initializer);
540void GetPartsOfImplicitObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode argumentList, out SyntaxNode? initializer);
541void GetPartsOfParameter(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode? @default);
542void GetPartsOfParenthesizedExpression(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode expression, out SyntaxToken closeParen);
543void GetPartsOfPostfixUnaryExpression(SyntaxNode node, out SyntaxNode operand, out SyntaxToken operatorToken);
544void GetPartsOfPrefixUnaryExpression(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode operand);
545void GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken dotToken, out SyntaxNode right);
546void GetPartsOfUsingAliasDirective(SyntaxNode node, out SyntaxToken globalKeyword, out SyntaxToken alias, out SyntaxNode name);
556SyntaxNode GetArgumentListOfImplicitElementAccess(SyntaxNode node);
558SyntaxNode GetExpressionOfAwaitExpression(SyntaxNode node);
559SyntaxNode GetExpressionOfExpressionStatement(SyntaxNode node);
560SyntaxNode GetExpressionOfRefExpression(SyntaxNode node);
561SyntaxNode? GetExpressionOfReturnStatement(SyntaxNode node);
562SyntaxNode GetExpressionOfThrowExpression(SyntaxNode node);
563SyntaxNode? GetExpressionOfThrowStatement(SyntaxNode node);
565bool IsEqualsValueOfPropertyDeclaration([NotNullWhen(true)] SyntaxNode? node);
566SyntaxNode GetValueOfEqualsValueClause(SyntaxNode node);
568SeparatedSyntaxList<SyntaxNode> GetInitializersOfObjectMemberInitializer(SyntaxNode node);
569SeparatedSyntaxList<SyntaxNode> GetExpressionsOfObjectCollectionInitializer(SyntaxNode node);
571SyntaxToken GetTokenOfLiteralExpression(SyntaxNode node);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFactsExtensions.cs (211)
23public static bool IsMemberInitializerNamedAssignmentIdentifier(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
26public static bool IsOnSingleLine(this ISyntaxFacts syntaxFacts, SyntaxNode node, bool fullSpan)
62var currentNode = currentNodeOrToken.AsNode()!;
160this ISyntaxFacts syntaxFacts, ImmutableArray<SyntaxNode> nodes, CancellationToken cancellationToken)
166foreach (var node in nodes)
178public static bool ContainsInterleavedDirective(this ISyntaxFacts syntaxFacts, SyntaxNode node, CancellationToken cancellationToken)
182this ISyntaxFacts syntaxFacts, TextSpan span, SyntaxNode node, CancellationToken cancellationToken)
193public static bool SpansPreprocessorDirective(this ISyntaxFacts syntaxFacts, IEnumerable<SyntaxNode> nodes)
286public static SyntaxNode? WalkDownParentheses(this ISyntaxFacts syntaxFacts, SyntaxNode? node)
290syntaxFacts.GetPartsOfParenthesizedExpression(node, out _, out var child, out _);
298public static SyntaxNode? WalkUpParentheses(this ISyntaxFacts syntaxFacts, SyntaxNode? node)
307this ISyntaxFacts syntaxFacts, SyntaxNode statement,
308out SyntaxNode left, out SyntaxNode right)
313public static SyntaxNode GetExpressionOfInvocationExpression(
314this ISyntaxFacts syntaxFacts, SyntaxNode node)
316syntaxFacts.GetPartsOfInvocationExpression(node, out var expression, out _);
320public static SyntaxNode Unparenthesize(
321this ISyntaxFacts syntaxFacts, SyntaxNode node)
324SyntaxNode operand;
348var resultNode = operand
383public static bool SpansPreprocessorDirective(this ISyntaxFacts service, SyntaxNode node)
386public static bool SpansPreprocessorDirective(this ISyntaxFacts service, params SyntaxNode[] nodes)
387=> service.SpansPreprocessorDirective((IEnumerable<SyntaxNode>)nodes);
392public static void GetPartsOfBinaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode left, out SyntaxNode right)
395public static SyntaxNode GetPatternOfParenthesizedPattern(this ISyntaxFacts syntaxFacts, SyntaxNode node)
397syntaxFacts.GetPartsOfParenthesizedPattern(node, out _, out var pattern, out _);
401public static SyntaxToken GetOperatorTokenOfBinaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
407public static bool IsAnonymousOrLocalFunction(this ISyntaxFacts syntaxFacts, SyntaxNode node)
411public static SyntaxNode? GetExpressionOfElementAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
413syntaxFacts.GetPartsOfElementAccessExpression(node, out var expression, out _);
417public static SyntaxNode? GetArgumentListOfElementAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
419syntaxFacts.GetPartsOfElementAccessExpression(node, out _, out var argumentList);
423public static SyntaxNode GetExpressionOfConditionalAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
425syntaxFacts.GetPartsOfConditionalAccessExpression(node, out var expression, out _);
429public static SyntaxToken GetOperatorTokenOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
435public static void GetPartsOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode expression, out SyntaxNode name)
438public static void GetPartsOfConditionalAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode expression, out SyntaxNode whenNotNull)
441public static TextSpan GetSpanWithoutAttributes(this ISyntaxFacts syntaxFacts, SyntaxNode root, SyntaxNode node)
468/// Similar to <see cref="ISyntaxFacts.GetStandaloneExpression(SyntaxNode)"/>, this gets the containing
478public static SyntaxNode GetRootStandaloneExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
481var standalone = syntaxFacts.GetStandaloneExpression(node);
489public static SyntaxNode? GetArgumentListOfInvocationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
491syntaxFacts.GetPartsOfInvocationExpression(node, out _, out var argumentList);
495public static SeparatedSyntaxList<SyntaxNode> GetArgumentsOfInvocationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
497var argumentList = syntaxFacts.GetArgumentListOfInvocationExpression(node);
501public static SyntaxNode? GetArgumentListOfBaseObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
503syntaxFacts.GetPartsOfBaseObjectCreationExpression(node, out var argumentList, out _);
507public static SyntaxNode? GetDefaultOfParameter(this ISyntaxFacts syntaxFacts, SyntaxNode node)
509syntaxFacts.GetPartsOfParameter(node, out _, out var @default);
513public static SyntaxNode GetExpressionOfParenthesizedExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
515syntaxFacts.GetPartsOfParenthesizedExpression(node, out _, out var expression, out _);
519public static SyntaxToken GetIdentifierOfGenericName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
525public static SyntaxToken GetIdentifierOfIdentifierName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
528public static SyntaxToken GetIdentifierOfParameter(this ISyntaxFacts syntaxFacts, SyntaxNode node)
534public static SyntaxList<SyntaxNode> GetImportsOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
540public static SyntaxList<SyntaxNode> GetImportsOfCompilationUnit(this ISyntaxFacts syntaxFacts, SyntaxNode node)
546public static SyntaxNode? GetInitializerOfBaseObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
548syntaxFacts.GetPartsOfBaseObjectCreationExpression(node, out _, out var initializer);
552public static SyntaxList<SyntaxNode> GetMembersOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
558public static SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(this ISyntaxFacts syntaxFacts, SyntaxNode node)
564public static SyntaxNode GetNameOfAttribute(this ISyntaxFacts syntaxFacts, SyntaxNode node)
566syntaxFacts.GetPartsOfAttribute(node, out var name, out _);
570public static SyntaxNode GetNameOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
572syntaxFacts.GetPartsOfBaseNamespaceDeclaration(node, out var name, out _, out _);
576public static SyntaxNode GetNameOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
578syntaxFacts.GetPartsOfMemberAccessExpression(node, out _, out var name);
582public static SyntaxNode GetOperandOfPostfixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
584syntaxFacts.GetPartsOfPostfixUnaryExpression(node, out var operand, out _);
588public static SyntaxNode GetOperandOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
590syntaxFacts.GetPartsOfPrefixUnaryExpression(node, out _, out var operand);
594public static SyntaxToken GetOperatorTokenOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
600public static SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
606public static SyntaxNode GetTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
608syntaxFacts.GetPartsOfObjectCreationExpression(node, out _, out var type, out _, out _);
616public static bool IsExpressionOfAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
618var parent = node?.Parent;
625public static bool IsExpressionOfInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
627var parent = node?.Parent;
631syntaxFacts.GetPartsOfInvocationExpression(parent, out var expression, out _);
635public static bool IsExpressionOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
637var parent = node?.Parent;
641syntaxFacts.GetPartsOfMemberAccessExpression(parent, out var expression, out _);
645public static bool IsNameOfAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
650syntaxFacts.GetPartsOfAttribute(node.Parent, out var name, out _);
654public static bool IsRightOfQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
656var parent = node?.Parent;
660syntaxFacts.GetPartsOfQualifiedName(parent, out _, out _, out var right);
664public static bool IsRightOfAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
666var parent = node?.Parent;
670syntaxFacts.GetPartsOfAliasQualifiedName(parent, out _, out _, out var right);
674public static bool IsTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
676var parent = node?.Parent;
680syntaxFacts.GetPartsOfObjectCreationExpression(parent, out _, out var type, out _, out _);
711public static bool IsSkippedTokensTrivia(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
751public static bool IsAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
754public static bool IsGenericName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
757public static bool IsIdentifierName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
760public static bool IsQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
767public static bool IsTupleType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
774public static bool IsCharacterLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
777public static bool IsDefaultLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
780public static bool IsFalseLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
783public static bool IsNumericLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
786public static bool IsNullLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
789public static bool IsStringLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
792public static bool IsTrueLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
799public static bool IsArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
802public static bool IsAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
805public static bool IsBaseExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
808public static bool IsConditionalExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
811public static bool IsConditionalAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
814public static bool IsFieldExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
817public static bool IsImplicitArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
820public static bool IsImplicitObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
823public static bool IsIndexExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
826public static bool IsInterpolatedStringExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
829public static bool IsInterpolation(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
832public static bool IsInterpolatedStringText(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
835public static bool IsInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
838public static bool IsIsTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
841public static bool IsIsNotTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
844public static bool IsIsPatternExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
847public static bool IsLogicalAndExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
850public static bool IsLogicalOrExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
853public static bool IsLogicalNotExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
856public static bool IsObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
859public static bool IsParenthesizedExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
862public static bool IsQueryExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
865public static bool IsRangeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
868public static bool IsRefExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
871public static bool IsSimpleMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
874public static bool IsSuppressNullableWarningExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
877public static bool IsThisExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
880public static bool IsThrowExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
883public static bool IsTupleExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
886public static bool ContainsGlobalStatement(this ISyntaxFacts syntaxFacts, SyntaxNode node)
893public static bool IsAndPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
896public static bool IsConstantPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
899public static bool IsDeclarationPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
902public static bool IsListPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
905public static bool IsNotPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
908public static bool IsOrPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
911public static bool IsParenthesizedPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
914public static bool IsRecursivePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
917public static bool IsRelationalPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
920public static bool IsTypePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
923public static bool IsVarPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
930public static bool IsExpressionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
933public static bool IsForEachStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
936public static bool IsForStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
939public static bool IsIfStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
942public static bool IsLocalDeclarationStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
945public static bool IsLocalFunctionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
948public static bool IsLockStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
951public static bool IsReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
954public static bool IsThrowStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
957public static bool IsUsingStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
960public static bool IsWhileStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
963public static bool IsYieldReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
970public static bool IsAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
973public static bool IsClassDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
976public static bool IsCollectionExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
979public static bool IsConstructorDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
982public static bool IsEnumDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
985public static bool IsGlobalAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
988public static bool IsInterfaceDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
991public static bool IsParameter(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
994public static bool IsTypeConstraint(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
997public static bool IsVariableDeclarator(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1000public static bool IsFieldDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1003public static bool IsPropertyDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1006public static bool IsStructDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1009public static bool IsTypeArgumentList(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1016public static bool IsElseClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1018public static bool IsEqualsValueClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1025public static bool IsExpressionElement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1028public static bool IsImplicitElementAccess(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1031public static bool IsIndexerMemberCref(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1034public static bool IsPrimaryConstructorBaseType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (38)
35where TExpressionSyntax : SyntaxNode
37where TAttributeSyntax : SyntaxNode
38where TArgumentSyntax : SyntaxNode
39where TForEachStatementSyntax : SyntaxNode
40where TThrowStatementSyntax : SyntaxNode
49private SyntaxNode? _lazySemanticRootOfReplacedExpression;
95protected abstract SyntaxNode GetSemanticRootForSpeculation(TExpressionSyntax expression);
96protected abstract SemanticModel CreateSpeculativeSemanticModel(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel);
99protected abstract bool ExpressionMightReferenceMember([NotNullWhen(true)] SyntaxNode? node);
114protected abstract bool ReplacementChangesSemanticsForNodeLanguageSpecific(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode);
116protected abstract bool IsParenthesizedExpression([NotNullWhen(true)] SyntaxNode? node);
128SyntaxNode ISpeculationAnalyzer.OriginalExpression => OriginalExpression;
136public SyntaxNode SemanticRootOfOriginalExpression
171SyntaxNode ISpeculationAnalyzer.ReplacedExpression => ReplacedExpression;
178public SyntaxNode SemanticRootOfReplacedExpression
201protected virtual SyntaxNode GetSemanticRootOfReplacedExpression(SyntaxNode semanticRootOfOriginalExpression, TExpressionSyntax annotatedReplacedExpression)
224protected abstract void ValidateSpeculativeSemanticModel(SemanticModel speculativeSemanticModel, SyntaxNode nodeToSpeculate);
231var nodeToSpeculate = this.SemanticRootOfReplacedExpression;
317protected bool SymbolsAreCompatible(SyntaxNode originalNode, SyntaxNode newNode, bool requireNonNullSymbols = false)
519protected bool ReplacementChangesSemantics(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode originalRoot, bool skipVerificationForCurrentNode)
527SyntaxNode? previousOriginalNode = null, previousReplacedNode = null;
571private bool ReplacementChangesSemanticsForNode(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode)
688var originalExpressionOfMemberAccess = syntaxFacts.GetExpressionOfMemberAccessExpression(originalExpression);
731private bool ReplacementBreaksSystemObjectMethodResolution(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, [NotNullWhen(true)] SyntaxNode? previousOriginalNode, [NotNullWhen(true)] SyntaxNode? previousReplacedNode)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\CommonFormattingHelpers.cs (8)
45public static IEnumerable<(SyntaxToken, SyntaxToken)> ConvertToTokenPairs(this SyntaxNode root, IReadOnlyList<TextSpan> spans)
81public static ValueTuple<SyntaxToken, SyntaxToken> ConvertToTokenPair(this SyntaxNode root, TextSpan textSpan)
127public static bool IsInvalidTokenRange(this SyntaxNode root, SyntaxToken startToken, SyntaxToken endToken)
278var parentNode = GetParentThatContainsGivenSpan(token.Parent, backwardPosition, forward: false);
309var parentNode = GetParentThatContainsGivenSpan(token.Parent, forwardPosition, forward: true);
320private static SyntaxNode? GetParentThatContainsGivenSpan(SyntaxNode? node, int position, bool forward)
357public static TextSpan GetFormattingSpan(SyntaxNode root, TextSpan span)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\AbstractCodeGenerationService_FindDeclaration.cs (22)
20protected abstract IList<bool>? GetAvailableInsertionIndices(SyntaxNode destination, CancellationToken cancellationToken);
22private IList<bool>? GetAvailableInsertionIndices<TDeclarationNode>(TDeclarationNode destination, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
23=> GetAvailableInsertionIndices((SyntaxNode)destination, cancellationToken);
34protected static SyntaxToken GetEndToken(SyntaxNode node)
50protected static TextSpan GetSpan(SyntaxNode node)
58public bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken)
61public bool CanAddTo(SyntaxNode destination, Solution solution, CodeGenerationContext context, CancellationToken cancellationToken)
65SyntaxNode? destination,
143public SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(
153private (SyntaxNode? declaration, IList<bool>? availableIndices) FindMostRelevantDeclaration(
165using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var ancestors);
167var fallbackDeclaration = (SyntaxNode?)null;
171ancestors.AddRange(token.GetAncestors<SyntaxNode>());
176if (TryAddToRelatedDeclaration(declarations.Where(d => d is not ICompilationUnitSyntax), checkGeneratedCode: false, out var declaration1, out var availableIndices1) ||
184if (TryAddToWorker(declarations, checkGeneratedCode: true, out var declaration2, out var availableIndices2, predicate: node => true))
190IEnumerable<SyntaxNode> declarations,
192[NotNullWhen(true)] out SyntaxNode? declaration,
230IEnumerable<SyntaxNode> declarations,
232[NotNullWhen(true)] out SyntaxNode? declaration,
234Func<SyntaxNode, bool> predicate)
236foreach (var decl in declarations)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\AbstractCodeGenerationService.cs (83)
47public TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
50public TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
53public TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
56public TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
59public TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
62public TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
66where TDeclarationNode : SyntaxNode
69private static TNode WithAnnotations<TNode>(TNode node, CodeGenerationContextInfo info) where TNode : SyntaxNode
76public SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
79public SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
82public SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
85public SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
88public SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
91public SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
94public TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destination, IEnumerable<IParameterSymbol> parameters, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
97public TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
100public TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
103public TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
106public TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
109public TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
112public TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
115public TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
118public TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> statements, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
123protected abstract TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
124protected abstract TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
125protected abstract TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
126protected abstract TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
127protected abstract TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
128protected abstract TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
129protected abstract TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> members) where TDeclarationNode : SyntaxNode;
131public abstract TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destinationMember, IEnumerable<IParameterSymbol> parameters, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
132public abstract TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
133public abstract TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
134public abstract TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
135public abstract TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
137public abstract TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
138public abstract TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
139public abstract TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
140public abstract TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
142public abstract CodeGenerationDestination GetDestination(SyntaxNode node);
143public abstract SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
144public abstract SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
147public abstract SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
149public abstract SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
150public abstract SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
151public abstract SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
156protected static void CheckDeclarationNode<TDeclarationNode>(SyntaxNode destination) where TDeclarationNode : SyntaxNode
171protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2>(SyntaxNode destination)
172where TDeclarationNode1 : SyntaxNode
173where TDeclarationNode2 : SyntaxNode
190protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2, TDeclarationNode3>(SyntaxNode destination)
191where TDeclarationNode1 : SyntaxNode
192where TDeclarationNode2 : SyntaxNode
193where TDeclarationNode3 : SyntaxNode
211protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2, TDeclarationNode3, TDeclarationNode4>(SyntaxNode destination)
212where TDeclarationNode1 : SyntaxNode
213where TDeclarationNode2 : SyntaxNode
214where TDeclarationNode3 : SyntaxNode
215where TDeclarationNode4 : SyntaxNode
232Func<SyntaxNode, TCodeGenerationContextInfo, IList<bool>?, CancellationToken, SyntaxNode> declarationTransform,
247var transformedDeclaration = declarationTransform(destinationDeclaration, info, availableIndices, cancellationToken);
249var root = await destinationTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
250var currentRoot = root.ReplaceNode(destinationDeclaration, transformedDeclaration);
275where TDeclarationNode : SyntaxNode
297where TDeclarationSyntax : SyntaxNode
299var newMembers = new List<SyntaxNode>();
304var newMember = GetNewMember(info, codeGenerationDestination, member, cancellationToken);
329where TDeclarationSyntax : SyntaxNode
342private SyntaxNode? GetNewMember(TCodeGenerationContextInfo info, CodeGenerationDestination codeGenerationDestination, ISymbol member, CancellationToken cancellationToken)
359CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
379protected abstract IComparer<SyntaxNode> GetMemberComparer();
481protected static void CheckLocation(SyntaxNode destinationMember, [NotNull] Location? location)
500SyntaxNode attributeList,
520SyntaxNode attributeToRemove,
526var root = attributeToRemove.SyntaxTree.GetRoot();
535where T : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (18)
55SyntaxNode? initializer = null)
81bool isIndexer = false, SyntaxNode? initializer = null)
109SyntaxNode? initializer = null)
125ImmutableArray<SyntaxNode> statements = default,
126ImmutableArray<SyntaxNode> baseConstructorArguments = default,
127ImmutableArray<SyntaxNode> thisConstructorArguments = default,
140ImmutableArray<SyntaxNode> statements = default)
158ImmutableArray<SyntaxNode> statements = default,
159ImmutableArray<SyntaxNode> handlesExpressions = default,
179ImmutableArray<SyntaxNode> statements = default,
180ImmutableArray<SyntaxNode> handlesExpressions = default,
198ImmutableArray<SyntaxNode> statements = default,
224ImmutableArray<SyntaxNode> statements = default,
252ImmutableArray<SyntaxNode> statements = default,
361ImmutableArray<SyntaxNode> statements = default)
385ImmutableArray<SyntaxNode> statements)
518ImmutableArray<SyntaxNode> statements = default,
551SyntaxNode? initializer = null)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\ICodeGenerationService.cs (27)
22SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
27SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
33SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
38SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
43SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
48SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
53TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
58TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
63TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
68TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
73TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
78TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
83TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<ISymbol> members, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
88TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destination, IEnumerable<IParameterSymbol> parameters, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
93TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
98TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
103TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
108TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
113TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
118TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
123TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
128TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> statements, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
188bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken);
193bool CanAddTo(SyntaxNode destination, Solution solution, CodeGenerationContext context, CancellationToken cancellationToken);
201SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(Solution solution, INamespaceOrTypeSymbol namespaceOrType, Location? location, CancellationToken cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeRefactorings\AbstractRefactoringHelpersService.cs (25)
15where TExpressionSyntax : SyntaxNode
16where TArgumentSyntax : SyntaxNode
17where TExpressionStatementSyntax : SyntaxNode
21public bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
24public void AddRelevantNodes<TSyntaxNode>(SourceText sourceText, SyntaxNode root, TextSpan selection, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
27public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
30public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
33public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
36public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
39public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
42public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
45public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
48public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
51public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeRefactorings\CodeRefactoringContextExtensions.cs (12)
41public static Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
44public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNode) where TSyntaxNode : SyntaxNode
50public static Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
53public static async Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNodes) where TSyntaxNode : SyntaxNode
59public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
65public static TSyntaxNode? TryGetRelevantNode<TSyntaxNode>(this ParsedDocument document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
68public static TSyntaxNode? TryGetRelevantNode<TSyntaxNode>(this ParsedDocument document, TextSpan span, bool allowEmptyNode, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
76this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
82this Document document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
89this ParsedDocument document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
93this ParsedDocument document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
102this ParsedDocument document, TextSpan span, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Editing\ImportAdderService.cs (23)
37var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
70bool OverlapsWithSpan(SyntaxNode n) => spansTree.HasIntervalThatOverlapsWith(n.FullSpan.Start, n.FullSpan.Length);
73protected abstract INamespaceSymbol? GetExplicitNamespaceSymbol(SyntaxNode node, SemanticModel model);
77SyntaxNode container,
95SyntaxNode container,
100private static SyntaxNode GenerateNamespaceImportDeclaration(INamespaceSymbol namespaceSymbol, SyntaxGenerator generator)
111IEnumerable<SyntaxNode> syntaxNodes,
117using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var importsToAdd);
118using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var nodesToSimplify);
120var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
139var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
159var first = root.DescendantNodesAndSelf().First(x => x.HasAnnotation(annotation));
160var last = root.DescendantNodesAndSelf().Last(x => x.HasAnnotation(annotation));
162var context = first.GetCommonRoot(last);
172IEnumerable<SyntaxNode> annotatedNodes,
178using var _ = PooledDictionary<INamespaceSymbol, SyntaxNode>.GetInstance(out var importToSyntax);
180var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
188SyntaxNode? first = null, last = null;
190foreach (var annotatedNode in annotatedNodes)
218var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
233var context = first.GetCommonRoot(last);
236var importContainer = addImportsService.GetImportContainer(root, context, importToSyntax.First().Value, options);
259private static bool IsInsideNamespace(SyntaxNode node, INamespaceSymbol symbol, SemanticModel model, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\StringBuilderExtensions.cs (1)
22where TNode : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxEditorExtensions.cs (29)
31Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
32CancellationToken cancellationToken) where TNode : SyntaxNode
54Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
55CancellationToken cancellationToken) where TNode : SyntaxNode
76Func<SemanticModel, SyntaxNode, TNode, SyntaxNode> updateRoot,
77CancellationToken cancellationToken) where TNode : SyntaxNode
98Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
99CancellationToken cancellationToken) where TNode : SyntaxNode
120Func<SemanticModel, SyntaxNode, TNode, SyntaxNode> updateRoot,
121CancellationToken cancellationToken) where TNode : SyntaxNode
154Func<ISyntaxFactsService, SyntaxNode, SyntaxNode> getSemanticBoundary,
156Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
157CancellationToken cancellationToken) where TNode : SyntaxNode
170var originalRoot = editor.OriginalRoot;
173var currentRoot = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
183var replacementRoot = updateRoot(semanticModel, currentRoot, instance, currentNode);
195private static SyntaxNode GetExpressionSemanticBoundary(ISyntaxFactsService syntaxFacts, SyntaxNode node)
202return node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>(
210private static SyntaxNode GetMethodBodySemanticBoundary(ISyntaxFactsService syntaxFacts, SyntaxNode node)
212return node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_CreateEqualsMethod.cs (22)
48public static IMethodSymbol CreateEqualsMethod(this Compilation compilation, ImmutableArray<SyntaxNode> statements)
56ImmutableArray<SyntaxNode> statements)
120private static ImmutableArray<SyntaxNode> CreateEqualsMethodStatements(
135using var statements = TemporaryArray<SyntaxNode>.Empty;
144var localNameExpression = factory.IdentifierName(localName);
145var objNameExpression = factory.IdentifierName(ObjName);
149using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
178var ifStatement = factory.IfStatement(
189var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
201var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
240ImmutableArray<ISymbol> members, SyntaxNode localNameExpression,
241ArrayBuilder<SyntaxNode> expressions)
251var symbolNameExpression = factory.IdentifierName(member.Name);
252var thisSymbol = factory.MemberAccessExpression(factory.ThisExpression(), symbolNameExpression)
254var otherSymbol = factory.MemberAccessExpression(localNameExpression, symbolNameExpression);
291private static ImmutableArray<SyntaxNode> CreateIEquatableEqualsMethodStatements(
299var statements = ArrayBuilder<SyntaxNode>.GetInstance();
301var otherNameExpression = factory.IdentifierName(OtherName);
305using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
343SyntaxGenerator factory, SyntaxGeneratorInternal generatorInternal, Compilation compilation, ParseOptions parseOptions, SyntaxNode otherNameExpression, ArrayBuilder<SyntaxNode> expressions)
345var nullLiteral = factory.NullLiteralExpression();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (58)
33public static SyntaxNode Negate(
36SyntaxNode expression,
43public static SyntaxNode Negate(
46SyntaxNode expressionOrPattern,
54public static SyntaxNode Negate(
57SyntaxNode expressionOrPattern,
114syntaxFacts.GetPartsOfAnyIsTypeExpression(expressionOrPattern, out var expression, out var type);
124syntaxFacts.GetPartsOfAnyIsTypeExpression(expressionOrPattern, out var expression, out var type);
136private static SyntaxNode GetNegationOfBinaryExpression(
137SyntaxNode expressionNode,
144syntaxFacts.GetPartsOfBinaryExpression(expressionNode, out var leftOperand, out var operatorToken, out var rightOperand);
172var newBinaryExpressionSyntax = negatedKind is BinaryOperatorKind.Equals or BinaryOperatorKind.NotEquals
190SyntaxNode innerPattern;
199var typeExpression = generatorInternal.Type(isTypeOperation.TypeOperand, typeContext: false);
228private static SyntaxNode GetNegationOfBinaryPattern(
229SyntaxNode pattern,
241syntaxFacts.GetPartsOfBinaryPattern(pattern, out var left, out var operatorToken, out var right);
243var newLeft = generator.Negate(generatorInternal, left, semanticModel, cancellationToken);
244var newRight = generator.Negate(generatorInternal, right, semanticModel, cancellationToken);
246var newPattern =
258private static SyntaxNode GetNegationOfIsPatternExpression(SyntaxNode isExpression, SyntaxGenerator generator, SyntaxGeneratorInternal generatorInternal, SemanticModel semanticModel, CancellationToken cancellationToken)
263syntaxFacts.GetPartsOfIsPatternExpression(isExpression, out var left, out var isToken, out var pattern);
265SyntaxNode? negatedPattern = null;
287var type = syntaxFacts.GetTypeOfTypePattern(negatedPattern);
300private static SyntaxNode GetNegationOfRelationalPattern(
301SyntaxNode expressionNode,
312syntaxFacts.GetPartsOfRelationalPattern(expressionNode, out var operatorToken, out var expression);
327private static bool IsLegalPattern(ISyntaxFacts syntaxFacts, SyntaxNode pattern, bool designatorsLegal)
332syntaxFacts.GetPartsOfBinaryPattern(pattern, out var left, out _, out var right);
342syntaxFacts.GetPartsOfUnaryPattern(pattern, out _, out var subPattern);
354syntaxFacts.GetPartsOfParenthesizedPattern(pattern, out _, out var subPattern, out _);
360syntaxFacts.GetPartsOfDeclarationPattern(pattern, out _, out var designator);
366syntaxFacts.GetPartsOfRecursivePattern(pattern, out _, out _, out _, out var designator);
376private static SyntaxNode NegateRelational(
379SyntaxNode leftOperand,
381SyntaxNode rightOperand)
467private static SyntaxNode GetNegationOfLiteralExpression(
468SyntaxNode expression,
476SyntaxNode newLiteralExpression;
497private static SyntaxNode GetNegationOfConstantPattern(
498SyntaxNode pattern,
510var expression = syntaxFacts.GetExpressionOfConstantPattern(pattern);
522private static SyntaxNode GetNegationOfLogicalNotExpression(
523SyntaxNode expression,
527var operand = syntaxFacts.GetOperandOfPrefixUnaryExpression(expression);
533private static SyntaxNode GetNegationOfUnaryPattern(
534SyntaxNode pattern,
550private static SyntaxNode GetNegationOfNotPattern(
551SyntaxNode pattern,
558syntaxFacts.GetPartsOfUnaryPattern(pattern, out var opToken, out var subPattern);
564var type = syntaxFacts.GetTypeOfTypePattern(subPattern);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions.cs (47)
23public static SyntaxNode CreateThrowNotImplementedStatement(
30public static SyntaxNode CreateThrowNotImplementedExpression(
37private static SyntaxNode CreateNewNotImplementedException(SyntaxGenerator codeDefinitionFactory, Compilation compilation)
39var notImplementedExceptionTypeSyntax = compilation.NotImplementedExceptionType() is INamedTypeSymbol symbol
48public static ImmutableArray<SyntaxNode> CreateThrowNotImplementedStatementBlock(
52public static ImmutableArray<SyntaxNode> CreateArguments(
59private static SyntaxNode CreateArgument(
66public static SyntaxNode GetDefaultEqualityComparer(
73var typeExpression = equalityComparerType == null
88public static SyntaxNode IsPatternExpression(this SyntaxGeneratorInternal generator, SyntaxNode expression, SyntaxNode pattern)
94public static SyntaxNode GenerateDelegateThroughMemberStatement(
97var through = generator.MemberAccessExpression(
103var invocationExpression = generator.InvocationExpression(through, generator.CreateArguments(method.Parameters));
109public static SyntaxNode CreateDelegateThroughExpression(
112var name = generator.IdentifierName(throughMember.Name);
113var through = throughMember.IsStatic
159var explicitImplementationCast = generator.CastExpression(
174static SyntaxNode GenerateContainerName(SyntaxGenerator factory, ISymbol throughMember)
183public static ImmutableArray<SyntaxNode> GetGetAccessorStatements(
193var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
194var expression = property.IsIndexer
222public static ImmutableArray<SyntaxNode> GetSetAccessorStatements(
232var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
233var expression = property.IsIndexer
335public static ImmutableArray<SyntaxNode> CreateAssignmentStatements(
345using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var nullCheckStatements);
346using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var assignStatements);
358var assignExpression = factory.AssignmentStatement(
361var statement = factory.ExpressionStatement(assignExpression);
371var fieldAccess = factory.MemberAccessExpression(factory.ThisExpression(), factory.IdentifierName(fieldName))
391SyntaxNode fieldAccess,
394ArrayBuilder<SyntaxNode> nullCheckStatements,
395ArrayBuilder<SyntaxNode> assignStatements)
426public static SyntaxNode CreateAssignWithNullCheckStatement(
427this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter, SyntaxNode fieldAccess)
436public static SyntaxNode CreateThrowArgumentNullExpression(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
439private static SyntaxNode CreateNewArgumentNullException(SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
448public static SyntaxNode CreateNullCheckAndThrowStatement(
454var condition = factory.CreateNullCheckExpression(generatorInternal, semanticModel, parameter.Name);
455var throwStatement = factory.CreateThrowArgumentNullExceptionStatement(semanticModel.Compilation, parameter);
460public static SyntaxNode CreateNullCheckExpression(
463var identifier = factory.IdentifierName(identifierName);
464var nullExpr = factory.NullLiteralExpression();
465var condition = generatorInternal.SupportsPatterns(semanticModel.SyntaxTree.Options)
471public static SyntaxNode CreateThrowArgumentNullExceptionStatement(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Formatting\FormatterShared.cs (6)
26var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
30public SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
33public SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
36public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\AbstractAddImportsService.cs (65)
19where TCompilationUnitSyntax : SyntaxNode
20where TNamespaceDeclarationSyntax : SyntaxNode
21where TUsingOrAliasSyntax : SyntaxNode
22where TExternSyntax : SyntaxNode
25protected abstract SyntaxNode? GetAlias(TUsingOrAliasSyntax usingOrAlias);
26protected abstract ImmutableArray<SyntaxNode> GetGlobalImports(SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken);
27protected abstract SyntaxList<TUsingOrAliasSyntax> GetUsingsAndAliases(SyntaxNode node);
28protected abstract SyntaxList<TExternSyntax> GetExterns(SyntaxNode node);
43private bool HasAliases(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsAlias);
44private bool HasUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsSimpleUsing);
45private bool HasStaticUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsStaticUsing);
46private bool HasExterns(SyntaxNode node) => GetExterns(node).Any();
47private bool HasAnyImports(SyntaxNode node) => GetUsingsAndAliases(node).Any() || GetExterns(node).Any();
51SyntaxNode root,
52SyntaxNode? contextLocation,
53SyntaxNode import,
62private static ImmutableArray<SyntaxNode> GetAllContainers(SyntaxNode root, SyntaxNode? contextLocation)
66var applicableContainer = GetFirstApplicableContainer(contextLocation);
67return [.. applicableContainer.GetAncestorsOrThis<SyntaxNode>()];
71SyntaxNode import, ImmutableArray<SyntaxNode> containers, ImmutableArray<SyntaxNode> globalImports)
73foreach (var node in containers)
86foreach (var node in globalImports)
97protected abstract bool IsEquivalentImport(SyntaxNode a, SyntaxNode b);
99public SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options)
103out var externContainer, out var usingContainer, out var staticUsingContainer, out var aliasContainer);
126public SyntaxNode AddImports(
128SyntaxNode root,
129SyntaxNode? contextLocation,
130IEnumerable<SyntaxNode> newImports,
147out var externContainer, out var usingContainer, out var aliasContainer, out var staticUsingContainer);
149var newRoot = Rewrite(
157protected abstract SyntaxNode Rewrite(
159SyntaxNode externContainer, SyntaxNode usingContainer, SyntaxNode staticUsingContainer, SyntaxNode aliasContainer,
160AddImportPlacementOptions options, SyntaxNode root, CancellationToken cancellationToken);
162private void GetContainers(SyntaxNode root, SyntaxNode contextLocation, AddImportPlacementOptions options, out SyntaxNode externContainer, out SyntaxNode usingContainer, out SyntaxNode staticUsingContainer, out SyntaxNode aliasContainer)
164var applicableContainer = GetFirstApplicableContainer(contextLocation);
165var contextSpine = applicableContainer.GetAncestorsOrThis<SyntaxNode>().ToImmutableArray();
170var fallbackNode = contextSpine.FirstOrDefault(HasAnyImports);
190private static SyntaxNode? GetFirstApplicableContainer(SyntaxNode contextNode)
194var node = usingDirective != null ? usingDirective.Parent! : contextNode;
196(SyntaxNode?)node.GetAncestorOrThis<TCompilationUnitSyntax>();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\IAddImportsService.cs (15)
23SemanticModel semanticModel, SyntaxNode root, SyntaxNode? contextLocation,
24SyntaxNode import, SyntaxGenerator generator, CancellationToken cancellationToken);
30SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options);
32SyntaxNode AddImports(
33SemanticModel semanticModel, SyntaxNode root, SyntaxNode? contextLocation,
34IEnumerable<SyntaxNode> newImports, SyntaxGenerator generator, AddImportPlacementOptions options, CancellationToken cancellationToken);
39public static SyntaxNode AddImport(
40this IAddImportsService service, SemanticModel semanticModel, SyntaxNode root,
41SyntaxNode contextLocation, SyntaxNode newImport, SyntaxGenerator generator, AddImportPlacementOptions options,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\AbstractSemanticFactsService.cs (37)
40SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
48SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
56SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
64SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
73SyntaxNode location,
74SyntaxNode? containerOpt,
82var container = containerOpt ?? location.AncestorsAndSelf().FirstOrDefault(
96protected virtual IEnumerable<ISymbol> GetCollidableSymbols(SemanticModel semanticModel, SyntaxNode location, SyntaxNode? container, CancellationToken cancellationToken)
180public bool IsWrittenTo(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
183public bool IsOnlyWrittenTo(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
186public bool IsInOutContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
189public bool IsInRefContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
192public bool IsInInContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
195public bool CanReplaceWithRValue(SemanticModel semanticModel, SyntaxNode? expression, CancellationToken cancellationToken)
204public bool TryGetSpeculativeSemanticModel(SemanticModel oldSemanticModel, SyntaxNode oldNode, SyntaxNode newNode, [NotNullWhen(true)] out SemanticModel? speculativeModel)
210public ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode forEachStatement)
213public SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
216public IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node)
219public ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node)
222public ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node)
228public IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken)
231public IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argumentNode, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
234public IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argumentNode, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
237public ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
240public ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
243public ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken)
246public bool IsInsideNameOfExpression(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
252public bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, INamedTypeSymbol? expressionTypeOpt, CancellationToken cancellationToken)
255public string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken)
258public IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node)
264public CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\ISemanticFactsService.cs (11)
27SemanticModel semanticModel, SyntaxNode location,
28SyntaxNode? container, string baseName, CancellationToken cancellationToken);
31SemanticModel semanticModel, SyntaxNode location,
32SyntaxNode? container, string baseName, IEnumerable<string> usedNames, CancellationToken cancellationToken);
34SyntaxToken GenerateUniqueName(SemanticModel semanticModel, SyntaxNode location, SyntaxNode? container, string baseName,
38SemanticModel semanticModel, SyntaxNode location,
39SyntaxNode? container, string baseName, CancellationToken cancellationToken);
42SemanticModel semanticModel, SyntaxNode location,
43SyntaxNode? container, string baseName, IEnumerable<string> usedNames, CancellationToken cancellationToken);
47IMethodSymbol? TryGetDisposeMethod(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\SemanticModelReuse\AbstractSemanticModelReuseLanguageService.cs (20)
22where TMemberDeclarationSyntax : SyntaxNode
24where TAccessorDeclarationSyntax : SyntaxNode
32public abstract SyntaxNode? TryGetContainingMethodBodyForSpeculation(SyntaxNode node);
34protected abstract SemanticModel? TryGetSpeculativeSemanticModelWorker(SemanticModel previousSemanticModel, SyntaxNode previousBodyNode, SyntaxNode currentBodyNode);
49public async Task<SemanticModel?> TryGetSpeculativeSemanticModelAsync(SemanticModel previousSemanticModel, SyntaxNode currentBodyNode, CancellationToken cancellationToken)
66var previousRoot = await previousSemanticModel.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
67var currentRoot = await currentBodyNode.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
68var previousBodyNode = GetPreviousBodyNode(previousRoot, currentRoot, currentBodyNode);
90protected SyntaxNode? GetPreviousBodyNode(SyntaxNode previousRoot, SyntaxNode currentRoot, SyntaxNode currentBodyNode)
98var previousContainer = GetPreviousBodyNode(previousRoot, currentRoot, currentContainer);
124var previousNode = previousRoot;
136var childAsNode = children[childIndex].AsNode();
150private static void GetNodeChildIndexPathToRootReversed(SyntaxNode node, ArrayBuilder<int> path)
152var current = node;
153var parent = current.Parent;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Simplification\AbstractSimplificationService.cs (30)
30where TCompilationUnitSyntax : SyntaxNode
31where TExpressionSyntax : SyntaxNode
32where TStatementSyntax : SyntaxNode
33where TCrefSyntax : SyntaxNode
35protected static readonly Func<SyntaxNode, bool> s_containsAnnotations = n => n.ContainsAnnotations;
40protected abstract ImmutableArray<NodeOrTokenToReduce> GetNodesAndTokensToReduce(SyntaxNode root, Func<SyntaxNodeOrToken, bool> isNodeOrTokenOutsideSimplifySpans);
41protected abstract SemanticModel GetSpeculativeSemanticModel(ref SyntaxNode nodeToSpeculate, SemanticModel originalSemanticModel, SyntaxNode originalNode);
42protected abstract bool NodeRequiresNonSpeculativeSemanticModel(SyntaxNode node);
43protected abstract void AddImportDeclarations(TCompilationUnitSyntax root, ArrayBuilder<SyntaxNode> importDeclarations);
48protected virtual SyntaxNode TransformReducedNode(SyntaxNode reducedNode, SyntaxNode originalNode)
51public abstract SyntaxNode Expand(SyntaxNode node, SemanticModel semanticModel, SyntaxAnnotation? annotationForReplacedAliasIdentifier, Func<SyntaxNode, bool>? expandInsideNode, bool expandParameter, CancellationToken cancellationToken);
52public abstract SyntaxToken Expand(SyntaxToken token, SemanticModel semanticModel, Func<SyntaxNode, bool>? expandInsideNode, CancellationToken cancellationToken);
115var reducedNodesMap = new ConcurrentDictionary<SyntaxNode, SyntaxNode>();
152SyntaxNode root,
156ConcurrentDictionary<SyntaxNode, SyntaxNode> reducedNodesMap,
218var replacedParent = isNode
232var currentNode = currentNodeOrToken.AsNode()!;
237var newRoot = root.ReplaceNode(nodeOrToken.AsNode()!, currentNode.WithAdditionalAnnotations(marker));
285using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var importDeclarations);
300var root = await model.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
302var unusedImports = new HashSet<SyntaxNode>();
311var newRoot = gen.RemoveNodes(root, unusedImports);
320protected abstract void GetUnusedNamespaceImports(SemanticModel model, HashSet<SyntaxNode> namespaceImports, CancellationToken cancellationToken);
Workspace\Solution\Solution.cs (5)
1012/// document instance defined by its name and root <see cref="SyntaxNode"/>.
1014public Solution AddDocument(DocumentId documentId, string name, SyntaxNode syntaxRoot, IEnumerable<string>? folders = null, string? filePath = null, bool isGenerated = false, PreservationMode preservationMode = PreservationMode.PreserveValue)
1416public Solution WithDocumentSyntaxRoot(DocumentId documentId, SyntaxNode root, PreservationMode mode = PreservationMode.PreserveValue)
1420internal Solution WithDocumentSyntaxRoots(ImmutableArray<(DocumentId documentId, SyntaxNode root)> syntaxRoots, PreservationMode mode = PreservationMode.PreserveValue)
1685=> WithCompilationState(CompilationState.WithFrozenSourceGeneratedDocuments(documents.SelectAsArray(d => (d.documentIdentity, d.generationDateTime, (SourceText?)d.text, (SyntaxNode?)null))));
Workspace\Solution\SolutionCompilationState.cs (12)
818ImmutableArray<(SourceGeneratedDocumentIdentity, DateTime, SourceText?, SyntaxNode?)>) GetOrdinaryAndSourceGeneratedDocuments()
824using var _2 = ArrayBuilder<(SourceGeneratedDocumentIdentity, DateTime, SourceText?, SyntaxNode?)>.GetInstance(out var sourceGeneratedDocuments);
850ImmutableArray<(SourceGeneratedDocumentIdentity documentIdentity, DateTime generationDateTime, SourceText? sourceText, SyntaxNode? syntaxNode)> sourceGeneratedDocuments,
1005/// <inheritdoc cref="Solution.WithDocumentSyntaxRoots(ImmutableArray{ValueTuple{DocumentId, SyntaxNode}}, PreservationMode)"/>
1009public SolutionCompilationState WithDocumentSyntaxRoots(ImmutableArray<(DocumentId documentId, SyntaxNode root)> syntaxRoots, PreservationMode mode)
1013return UpdateDocumentsInMultipleProjects<DocumentState, SyntaxNode, PreservationMode>(
1018oldDocumentState.TryGetSyntaxTree(out var oldTree) && oldTree.TryGetRoot(out var oldRoot) && oldRoot == root
1022(ImmutableArray<(DocumentId, SyntaxNode)>,
1023ImmutableArray<(SourceGeneratedDocumentIdentity, DateTime, SourceText?, SyntaxNode?)>) GetOrdinaryAndSourceGeneratedDocuments()
1028using var _1 = ArrayBuilder<(DocumentId, SyntaxNode)>.GetInstance(capacity: syntaxRoots.Length, out var ordinaryDocuments);
1029using var _2 = ArrayBuilder<(SourceGeneratedDocumentIdentity, DateTime, SourceText?, SyntaxNode?)>.GetInstance(out var sourceGeneratedDocuments);
1405ImmutableArray<(SourceGeneratedDocumentIdentity documentIdentity, DateTime generationDateTime, SourceText? sourceText, SyntaxNode? syntaxNode)> documents)
ExportedPartsShouldHaveImportingConstructorCodeFixProvider.cs (15)
81var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
84var exportAttribute = root.FindNode(sourceSpan, getInnermostNodeForTie: true);
105var declaration = generator.TryGetContainingDeclaration(exportAttribute, DeclarationKind.Class);
111var importingConstructor = generator.ConstructorDeclaration(
113parameters: Enumerable.Empty<SyntaxNode>(),
117statements: Enumerable.Empty<SyntaxNode>());
137var newDeclaration = generator.InsertMembers(declaration, index, importingConstructor);
143var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
144var importingConstructorAttribute = root.FindNode(sourceSpan, getInnermostNodeForTie: true);
148var declaration = generator.TryGetContainingDeclaration(importingConstructorAttribute, DeclarationKind.Constructor);
154var newDeclaration = generator.WithAccessibility(declaration, Accessibility.Public);
160var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
163var constructor = root.FindNode(sourceSpan, getInnermostNodeForTie: true);
167var declaration = generator.TryGetContainingDeclaration(constructor, DeclarationKind.Constructor);
204var newDeclaration = generator.AddAttributes(declaration, generator.Attribute(generator.TypeExpression(importingConstructorAttributeSymbol).WithAddImportsAnnotation()));
ImportingConstructorShouldBeObsoleteCodeFixProvider.cs (36)
26protected abstract bool IsOnPrimaryConstructorTypeDeclaration(SyntaxNode attributeName, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
27protected abstract SyntaxNode AddMethodTarget(SyntaxNode attributeList);
87var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
93var attributeName = root.FindNode(sourceSpan, getInnermostNodeForTie: true);
97var isPrimaryConstructorTypeDeclaration = this.IsOnPrimaryConstructorTypeDeclaration(attributeName, out var typeDeclaration);
98var declaration = isPrimaryConstructorTypeDeclaration
104var obsoleteAttributeList = generator.Attribute(
113var newDeclaration = generator.AddAttributes(declaration, obsoleteAttributeList);
119var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
122var obsoleteAttributeApplication = root.FindNode(sourceSpan, getInnermostNodeForTie: true);
126var declaration = generator.TryGetContainingDeclaration(obsoleteAttributeApplication, DeclarationKind.Attribute);
132var descriptionArgument = GenerateDescriptionArgument(generator, semanticModel);
133var errorArgument = GenerateErrorArgument(generator, allowNamedArgument: document.Project.Language == LanguageNames.CSharp);
134var newDeclaration = generator.AddAttributeArguments(declaration, [descriptionArgument, errorArgument]);
140var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
143var obsoleteAttributeApplication = root.FindNode(sourceSpan, getInnermostNodeForTie: true);
147var declaration = generator.TryGetContainingDeclaration(obsoleteAttributeApplication, DeclarationKind.Attribute);
153var argumentToReplace = generator.GetAttributeArguments(declaration).ElementAtOrDefault(0);
159var descriptionArgument = GenerateDescriptionArgument(generator, semanticModel);
165var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
167var obsoleteAttributeApplication = root.FindNode(sourceSpan, getInnermostNodeForTie: true);
171var declaration = generator.TryGetContainingDeclaration(obsoleteAttributeApplication, DeclarationKind.Attribute);
177var errorArgument = GenerateErrorArgument(generator, allowNamedArgument: document.Project.Language == LanguageNames.CSharp);
178var newDeclaration = generator.AddAttributeArguments(declaration, [errorArgument]);
184var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
186var obsoleteAttributeApplication = root.FindNode(sourceSpan, getInnermostNodeForTie: true);
190var declaration = generator.TryGetContainingDeclaration(obsoleteAttributeApplication, DeclarationKind.Attribute);
196var argumentToReplace = generator.GetAttributeArguments(declaration).ElementAtOrDefault(1);
202var errorArgument = GenerateErrorArgument(generator, allowNamedArgument: document.Project.Language == LanguageNames.CSharp);
206private static SyntaxNode GenerateDescriptionArgument(SyntaxGenerator generator, SemanticModel semanticModel)
208SyntaxNode attributeArgument;
224private static SyntaxNode GenerateErrorArgument(SyntaxGenerator generator, bool allowNamedArgument)
228var argument = generator.Argument("error", RefKind.None, generator.TrueLiteralExpression());
229var attribute = generator.Attribute("ignored", argument);
src\0bf6ba47805c8821\AbstractMoveDeclarationNearReferenceService.cs (20)
27where TStatementSyntax : SyntaxNode
29where TVariableDeclaratorSyntax : SyntaxNode
31protected abstract bool IsMeaningfulBlock(SyntaxNode node);
32protected abstract bool CanMoveToBlock(ILocalSymbol localSymbol, SyntaxNode currentBlock, SyntaxNode destinationBlock);
33protected abstract SyntaxNode GetVariableDeclaratorSymbolNode(TVariableDeclaratorSyntax variableDeclarator);
36protected abstract Task<bool> TypesAreCompatibleAsync(Document document, ILocalSymbol localSymbol, TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode right, CancellationToken cancellationToken);
38public async Task<(bool canMove, bool mayChangeSemantics)> CanMoveDeclarationNearReferenceAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
47private async Task<State> ComputeStateAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
78Document document, SyntaxNode localDeclarationStatement, CancellationToken cancellationToken)
84var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
114var newRoot = editor.GetChangedRoot();
151var originalNextStatement = state.OutermostBlockStatements[statementIndex + 1];
187var blocks = state.InnermostBlock.GetAncestorsOrThis<SyntaxNode>();
188foreach (var block in blocks)
211var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(state.VariableDeclarator);
218syntaxFacts.GetPartsOfAssignmentStatement(firstStatement, out var left, out var right);
243out var _, out var operatorToken, out var right);
src\30958ef190fa2467\SyntaxGeneratorInternal.cs (98)
37public abstract SyntaxNode LocalDeclarationStatement(
38SyntaxNode? type, SyntaxToken identifier, SyntaxNode? initializer = null, bool isConst = false);
43public SyntaxNode LocalDeclarationStatement(SyntaxToken name, SyntaxNode initializer)
46public abstract SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer);
51public abstract SyntaxNode WithPropertyInitializer(SyntaxNode propertyDeclaration, SyntaxNode initializer);
53public abstract SyntaxNode EqualsValueClause(SyntaxNode value);
54public abstract SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value);
58public abstract SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull);
60public abstract SyntaxNode MemberBindingExpression(SyntaxNode name);
62public abstract SyntaxNode RefExpression(SyntaxNode expression);
67public abstract SyntaxNode AddParentheses(SyntaxNode expression, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true);
73public abstract SyntaxNode YieldReturnStatement(SyntaxNode expression);
78/// <see cref="LocalDeclarationStatement(SyntaxNode, SyntaxToken, SyntaxNode, bool)"/>.
84public abstract SyntaxNode InterpolatedStringText(SyntaxToken textToken);
85public abstract SyntaxNode Interpolation(SyntaxNode syntaxNode);
86public abstract SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken);
87public abstract SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment);
88public abstract SyntaxNode InterpolationFormatClause(string format);
89public abstract SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames);
106public abstract SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext);
108public abstract SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right);
110public abstract SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type);
119public abstract SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isToken, SyntaxNode pattern);
121public abstract SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right);
122public abstract SyntaxNode ConstantPattern(SyntaxNode expression);
123public abstract SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name);
124public abstract SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression);
125public abstract SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression);
126public abstract SyntaxNode LessThanRelationalPattern(SyntaxNode expression);
127public abstract SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression);
128public abstract SyntaxNode NotPattern(SyntaxNode pattern);
129public abstract SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right);
130public abstract SyntaxNode ParenthesizedPattern(SyntaxNode pattern);
131public abstract SyntaxNode TypePattern(SyntaxNode type);
132public abstract SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern);
136public abstract SyntaxNode DefaultExpression(ITypeSymbol type);
137public abstract SyntaxNode DefaultExpression(SyntaxNode type);
139public abstract SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression);
141public SyntaxNode CastExpression(ITypeSymbol type, SyntaxNode expression)
144public SyntaxNode TypeExpression(ITypeSymbol typeSymbol)
147public abstract SyntaxNode TypeExpression(ITypeSymbol typeSymbol, RefKind refKind);
149public abstract SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right);
151public SyntaxNode MemberAccessExpression(SyntaxNode? expression, SyntaxNode memberName)
157public abstract SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode memberName);
158public abstract SyntaxNode IdentifierName(string identifier);
160public abstract SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression);
161public SyntaxNode ConvertExpression(ITypeSymbol type, SyntaxNode expression)
src\5f6f2f95b47c3dc6\SemanticModelWorkspaceServiceFactory.SemanticModelWorkspaceService.cs (6)
15internal readonly struct SemanticModelReuseInfo(SemanticModel previousNonSpeculativeSemanticModel, SemanticModel currentSemanticModel, SyntaxNode bodyNode, VersionStamp topLevelSementicVersion)
31public readonly SyntaxNode BodyNode = bodyNode;
94public async ValueTask<SemanticModel> ReuseExistingSpeculativeModelAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
100var bodyNode = reuseService.TryGetContainingMethodBodyForSpeculation(node);
138ImmutableDictionary<DocumentId, SemanticModelReuseInfo?> map, Document document, SyntaxNode bodyNode, CancellationToken cancellationToken)
177SyntaxNode bodyNode,
src\ce8c1e82c1124a2b\AbstractInitializerParameterService.cs (23)
20where TStatementSyntax : SyntaxNode
22protected abstract bool IsFunctionDeclaration(SyntaxNode node);
24protected abstract SyntaxNode? GetAccessorBody(IMethodSymbol accessor, CancellationToken cancellationToken);
26protected abstract SyntaxNode GetBody(SyntaxNode methodNode);
27protected abstract SyntaxNode? TryGetLastStatement(IBlockOperation? blockStatement);
34SyntaxEditor editor, SyntaxNode functionDeclaration, bool returnsVoid, SyntaxNode? statementToAddAfter, TStatementSyntax statement);
37SyntaxNode functionDeclaration,
45var functionBody = GetBody(functionDeclaration);
79public void InsertStatement(SyntaxEditor editor, SyntaxNode functionDeclaration, bool returnsVoid, SyntaxNode? statementToAddAfter, SyntaxNode statement)
90var parameterDeclaration = parameterReference.GetSyntax(cancellationToken);
92var functionDeclaration = parameterDeclaration.FirstAncestorOrSelf<SyntaxNode>(IsFunctionDeclaration);
115SyntaxNode functionDeclaration,
123var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
135SyntaxNode constructorDeclaration,
159var statementToAddAfter = TryGetStatementToAddInitializationAfter(parameter, blockStatement);
164private SyntaxNode? TryGetStatementToAddInitializationAfter(
195using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var accessors);
209foreach (var accessorBody in accessors)
src\roslyn\src\RoslynAnalyzers\Utilities\Workspaces\SyntaxGeneratorExtensions.cs (56)
32/// A <see cref="SyntaxNode"/> representing the declaration.
34public static SyntaxNode DefaultOperatorEqualityDeclaration(this SyntaxGenerator generator,
37var leftArgument = generator.IdentifierName(LeftIdentifierName);
38var rightArgument = generator.IdentifierName(RightIdentifierName);
40List<SyntaxNode> statements = [];
75/// <returns>A <see cref="SyntaxNode"/> representing the type reference expression.</returns>
76public static SyntaxNode TypeExpressionForStaticMemberAccess(this SyntaxGenerator generator, INamedTypeSymbol typeSymbol)
81var typeExpression = generator.TypeExpression(typeSymbol);
85static SyntaxNode QualifiedNameToMemberAccess(int qualifiedNameSyntaxKind, int memberAccessExpressionSyntaxKind, SyntaxNode expression, SyntaxGenerator generator)
89var left = QualifiedNameToMemberAccess(qualifiedNameSyntaxKind, memberAccessExpressionSyntaxKind, expression.ChildNodes().First(), generator);
90var right = expression.ChildNodes().Last();
108/// A <see cref="SyntaxNode"/> representing the declaration.
110public static SyntaxNode DefaultOperatorInequalityDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
112var leftArgument = generator.IdentifierName(LeftIdentifierName);
113var rightArgument = generator.IdentifierName(RightIdentifierName);
115var returnStatement = generator.ReturnStatement(
134/// A <see cref="SyntaxNode"/> representing the declaration.
136public static SyntaxNode DefaultOperatorLessThanDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
138var leftArgument = generator.IdentifierName(LeftIdentifierName);
139var rightArgument = generator.IdentifierName(RightIdentifierName);
141SyntaxNode expression;
172var returnStatement = generator.ReturnStatement(expression);
186/// A <see cref="SyntaxNode"/> representing the declaration.
188public static SyntaxNode DefaultOperatorLessThanOrEqualDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
190var leftArgument = generator.IdentifierName(LeftIdentifierName);
191var rightArgument = generator.IdentifierName(RightIdentifierName);
193SyntaxNode expression;
219var returnStatement = generator.ReturnStatement(expression);
233/// A <see cref="SyntaxNode"/> representing the declaration.
235public static SyntaxNode DefaultOperatorGreaterThanDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
237var leftArgument = generator.IdentifierName(LeftIdentifierName);
238var rightArgument = generator.IdentifierName(RightIdentifierName);
240SyntaxNode expression;
267var returnStatement = generator.ReturnStatement(expression);
281/// A <see cref="SyntaxNode"/> representing the declaration.
283public static SyntaxNode DefaultOperatorGreaterThanOrEqualDeclaration(this SyntaxGenerator generator, INamedTypeSymbol containingType)
285var leftArgument = generator.IdentifierName(LeftIdentifierName);
286var rightArgument = generator.IdentifierName(RightIdentifierName);
288SyntaxNode expression;
318var returnStatement = generator.ReturnStatement(expression);
322private static SyntaxNode ComparisonOperatorDeclaration(this SyntaxGenerator generator, OperatorKind operatorKind, INamedTypeSymbol containingType, params SyntaxNode[] statements)
347/// A <see cref="SyntaxNode"/> representing the declaration.
349public static SyntaxNode DefaultEqualsOverrideDeclaration(this SyntaxGenerator generator, Compilation compilation, INamedTypeSymbol containingType)
351var argumentName = generator.IdentifierName("obj");
353List<SyntaxNode> statements = [];
402/// A <see cref="SyntaxNode"/> representing the declaration.
404public static SyntaxNode DefaultGetHashCodeOverrideDeclaration(
425public static IEnumerable<SyntaxNode> DefaultMethodBody(
431public static SyntaxNode DefaultMethodStatement(this SyntaxGenerator generator, Compilation compilation)
438public static SyntaxNode? TryGetContainingDeclaration(this SyntaxGenerator generator, SyntaxNode? node, DeclarationKind kind)
469/// A <see cref="SyntaxNode"/> representing an unused identifier name.
472public static SyntaxNode FirstUnusedIdentifierName(this SyntaxGenerator generator, SemanticModel semanticModel, int position, string baseName, int maxTries = int.MaxValue)
474var identifierName = generator.IdentifierName(baseName);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\AnalysisContextExtensions.cs (10)
149public static SyntaxNode GetAnalysisRoot(this SyntaxTreeAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
155public static SyntaxNode GetAnalysisRoot(this SemanticModelAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
163public static SyntaxNode GetAnalysisRoot(this SymbolStartAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
175public static SyntaxNode GetAnalysisRoot(this SymbolAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
185public static SyntaxNode GetAnalysisRoot(this OperationBlockStartAnalysisContext context, IOperation operationBlock, bool findInTrivia, bool getInnermostNodeForTie = false)
191public static SyntaxNode GetAnalysisRoot(this OperationBlockAnalysisContext context, IOperation operationBlock, bool findInTrivia, bool getInnermostNodeForTie = false)
197public static SyntaxNode GetAnalysisRoot(this OperationAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
203public static SyntaxNode GetAnalysisRoot(this SyntaxNodeAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
209public static SyntaxNode GetAnalysisRoot<TSyntaxKind>(this CodeBlockStartAnalysisContext<TSyntaxKind> context, bool findInTrivia, bool getInnermostNodeForTie = false) where TSyntaxKind : struct
215public static SyntaxNode GetAnalysisRoot(this CodeBlockAnalysisContext context, bool findInTrivia, bool getInnermostNodeForTie = false)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SemanticModelExtensions.cs (14)
36public static DataFlowAnalysis AnalyzeRequiredDataFlow(this SemanticModel semanticModel, SyntaxNode statementOrExpression)
39public static DataFlowAnalysis AnalyzeRequiredDataFlow(this SemanticModel semanticModel, SyntaxNode firstStatement, SyntaxNode lastStatement)
42public static ControlFlowAnalysis AnalyzeRequiredControlFlow(this SemanticModel semanticModel, SyntaxNode statement)
45public static ControlFlowAnalysis AnalyzeRequiredControlFlow(this SemanticModel semanticModel, SyntaxNode firstStatement, SyntaxNode lastStatement)
48public static ISymbol GetRequiredDeclaredSymbol(this SemanticModel semanticModel, SyntaxNode declaration, CancellationToken cancellationToken)
54public static IOperation GetRequiredOperation(this SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
108this SemanticModel semanticModel, SyntaxNode? container, CancellationToken cancellationToken, Func<SyntaxNode, bool>? descendInto = null)
112using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var stack);
115while (stack.TryPop(out var current))
126if (child.AsNode(out var childNode) &&
215SyntaxNode expression,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxNodeExtensions.cs (127)
23public static SyntaxNode GetRequiredParent(this SyntaxNode node)
26public static IEnumerable<SyntaxNodeOrToken> DepthFirstTraversal(this SyntaxNode node)
29public static IEnumerable<SyntaxNode> DepthFirstTraversalNodes(this SyntaxNode node)
32public static IEnumerable<SyntaxNode> GetAncestors(this SyntaxNode node)
34var current = node.Parent;
44public static IEnumerable<TNode> GetAncestors<TNode>(this SyntaxNode node)
45where TNode : SyntaxNode
47var current = node.Parent;
59public static TNode? GetAncestor<TNode>(this SyntaxNode node)
60where TNode : SyntaxNode
62var current = node.Parent;
76public static TNode? GetAncestorOrThis<TNode>(this SyntaxNode? node)
77where TNode : SyntaxNode
82public static IEnumerable<TNode> GetAncestorsOrThis<TNode>(this SyntaxNode? node)
83where TNode : SyntaxNode
85var current = node;
97public static bool HasAncestor<TNode>(this SyntaxNode node)
98where TNode : SyntaxNode
104this SyntaxNode node, TextSpan searchSpan, Func<SyntaxNode, bool> predicate)
105where TSyntaxNode : SyntaxNode
109var nodes = new LinkedList<SyntaxNode>();
114var currentNode = nodes.First!.Value;
129public static bool CheckParent<T>([NotNullWhen(returnValue: true)] this SyntaxNode? node, Func<T, bool> valueChecker) where T : SyntaxNode
145public static bool IsChildNode<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
146where TParent : SyntaxNode
154var ancestorNode = childGetter(ancestor);
162public static bool IsFoundUnder<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
163where TParent : SyntaxNode
171var child = childGetter(ancestor);
174return node.GetAncestorsOrThis<SyntaxNode>().Contains(child);
177public static SyntaxNode GetCommonRoot(this SyntaxNode node1, SyntaxNode node2)
183using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var set);
184set.AddRange(node2.GetAncestorsOrThis<SyntaxNode>());
186foreach (var ancestor in node1.AncestorsAndSelf())
195public static int Width(this SyntaxNode node)
198public static int FullWidth(this SyntaxNode node)
201public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes, Func<SyntaxNode, bool> predicate)
204public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes)
214using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var commonAncestorsStack);
215using var _2 = PooledHashSet<SyntaxNode>.GetInstance(out var commonAncestorsSet);
218foreach (var node in nodes)
225foreach (var ancestor in node.ValueAncestorsAndSelf())
239var commonAncestor = FindCommonAncestor(node, commonAncestorsSet);
281static SyntaxNode? FindCommonAncestor(SyntaxNode node, HashSet<SyntaxNode> commonAncestorsSet)
283foreach (var ancestor in node.ValueAncestorsAndSelf())
293public static TSyntaxNode? FindInnermostCommonNode<TSyntaxNode>(this IEnumerable<SyntaxNode> nodes) where TSyntaxNode : SyntaxNode
296public static TextSpan GetContainedSpan(this IEnumerable<SyntaxNode> nodes)
302foreach (var node in nodes)
312public static bool OverlapsHiddenPosition(this SyntaxNode node, CancellationToken cancellationToken)
315public static bool OverlapsHiddenPosition(this SyntaxNode node, TextSpan span, CancellationToken cancellationToken)
318public static bool OverlapsHiddenPosition(this SyntaxNode declaration, SyntaxNode startNode, SyntaxNode endNode, CancellationToken cancellationToken)
327public static IEnumerable<T> GetAnnotatedNodes<T>(this SyntaxNode node, SyntaxAnnotation syntaxAnnotation) where T : SyntaxNode
341IEnumerable<SyntaxNode> nodes,
342Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>> computeReplacementAsync,
343CancellationToken cancellationToken) where TRootNode : SyntaxNode
365CancellationToken cancellationToken) where TRootNode : SyntaxNode
378CancellationToken cancellationToken) where TRoot : SyntaxNode
389IEnumerable<SyntaxNode>? nodes,
390Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>>? computeReplacementNodeAsync,
396where TRoot : SyntaxNode
403var nodeReplacements = new Dictionary<SyntaxNode, SyntaxNode>();
439if (nodesToReplace.TryGetValue(span, out var currentNode))
441var original = (SyntaxNode?)retryAnnotations.GetAnnotations(currentNode).SingleOrDefault() ?? currentNode;
442var newNode = await computeReplacementNodeAsync!(original, currentNode, cancellationToken).ConfigureAwait(false);
472if (rewritten != original || !nodeReplacements.TryGetValue(original, out var replaced))
598SyntaxNode root,
615this SyntaxNode root,
654this SyntaxNode root,
691params SyntaxTrivia[] trivia) where T : SyntaxNode
703SyntaxTriviaList trivia) where T : SyntaxNode
715IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
725params SyntaxTrivia[] trivia) where T : SyntaxNode
737SyntaxTriviaList trivia) where T : SyntaxNode
749IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
760IEnumerable<SyntaxTrivia> trailingTrivia) where T : SyntaxNode
785public static SyntaxNode FindNode(this SyntaxNode root, TextSpan? span, bool findInTrivia, bool getInnermostNodeForTie)
793public static SyntaxNode? GetParent(this SyntaxNode node, bool ascendOutOfTrivia)
795var parent = node.Parent;
807public static TNode? FirstAncestorOrSelfUntil<TNode>(this SyntaxNode? node, Func<SyntaxNode, bool> predicate)
808where TNode : SyntaxNode
810for (var current = node; current != null; current = current.GetParent(ascendOutOfTrivia: true))
827SyntaxNode root,
830where TDirectiveTriviaSyntax : SyntaxNode
836where TDirectiveTriviaSyntax : SyntaxNode
856SyntaxNode root,
944public static SyntaxTriviaList GetLeadingTriviaIncludingMissingTokens(this SyntaxNode node)
960public static SyntaxTriviaList GetTrailingTriviaIncludingMissingTokens(this SyntaxNode node)
979public static SyntaxNode WithLeadingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
984public static SyntaxNode WithTrailingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
989public static SyntaxNode WithTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
998public static ValueAncestorsAndSelfEnumerable ValueAncestorsAndSelf(this SyntaxNode syntaxNode, bool ascendOutOfTrivia = true)
1001public readonly struct ValueAncestorsAndSelfEnumerable(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1006public struct Enumerator(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1008public SyntaxNode Current { get; private set; } = null!;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxTokenExtensions.cs (12)
15public static SyntaxNode? GetAncestor(this SyntaxToken token, Func<SyntaxNode, bool>? predicate)
16=> token.GetAncestor<SyntaxNode>(predicate);
18public static T? GetAncestor<T>(this SyntaxToken token, Func<T, bool>? predicate = null) where T : SyntaxNode
21public static T GetRequiredAncestor<T>(this SyntaxToken token, Func<T, bool>? predicate = null) where T : SyntaxNode
25where T : SyntaxNode
32public static IEnumerable<SyntaxNode> GetAncestors(this SyntaxToken token, Func<SyntaxNode, bool> predicate)
39public static SyntaxNode GetCommonRoot(this SyntaxToken token1, SyntaxToken token2)
42public static bool CheckParent<T>(this SyntaxToken token, Func<T, bool> valueChecker) where T : SyntaxNode
58public static SyntaxToken FindTokenFromEnd(this SyntaxNode root, int position, bool includeZeroWidth = true, bool findInsideTrivia = false)
153public static SyntaxNode GetRequiredParent(this SyntaxToken token)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\AbstractSyntaxFormatting.cs (3)
28protected abstract IFormattingResult CreateAggregatedFormattingResult(SyntaxNode node, IList<AbstractFormattingResult> results, TextSpanMutableIntervalTree? formattingSpans = null);
30protected abstract AbstractFormattingResult Format(SyntaxNode node, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, SyntaxToken startToken, SyntaxToken endToken, CancellationToken cancellationToken);
32public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\BaseIndentationFormattingRule.cs (7)
19private readonly SyntaxNode? _commonNode;
22public BaseIndentationFormattingRule(SyntaxNode root, TextSpan span, int baseIndentation, AbstractFormattingRule? vbHelperFormattingRule = null)
31public override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
54private void AddNextIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
133private static void SetInnermostNodeForSpan(SyntaxNode root, ref TextSpan span, out SyntaxToken token1, out SyntaxToken token2, out SyntaxNode? commonNode)
149private static void GetTokens(SyntaxNode root, TextSpan span, out SyntaxToken token1, out SyntaxToken token2)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\CompatAbstractFormattingRule.cs (8)
17public sealed override void AddSuppressOperations(ArrayBuilder<SuppressOperation> list, SyntaxNode node, in NextSuppressOperationAction nextOperation)
25public sealed override void AddAnchorIndentationOperations(List<AnchorIndentationOperation> list, SyntaxNode node, in NextAnchorIndentationOperationAction nextOperation)
33public sealed override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
41public sealed override void AddAlignTokensOperations(List<AlignTokensOperation> list, SyntaxNode node, in NextAlignTokensOperationAction nextOperation)
72public virtual void AddSuppressOperationsSlow(ArrayBuilder<SuppressOperation> list, SyntaxNode node, ref NextSuppressOperationAction nextOperation)
78public virtual void AddAnchorIndentationOperationsSlow(List<AnchorIndentationOperation> list, SyntaxNode node, ref NextAnchorIndentationOperationAction nextOperation)
84public virtual void AddIndentBlockOperationsSlow(List<IndentBlockOperation> list, SyntaxNode node, ref NextIndentBlockOperationAction nextOperation)
90public virtual void AddAlignTokensOperationsSlow(List<AlignTokensOperation> list, SyntaxNode node, ref NextAlignTokensOperationAction nextOperation)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAlignTokensOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAnchorIndentationOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextIndentBlockOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextSuppressOperationAction.cs (1)
14SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\HeaderFacts\AbstractHeaderFacts.cs (29)
19public abstract bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
20public abstract bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration);
21public abstract bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter);
22public abstract bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method);
23public abstract bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction);
24public abstract bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration);
25public abstract bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement);
26public abstract bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement);
27public abstract bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement);
29public bool IsOnHeader(SyntaxNode root, int position, SyntaxNode ownerOfHeader, SyntaxNodeOrToken lastTokenOrNodeOfHeader)
30=> IsOnHeader(root, position, ownerOfHeader, lastTokenOrNodeOfHeader, ImmutableArray<SyntaxNode>.Empty);
33SyntaxNode root,
35SyntaxNode ownerOfHeader,
38where THoleSyntax : SyntaxNode
75protected TNode? TryGetAncestorForLocation<TNode>(SyntaxNode root, int position, out SyntaxNode? untypedResult) where TNode : SyntaxNode
97protected int GetStartOfNodeExcludingAttributes(SyntaxNode root, SyntaxNode node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\HeaderFacts\IHeaderFacts.cs (18)
16bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
18bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration);
19bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter);
20bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method);
21bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction);
22bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration);
23bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement);
24bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement);
25bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\RefactoringHelpers\AbstractRefactoringHelpers.cs (62)
18where TExpressionSyntax : SyntaxNode
19where TArgumentSyntax : SyntaxNode
20where TExpressionStatementSyntax : SyntaxNode
25public abstract bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
27private static void AddNode<TSyntaxNode>(bool allowEmptyNodes, ref TemporaryArray<TSyntaxNode> result, TSyntaxNode node) where TSyntaxNode : SyntaxNode
60SourceText sourceText, SyntaxNode root, TextSpan selectionRaw, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
160private static bool IsWantedTypeExpressionLike<TSyntaxNode>() where TSyntaxNode : SyntaxNode
179SourceText sourceText, SyntaxNode root, int location)
286CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
293var leftNode = tokenToLeft.Parent;
320SyntaxNode root,
325CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
331var rightNode = tokenToRightOrIn.Parent;
365SyntaxNode root,
370CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
372var selectionNode = root.FindNode(selectionTrimmed, getInnermostNodeForTie: true);
373var prevNode = selectionNode;
411protected virtual IEnumerable<SyntaxNode> ExtractNodesSimple(SyntaxNode? node, ISyntaxFacts syntaxFacts)
429var localDeclarationStatement = syntaxFacts.IsLocalDeclarationStatement(node) ? node : node.Parent!;
439var declaredVariable = variables.First();
445var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(declaredVariable);
448var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
461var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(node);
464var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
476syntaxFacts.GetPartsOfAssignmentExpressionOrStatement(node, out _, out _, out var rightSide);
498protected virtual IEnumerable<SyntaxNode> ExtractNodesInHeader(SyntaxNode root, int location, IHeaderFacts headerFacts)
501if (headerFacts.IsOnPropertyDeclarationHeader(root, location, out var propertyDeclaration))
505if (headerFacts.IsOnParameterHeader(root, location, out var parameter))
509if (headerFacts.IsOnMethodHeader(root, location, out var method))
513if (headerFacts.IsOnLocalFunctionHeader(root, location, out var localFunction))
517if (headerFacts.IsOnLocalDeclarationHeader(root, location, out var localDeclaration))
521if (headerFacts.IsOnIfStatementHeader(root, location, out var ifStatement))
525if (headerFacts.IsOnForeachHeader(root, location, out var foreachStatement))
528if (headerFacts.IsOnTypeHeader(root, location, out var typeDeclaration))
534SyntaxNode root,
539CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
546var ancestor = token.Parent;
572IEnumerable<SyntaxNode> nodes, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
574foreach (var node in nodes)
586public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
589public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
592public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
595public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
598public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
601public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
604public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
607public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
610public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFacts.cs (24)
52bool IsWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
59bool IsOnlyWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
60bool IsInOutContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
61bool IsInRefContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
62bool IsInInContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
64bool CanReplaceWithRValue(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? expression, CancellationToken cancellationToken);
73bool TryGetSpeculativeSemanticModel(SemanticModel oldSemanticModel, SyntaxNode oldNode, SyntaxNode newNode, [NotNullWhen(true)] out SemanticModel? speculativeModel);
80ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode forEachStatement);
81SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
83IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node);
85ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node);
87ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node);
91IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken);
93IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
94IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
96ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
97ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
99ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken);
101bool IsInsideNameOfExpression(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
108bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, [NotNullWhen(true)] INamedTypeSymbol? expressionType, CancellationToken cancellationToken);
110string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken);
121IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node);
125CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFacts.cs (307)
122bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node);
123bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node, PredefinedType type);
173bool IsUsingOrExternOrImport([NotNullWhen(true)] SyntaxNode? node);
174bool IsGlobalAssemblyAttribute([NotNullWhen(true)] SyntaxNode? node);
175bool IsGlobalModuleAttribute([NotNullWhen(true)] SyntaxNode? node);
176bool IsDeclaration([NotNullWhen(true)] SyntaxNode? node);
178bool IsUsingAliasDirective([NotNullWhen(true)] SyntaxNode? node);
183bool IsPragmaDirective(SyntaxTrivia trivia, out bool isDisable, out bool isActive, out SeparatedSyntaxList<SyntaxNode> errorCodes);
186SyntaxNode? GetMatchingDirective(SyntaxNode directive, CancellationToken cancellationToken);
187ImmutableArray<SyntaxNode> GetMatchingConditionalDirectives(SyntaxNode directive, CancellationToken cancellationToken);
189bool IsDocumentationComment(SyntaxNode node);
196bool TryGetExternalSourceInfo([NotNullWhen(true)] SyntaxNode? directive, out ExternalSourceInfo info);
198bool IsDeclarationExpression([NotNullWhen(true)] SyntaxNode? node);
200bool IsConversionExpression([NotNullWhen(true)] SyntaxNode? node);
201bool IsCastExpression([NotNullWhen(true)] SyntaxNode? node);
203bool IsExpressionOfForeach([NotNullWhen(true)] SyntaxNode? node);
204SyntaxNode GetExpressionOfForeachStatement(SyntaxNode statement);
206void GetPartsOfTupleExpression<TArgumentSyntax>(SyntaxNode node,
207out SyntaxToken openParen, out SeparatedSyntaxList<TArgumentSyntax> arguments, out SyntaxToken closeParen) where TArgumentSyntax : SyntaxNode;
209bool IsVerbatimInterpolatedStringExpression([NotNullWhen(true)] SyntaxNode? node);
212bool IsLeftSideOfAssignment([NotNullWhen(true)] SyntaxNode? node);
214bool IsAnyAssignmentStatement([NotNullWhen(true)] SyntaxNode? statement);
215bool IsSimpleAssignmentStatement([NotNullWhen(true)] SyntaxNode? statement);
216void GetPartsOfAssignmentStatement(SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
217void GetPartsOfAssignmentExpressionOrStatement(SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
220bool IsLeftSideOfAnyAssignment([NotNullWhen(true)] SyntaxNode? node);
222bool IsLeftSideOfCompoundAssignment([NotNullWhen(true)] SyntaxNode? node);
223SyntaxNode GetRightHandSideOfAssignment(SyntaxNode node);
225bool IsInferredAnonymousObjectMemberDeclarator([NotNullWhen(true)] SyntaxNode? node);
226bool IsOperandOfIncrementExpression([NotNullWhen(true)] SyntaxNode? node);
227bool IsOperandOfIncrementOrDecrementExpression([NotNullWhen(true)] SyntaxNode? node);
229bool IsLeftSideOfDot([NotNullWhen(true)] SyntaxNode? node);
230SyntaxNode? GetRightSideOfDot(SyntaxNode? node);
244SyntaxNode? GetLeftSideOfDot(SyntaxNode? node, bool allowImplicitTarget = false);
246bool IsLeftSideOfExplicitInterfaceSpecifier([NotNullWhen(true)] SyntaxNode? node);
248bool IsNameOfSimpleMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
249bool IsNameOfAnyMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
250bool IsNameOfMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node);
259SyntaxNode? GetStandaloneExpression(SyntaxNode? node);
268SyntaxNode? GetRootConditionalAccessExpression(SyntaxNode? node);
277SyntaxNode? GetExpressionOfMemberAccessExpression(SyntaxNode node, bool allowImplicitTarget = false);
279SyntaxNode? GetTargetOfMemberBinding(SyntaxNode? node);
281SyntaxNode GetNameOfMemberBindingExpression(SyntaxNode node);
283bool IsPointerMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
285bool IsNamedArgument([NotNullWhen(true)] SyntaxNode? node);
286bool IsNameOfNamedArgument([NotNullWhen(true)] SyntaxNode? node);
287SyntaxNode? GetParameterList(SyntaxNode node);
288bool IsParameterList([NotNullWhen(true)] SyntaxNode? node);
292void GetPartsOfElementAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode argumentList);
294SyntaxNode GetExpressionOfArgument(SyntaxNode node);
295SyntaxNode GetExpressionOfAttributeArgument(SyntaxNode node);
296SyntaxNode GetExpressionOfInterpolation(SyntaxNode node);
298bool IsElementBindingExpression([NotNullWhen(true)] SyntaxNode? node);
299bool IsMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node);
300bool IsPostfixUnaryExpression([NotNullWhen(true)] SyntaxNode? node);
302SyntaxToken GetIdentifierOfSimpleName(SyntaxNode node);
303SyntaxToken GetIdentifierOfTypeDeclaration(SyntaxNode node);
304SyntaxToken GetIdentifierOfVariableDeclarator(SyntaxNode node);
305SyntaxNode GetTypeOfVariableDeclarator(SyntaxNode node);
311bool IsSimpleArgument([NotNullWhen(true)] SyntaxNode? node);
312bool IsArgument([NotNullWhen(true)] SyntaxNode? node);
313bool IsAttributeArgument([NotNullWhen(true)] SyntaxNode? node);
314RefKind GetRefKindOfArgument(SyntaxNode node);
316void GetNameAndArityOfSimpleName(SyntaxNode node, out string name, out int arity);
317bool LooksGeneric(SyntaxNode simpleName);
319SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(SyntaxNode? genericName);
321SyntaxList<SyntaxNode> GetContentsOfInterpolatedString(SyntaxNode interpolatedString);
323SeparatedSyntaxList<SyntaxNode> GetArgumentsOfObjectCreationExpression(SyntaxNode node);
324SeparatedSyntaxList<SyntaxNode> GetArgumentsOfArgumentList(SyntaxNode node);
325SeparatedSyntaxList<SyntaxNode> GetArgumentsOfAttributeArgumentList(SyntaxNode node);
327bool IsUsingDirectiveName([NotNullWhen(true)] SyntaxNode? node);
330SyntaxList<SyntaxNode> GetAttributeLists(SyntaxNode? node);
331SeparatedSyntaxList<SyntaxNode> GetAttributesOfAttributeList(SyntaxNode node);
333bool IsAttributeNamedArgumentIdentifier([NotNullWhen(true)] SyntaxNode? node);
334bool IsMemberInitializerNamedAssignmentIdentifier([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? initializedInstance);
335bool IsAnonymousObjectMemberDeclaratorNameIdentifier([NotNullWhen(true)] SyntaxNode? node);
336bool IsAnyInitializerExpression([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? creationExpression);
338bool IsDirective([NotNullWhen(true)] SyntaxNode? node);
339bool IsStatement([NotNullWhen(true)] SyntaxNode? node);
340bool IsExecutableStatement([NotNullWhen(true)] SyntaxNode? node);
341bool IsGlobalStatement([NotNullWhen(true)] SyntaxNode? node);
342SyntaxNode GetStatementOfGlobalStatement(SyntaxNode node);
344bool IsDeconstructionAssignment([NotNullWhen(true)] SyntaxNode? node);
345bool IsDeconstructionForEachStatement([NotNullWhen(true)] SyntaxNode? node);
346bool IsUsingLocalDeclarationStatement(SyntaxNode node);
360bool IsMethodBody([NotNullWhen(true)] SyntaxNode? node);
362bool IsDeclaratorOfLocalDeclarationStatement(SyntaxNode declarator, SyntaxNode localDeclarationStatement);
363SeparatedSyntaxList<SyntaxNode> GetVariablesOfLocalDeclarationStatement(SyntaxNode node);
364SyntaxNode? GetInitializerOfVariableDeclarator(SyntaxNode node);
365SyntaxNode? GetInitializerOfPropertyDeclaration(SyntaxNode node);
369bool HasImplicitBaseConstructorInitializer(SyntaxNode constructorDeclaration);
372bool IsElementAccessExpression([NotNullWhen(true)] SyntaxNode? node);
390bool IsInStaticContext(SyntaxNode node);
391bool IsUnsafeContext(SyntaxNode node);
393bool IsInNamespaceOrTypeContext([NotNullWhen(true)] SyntaxNode? node);
395bool IsBaseTypeList([NotNullWhen(true)] SyntaxNode? node);
397bool IsInConstantContext([NotNullWhen(true)] SyntaxNode? node);
398bool IsInConstructor(SyntaxNode node);
399bool IsMethodLevelMember([NotNullWhen(true)] SyntaxNode? node);
400bool IsTopLevelNodeWithMembers([NotNullWhen(true)] SyntaxNode? node);
403bool AreEquivalent(SyntaxNode? node1, SyntaxNode? node2);
405string GetDisplayName(SyntaxNode? node, DisplayNameOptions options, string? rootNamespace = null);
408SyntaxNode? GetContainingTypeDeclaration(SyntaxNode root, int position);
409SyntaxNode? GetContainingMemberDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
410SyntaxNode? GetContainingMethodDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
411SyntaxNode? GetContainingVariableDeclaratorOfFieldDeclaration(SyntaxNode? node);
415SyntaxNode? ConvertToSingleLine(SyntaxNode? node, bool useElasticTrivia = false);
418void AddTopLevelAndMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
420void AddTopLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
422void AddMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
424SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(SyntaxNode typeDeclaration);
425SyntaxList<SyntaxNode> GetMembersOfNamespaceDeclaration(SyntaxNode typeDeclaration);
426SyntaxList<SyntaxNode> GetMembersOfTypeDeclaration(SyntaxNode typeDeclaration);
432/// Given a <see cref="SyntaxNode"/>, return the <see cref="TextSpan"/> representing the span of the member body
438TextSpan GetMemberBodySpanForSpeculativeBinding(SyntaxNode node);
446SyntaxNode? TryGetBindableParent(SyntaxToken token);
449/// Given a <see cref="SyntaxNode"/>, that represents and argument return the string representation of
453string GetNameForArgument(SyntaxNode? argument);
456/// Given a <see cref="SyntaxNode"/>, that represents an attribute argument return the string representation of
460string GetNameForAttributeArgument(SyntaxNode? argument);
462bool IsNameOfSubpattern([NotNullWhen(true)] SyntaxNode? node);
463bool IsPropertyPatternClause(SyntaxNode node);
465bool IsAnyPattern([NotNullWhen(true)] SyntaxNode? node);
466bool IsBinaryPattern([NotNullWhen(true)] SyntaxNode? node);
467bool IsUnaryPattern([NotNullWhen(true)] SyntaxNode? node);
469SyntaxNode GetExpressionOfConstantPattern(SyntaxNode node);
470SyntaxNode GetTypeOfTypePattern(SyntaxNode node);
472void GetPartsOfParenthesizedPattern(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode pattern, out SyntaxToken closeParen);
473void GetPartsOfBinaryPattern(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
474void GetPartsOfDeclarationPattern(SyntaxNode node, out SyntaxNode type, out SyntaxNode designation);
475void GetPartsOfRecursivePattern(SyntaxNode node, out SyntaxNode? type, out SyntaxNode? positionalPart, out SyntaxNode? propertyPart, out SyntaxNode? designation);
476void GetPartsOfRelationalPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode expression);
477void GetPartsOfUnaryPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode pattern);
481SyntaxTokenList GetModifiers(SyntaxNode? node);
485SyntaxNode? WithModifiers(SyntaxNode? node, SyntaxTokenList modifiers);
488Location GetDeconstructionReferenceLocation(SyntaxNode node);
493bool IsParameterNameXmlElementSyntax([NotNullWhen(true)] SyntaxNode? node);
495SyntaxList<SyntaxNode> GetContentFromDocumentationCommentTriviaSyntax(SyntaxTrivia trivia);
501bool IsAnonymousFunctionExpression([NotNullWhen(true)] SyntaxNode? node);
502bool IsBaseNamespaceDeclaration([NotNullWhen(true)] SyntaxNode? node);
503bool IsTypeDeclaration(SyntaxNode node);
504bool IsBinaryExpression([NotNullWhen(true)] SyntaxNode? node);
505bool IsLiteralExpression([NotNullWhen(true)] SyntaxNode? node);
506bool IsMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
507bool IsMethodDeclaration([NotNullWhen(true)] SyntaxNode? node);
508bool IsSimpleName([NotNullWhen(true)] SyntaxNode? node);
509bool IsAnyName([NotNullWhen(true)] SyntaxNode? node);
510bool IsAnyType([NotNullWhen(true)] SyntaxNode? node);
512bool IsNamedMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
513bool IsElementAccessInitializer([NotNullWhen(true)] SyntaxNode? node);
515bool IsObjectMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
516bool IsObjectCollectionInitializer([NotNullWhen(true)] SyntaxNode? node);
522void GetPartsOfAliasQualifiedName(SyntaxNode node, out SyntaxNode alias, out SyntaxToken colonColonToken, out SyntaxNode name);
523void GetPartsOfAnyIsTypeExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode type);
524void GetPartsOfArgumentList(SyntaxNode node, out SyntaxToken openParenToken, out SeparatedSyntaxList<SyntaxNode> arguments, out SyntaxToken closeParenToken);
525void GetPartsOfAttribute(SyntaxNode node, out SyntaxNode name, out SyntaxNode? argumentList);
526void GetPartsOfBaseNamespaceDeclaration(SyntaxNode node, out SyntaxNode name, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> members);
527void GetPartsOfBaseObjectCreationExpression(SyntaxNode node, out SyntaxNode? argumentList, out SyntaxNode? initializer);
528void GetPartsOfBinaryExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
529void GetPartsOfCastExpression(SyntaxNode node, out SyntaxNode type, out SyntaxNode expression);
530void GetPartsOfCompilationUnit(SyntaxNode node, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> attributeLists, out SyntaxList<SyntaxNode> members);
531void GetPartsOfConditionalAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode whenNotNull);
532void GetPartsOfConditionalExpression(SyntaxNode node, out SyntaxNode condition, out SyntaxNode whenTrue, out SyntaxNode whenFalse);
533void GetPartsOfGenericName(SyntaxNode node, out SyntaxToken identifier, out SeparatedSyntaxList<SyntaxNode> typeArguments);
534void GetPartsOfInterpolationExpression(SyntaxNode node, out SyntaxToken stringStartToken, out SyntaxList<SyntaxNode> contents, out SyntaxToken stringEndToken);
535void GetPartsOfInvocationExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode? argumentList);
536void GetPartsOfIsPatternExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken isToken, out SyntaxNode right);
537void GetPartsOfMemberAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode name);
538void GetPartsOfNamedMemberInitializer(SyntaxNode node, out SyntaxNode name, out SyntaxNode expression);
539void GetPartsOfObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode type, out SyntaxNode? argumentList, out SyntaxNode? initializer);
540void GetPartsOfImplicitObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode argumentList, out SyntaxNode? initializer);
541void GetPartsOfParameter(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode? @default);
542void GetPartsOfParenthesizedExpression(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode expression, out SyntaxToken closeParen);
543void GetPartsOfPostfixUnaryExpression(SyntaxNode node, out SyntaxNode operand, out SyntaxToken operatorToken);
544void GetPartsOfPrefixUnaryExpression(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode operand);
545void GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken dotToken, out SyntaxNode right);
546void GetPartsOfUsingAliasDirective(SyntaxNode node, out SyntaxToken globalKeyword, out SyntaxToken alias, out SyntaxNode name);
556SyntaxNode GetArgumentListOfImplicitElementAccess(SyntaxNode node);
558SyntaxNode GetExpressionOfAwaitExpression(SyntaxNode node);
559SyntaxNode GetExpressionOfExpressionStatement(SyntaxNode node);
560SyntaxNode GetExpressionOfRefExpression(SyntaxNode node);
561SyntaxNode? GetExpressionOfReturnStatement(SyntaxNode node);
562SyntaxNode GetExpressionOfThrowExpression(SyntaxNode node);
563SyntaxNode? GetExpressionOfThrowStatement(SyntaxNode node);
565bool IsEqualsValueOfPropertyDeclaration([NotNullWhen(true)] SyntaxNode? node);
566SyntaxNode GetValueOfEqualsValueClause(SyntaxNode node);
568SeparatedSyntaxList<SyntaxNode> GetInitializersOfObjectMemberInitializer(SyntaxNode node);
569SeparatedSyntaxList<SyntaxNode> GetExpressionsOfObjectCollectionInitializer(SyntaxNode node);
571SyntaxToken GetTokenOfLiteralExpression(SyntaxNode node);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFactsExtensions.cs (211)
23public static bool IsMemberInitializerNamedAssignmentIdentifier(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
26public static bool IsOnSingleLine(this ISyntaxFacts syntaxFacts, SyntaxNode node, bool fullSpan)
62var currentNode = currentNodeOrToken.AsNode()!;
160this ISyntaxFacts syntaxFacts, ImmutableArray<SyntaxNode> nodes, CancellationToken cancellationToken)
166foreach (var node in nodes)
178public static bool ContainsInterleavedDirective(this ISyntaxFacts syntaxFacts, SyntaxNode node, CancellationToken cancellationToken)
182this ISyntaxFacts syntaxFacts, TextSpan span, SyntaxNode node, CancellationToken cancellationToken)
193public static bool SpansPreprocessorDirective(this ISyntaxFacts syntaxFacts, IEnumerable<SyntaxNode> nodes)
286public static SyntaxNode? WalkDownParentheses(this ISyntaxFacts syntaxFacts, SyntaxNode? node)
290syntaxFacts.GetPartsOfParenthesizedExpression(node, out _, out var child, out _);
298public static SyntaxNode? WalkUpParentheses(this ISyntaxFacts syntaxFacts, SyntaxNode? node)
307this ISyntaxFacts syntaxFacts, SyntaxNode statement,
308out SyntaxNode left, out SyntaxNode right)
313public static SyntaxNode GetExpressionOfInvocationExpression(
314this ISyntaxFacts syntaxFacts, SyntaxNode node)
316syntaxFacts.GetPartsOfInvocationExpression(node, out var expression, out _);
320public static SyntaxNode Unparenthesize(
321this ISyntaxFacts syntaxFacts, SyntaxNode node)
324SyntaxNode operand;
348var resultNode = operand
383public static bool SpansPreprocessorDirective(this ISyntaxFacts service, SyntaxNode node)
386public static bool SpansPreprocessorDirective(this ISyntaxFacts service, params SyntaxNode[] nodes)
387=> service.SpansPreprocessorDirective((IEnumerable<SyntaxNode>)nodes);
392public static void GetPartsOfBinaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode left, out SyntaxNode right)
395public static SyntaxNode GetPatternOfParenthesizedPattern(this ISyntaxFacts syntaxFacts, SyntaxNode node)
397syntaxFacts.GetPartsOfParenthesizedPattern(node, out _, out var pattern, out _);
401public static SyntaxToken GetOperatorTokenOfBinaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
407public static bool IsAnonymousOrLocalFunction(this ISyntaxFacts syntaxFacts, SyntaxNode node)
411public static SyntaxNode? GetExpressionOfElementAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
413syntaxFacts.GetPartsOfElementAccessExpression(node, out var expression, out _);
417public static SyntaxNode? GetArgumentListOfElementAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
419syntaxFacts.GetPartsOfElementAccessExpression(node, out _, out var argumentList);
423public static SyntaxNode GetExpressionOfConditionalAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
425syntaxFacts.GetPartsOfConditionalAccessExpression(node, out var expression, out _);
429public static SyntaxToken GetOperatorTokenOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
435public static void GetPartsOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode expression, out SyntaxNode name)
438public static void GetPartsOfConditionalAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node, out SyntaxNode expression, out SyntaxNode whenNotNull)
441public static TextSpan GetSpanWithoutAttributes(this ISyntaxFacts syntaxFacts, SyntaxNode root, SyntaxNode node)
468/// Similar to <see cref="ISyntaxFacts.GetStandaloneExpression(SyntaxNode)"/>, this gets the containing
478public static SyntaxNode GetRootStandaloneExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
481var standalone = syntaxFacts.GetStandaloneExpression(node);
489public static SyntaxNode? GetArgumentListOfInvocationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
491syntaxFacts.GetPartsOfInvocationExpression(node, out _, out var argumentList);
495public static SeparatedSyntaxList<SyntaxNode> GetArgumentsOfInvocationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
497var argumentList = syntaxFacts.GetArgumentListOfInvocationExpression(node);
501public static SyntaxNode? GetArgumentListOfBaseObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
503syntaxFacts.GetPartsOfBaseObjectCreationExpression(node, out var argumentList, out _);
507public static SyntaxNode? GetDefaultOfParameter(this ISyntaxFacts syntaxFacts, SyntaxNode node)
509syntaxFacts.GetPartsOfParameter(node, out _, out var @default);
513public static SyntaxNode GetExpressionOfParenthesizedExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
515syntaxFacts.GetPartsOfParenthesizedExpression(node, out _, out var expression, out _);
519public static SyntaxToken GetIdentifierOfGenericName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
525public static SyntaxToken GetIdentifierOfIdentifierName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
528public static SyntaxToken GetIdentifierOfParameter(this ISyntaxFacts syntaxFacts, SyntaxNode node)
534public static SyntaxList<SyntaxNode> GetImportsOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
540public static SyntaxList<SyntaxNode> GetImportsOfCompilationUnit(this ISyntaxFacts syntaxFacts, SyntaxNode node)
546public static SyntaxNode? GetInitializerOfBaseObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
548syntaxFacts.GetPartsOfBaseObjectCreationExpression(node, out _, out var initializer);
552public static SyntaxList<SyntaxNode> GetMembersOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
558public static SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(this ISyntaxFacts syntaxFacts, SyntaxNode node)
564public static SyntaxNode GetNameOfAttribute(this ISyntaxFacts syntaxFacts, SyntaxNode node)
566syntaxFacts.GetPartsOfAttribute(node, out var name, out _);
570public static SyntaxNode GetNameOfBaseNamespaceDeclaration(this ISyntaxFacts syntaxFacts, SyntaxNode node)
572syntaxFacts.GetPartsOfBaseNamespaceDeclaration(node, out var name, out _, out _);
576public static SyntaxNode GetNameOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
578syntaxFacts.GetPartsOfMemberAccessExpression(node, out _, out var name);
582public static SyntaxNode GetOperandOfPostfixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
584syntaxFacts.GetPartsOfPostfixUnaryExpression(node, out var operand, out _);
588public static SyntaxNode GetOperandOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
590syntaxFacts.GetPartsOfPrefixUnaryExpression(node, out _, out var operand);
594public static SyntaxToken GetOperatorTokenOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
600public static SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
606public static SyntaxNode GetTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
608syntaxFacts.GetPartsOfObjectCreationExpression(node, out _, out var type, out _, out _);
616public static bool IsExpressionOfAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
618var parent = node?.Parent;
625public static bool IsExpressionOfInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
627var parent = node?.Parent;
631syntaxFacts.GetPartsOfInvocationExpression(parent, out var expression, out _);
635public static bool IsExpressionOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
637var parent = node?.Parent;
641syntaxFacts.GetPartsOfMemberAccessExpression(parent, out var expression, out _);
645public static bool IsNameOfAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
650syntaxFacts.GetPartsOfAttribute(node.Parent, out var name, out _);
654public static bool IsRightOfQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
656var parent = node?.Parent;
660syntaxFacts.GetPartsOfQualifiedName(parent, out _, out _, out var right);
664public static bool IsRightOfAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
666var parent = node?.Parent;
670syntaxFacts.GetPartsOfAliasQualifiedName(parent, out _, out _, out var right);
674public static bool IsTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
676var parent = node?.Parent;
680syntaxFacts.GetPartsOfObjectCreationExpression(parent, out _, out var type, out _, out _);
711public static bool IsSkippedTokensTrivia(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
751public static bool IsAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
754public static bool IsGenericName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
757public static bool IsIdentifierName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
760public static bool IsQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
767public static bool IsTupleType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
774public static bool IsCharacterLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
777public static bool IsDefaultLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
780public static bool IsFalseLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
783public static bool IsNumericLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
786public static bool IsNullLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
789public static bool IsStringLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
792public static bool IsTrueLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
799public static bool IsArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
802public static bool IsAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
805public static bool IsBaseExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
808public static bool IsConditionalExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
811public static bool IsConditionalAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
814public static bool IsFieldExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
817public static bool IsImplicitArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
820public static bool IsImplicitObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
823public static bool IsIndexExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
826public static bool IsInterpolatedStringExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
829public static bool IsInterpolation(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
832public static bool IsInterpolatedStringText(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
835public static bool IsInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
838public static bool IsIsTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
841public static bool IsIsNotTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
844public static bool IsIsPatternExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
847public static bool IsLogicalAndExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
850public static bool IsLogicalOrExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
853public static bool IsLogicalNotExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
856public static bool IsObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
859public static bool IsParenthesizedExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
862public static bool IsQueryExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
865public static bool IsRangeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
868public static bool IsRefExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
871public static bool IsSimpleMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
874public static bool IsSuppressNullableWarningExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
877public static bool IsThisExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
880public static bool IsThrowExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
883public static bool IsTupleExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
886public static bool ContainsGlobalStatement(this ISyntaxFacts syntaxFacts, SyntaxNode node)
893public static bool IsAndPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
896public static bool IsConstantPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
899public static bool IsDeclarationPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
902public static bool IsListPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
905public static bool IsNotPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
908public static bool IsOrPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
911public static bool IsParenthesizedPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
914public static bool IsRecursivePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
917public static bool IsRelationalPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
920public static bool IsTypePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
923public static bool IsVarPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
930public static bool IsExpressionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
933public static bool IsForEachStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
936public static bool IsForStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
939public static bool IsIfStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
942public static bool IsLocalDeclarationStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
945public static bool IsLocalFunctionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
948public static bool IsLockStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
951public static bool IsReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
954public static bool IsThrowStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
957public static bool IsUsingStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
960public static bool IsWhileStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
963public static bool IsYieldReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
970public static bool IsAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
973public static bool IsClassDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
976public static bool IsCollectionExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
979public static bool IsConstructorDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
982public static bool IsEnumDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
985public static bool IsGlobalAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
988public static bool IsInterfaceDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
991public static bool IsParameter(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
994public static bool IsTypeConstraint(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
997public static bool IsVariableDeclarator(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1000public static bool IsFieldDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1003public static bool IsPropertyDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1006public static bool IsStructDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1009public static bool IsTypeArgumentList(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1016public static bool IsElseClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1018public static bool IsEqualsValueClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1025public static bool IsExpressionElement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1028public static bool IsImplicitElementAccess(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1031public static bool IsIndexerMemberCref(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1034public static bool IsPrimaryConstructorBaseType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (38)
35where TExpressionSyntax : SyntaxNode
37where TAttributeSyntax : SyntaxNode
38where TArgumentSyntax : SyntaxNode
39where TForEachStatementSyntax : SyntaxNode
40where TThrowStatementSyntax : SyntaxNode
49private SyntaxNode? _lazySemanticRootOfReplacedExpression;
95protected abstract SyntaxNode GetSemanticRootForSpeculation(TExpressionSyntax expression);
96protected abstract SemanticModel CreateSpeculativeSemanticModel(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel);
99protected abstract bool ExpressionMightReferenceMember([NotNullWhen(true)] SyntaxNode? node);
114protected abstract bool ReplacementChangesSemanticsForNodeLanguageSpecific(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode);
116protected abstract bool IsParenthesizedExpression([NotNullWhen(true)] SyntaxNode? node);
128SyntaxNode ISpeculationAnalyzer.OriginalExpression => OriginalExpression;
136public SyntaxNode SemanticRootOfOriginalExpression
171SyntaxNode ISpeculationAnalyzer.ReplacedExpression => ReplacedExpression;
178public SyntaxNode SemanticRootOfReplacedExpression
201protected virtual SyntaxNode GetSemanticRootOfReplacedExpression(SyntaxNode semanticRootOfOriginalExpression, TExpressionSyntax annotatedReplacedExpression)
224protected abstract void ValidateSpeculativeSemanticModel(SemanticModel speculativeSemanticModel, SyntaxNode nodeToSpeculate);
231var nodeToSpeculate = this.SemanticRootOfReplacedExpression;
317protected bool SymbolsAreCompatible(SyntaxNode originalNode, SyntaxNode newNode, bool requireNonNullSymbols = false)
519protected bool ReplacementChangesSemantics(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode originalRoot, bool skipVerificationForCurrentNode)
527SyntaxNode? previousOriginalNode = null, previousReplacedNode = null;
571private bool ReplacementChangesSemanticsForNode(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode)
688var originalExpressionOfMemberAccess = syntaxFacts.GetExpressionOfMemberAccessExpression(originalExpression);
731private bool ReplacementBreaksSystemObjectMethodResolution(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, [NotNullWhen(true)] SyntaxNode? previousOriginalNode, [NotNullWhen(true)] SyntaxNode? previousReplacedNode)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\CommonFormattingHelpers.cs (8)
45public static IEnumerable<(SyntaxToken, SyntaxToken)> ConvertToTokenPairs(this SyntaxNode root, IReadOnlyList<TextSpan> spans)
81public static ValueTuple<SyntaxToken, SyntaxToken> ConvertToTokenPair(this SyntaxNode root, TextSpan textSpan)
127public static bool IsInvalidTokenRange(this SyntaxNode root, SyntaxToken startToken, SyntaxToken endToken)
278var parentNode = GetParentThatContainsGivenSpan(token.Parent, backwardPosition, forward: false);
309var parentNode = GetParentThatContainsGivenSpan(token.Parent, forwardPosition, forward: true);
320private static SyntaxNode? GetParentThatContainsGivenSpan(SyntaxNode? node, int position, bool forward)
357public static TextSpan GetFormattingSpan(SyntaxNode root, TextSpan span)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\AbstractCodeGenerationService_FindDeclaration.cs (22)
20protected abstract IList<bool>? GetAvailableInsertionIndices(SyntaxNode destination, CancellationToken cancellationToken);
22private IList<bool>? GetAvailableInsertionIndices<TDeclarationNode>(TDeclarationNode destination, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
23=> GetAvailableInsertionIndices((SyntaxNode)destination, cancellationToken);
34protected static SyntaxToken GetEndToken(SyntaxNode node)
50protected static TextSpan GetSpan(SyntaxNode node)
58public bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken)
61public bool CanAddTo(SyntaxNode destination, Solution solution, CodeGenerationContext context, CancellationToken cancellationToken)
65SyntaxNode? destination,
143public SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(
153private (SyntaxNode? declaration, IList<bool>? availableIndices) FindMostRelevantDeclaration(
165using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var ancestors);
167var fallbackDeclaration = (SyntaxNode?)null;
171ancestors.AddRange(token.GetAncestors<SyntaxNode>());
176if (TryAddToRelatedDeclaration(declarations.Where(d => d is not ICompilationUnitSyntax), checkGeneratedCode: false, out var declaration1, out var availableIndices1) ||
184if (TryAddToWorker(declarations, checkGeneratedCode: true, out var declaration2, out var availableIndices2, predicate: node => true))
190IEnumerable<SyntaxNode> declarations,
192[NotNullWhen(true)] out SyntaxNode? declaration,
230IEnumerable<SyntaxNode> declarations,
232[NotNullWhen(true)] out SyntaxNode? declaration,
234Func<SyntaxNode, bool> predicate)
236foreach (var decl in declarations)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\AbstractCodeGenerationService.cs (83)
47public TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
50public TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
53public TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
56public TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
59public TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
62public TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
66where TDeclarationNode : SyntaxNode
69private static TNode WithAnnotations<TNode>(TNode node, CodeGenerationContextInfo info) where TNode : SyntaxNode
76public SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
79public SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
82public SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
85public SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
88public SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
91public SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken)
94public TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destination, IEnumerable<IParameterSymbol> parameters, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
97public TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
100public TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
103public TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
106public TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
109public TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
112public TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
115public TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
118public TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> statements, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
123protected abstract TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
124protected abstract TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
125protected abstract TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
126protected abstract TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
127protected abstract TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
128protected abstract TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, TCodeGenerationContextInfo info, IList<bool>? availableIndices, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
129protected abstract TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> members) where TDeclarationNode : SyntaxNode;
131public abstract TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destinationMember, IEnumerable<IParameterSymbol> parameters, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
132public abstract TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
133public abstract TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
134public abstract TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
135public abstract TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
137public abstract TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
138public abstract TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
139public abstract TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
140public abstract TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, TCodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
142public abstract CodeGenerationDestination GetDestination(SyntaxNode node);
143public abstract SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
144public abstract SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
147public abstract SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
149public abstract SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
150public abstract SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
151public abstract SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, TCodeGenerationContextInfo info, CancellationToken cancellationToken);
156protected static void CheckDeclarationNode<TDeclarationNode>(SyntaxNode destination) where TDeclarationNode : SyntaxNode
171protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2>(SyntaxNode destination)
172where TDeclarationNode1 : SyntaxNode
173where TDeclarationNode2 : SyntaxNode
190protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2, TDeclarationNode3>(SyntaxNode destination)
191where TDeclarationNode1 : SyntaxNode
192where TDeclarationNode2 : SyntaxNode
193where TDeclarationNode3 : SyntaxNode
211protected static void CheckDeclarationNode<TDeclarationNode1, TDeclarationNode2, TDeclarationNode3, TDeclarationNode4>(SyntaxNode destination)
212where TDeclarationNode1 : SyntaxNode
213where TDeclarationNode2 : SyntaxNode
214where TDeclarationNode3 : SyntaxNode
215where TDeclarationNode4 : SyntaxNode
232Func<SyntaxNode, TCodeGenerationContextInfo, IList<bool>?, CancellationToken, SyntaxNode> declarationTransform,
247var transformedDeclaration = declarationTransform(destinationDeclaration, info, availableIndices, cancellationToken);
249var root = await destinationTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
250var currentRoot = root.ReplaceNode(destinationDeclaration, transformedDeclaration);
275where TDeclarationNode : SyntaxNode
297where TDeclarationSyntax : SyntaxNode
299var newMembers = new List<SyntaxNode>();
304var newMember = GetNewMember(info, codeGenerationDestination, member, cancellationToken);
329where TDeclarationSyntax : SyntaxNode
342private SyntaxNode? GetNewMember(TCodeGenerationContextInfo info, CodeGenerationDestination codeGenerationDestination, ISymbol member, CancellationToken cancellationToken)
359CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
379protected abstract IComparer<SyntaxNode> GetMemberComparer();
481protected static void CheckLocation(SyntaxNode destinationMember, [NotNull] Location? location)
500SyntaxNode attributeList,
520SyntaxNode attributeToRemove,
526var root = attributeToRemove.SyntaxTree.GetRoot();
535where T : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (18)
55SyntaxNode? initializer = null)
81bool isIndexer = false, SyntaxNode? initializer = null)
109SyntaxNode? initializer = null)
125ImmutableArray<SyntaxNode> statements = default,
126ImmutableArray<SyntaxNode> baseConstructorArguments = default,
127ImmutableArray<SyntaxNode> thisConstructorArguments = default,
140ImmutableArray<SyntaxNode> statements = default)
158ImmutableArray<SyntaxNode> statements = default,
159ImmutableArray<SyntaxNode> handlesExpressions = default,
179ImmutableArray<SyntaxNode> statements = default,
180ImmutableArray<SyntaxNode> handlesExpressions = default,
198ImmutableArray<SyntaxNode> statements = default,
224ImmutableArray<SyntaxNode> statements = default,
252ImmutableArray<SyntaxNode> statements = default,
361ImmutableArray<SyntaxNode> statements = default)
385ImmutableArray<SyntaxNode> statements)
518ImmutableArray<SyntaxNode> statements = default,
551SyntaxNode? initializer = null)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\ICodeGenerationService.cs (27)
22SyntaxNode CreateEventDeclaration(IEventSymbol @event, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
27SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
33SyntaxNode? CreateMethodDeclaration(IMethodSymbol method, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
38SyntaxNode CreatePropertyDeclaration(IPropertySymbol property, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
43SyntaxNode CreateNamedTypeDeclaration(INamedTypeSymbol namedType, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
48SyntaxNode CreateNamespaceDeclaration(INamespaceSymbol @namespace, CodeGenerationDestination destination, CodeGenerationContextInfo info, CancellationToken cancellationToken);
53TDeclarationNode AddEvent<TDeclarationNode>(TDeclarationNode destination, IEventSymbol @event, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
58TDeclarationNode AddField<TDeclarationNode>(TDeclarationNode destination, IFieldSymbol field, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
63TDeclarationNode AddMethod<TDeclarationNode>(TDeclarationNode destination, IMethodSymbol method, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
68TDeclarationNode AddProperty<TDeclarationNode>(TDeclarationNode destination, IPropertySymbol property, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
73TDeclarationNode AddNamedType<TDeclarationNode>(TDeclarationNode destination, INamedTypeSymbol namedType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
78TDeclarationNode AddNamespace<TDeclarationNode>(TDeclarationNode destination, INamespaceSymbol @namespace, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
83TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<ISymbol> members, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
88TDeclarationNode AddParameters<TDeclarationNode>(TDeclarationNode destination, IEnumerable<IParameterSymbol> parameters, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
93TDeclarationNode AddAttributes<TDeclarationNode>(TDeclarationNode destination, IEnumerable<AttributeData> attributes, SyntaxToken? target, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
98TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, SyntaxNode attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
103TDeclarationNode RemoveAttribute<TDeclarationNode>(TDeclarationNode destination, AttributeData attributeToRemove, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
108TDeclarationNode UpdateDeclarationModifiers<TDeclarationNode>(TDeclarationNode declaration, IEnumerable<SyntaxToken> newModifiers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
113TDeclarationNode UpdateDeclarationAccessibility<TDeclarationNode>(TDeclarationNode declaration, Accessibility newAccessibility, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
118TDeclarationNode UpdateDeclarationType<TDeclarationNode>(TDeclarationNode declaration, ITypeSymbol newType, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
123TDeclarationNode UpdateDeclarationMembers<TDeclarationNode>(TDeclarationNode declaration, IList<ISymbol> newMembers, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
128TDeclarationNode AddStatements<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> statements, CodeGenerationContextInfo info, CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode;
188bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken);
193bool CanAddTo(SyntaxNode destination, Solution solution, CodeGenerationContext context, CancellationToken cancellationToken);
201SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(Solution solution, INamespaceOrTypeSymbol namespaceOrType, Location? location, CancellationToken cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeRefactorings\AbstractRefactoringHelpersService.cs (25)
15where TExpressionSyntax : SyntaxNode
16where TArgumentSyntax : SyntaxNode
17where TExpressionStatementSyntax : SyntaxNode
21public bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
24public void AddRelevantNodes<TSyntaxNode>(SourceText sourceText, SyntaxNode root, TextSpan selection, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
27public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
30public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
33public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
36public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
39public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
42public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
45public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
48public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
51public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeRefactorings\CodeRefactoringContextExtensions.cs (12)
41public static Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
44public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNode) where TSyntaxNode : SyntaxNode
50public static Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
53public static async Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNodes) where TSyntaxNode : SyntaxNode
59public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
65public static TSyntaxNode? TryGetRelevantNode<TSyntaxNode>(this ParsedDocument document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
68public static TSyntaxNode? TryGetRelevantNode<TSyntaxNode>(this ParsedDocument document, TextSpan span, bool allowEmptyNode, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
76this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
82this Document document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
89this ParsedDocument document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
93this ParsedDocument document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
102this ParsedDocument document, TextSpan span, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Editing\ImportAdderService.cs (23)
37var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
70bool OverlapsWithSpan(SyntaxNode n) => spansTree.HasIntervalThatOverlapsWith(n.FullSpan.Start, n.FullSpan.Length);
73protected abstract INamespaceSymbol? GetExplicitNamespaceSymbol(SyntaxNode node, SemanticModel model);
77SyntaxNode container,
95SyntaxNode container,
100private static SyntaxNode GenerateNamespaceImportDeclaration(INamespaceSymbol namespaceSymbol, SyntaxGenerator generator)
111IEnumerable<SyntaxNode> syntaxNodes,
117using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var importsToAdd);
118using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var nodesToSimplify);
120var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
139var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
159var first = root.DescendantNodesAndSelf().First(x => x.HasAnnotation(annotation));
160var last = root.DescendantNodesAndSelf().Last(x => x.HasAnnotation(annotation));
162var context = first.GetCommonRoot(last);
172IEnumerable<SyntaxNode> annotatedNodes,
178using var _ = PooledDictionary<INamespaceSymbol, SyntaxNode>.GetInstance(out var importToSyntax);
180var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
188SyntaxNode? first = null, last = null;
190foreach (var annotatedNode in annotatedNodes)
218var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
233var context = first.GetCommonRoot(last);
236var importContainer = addImportsService.GetImportContainer(root, context, importToSyntax.First().Value, options);
259private static bool IsInsideNamespace(SyntaxNode node, INamespaceSymbol symbol, SemanticModel model, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\StringBuilderExtensions.cs (1)
22where TNode : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxEditorExtensions.cs (29)
31Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
32CancellationToken cancellationToken) where TNode : SyntaxNode
54Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
55CancellationToken cancellationToken) where TNode : SyntaxNode
76Func<SemanticModel, SyntaxNode, TNode, SyntaxNode> updateRoot,
77CancellationToken cancellationToken) where TNode : SyntaxNode
98Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
99CancellationToken cancellationToken) where TNode : SyntaxNode
120Func<SemanticModel, SyntaxNode, TNode, SyntaxNode> updateRoot,
121CancellationToken cancellationToken) where TNode : SyntaxNode
154Func<ISyntaxFactsService, SyntaxNode, SyntaxNode> getSemanticBoundary,
156Func<SemanticModel, SyntaxNode, TType, TNode, SyntaxNode> updateRoot,
157CancellationToken cancellationToken) where TNode : SyntaxNode
170var originalRoot = editor.OriginalRoot;
173var currentRoot = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
183var replacementRoot = updateRoot(semanticModel, currentRoot, instance, currentNode);
195private static SyntaxNode GetExpressionSemanticBoundary(ISyntaxFactsService syntaxFacts, SyntaxNode node)
202return node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>(
210private static SyntaxNode GetMethodBodySemanticBoundary(ISyntaxFactsService syntaxFacts, SyntaxNode node)
212return node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_CreateEqualsMethod.cs (22)
48public static IMethodSymbol CreateEqualsMethod(this Compilation compilation, ImmutableArray<SyntaxNode> statements)
56ImmutableArray<SyntaxNode> statements)
120private static ImmutableArray<SyntaxNode> CreateEqualsMethodStatements(
135using var statements = TemporaryArray<SyntaxNode>.Empty;
144var localNameExpression = factory.IdentifierName(localName);
145var objNameExpression = factory.IdentifierName(ObjName);
149using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
178var ifStatement = factory.IfStatement(
189var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
201var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
240ImmutableArray<ISymbol> members, SyntaxNode localNameExpression,
241ArrayBuilder<SyntaxNode> expressions)
251var symbolNameExpression = factory.IdentifierName(member.Name);
252var thisSymbol = factory.MemberAccessExpression(factory.ThisExpression(), symbolNameExpression)
254var otherSymbol = factory.MemberAccessExpression(localNameExpression, symbolNameExpression);
291private static ImmutableArray<SyntaxNode> CreateIEquatableEqualsMethodStatements(
299var statements = ArrayBuilder<SyntaxNode>.GetInstance();
301var otherNameExpression = factory.IdentifierName(OtherName);
305using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
343SyntaxGenerator factory, SyntaxGeneratorInternal generatorInternal, Compilation compilation, ParseOptions parseOptions, SyntaxNode otherNameExpression, ArrayBuilder<SyntaxNode> expressions)
345var nullLiteral = factory.NullLiteralExpression();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (58)
33public static SyntaxNode Negate(
36SyntaxNode expression,
43public static SyntaxNode Negate(
46SyntaxNode expressionOrPattern,
54public static SyntaxNode Negate(
57SyntaxNode expressionOrPattern,
114syntaxFacts.GetPartsOfAnyIsTypeExpression(expressionOrPattern, out var expression, out var type);
124syntaxFacts.GetPartsOfAnyIsTypeExpression(expressionOrPattern, out var expression, out var type);
136private static SyntaxNode GetNegationOfBinaryExpression(
137SyntaxNode expressionNode,
144syntaxFacts.GetPartsOfBinaryExpression(expressionNode, out var leftOperand, out var operatorToken, out var rightOperand);
172var newBinaryExpressionSyntax = negatedKind is BinaryOperatorKind.Equals or BinaryOperatorKind.NotEquals
190SyntaxNode innerPattern;
199var typeExpression = generatorInternal.Type(isTypeOperation.TypeOperand, typeContext: false);
228private static SyntaxNode GetNegationOfBinaryPattern(
229SyntaxNode pattern,
241syntaxFacts.GetPartsOfBinaryPattern(pattern, out var left, out var operatorToken, out var right);
243var newLeft = generator.Negate(generatorInternal, left, semanticModel, cancellationToken);
244var newRight = generator.Negate(generatorInternal, right, semanticModel, cancellationToken);
246var newPattern =
258private static SyntaxNode GetNegationOfIsPatternExpression(SyntaxNode isExpression, SyntaxGenerator generator, SyntaxGeneratorInternal generatorInternal, SemanticModel semanticModel, CancellationToken cancellationToken)
263syntaxFacts.GetPartsOfIsPatternExpression(isExpression, out var left, out var isToken, out var pattern);
265SyntaxNode? negatedPattern = null;
287var type = syntaxFacts.GetTypeOfTypePattern(negatedPattern);
300private static SyntaxNode GetNegationOfRelationalPattern(
301SyntaxNode expressionNode,
312syntaxFacts.GetPartsOfRelationalPattern(expressionNode, out var operatorToken, out var expression);
327private static bool IsLegalPattern(ISyntaxFacts syntaxFacts, SyntaxNode pattern, bool designatorsLegal)
332syntaxFacts.GetPartsOfBinaryPattern(pattern, out var left, out _, out var right);
342syntaxFacts.GetPartsOfUnaryPattern(pattern, out _, out var subPattern);
354syntaxFacts.GetPartsOfParenthesizedPattern(pattern, out _, out var subPattern, out _);
360syntaxFacts.GetPartsOfDeclarationPattern(pattern, out _, out var designator);
366syntaxFacts.GetPartsOfRecursivePattern(pattern, out _, out _, out _, out var designator);
376private static SyntaxNode NegateRelational(
379SyntaxNode leftOperand,
381SyntaxNode rightOperand)
467private static SyntaxNode GetNegationOfLiteralExpression(
468SyntaxNode expression,
476SyntaxNode newLiteralExpression;
497private static SyntaxNode GetNegationOfConstantPattern(
498SyntaxNode pattern,
510var expression = syntaxFacts.GetExpressionOfConstantPattern(pattern);
522private static SyntaxNode GetNegationOfLogicalNotExpression(
523SyntaxNode expression,
527var operand = syntaxFacts.GetOperandOfPrefixUnaryExpression(expression);
533private static SyntaxNode GetNegationOfUnaryPattern(
534SyntaxNode pattern,
550private static SyntaxNode GetNegationOfNotPattern(
551SyntaxNode pattern,
558syntaxFacts.GetPartsOfUnaryPattern(pattern, out var opToken, out var subPattern);
564var type = syntaxFacts.GetTypeOfTypePattern(subPattern);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions.cs (47)
23public static SyntaxNode CreateThrowNotImplementedStatement(
30public static SyntaxNode CreateThrowNotImplementedExpression(
37private static SyntaxNode CreateNewNotImplementedException(SyntaxGenerator codeDefinitionFactory, Compilation compilation)
39var notImplementedExceptionTypeSyntax = compilation.NotImplementedExceptionType() is INamedTypeSymbol symbol
48public static ImmutableArray<SyntaxNode> CreateThrowNotImplementedStatementBlock(
52public static ImmutableArray<SyntaxNode> CreateArguments(
59private static SyntaxNode CreateArgument(
66public static SyntaxNode GetDefaultEqualityComparer(
73var typeExpression = equalityComparerType == null
88public static SyntaxNode IsPatternExpression(this SyntaxGeneratorInternal generator, SyntaxNode expression, SyntaxNode pattern)
94public static SyntaxNode GenerateDelegateThroughMemberStatement(
97var through = generator.MemberAccessExpression(
103var invocationExpression = generator.InvocationExpression(through, generator.CreateArguments(method.Parameters));
109public static SyntaxNode CreateDelegateThroughExpression(
112var name = generator.IdentifierName(throughMember.Name);
113var through = throughMember.IsStatic
159var explicitImplementationCast = generator.CastExpression(
174static SyntaxNode GenerateContainerName(SyntaxGenerator factory, ISymbol throughMember)
183public static ImmutableArray<SyntaxNode> GetGetAccessorStatements(
193var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
194var expression = property.IsIndexer
222public static ImmutableArray<SyntaxNode> GetSetAccessorStatements(
232var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
233var expression = property.IsIndexer
335public static ImmutableArray<SyntaxNode> CreateAssignmentStatements(
345using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var nullCheckStatements);
346using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var assignStatements);
358var assignExpression = factory.AssignmentStatement(
361var statement = factory.ExpressionStatement(assignExpression);
371var fieldAccess = factory.MemberAccessExpression(factory.ThisExpression(), factory.IdentifierName(fieldName))
391SyntaxNode fieldAccess,
394ArrayBuilder<SyntaxNode> nullCheckStatements,
395ArrayBuilder<SyntaxNode> assignStatements)
426public static SyntaxNode CreateAssignWithNullCheckStatement(
427this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter, SyntaxNode fieldAccess)
436public static SyntaxNode CreateThrowArgumentNullExpression(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
439private static SyntaxNode CreateNewArgumentNullException(SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
448public static SyntaxNode CreateNullCheckAndThrowStatement(
454var condition = factory.CreateNullCheckExpression(generatorInternal, semanticModel, parameter.Name);
455var throwStatement = factory.CreateThrowArgumentNullExceptionStatement(semanticModel.Compilation, parameter);
460public static SyntaxNode CreateNullCheckExpression(
463var identifier = factory.IdentifierName(identifierName);
464var nullExpr = factory.NullLiteralExpression();
465var condition = generatorInternal.SupportsPatterns(semanticModel.SyntaxTree.Options)
471public static SyntaxNode CreateThrowArgumentNullExceptionStatement(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Formatting\FormatterShared.cs (6)
26var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
30public SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
33public SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
36public IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\AbstractAddImportsService.cs (65)
19where TCompilationUnitSyntax : SyntaxNode
20where TNamespaceDeclarationSyntax : SyntaxNode
21where TUsingOrAliasSyntax : SyntaxNode
22where TExternSyntax : SyntaxNode
25protected abstract SyntaxNode? GetAlias(TUsingOrAliasSyntax usingOrAlias);
26protected abstract ImmutableArray<SyntaxNode> GetGlobalImports(SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken);
27protected abstract SyntaxList<TUsingOrAliasSyntax> GetUsingsAndAliases(SyntaxNode node);
28protected abstract SyntaxList<TExternSyntax> GetExterns(SyntaxNode node);
43private bool HasAliases(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsAlias);
44private bool HasUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsSimpleUsing);
45private bool HasStaticUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsStaticUsing);
46private bool HasExterns(SyntaxNode node) => GetExterns(node).Any();
47private bool HasAnyImports(SyntaxNode node) => GetUsingsAndAliases(node).Any() || GetExterns(node).Any();
51SyntaxNode root,
52SyntaxNode? contextLocation,
53SyntaxNode import,
62private static ImmutableArray<SyntaxNode> GetAllContainers(SyntaxNode root, SyntaxNode? contextLocation)
66var applicableContainer = GetFirstApplicableContainer(contextLocation);
67return [.. applicableContainer.GetAncestorsOrThis<SyntaxNode>()];
71SyntaxNode import, ImmutableArray<SyntaxNode> containers, ImmutableArray<SyntaxNode> globalImports)
73foreach (var node in containers)
86foreach (var node in globalImports)
97protected abstract bool IsEquivalentImport(SyntaxNode a, SyntaxNode b);
99public SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options)
103out var externContainer, out var usingContainer, out var staticUsingContainer, out var aliasContainer);
126public SyntaxNode AddImports(
128SyntaxNode root,
129SyntaxNode? contextLocation,
130IEnumerable<SyntaxNode> newImports,
147out var externContainer, out var usingContainer, out var aliasContainer, out var staticUsingContainer);
149var newRoot = Rewrite(
157protected abstract SyntaxNode Rewrite(
159SyntaxNode externContainer, SyntaxNode usingContainer, SyntaxNode staticUsingContainer, SyntaxNode aliasContainer,
160AddImportPlacementOptions options, SyntaxNode root, CancellationToken cancellationToken);
162private void GetContainers(SyntaxNode root, SyntaxNode contextLocation, AddImportPlacementOptions options, out SyntaxNode externContainer, out SyntaxNode usingContainer, out SyntaxNode staticUsingContainer, out SyntaxNode aliasContainer)
164var applicableContainer = GetFirstApplicableContainer(contextLocation);
165var contextSpine = applicableContainer.GetAncestorsOrThis<SyntaxNode>().ToImmutableArray();
170var fallbackNode = contextSpine.FirstOrDefault(HasAnyImports);
190private static SyntaxNode? GetFirstApplicableContainer(SyntaxNode contextNode)
194var node = usingDirective != null ? usingDirective.Parent! : contextNode;
196(SyntaxNode?)node.GetAncestorOrThis<TCompilationUnitSyntax>();
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\IAddImportsService.cs (15)
23SemanticModel semanticModel, SyntaxNode root, SyntaxNode? contextLocation,
24SyntaxNode import, SyntaxGenerator generator, CancellationToken cancellationToken);
30SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options);
32SyntaxNode AddImports(
33SemanticModel semanticModel, SyntaxNode root, SyntaxNode? contextLocation,
34IEnumerable<SyntaxNode> newImports, SyntaxGenerator generator, AddImportPlacementOptions options, CancellationToken cancellationToken);
39public static SyntaxNode AddImport(
40this IAddImportsService service, SemanticModel semanticModel, SyntaxNode root,
41SyntaxNode contextLocation, SyntaxNode newImport, SyntaxGenerator generator, AddImportPlacementOptions options,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\AbstractSemanticFactsService.cs (37)
40SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
48SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
56SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
64SemanticModel semanticModel, SyntaxNode location, SyntaxNode? containerOpt,
73SyntaxNode location,
74SyntaxNode? containerOpt,
82var container = containerOpt ?? location.AncestorsAndSelf().FirstOrDefault(
96protected virtual IEnumerable<ISymbol> GetCollidableSymbols(SemanticModel semanticModel, SyntaxNode location, SyntaxNode? container, CancellationToken cancellationToken)
180public bool IsWrittenTo(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
183public bool IsOnlyWrittenTo(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
186public bool IsInOutContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
189public bool IsInRefContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
192public bool IsInInContext(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
195public bool CanReplaceWithRValue(SemanticModel semanticModel, SyntaxNode? expression, CancellationToken cancellationToken)
204public bool TryGetSpeculativeSemanticModel(SemanticModel oldSemanticModel, SyntaxNode oldNode, SyntaxNode newNode, [NotNullWhen(true)] out SemanticModel? speculativeModel)
210public ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode forEachStatement)
213public SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
216public IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node)
219public ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node)
222public ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node)
228public IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken)
231public IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argumentNode, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
234public IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argumentNode, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
237public ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
240public ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
243public ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken)
246public bool IsInsideNameOfExpression(SemanticModel semanticModel, SyntaxNode? node, CancellationToken cancellationToken)
252public bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, INamedTypeSymbol? expressionTypeOpt, CancellationToken cancellationToken)
255public string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken)
258public IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node)
264public CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\ISemanticFactsService.cs (11)
27SemanticModel semanticModel, SyntaxNode location,
28SyntaxNode? container, string baseName, CancellationToken cancellationToken);
31SemanticModel semanticModel, SyntaxNode location,
32SyntaxNode? container, string baseName, IEnumerable<string> usedNames, CancellationToken cancellationToken);
34SyntaxToken GenerateUniqueName(SemanticModel semanticModel, SyntaxNode location, SyntaxNode? container, string baseName,
38SemanticModel semanticModel, SyntaxNode location,
39SyntaxNode? container, string baseName, CancellationToken cancellationToken);
42SemanticModel semanticModel, SyntaxNode location,
43SyntaxNode? container, string baseName, IEnumerable<string> usedNames, CancellationToken cancellationToken);
47IMethodSymbol? TryGetDisposeMethod(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\SemanticModelReuse\AbstractSemanticModelReuseLanguageService.cs (20)
22where TMemberDeclarationSyntax : SyntaxNode
24where TAccessorDeclarationSyntax : SyntaxNode
32public abstract SyntaxNode? TryGetContainingMethodBodyForSpeculation(SyntaxNode node);
34protected abstract SemanticModel? TryGetSpeculativeSemanticModelWorker(SemanticModel previousSemanticModel, SyntaxNode previousBodyNode, SyntaxNode currentBodyNode);
49public async Task<SemanticModel?> TryGetSpeculativeSemanticModelAsync(SemanticModel previousSemanticModel, SyntaxNode currentBodyNode, CancellationToken cancellationToken)
66var previousRoot = await previousSemanticModel.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
67var currentRoot = await currentBodyNode.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
68var previousBodyNode = GetPreviousBodyNode(previousRoot, currentRoot, currentBodyNode);
90protected SyntaxNode? GetPreviousBodyNode(SyntaxNode previousRoot, SyntaxNode currentRoot, SyntaxNode currentBodyNode)
98var previousContainer = GetPreviousBodyNode(previousRoot, currentRoot, currentContainer);
124var previousNode = previousRoot;
136var childAsNode = children[childIndex].AsNode();
150private static void GetNodeChildIndexPathToRootReversed(SyntaxNode node, ArrayBuilder<int> path)
152var current = node;
153var parent = current.Parent;
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Simplification\AbstractSimplificationService.cs (30)
30where TCompilationUnitSyntax : SyntaxNode
31where TExpressionSyntax : SyntaxNode
32where TStatementSyntax : SyntaxNode
33where TCrefSyntax : SyntaxNode
35protected static readonly Func<SyntaxNode, bool> s_containsAnnotations = n => n.ContainsAnnotations;
40protected abstract ImmutableArray<NodeOrTokenToReduce> GetNodesAndTokensToReduce(SyntaxNode root, Func<SyntaxNodeOrToken, bool> isNodeOrTokenOutsideSimplifySpans);
41protected abstract SemanticModel GetSpeculativeSemanticModel(ref SyntaxNode nodeToSpeculate, SemanticModel originalSemanticModel, SyntaxNode originalNode);
42protected abstract bool NodeRequiresNonSpeculativeSemanticModel(SyntaxNode node);
43protected abstract void AddImportDeclarations(TCompilationUnitSyntax root, ArrayBuilder<SyntaxNode> importDeclarations);
48protected virtual SyntaxNode TransformReducedNode(SyntaxNode reducedNode, SyntaxNode originalNode)
51public abstract SyntaxNode Expand(SyntaxNode node, SemanticModel semanticModel, SyntaxAnnotation? annotationForReplacedAliasIdentifier, Func<SyntaxNode, bool>? expandInsideNode, bool expandParameter, CancellationToken cancellationToken);
52public abstract SyntaxToken Expand(SyntaxToken token, SemanticModel semanticModel, Func<SyntaxNode, bool>? expandInsideNode, CancellationToken cancellationToken);
115var reducedNodesMap = new ConcurrentDictionary<SyntaxNode, SyntaxNode>();
152SyntaxNode root,
156ConcurrentDictionary<SyntaxNode, SyntaxNode> reducedNodesMap,
218var replacedParent = isNode
232var currentNode = currentNodeOrToken.AsNode()!;
237var newRoot = root.ReplaceNode(nodeOrToken.AsNode()!, currentNode.WithAdditionalAnnotations(marker));
285using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var importDeclarations);
300var root = await model.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
302var unusedImports = new HashSet<SyntaxNode>();
311var newRoot = gen.RemoveNodes(root, unusedImports);
320protected abstract void GetUnusedNamespaceImports(SemanticModel model, HashSet<SyntaxNode> namespaceImports, CancellationToken cancellationToken);
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\SyntaxNodeExtensions.cs (74)
25public static LanguageVersion GetLanguageVersion(this SyntaxNode node)
28public static void Deconstruct(this SyntaxNode node, out SyntaxKind kind)
31public static bool IsKind<TNode>([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind, [NotNullWhen(true)] out TNode? result)
32where TNode : SyntaxNode
44public static bool IsParentKind([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind)
47public static bool IsParentKind<TNode>([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind, [NotNullWhen(true)] out TNode? result)
48where TNode : SyntaxNode
61this SyntaxNode node, SourceText? sourceText = null,
90public static bool IsAnyArgumentList([NotNullWhen(true)] this SyntaxNode? node)
99public static (SyntaxToken openBrace, SyntaxToken closeBrace) GetBraces(this SyntaxNode? node)
116public static bool IsEmbeddedStatementOwner([NotNullWhen(true)] this SyntaxNode? node)
130public static StatementSyntax? GetEmbeddedStatement(this SyntaxNode? node)
146public static BaseParameterListSyntax? GetParameterList(this SyntaxNode? declaration)
159public static SyntaxList<AttributeListSyntax> GetAttributeLists(this SyntaxNode? declaration)
172public static ConditionalAccessExpressionSyntax? GetParentConditionalAccessExpression(this SyntaxNode? node)
184var current = node;
251/// <inheritdoc cref="ISyntaxFacts.GetRootConditionalAccessExpression(SyntaxNode)"/>
253public static ConditionalAccessExpressionSyntax? GetRootConditionalAccessExpression(this SyntaxNode? node)
270public static ConditionalAccessExpressionSyntax? GetInnerMostConditionalAccessExpression(this SyntaxNode node)
281public static bool IsAsyncSupportingFunctionSyntax([NotNullWhen(true)] this SyntaxNode? node)
284public static bool IsCompoundAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
287public static bool IsLeftSideOfAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
291public static bool IsLeftSideOfAnyAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
294public static bool IsRightSideOfAnyAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
297public static bool IsLeftSideOfCompoundAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
308public static IEnumerable<UsingDirectiveSyntax> GetEnclosingUsingDirectives(this SyntaxNode node)
316public static IEnumerable<ExternAliasDirectiveSyntax> GetEnclosingExternAliasDirectives(this SyntaxNode node)
324public static bool IsUnsafeContext(this SyntaxNode node)
335public static bool IsInStaticContext(this SyntaxNode node)
337for (var current = node; current != null; current = current.Parent)
372public static BaseNamespaceDeclarationSyntax? GetInnermostNamespaceDeclarationWithUsings(this SyntaxNode contextNode)
395public static bool IsBreakableConstruct([NotNullWhen(true)] this SyntaxNode? node)
398public static bool IsContinuableConstruct([NotNullWhen(true)] this SyntaxNode? node)
413public static bool IsReturnableConstruct(this SyntaxNode node)
437public static bool ContainsYield(this SyntaxNode node)
440public static bool IsReturnableConstructOrTopLevelCompilationUnit(this SyntaxNode node)
443public static bool SpansPreprocessorDirective<TSyntaxNode>(this IEnumerable<TSyntaxNode> list) where TSyntaxNode : SyntaxNode
448where TNode : SyntaxNode
496public static bool ContainsInterleavedDirective(this SyntaxNode syntaxNode, CancellationToken cancellationToken)
500/// Similar to <see cref="ContainsInterleavedDirective(SyntaxNode, CancellationToken)"/> except that the span to check
503public static bool ContainsInterleavedDirective(this SyntaxNode syntaxNode, TextSpan span, CancellationToken cancellationToken)
542var structure = trivia.GetStructure()!;
584where TSyntaxNode : SyntaxNode
644public static ImmutableArray<SyntaxTrivia> GetLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
647public static TSyntaxNode GetNodeWithoutLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
650public static TSyntaxNode GetNodeWithoutLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node, out ImmutableArray<SyntaxTrivia> strippedTrivia) where TSyntaxNode : SyntaxNode
653public static ImmutableArray<SyntaxTrivia> GetLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
656public static TSyntaxNode GetNodeWithoutLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
659public static TSyntaxNode GetNodeWithoutLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node, out ImmutableArray<SyntaxTrivia> strippedTrivia) where TSyntaxNode : SyntaxNode
662public static bool IsVariableDeclaratorValue([NotNullWhen(true)] this SyntaxNode? node)
666public static BlockSyntax? FindInnermostCommonBlock(this IEnumerable<SyntaxNode> nodes)
669public static IEnumerable<SyntaxNode> GetAncestorsOrThis(this SyntaxNode? node, Func<SyntaxNode, bool> predicate)
671var current = node;
683public static (SyntaxToken openParen, SyntaxToken closeParen) GetParentheses(this SyntaxNode node)
713public static (SyntaxToken openBracket, SyntaxToken closeBracket) GetBrackets(this SyntaxNode? node)
726public static SyntaxTokenList GetModifiers(this SyntaxNode? member)
738public static SyntaxNode? WithModifiers(this SyntaxNode? member, SyntaxTokenList modifiers)
749public static void ForEachMember<TArg>(this SyntaxNode? node, Action<MemberDeclarationSyntax, TArg> callback, TArg arg)
774[NotNullWhen(true)] this SyntaxNode? node,
781for (var current = node; current != null; current = current.Parent)
825[NotNullWhen(true)] this SyntaxNode? node,
826[NotNullWhen(true)] out SyntaxNode? deconstructionLeft)
828SyntaxNode? previous = null;
829for (var current = node; current != null; current = current.Parent)
851where T : SyntaxNode
860where T : SyntaxNode
868where T : SyntaxNode
874public static T KeepCommentsAndAddElasticMarkers<T>(this T node) where T : SyntaxNode
879public static SyntaxNode WithPrependedNonIndentationTriviaFrom(
880this SyntaxNode to, SyntaxNode from)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Engine\CSharpFormatEngine.cs (1)
16SyntaxNode node,
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\IndentBlockFormattingRule.cs (13)
47public override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
61private static void AddTypeParameterConstraintClauseOperation(List<IndentBlockOperation> list, SyntaxNode node)
70private void AddSwitchIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
129private void AddLabelIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
145private static void AddAlignmentBlockOperation(List<IndentBlockOperation> list, SyntaxNode node)
200private static void SetAlignmentBlockOperation(List<IndentBlockOperation> list, SyntaxNode baseNode, SyntaxNode body)
211private void AddBlockIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
248private static void AddBracketIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
289private static void AddParenthesizedPatternIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
315private static void AddEmbeddedStatementsIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
374private static bool IsWithinSwitchExpressionArmPattern(SyntaxNode node)
378for (var current = node; current != null; current = current.Parent)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\Precedence\AbstractCSharpPrecedenceService.cs (1)
11where TSyntax : SyntaxNode
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SemanticFacts\CSharpSemanticFacts.cs (32)
43public bool IsWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
46public bool IsOnlyWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
49public bool IsInOutContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
52public bool IsInRefContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
55public bool IsInInContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
58public bool CanReplaceWithRValue(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? expression, CancellationToken cancellationToken)
65foreach (var ancestor in token.GetAncestors<SyntaxNode>())
121SyntaxNode oldNode,
122SyntaxNode newNode,
178public ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode node)
192public SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
195public IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node)
206public ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node)
218public ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node)
243var node = syntaxRef.GetSyntax(cancellationToken);
254public IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken)
264public IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
267public IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
271public ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken)
274public ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken)
279public ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken)
301/// cref="ModelExtensions.GetSymbolInfo(SemanticModel, SyntaxNode, CancellationToken)"/>, but sometimes employs
305private ImmutableArray<ISymbol> GetSymbolInfo(SemanticModel semanticModel, SyntaxNode node, SyntaxToken token, CancellationToken cancellationToken)
431public bool IsInsideNameOfExpression(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
440var node = syntaxReference.GetSyntax(cancellationToken);
442foreach (var localFunction in node.DescendantNodes().Where(CSharpSyntaxFacts.Instance.IsLocalFunctionStatement))
455public bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, [NotNullWhen(true)] INamedTypeSymbol? expressionType, CancellationToken cancellationToken)
458public string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken)
461public IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node)
477private static bool IsInPreprocessingSymbolContext(SyntaxNode node)
487public CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpHeaderFacts.cs (18)
24public override bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
50public override bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
56public override bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
62public override bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
68public override bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
74public override bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
83public override bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
89public override bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
95public override bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpSyntaxFacts.cs (319)
142public bool IsDirective([NotNullWhen(true)] SyntaxNode? node)
145public bool TryGetExternalSourceInfo([NotNullWhen(true)] SyntaxNode? node, out ExternalSourceInfo info)
166public bool IsNameOfSimpleMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
172public bool IsNameOfAnyMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
175public bool IsNameOfMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node)
182public SyntaxNode? GetStandaloneExpression(SyntaxNode? node)
185public SyntaxNode? GetRootConditionalAccessExpression(SyntaxNode? node)
188public bool IsDeclarationExpression([NotNullWhen(true)] SyntaxNode? node)
191public bool IsNamedArgument([NotNullWhen(true)] SyntaxNode? node)
194public bool IsNameOfNamedArgument([NotNullWhen(true)] SyntaxNode? node)
197public SyntaxNode? GetParameterList(SyntaxNode node)
200public bool IsParameterList([NotNullWhen(true)] SyntaxNode? node)
203public bool IsUsingDirectiveName([NotNullWhen(true)] SyntaxNode? node)
207public bool IsUsingAliasDirective([NotNullWhen(true)] SyntaxNode? node)
210public void GetPartsOfUsingAliasDirective(SyntaxNode node, out SyntaxToken globalKeyword, out SyntaxToken alias, out SyntaxNode name)
218public bool IsDeconstructionForEachStatement([NotNullWhen(true)] SyntaxNode? node)
221public bool IsUsingLocalDeclarationStatement([NotNullWhen(true)] SyntaxNode? node)
224public bool IsDeconstructionAssignment([NotNullWhen(true)] SyntaxNode? node)
227public Location GetDeconstructionReferenceLocation(SyntaxNode node)
237public bool IsStatement([NotNullWhen(true)] SyntaxNode? node)
240public bool IsExecutableStatement([NotNullWhen(true)] SyntaxNode? node)
243public bool IsGlobalStatement([NotNullWhen(true)] SyntaxNode? node)
246public SyntaxNode GetStatementOfGlobalStatement(SyntaxNode node)
249public bool IsMethodBody([NotNullWhen(true)] SyntaxNode? node)
261public SyntaxNode GetExpressionOfRefExpression(SyntaxNode node)
264public SyntaxNode? GetExpressionOfReturnStatement(SyntaxNode node)
275public bool HasImplicitBaseConstructorInitializer(SyntaxNode node)
311public bool IsPredefinedType(SyntaxNode? node)
314public bool IsPredefinedType(SyntaxNode? node, PredefinedType type)
535public bool IsPostfixUnaryExpression([NotNullWhen(true)] SyntaxNode? node)
538public bool IsElementBindingExpression([NotNullWhen(true)] SyntaxNode? node)
541public bool IsMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node)
544public bool IsPointerMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
547public void GetNameAndArityOfSimpleName(SyntaxNode node, out string name, out int arity)
554public bool LooksGeneric(SyntaxNode simpleName)
558public SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(SyntaxNode? genericName)
561public SyntaxNode? GetTargetOfMemberBinding(SyntaxNode? node)
564public SyntaxNode GetNameOfMemberBindingExpression(SyntaxNode node)
567public SyntaxNode? GetExpressionOfMemberAccessExpression(SyntaxNode node, bool allowImplicitTarget)
570public void GetPartsOfElementAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode argumentList)
577public SyntaxNode GetExpressionOfInterpolation(SyntaxNode node)
580public bool IsInStaticContext(SyntaxNode node)
583public bool IsInNamespaceOrTypeContext([NotNullWhen(true)] SyntaxNode? node)
586public bool IsBaseTypeList([NotNullWhen(true)] SyntaxNode? node)
589public SyntaxNode GetExpressionOfArgument(SyntaxNode node)
592public SyntaxNode GetExpressionOfAttributeArgument(SyntaxNode node)
595public RefKind GetRefKindOfArgument(SyntaxNode node)
598public bool IsArgument([NotNullWhen(true)] SyntaxNode? node)
601public bool IsAttributeArgument([NotNullWhen(true)] SyntaxNode? node)
604public bool IsSimpleArgument([NotNullWhen(true)] SyntaxNode? node)
611public bool IsInConstantContext([NotNullWhen(true)] SyntaxNode? node)
614public bool IsInConstructor(SyntaxNode node)
617public bool IsUnsafeContext(SyntaxNode node)
620public bool IsAttributeNamedArgumentIdentifier([NotNullWhen(true)] SyntaxNode? node)
623public SyntaxNode? GetContainingTypeDeclaration(SyntaxNode root, int position)
627.GetAncestors<SyntaxNode>()
631public SyntaxNode? GetContainingVariableDeclaratorOfFieldDeclaration(SyntaxNode? node)
634public bool IsNameOfSubpattern([NotNullWhen(true)] SyntaxNode? node)
639public bool IsPropertyPatternClause(SyntaxNode node)
643[NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? initializedInstance)
651var withInitializer = identifier.Parent.GetRequiredParent();
657var objectInitializer = identifier.Parent.GetRequiredParent();
674public bool IsAnonymousObjectMemberDeclaratorNameIdentifier([NotNullWhen(true)] SyntaxNode? expression)
678public bool IsAnyInitializerExpression([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? creationExpression)
693public bool IsElementAccessExpression(SyntaxNode? node)
697public SyntaxNode? ConvertToSingleLine(SyntaxNode? node, bool useElasticTrivia = false)
700public SyntaxNode? GetContainingMemberDeclaration(SyntaxNode root, int position, bool useFullSpan = true)
703public SyntaxNode? GetContainingMethodDeclaration(SyntaxNode root, int position, bool useFullSpan = true)
706private static SyntaxNode? GetContainingMemberDeclaration<TMemberDeclarationSyntax>(SyntaxNode root, int position, bool useFullSpan = true)
719var node = root.FindToken(position).Parent;
737public bool IsMethodLevelMember([NotNullWhen(true)] SyntaxNode? node)
745public bool IsTopLevelNodeWithMembers([NotNullWhen(true)] SyntaxNode? node)
748public string GetDisplayName(SyntaxNode? node, DisplayNameOptions options, string? rootNamespace = null)
772var parent = node.GetAncestor<TypeDeclarationSyntax>() ?? node.Parent;
810private string? GetName(SyntaxNode node, DisplayNameOptions options)
901public SyntaxList<SyntaxNode> GetMembersOfTypeDeclaration(SyntaxNode node)
904public SyntaxList<SyntaxNode> GetMembersOfNamespaceDeclaration(SyntaxNode node)
907public SyntaxList<SyntaxNode> GetMembersOfCompilationUnit(SyntaxNode node)
910protected override void AppendMembers(SyntaxNode? node, ArrayBuilder<SyntaxNode> list, bool topLevel, bool methodLevel)
934public TextSpan GetMemberBodySpanForSpeculativeBinding(SyntaxNode node)
939var member = GetContainingMemberDeclaration(node, node.SpanStart);
950public SyntaxNode? TryGetBindableParent(SyntaxToken token)
952var node = token.Parent;
955var parent = node.Parent;
1039var structure = triviaTok.GetStructure();
1051public string GetNameForArgument(SyntaxNode? argument)
1054public string GetNameForAttributeArgument(SyntaxNode? argument)
1057public bool IsLeftSideOfDot([NotNullWhen(true)] SyntaxNode? node)
1060public SyntaxNode? GetRightSideOfDot(SyntaxNode? node)
1066public SyntaxNode? GetLeftSideOfDot(SyntaxNode? node, bool allowImplicitTarget)
1072public bool IsLeftSideOfExplicitInterfaceSpecifier([NotNullWhen(true)] SyntaxNode? node)
1075public bool IsLeftSideOfAssignment([NotNullWhen(true)] SyntaxNode? node)
1078public bool IsLeftSideOfAnyAssignment([NotNullWhen(true)] SyntaxNode? node)
1081public bool IsLeftSideOfCompoundAssignment([NotNullWhen(true)] SyntaxNode? node)
1084public SyntaxNode GetRightHandSideOfAssignment(SyntaxNode node)
1087public bool IsInferredAnonymousObjectMemberDeclarator([NotNullWhen(true)] SyntaxNode? node)
1090public bool IsOperandOfIncrementExpression([NotNullWhen(true)] SyntaxNode? node)
1093public static bool IsOperandOfDecrementExpression([NotNullWhen(true)] SyntaxNode? node)
1096public bool IsOperandOfIncrementOrDecrementExpression([NotNullWhen(true)] SyntaxNode? node)
1099public SyntaxList<SyntaxNode> GetContentsOfInterpolatedString(SyntaxNode interpolatedString)
1115public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfObjectCreationExpression(SyntaxNode objectCreationExpression)
1120public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfArgumentList(SyntaxNode argumentList)
1123public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfAttributeArgumentList(SyntaxNode argumentList)
1135public bool IsPragmaDirective(SyntaxTrivia trivia, out bool isDisable, out bool isActive, out SeparatedSyntaxList<SyntaxNode> errorCodes)
1141public bool IsDocumentationComment(SyntaxNode node)
1144public bool IsUsingOrExternOrImport([NotNullWhen(true)] SyntaxNode? node)
1147public bool IsGlobalAssemblyAttribute([NotNullWhen(true)] SyntaxNode? node)
1150public bool IsGlobalModuleAttribute([NotNullWhen(true)] SyntaxNode? node)
1153private static bool IsGlobalAttribute([NotNullWhen(true)] SyntaxNode? node, SyntaxKind attributeTarget)
1158public bool IsDeclaration(SyntaxNode? node)
1207public bool IsTypeDeclaration(SyntaxNode node)
1210public bool IsSimpleAssignmentStatement([NotNullWhen(true)] SyntaxNode? node)
1213public bool IsAnyAssignmentStatement([NotNullWhen(true)] SyntaxNode? node)
1217SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1224SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1226var expression = statement;
1238public SyntaxToken GetIdentifierOfSimpleName(SyntaxNode node)
1241public SyntaxToken GetIdentifierOfVariableDeclarator(SyntaxNode node)
1244public SyntaxToken GetIdentifierOfTypeDeclaration(SyntaxNode node)
1252public bool IsDeclaratorOfLocalDeclarationStatement(SyntaxNode declarator, SyntaxNode localDeclarationStatement)
1259public bool AreEquivalent(SyntaxNode? node1, SyntaxNode? node2)
1262public static SyntaxNode GetExpressionOfInvocationExpression(SyntaxNode node)
1265public bool IsExpressionOfForeach([NotNullWhen(true)] SyntaxNode? node)
1268public SyntaxNode GetExpressionOfExpressionStatement(SyntaxNode node)
1271public void GetPartsOfTupleExpression<TArgumentSyntax>(SyntaxNode node,
1272out SyntaxToken openParen, out SeparatedSyntaxList<TArgumentSyntax> arguments, out SyntaxToken closeParen) where TArgumentSyntax : SyntaxNode
1276arguments = (SeparatedSyntaxList<TArgumentSyntax>)(SeparatedSyntaxList<SyntaxNode>)tupleExpression.Arguments;
1283public SyntaxNode? GetMatchingDirective(SyntaxNode directive, CancellationToken cancellationToken)
1286public ImmutableArray<SyntaxNode> GetMatchingConditionalDirectives(SyntaxNode directive, CancellationToken cancellationToken)
1287=> ((DirectiveTriviaSyntax)directive).GetMatchingConditionalDirectives(cancellationToken).CastArray<SyntaxNode>();
1292public SyntaxTokenList GetModifiers(SyntaxNode? node)
1296public SyntaxNode? WithModifiers(SyntaxNode? node, SyntaxTokenList modifiers)
1299public SeparatedSyntaxList<SyntaxNode> GetVariablesOfLocalDeclarationStatement(SyntaxNode node)
1302public SyntaxNode? GetInitializerOfVariableDeclarator(SyntaxNode node)
1305public SyntaxNode? GetInitializerOfPropertyDeclaration(SyntaxNode node)
1308public SyntaxNode GetTypeOfVariableDeclarator(SyntaxNode node)
1311public SyntaxNode GetValueOfEqualsValueClause(SyntaxNode node)
1314public bool IsEqualsValueOfPropertyDeclaration(SyntaxNode? node)
1317public bool IsConversionExpression([NotNullWhen(true)] SyntaxNode? node)
1320public bool IsCastExpression([NotNullWhen(true)] SyntaxNode? node)
1323public void GetPartsOfCastExpression(SyntaxNode node, out SyntaxNode type, out SyntaxNode expression)
1340public SyntaxList<SyntaxNode> GetAttributeLists(SyntaxNode? node)
1343public bool IsParameterNameXmlElementSyntax([NotNullWhen(true)] SyntaxNode? node)
1346public SyntaxList<SyntaxNode> GetContentFromDocumentationCommentTriviaSyntax(SyntaxTrivia trivia)
1356public void GetPartsOfAnyIsTypeExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode type)
1363public void GetPartsOfIsPatternExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken isToken, out SyntaxNode right)
1371public bool IsAnyPattern([NotNullWhen(true)] SyntaxNode? node)
1374public SyntaxNode GetExpressionOfConstantPattern(SyntaxNode node)
1377public void GetPartsOfDeclarationPattern(SyntaxNode node, out SyntaxNode type, out SyntaxNode designation)
1384public void GetPartsOfRecursivePattern(SyntaxNode node, out SyntaxNode? type, out SyntaxNode? positionalPart, out SyntaxNode? propertyPart, out SyntaxNode? designation)
1400public bool IsBinaryPattern([NotNullWhen(true)] SyntaxNode? node)
1403public bool IsUnaryPattern([NotNullWhen(true)] SyntaxNode? node)
1406public void GetPartsOfParenthesizedPattern(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode pattern, out SyntaxToken closeParen)
1414public void GetPartsOfBinaryPattern(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1422public void GetPartsOfUnaryPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode pattern)
1429public void GetPartsOfRelationalPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode expression)
1436public SyntaxNode GetTypeOfTypePattern(SyntaxNode node)
1439public bool IsVerbatimInterpolatedStringExpression([NotNullWhen(true)] SyntaxNode? node)
1454public bool IsAnonymousFunctionExpression([NotNullWhen(true)] SyntaxNode? node)
1457public bool IsBaseNamespaceDeclaration([NotNullWhen(true)] SyntaxNode? node)
1460public bool IsBinaryExpression([NotNullWhen(true)] SyntaxNode? node)
1463public bool IsLiteralExpression([NotNullWhen(true)] SyntaxNode? node)
1466public bool IsMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
1469public bool IsMethodDeclaration([NotNullWhen(true)] SyntaxNode? node)
1472public bool IsSimpleName([NotNullWhen(true)] SyntaxNode? node)
1475public bool IsAnyName([NotNullWhen(true)] SyntaxNode? node)
1478public bool IsAnyType([NotNullWhen(true)] SyntaxNode? node)
1481public bool IsNamedMemberInitializer([NotNullWhen(true)] SyntaxNode? node)
1484public bool IsElementAccessInitializer([NotNullWhen(true)] SyntaxNode? node)
1487public bool IsObjectMemberInitializer([NotNullWhen(true)] SyntaxNode? node)
1490public bool IsObjectCollectionInitializer([NotNullWhen(true)] SyntaxNode? node)
1497public void GetPartsOfAliasQualifiedName(SyntaxNode node, out SyntaxNode alias, out SyntaxToken colonColonToken, out SyntaxNode name)
1505public void GetPartsOfArgumentList(SyntaxNode node, out SyntaxToken openParenToken, out SeparatedSyntaxList<SyntaxNode> arguments, out SyntaxToken closeParenToken)
1513public void GetPartsOfAttribute(SyntaxNode node, out SyntaxNode name, out SyntaxNode? argumentList)
1520public void GetPartsOfBaseObjectCreationExpression(SyntaxNode node, out SyntaxNode? argumentList, out SyntaxNode? initializer)
1527public void GetPartsOfBinaryExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1535public void GetPartsOfCompilationUnit(SyntaxNode node, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> attributeLists, out SyntaxList<SyntaxNode> members)
1544SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode whenNotNull)
1552public void GetPartsOfConditionalExpression(SyntaxNode node, out SyntaxNode condition, out SyntaxNode whenTrue, out SyntaxNode whenFalse)
1560public SyntaxNode GetExpressionOfForeachStatement(SyntaxNode statement)
1566public void GetPartsOfGenericName(SyntaxNode node, out SyntaxToken identifier, out SeparatedSyntaxList<SyntaxNode> typeArguments)
1573public void GetPartsOfInterpolationExpression(SyntaxNode node,
1574out SyntaxToken stringStartToken, out SyntaxList<SyntaxNode> contents, out SyntaxToken stringEndToken)
1582public void GetPartsOfInvocationExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode? argumentList)
1589public void GetPartsOfMemberAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode name)
1597public void GetPartsOfBaseNamespaceDeclaration(SyntaxNode node, out SyntaxNode name, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> members)
1605public void GetPartsOfNamedMemberInitializer(SyntaxNode node, out SyntaxNode identifier, out SyntaxNode expression)
1612public void GetPartsOfObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode type, out SyntaxNode? argumentList, out SyntaxNode? initializer)
1621public void GetPartsOfImplicitObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode argumentList, out SyntaxNode? initializer)
1629public void GetPartsOfParameter(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode? @default)
1637SyntaxNode node, out SyntaxToken openParen, out SyntaxNode expression, out SyntaxToken closeParen)
1645public void GetPartsOfPostfixUnaryExpression(SyntaxNode node, out SyntaxNode operand, out SyntaxToken operatorToken)
1652public void GetPartsOfPrefixUnaryExpression(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode operand)
1659public void GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1671public SyntaxNode GetArgumentListOfImplicitElementAccess(SyntaxNode node)
1674public SeparatedSyntaxList<SyntaxNode> GetAttributesOfAttributeList(SyntaxNode node)
1677public SyntaxNode GetExpressionOfAwaitExpression(SyntaxNode node)
1680public SyntaxNode GetExpressionOfThrowExpression(SyntaxNode node)
1683public SyntaxNode? GetExpressionOfThrowStatement(SyntaxNode node)
1686public SeparatedSyntaxList<SyntaxNode> GetInitializersOfObjectMemberInitializer(SyntaxNode node)
1689public SeparatedSyntaxList<SyntaxNode> GetExpressionsOfObjectCollectionInitializer(SyntaxNode node)
1692public SyntaxToken GetTokenOfLiteralExpression(SyntaxNode node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\SpeculationAnalyzer.cs (19)
71protected override SyntaxNode GetSemanticRootForSpeculation(ExpressionSyntax expression)
75SyntaxNode previousNode = null;
76SyntaxNode parentNodeToSpeculate = null;
77foreach (var node in expression.AncestorsAndSelf(ascendOutOfTrivia: false))
95public static bool CanSpeculateOnNode(SyntaxNode node)
104protected override void ValidateSpeculativeSemanticModel(SemanticModel speculativeSemanticModel, SyntaxNode nodeToSpeculate)
113protected override SemanticModel CreateSpeculativeSemanticModel(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel)
116public static SemanticModel CreateSpeculativeSemanticModelForNode(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel)
123public static SemanticModel CreateSpeculativeSemanticModelForNode(SyntaxNode nodeToSpeculate, SemanticModel semanticModel, int position, bool isInNamespaceOrTypeContext)
196SyntaxNode originalLambdaBody, replacedLambdaBody;
275SyntaxNode originalRoot)
295protected override bool ReplacementChangesSemanticsForNodeLanguageSpecific(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode previousOriginalNode, SyntaxNode previousReplacedNode)
580protected override bool ExpressionMightReferenceMember(SyntaxNode node)
662protected override bool IsParenthesizedExpression(SyntaxNode node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\CodeGeneration\CSharpCodeGenerationService.cs (24)
40public override CodeGenerationDestination GetDestination(SyntaxNode node)
43protected override IComparer<SyntaxNode> GetMemberComparer()
46protected override IList<bool>? GetAvailableInsertionIndices(SyntaxNode destination, CancellationToken cancellationToken)
311var finalMember = editor.GetChangedRoot();
341protected override TDeclarationNode AddMembers<TDeclarationNode>(TDeclarationNode destination, IEnumerable<SyntaxNode> members)
377var attributeSyntaxToRemove = attributeToRemove.ApplicationSyntaxReference.GetSyntax(cancellationToken);
383SyntaxNode attributeToRemove,
443SyntaxNode attributeToRemove,
479IEnumerable<SyntaxNode> statements,
531IEnumerable<SyntaxNode> statements,
533CancellationToken cancellationToken) where TDeclarationNode : SyntaxNode
570TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, BaseMethodDeclarationSyntax baseMethodDeclaration) where TDeclarationNode : SyntaxNode
590public static BlockSyntax AddStatementsToBlock(BlockSyntax block, IEnumerable<SyntaxNode> statements)
613TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, LocalFunctionStatementSyntax localFunctionStatement) where TDeclarationNode : SyntaxNode
634TDeclarationNode destinationMember, IEnumerable<SyntaxNode> statements, AnonymousFunctionExpressionSyntax anonymousFunctionSyntax) where TDeclarationNode : SyntaxNode
658public override SyntaxNode CreateEventDeclaration(
664public override SyntaxNode CreateFieldDeclaration(IFieldSymbol field, CodeGenerationDestination destination, CSharpCodeGenerationContextInfo info, CancellationToken cancellationToken)
672public override SyntaxNode? CreateMethodDeclaration(
721public override SyntaxNode CreatePropertyDeclaration(
728public override SyntaxNode CreateNamedTypeDeclaration(
734public override SyntaxNode CreateNamespaceDeclaration(
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpAddImportsService.cs (24)
34protected override ImmutableArray<SyntaxNode> GetGlobalImports(
35SemanticModel semanticModel, SyntaxNode? contextLocation, SyntaxGenerator generator, CancellationToken cancellationToken)
37using var result = TemporaryArray<SyntaxNode>.Empty;
58protected override SyntaxNode? GetAlias(UsingDirectiveSyntax usingOrAlias)
64protected override SyntaxNode Rewrite(
69SyntaxNode externContainer,
70SyntaxNode usingContainer,
71SyntaxNode staticUsingContainer,
72SyntaxNode aliasContainer,
74SyntaxNode root,
82var newRoot = rewriter.Visit(root);
86protected override SyntaxList<UsingDirectiveSyntax> GetUsingsAndAliases(SyntaxNode node)
94protected override SyntaxList<ExternAliasDirectiveSyntax> GetExterns(SyntaxNode node)
102protected override bool IsEquivalentImport(SyntaxNode a, SyntaxNode b)
110SyntaxNode externContainer,
111SyntaxNode usingContainer,
112SyntaxNode aliasContainer,
113SyntaxNode staticUsingContainer,
118public override SyntaxNode? Visit(SyntaxNode? node)
121public override SyntaxNode VisitNamespaceDeclaration(NamespaceDeclarationSyntax node)
124public override SyntaxNode? VisitFileScopedNamespaceDeclaration(FileScopedNamespaceDeclarationSyntax node)
144public override SyntaxNode VisitCompilationUnit(CompilationUnitSyntax node)
src\roslyn\src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpSyntaxGeneratorInternal.cs (95)
52public override SyntaxNode LocalDeclarationStatement(SyntaxNode? type, SyntaxToken name, SyntaxNode? initializer, bool isConst)
59public override SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer)
62public override SyntaxNode WithPropertyInitializer(SyntaxNode propertyDeclaration, SyntaxNode initializer)
70public override SyntaxNode EqualsValueClause(SyntaxNode value)
73public override SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value)
76internal static VariableDeclarationSyntax VariableDeclaration(SyntaxNode? type, SyntaxToken name, SyntaxNode? expression)
88public override SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull)
91public override SyntaxNode MemberBindingExpression(SyntaxNode name)
94public override SyntaxNode RefExpression(SyntaxNode expression)
97public override SyntaxNode AddParentheses(SyntaxNode expressionOrPattern, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
100internal static SyntaxNode Parenthesize(SyntaxNode expressionOrPattern, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
108public override SyntaxNode YieldReturnStatement(SyntaxNode expression)
117public override SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken)
120public override SyntaxNode InterpolatedStringText(SyntaxToken textToken)
130public override SyntaxNode Interpolation(SyntaxNode syntaxNode)
133public override SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment)
136public override SyntaxNode InterpolationFormatClause(string format)
141public override SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames)
190public override SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext)
193public override SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right)
201public override SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type)
209public override SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isKeyword, SyntaxNode pattern)
215public override SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right)
218public override SyntaxNode ConstantPattern(SyntaxNode expression)
221public override SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name)
226public override SyntaxNode LessThanRelationalPattern(SyntaxNode expression)
229public override SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression)
232public override SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression)
235public override SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression)
238public override SyntaxNode NotPattern(SyntaxNode pattern)
241public override SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right)
244public override SyntaxNode ParenthesizedPattern(SyntaxNode pattern)
247public override SyntaxNode TypePattern(SyntaxNode type)
250public override SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern)
255public override SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression)
258public override SyntaxNode DefaultExpression(SyntaxNode type)
261public override SyntaxNode DefaultExpression(ITypeSymbol type)
296public override SyntaxNode TypeExpression(ITypeSymbol typeSymbol, RefKind refKind)
307public override SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode simpleName)
339public override SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right)
342public static SyntaxNode CreateBinaryExpression(SyntaxKind syntaxKind, SyntaxNode left, SyntaxNode right)
345public override SyntaxNode IdentifierName(string identifier)
348public override SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression)
351internal static SyntaxNode ParenthesizeNonSimple(SyntaxNode expression)