src\Analyzers\Core\Analyzers\AddAccessibilityModifiers\IAddAccessibilityModifiersService.cs (1)
19SyntaxNode member,
src\Analyzers\Core\Analyzers\RemoveUnnecessarySuppressions\AbstractRemoveUnnecessaryPragmaSuppressionsDiagnosticAnalyzer.cs (21)
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,
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)
src\Analyzers\Core\Analyzers\SimplifyTypeNames\SimplifyTypeNamesDiagnosticAnalyzerBase.cs (8)
78internal abstract bool IsCandidate(SyntaxNode node);
80SemanticModel model, SyntaxNode node, TSimplifierOptions options,
110protected abstract bool IsIgnoredCodeBlock(SyntaxNode codeBlock);
111protected abstract ImmutableArray<Diagnostic> AnalyzeCodeBlock(CodeBlockAnalysisContext context, SyntaxNode root);
112protected abstract ImmutableArray<Diagnostic> AnalyzeSemanticModel(SemanticModelAnalysisContext context, SyntaxNode root, TextSpanMutableIntervalTree? codeBlockIntervalTree);
114public bool TrySimplify(SemanticModel model, SyntaxNode node, [NotNullWhen(true)] out Diagnostic? diagnostic, TSimplifierOptions options, AnalyzerOptions analyzerOptions, CancellationToken cancellationToken)
237var root = context.GetAnalysisRoot(findInTrivia: true);
293var root = context.GetAnalysisRoot(findInTrivia: true);
src\Analyzers\Core\Analyzers\UseAutoProperty\AbstractUseAutoPropertyAnalyzer.cs (26)
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,
535ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> ineligibleFieldUsageIfOutsideProperty,
536ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldReads,
537ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites,
622static bool NotWithinProperty(IEnumerable<SyntaxNode> nodes, TPropertyDeclaration propertyDeclaration)
624foreach (var node in nodes)
633static IEnumerable<SyntaxNode> NonConstructorLocations(IEnumerable<SyntaxNode> nodes)
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\Analyzers\Core\Analyzers\UseNullPropagation\AbstractUseNullPropagationDiagnosticAnalyzer.cs (12)
50where TExpressionSyntax : SyntaxNode
51where TStatementSyntax : SyntaxNode
124conditionalExpression, out var condition, out var whenTrue, out var whenFalse);
261syntaxFacts.GetPartsOfBinaryExpression(condition, out var conditionLeft, out var conditionRight);
281var expression = syntaxFacts.GetExpressionOfInvocationExpression(invocation);
282var nameNode = syntaxFacts.IsIdentifierName(expression)
374syntaxFacts.GetPartsOfCastExpression(node, out var type, out var expression);
402syntaxFacts.GetPartsOfAssignmentExpressionOrStatement(node, out var left, out _, out _);
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\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) &&
220SyntaxNode expression,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxNodeExtensions.cs (122)
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)
239var commonAncestor = FindCommonAncestor(node, commonAncestorsSet);
281static SyntaxNode? FindCommonAncestor(SyntaxNode node, HashSet<SyntaxNode> commonAncestorsSet)
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>();
441var original = (SyntaxNode?)retryAnnotations.GetAnnotations(currentNode).SingleOrDefault() ?? currentNode;
472if (rewritten != original || !nodeReplacements.TryGetValue(original, out var replaced))
598SyntaxNode root,
614this SyntaxNode root,
653this SyntaxNode root,
690params SyntaxTrivia[] trivia) where T : SyntaxNode
702SyntaxTriviaList trivia) where T : SyntaxNode
714IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
724params SyntaxTrivia[] trivia) where T : SyntaxNode
736SyntaxTriviaList trivia) where T : SyntaxNode
748IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
759IEnumerable<SyntaxTrivia> trailingTrivia) where T : SyntaxNode
784public static SyntaxNode FindNode(this SyntaxNode root, TextSpan? span, bool findInTrivia, bool getInnermostNodeForTie)
792public static SyntaxNode? GetParent(this SyntaxNode node, bool ascendOutOfTrivia)
794var parent = node.Parent;
806public static TNode? FirstAncestorOrSelfUntil<TNode>(this SyntaxNode? node, Func<SyntaxNode, bool> predicate)
807where TNode : SyntaxNode
809for (var current = node; current != null; current = current.GetParent(ascendOutOfTrivia: true))
826SyntaxNode root,
829where TDirectiveTriviaSyntax : SyntaxNode
835where TDirectiveTriviaSyntax : SyntaxNode
855SyntaxNode root,
943public static SyntaxTriviaList GetLeadingTriviaIncludingMissingTokens(this SyntaxNode node)
959public static SyntaxTriviaList GetTrailingTriviaIncludingMissingTokens(this SyntaxNode node)
978public static SyntaxNode WithLeadingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
983public static SyntaxNode WithTrailingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
988public static SyntaxNode WithTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
997public static ValueAncestorsAndSelfEnumerable ValueAncestorsAndSelf(this SyntaxNode syntaxNode, bool ascendOutOfTrivia = true)
1000public readonly struct ValueAncestorsAndSelfEnumerable(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1005public struct Enumerator(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1007public SyntaxNode Current { get; private set; } = null!;
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\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\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\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\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAlignTokensOperationAction.cs (1)
14SyntaxNode node,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAnchorIndentationOperationAction.cs (1)
14SyntaxNode node,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextIndentBlockOperationAction.cs (1)
14SyntaxNode node,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextSuppressOperationAction.cs (1)
14SyntaxNode node,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Helpers\RemoveUnnecessaryImports\AbstractUnnecessaryImportsProvider.cs (4)
18where TSyntaxNode : SyntaxNode
21SemanticModel model, Func<SyntaxNode, bool>? predicate, CancellationToken cancellationToken);
27SemanticModel model, TextSpan? span, Func<SyntaxNode, bool>? predicate, CancellationToken cancellationToken)
32var node = model.SyntaxTree.FindNode(span, findInTrivia: false, getInnermostNodeForTie: false, cancellationToken);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\HeaderFacts\AbstractHeaderFacts.cs (28)
18public abstract bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
19public abstract bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration);
20public abstract bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter);
21public abstract bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method);
22public abstract bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction);
23public abstract bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration);
24public abstract bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement);
25public abstract bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement);
26public abstract bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement);
28public bool IsOnHeader(SyntaxNode root, int position, SyntaxNode ownerOfHeader, SyntaxNodeOrToken lastTokenOrNodeOfHeader)
29=> IsOnHeader(root, position, ownerOfHeader, lastTokenOrNodeOfHeader, ImmutableArray<SyntaxNode>.Empty);
32SyntaxNode root,
34SyntaxNode ownerOfHeader,
37where THoleSyntax : SyntaxNode
66protected TNode? TryGetAncestorForLocation<TNode>(SyntaxNode root, int position) where TNode : SyntaxNode
84protected int GetStartOfNodeExcludingAttributes(SyntaxNode root, SyntaxNode node)
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\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFacts.cs (23)
51bool IsWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
58bool IsOnlyWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
59bool IsInOutContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
60bool IsInRefContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
61bool IsInInContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
63bool CanReplaceWithRValue(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? expression, CancellationToken cancellationToken);
72bool TryGetSpeculativeSemanticModel(SemanticModel oldSemanticModel, SyntaxNode oldNode, SyntaxNode newNode, [NotNullWhen(true)] out SemanticModel? speculativeModel);
79ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode forEachStatement);
80SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
82IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node);
84ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node);
86ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node);
90IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken);
92IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
93IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
95ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
96ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
98ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken);
100bool IsInsideNameOfExpression(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
107bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, [NotNullWhen(true)] INamedTypeSymbol? expressionType, CancellationToken cancellationToken);
109string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken);
120IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFacts.cs (301)
121bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node);
122bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node, PredefinedType type);
172bool IsUsingOrExternOrImport([NotNullWhen(true)] SyntaxNode? node);
173bool IsGlobalAssemblyAttribute([NotNullWhen(true)] SyntaxNode? node);
174bool IsGlobalModuleAttribute([NotNullWhen(true)] SyntaxNode? node);
175bool IsDeclaration([NotNullWhen(true)] SyntaxNode? node);
176bool IsTypeDeclaration(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 IsAnyInitializerExpression([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? creationExpression);
337bool IsDirective([NotNullWhen(true)] SyntaxNode? node);
338bool IsStatement([NotNullWhen(true)] SyntaxNode? node);
339bool IsExecutableStatement([NotNullWhen(true)] SyntaxNode? node);
340bool IsGlobalStatement([NotNullWhen(true)] SyntaxNode? node);
341SyntaxNode GetStatementOfGlobalStatement(SyntaxNode node);
343bool IsDeconstructionAssignment([NotNullWhen(true)] SyntaxNode? node);
344bool IsDeconstructionForEachStatement([NotNullWhen(true)] SyntaxNode? node);
345bool IsUsingLocalDeclarationStatement(SyntaxNode node);
359bool IsMethodBody([NotNullWhen(true)] SyntaxNode? node);
361bool IsDeclaratorOfLocalDeclarationStatement(SyntaxNode declarator, SyntaxNode localDeclarationStatement);
362SeparatedSyntaxList<SyntaxNode> GetVariablesOfLocalDeclarationStatement(SyntaxNode node);
363SyntaxNode? GetInitializerOfVariableDeclarator(SyntaxNode node);
364SyntaxNode? GetInitializerOfPropertyDeclaration(SyntaxNode node);
369bool IsElementAccessExpression([NotNullWhen(true)] SyntaxNode? node);
387bool IsInStaticContext(SyntaxNode node);
388bool IsUnsafeContext(SyntaxNode node);
390bool IsInNamespaceOrTypeContext([NotNullWhen(true)] SyntaxNode? node);
392bool IsBaseTypeList([NotNullWhen(true)] SyntaxNode? node);
394bool IsInConstantContext([NotNullWhen(true)] SyntaxNode? node);
395bool IsInConstructor(SyntaxNode node);
396bool IsMethodLevelMember([NotNullWhen(true)] SyntaxNode? node);
397bool IsTopLevelNodeWithMembers([NotNullWhen(true)] SyntaxNode? node);
400bool AreEquivalent(SyntaxNode? node1, SyntaxNode? node2);
402string GetDisplayName(SyntaxNode? node, DisplayNameOptions options, string? rootNamespace = null);
405SyntaxNode? GetContainingTypeDeclaration(SyntaxNode root, int position);
406SyntaxNode? GetContainingMemberDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
407SyntaxNode? GetContainingMethodDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
408SyntaxNode? GetContainingVariableDeclaratorOfFieldDeclaration(SyntaxNode? node);
412SyntaxNode? ConvertToSingleLine(SyntaxNode? node, bool useElasticTrivia = false);
415void AddTopLevelAndMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
417void AddTopLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
419void AddMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
421SyntaxList<SyntaxNode> GetMembersOfTypeDeclaration(SyntaxNode typeDeclaration);
427/// Given a <see cref="SyntaxNode"/>, return the <see cref="TextSpan"/> representing the span of the member body
433TextSpan GetMemberBodySpanForSpeculativeBinding(SyntaxNode node);
441SyntaxNode? TryGetBindableParent(SyntaxToken token);
444IEnumerable<SyntaxNode> GetConstructors(SyntaxNode? root, CancellationToken cancellationToken);
447/// Given a <see cref="SyntaxNode"/>, that represents and argument return the string representation of
451string GetNameForArgument(SyntaxNode? argument);
454/// Given a <see cref="SyntaxNode"/>, that represents an attribute argument return the string representation of
458string GetNameForAttributeArgument(SyntaxNode? argument);
460bool IsNameOfSubpattern([NotNullWhen(true)] SyntaxNode? node);
461bool IsPropertyPatternClause(SyntaxNode node);
463bool IsAnyPattern([NotNullWhen(true)] SyntaxNode? node);
464bool IsBinaryPattern([NotNullWhen(true)] SyntaxNode? node);
465bool IsUnaryPattern([NotNullWhen(true)] SyntaxNode? node);
467SyntaxNode GetExpressionOfConstantPattern(SyntaxNode node);
468SyntaxNode GetTypeOfTypePattern(SyntaxNode node);
470void GetPartsOfParenthesizedPattern(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode pattern, out SyntaxToken closeParen);
471void GetPartsOfBinaryPattern(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
472void GetPartsOfDeclarationPattern(SyntaxNode node, out SyntaxNode type, out SyntaxNode designation);
473void GetPartsOfRecursivePattern(SyntaxNode node, out SyntaxNode? type, out SyntaxNode? positionalPart, out SyntaxNode? propertyPart, out SyntaxNode? designation);
474void GetPartsOfRelationalPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode expression);
475void GetPartsOfUnaryPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode pattern);
479SyntaxTokenList GetModifiers(SyntaxNode? node);
483SyntaxNode? WithModifiers(SyntaxNode? node, SyntaxTokenList modifiers);
486Location GetDeconstructionReferenceLocation(SyntaxNode node);
491bool IsParameterNameXmlElementSyntax([NotNullWhen(true)] SyntaxNode? node);
493SyntaxList<SyntaxNode> GetContentFromDocumentationCommentTriviaSyntax(SyntaxTrivia trivia);
499bool IsAnonymousFunctionExpression([NotNullWhen(true)] SyntaxNode? node);
500bool IsBaseNamespaceDeclaration([NotNullWhen(true)] SyntaxNode? node);
501bool IsBinaryExpression([NotNullWhen(true)] SyntaxNode? node);
502bool IsLiteralExpression([NotNullWhen(true)] SyntaxNode? node);
503bool IsMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
504bool IsMethodDeclaration([NotNullWhen(true)] SyntaxNode? node);
505bool IsSimpleName([NotNullWhen(true)] SyntaxNode? node);
506bool IsAnyName([NotNullWhen(true)] SyntaxNode? node);
507bool IsAnyType([NotNullWhen(true)] SyntaxNode? node);
509bool IsNamedMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
510bool IsElementAccessInitializer([NotNullWhen(true)] SyntaxNode? node);
512bool IsObjectMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
513bool IsObjectCollectionInitializer([NotNullWhen(true)] SyntaxNode? node);
519void GetPartsOfAliasQualifiedName(SyntaxNode node, out SyntaxNode alias, out SyntaxToken colonColonToken, out SyntaxNode name);
520void GetPartsOfAnyIsTypeExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode type);
521void GetPartsOfArgumentList(SyntaxNode node, out SyntaxToken openParenToken, out SeparatedSyntaxList<SyntaxNode> arguments, out SyntaxToken closeParenToken);
522void GetPartsOfAttribute(SyntaxNode node, out SyntaxNode name, out SyntaxNode? argumentList);
523void GetPartsOfBaseNamespaceDeclaration(SyntaxNode node, out SyntaxNode name, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> members);
524void GetPartsOfBaseObjectCreationExpression(SyntaxNode node, out SyntaxNode? argumentList, out SyntaxNode? initializer);
525void GetPartsOfBinaryExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
526void GetPartsOfCastExpression(SyntaxNode node, out SyntaxNode type, out SyntaxNode expression);
527void GetPartsOfCompilationUnit(SyntaxNode node, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> attributeLists, out SyntaxList<SyntaxNode> members);
528void GetPartsOfConditionalAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode whenNotNull);
529void GetPartsOfConditionalExpression(SyntaxNode node, out SyntaxNode condition, out SyntaxNode whenTrue, out SyntaxNode whenFalse);
530void GetPartsOfGenericName(SyntaxNode node, out SyntaxToken identifier, out SeparatedSyntaxList<SyntaxNode> typeArguments);
531void GetPartsOfInterpolationExpression(SyntaxNode node, out SyntaxToken stringStartToken, out SyntaxList<SyntaxNode> contents, out SyntaxToken stringEndToken);
532void GetPartsOfInvocationExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode? argumentList);
533void GetPartsOfIsPatternExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken isToken, out SyntaxNode right);
534void GetPartsOfMemberAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode name);
535void GetPartsOfNamedMemberInitializer(SyntaxNode node, out SyntaxNode name, out SyntaxNode expression);
536void GetPartsOfObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode type, out SyntaxNode? argumentList, out SyntaxNode? initializer);
537void GetPartsOfImplicitObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode argumentList, out SyntaxNode? initializer);
538void GetPartsOfParameter(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode? @default);
539void GetPartsOfParenthesizedExpression(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode expression, out SyntaxToken closeParen);
540void GetPartsOfPrefixUnaryExpression(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode operand);
541void GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken dotToken, out SyntaxNode right);
542void GetPartsOfUsingAliasDirective(SyntaxNode node, out SyntaxToken globalKeyword, out SyntaxToken alias, out SyntaxNode name);
552SyntaxNode GetArgumentListOfImplicitElementAccess(SyntaxNode node);
554SyntaxNode GetExpressionOfAwaitExpression(SyntaxNode node);
555SyntaxNode GetExpressionOfExpressionStatement(SyntaxNode node);
556SyntaxNode GetExpressionOfRefExpression(SyntaxNode node);
557SyntaxNode? GetExpressionOfReturnStatement(SyntaxNode node);
558SyntaxNode GetExpressionOfThrowExpression(SyntaxNode node);
559SyntaxNode? GetExpressionOfThrowStatement(SyntaxNode node);
561bool IsEqualsValueOfPropertyDeclaration([NotNullWhen(true)] SyntaxNode? node);
562SyntaxNode GetValueOfEqualsValueClause(SyntaxNode node);
564SeparatedSyntaxList<SyntaxNode> GetInitializersOfObjectMemberInitializer(SyntaxNode node);
565SeparatedSyntaxList<SyntaxNode> GetExpressionsOfObjectCollectionInitializer(SyntaxNode node);
567SyntaxToken GetTokenOfLiteralExpression(SyntaxNode node);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFactsExtensions.cs (205)
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 GetOperandOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
584syntaxFacts.GetPartsOfPrefixUnaryExpression(node, out _, out var operand);
588public static SyntaxToken GetOperatorTokenOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
594public static SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
600public static SyntaxNode GetTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
602syntaxFacts.GetPartsOfObjectCreationExpression(node, out _, out var type, out _, out _);
610public static bool IsExpressionOfAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
612var parent = node?.Parent;
619public static bool IsExpressionOfInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
621var parent = node?.Parent;
625syntaxFacts.GetPartsOfInvocationExpression(parent, out var expression, out _);
629public static bool IsExpressionOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
631var parent = node?.Parent;
635syntaxFacts.GetPartsOfMemberAccessExpression(parent, out var expression, out _);
639public static bool IsNameOfAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
644syntaxFacts.GetPartsOfAttribute(node.Parent, out var name, out _);
648public static bool IsRightOfQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
650var parent = node?.Parent;
654syntaxFacts.GetPartsOfQualifiedName(parent, out _, out _, out var right);
658public static bool IsRightOfAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
660var parent = node?.Parent;
664syntaxFacts.GetPartsOfAliasQualifiedName(parent, out _, out _, out var right);
668public static bool IsTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
670var parent = node?.Parent;
674syntaxFacts.GetPartsOfObjectCreationExpression(parent, out _, out var type, out _, out _);
705public static bool IsSkippedTokensTrivia(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
745public static bool IsAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
748public static bool IsGenericName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
751public static bool IsIdentifierName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
754public static bool IsQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
761public static bool IsTupleType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
768public static bool IsCharacterLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
771public static bool IsDefaultLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
774public static bool IsFalseLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
777public static bool IsNumericLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
780public static bool IsNullLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
783public static bool IsStringLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
786public static bool IsTrueLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
793public static bool IsArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
796public static bool IsAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
799public static bool IsBaseExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
802public static bool IsConditionalExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
805public static bool IsConditionalAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
808public static bool IsFieldExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
811public static bool IsImplicitArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
814public static bool IsImplicitObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
817public static bool IsIndexExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
820public static bool IsInterpolatedStringExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
823public static bool IsInterpolation(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
826public static bool IsInterpolatedStringText(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
829public static bool IsInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
832public static bool IsIsTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
835public static bool IsIsNotTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
838public static bool IsIsPatternExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
841public static bool IsLogicalAndExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
844public static bool IsLogicalOrExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
847public static bool IsLogicalNotExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
850public static bool IsObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
853public static bool IsParenthesizedExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
856public static bool IsQueryExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
859public static bool IsRangeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
862public static bool IsRefExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
865public static bool IsSimpleMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
868public static bool IsThisExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
871public static bool IsThrowExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
874public static bool IsTupleExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
877public static bool ContainsGlobalStatement(this ISyntaxFacts syntaxFacts, SyntaxNode node)
884public static bool IsAndPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
887public static bool IsConstantPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
890public static bool IsDeclarationPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
893public static bool IsListPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
896public static bool IsNotPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
899public static bool IsOrPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
902public static bool IsParenthesizedPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
905public static bool IsRecursivePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
908public static bool IsRelationalPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
911public static bool IsTypePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
914public static bool IsVarPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
921public static bool IsExpressionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
924public static bool IsForEachStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
927public static bool IsForStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
930public static bool IsIfStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
933public static bool IsLocalDeclarationStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
936public static bool IsLocalFunctionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
939public static bool IsLockStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
942public static bool IsReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
945public static bool IsThrowStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
948public static bool IsUsingStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
951public static bool IsWhileStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
954public static bool IsYieldReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
961public static bool IsAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
964public static bool IsClassDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
967public static bool IsConstructorDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
970public static bool IsEnumDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
973public static bool IsGlobalAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
976public static bool IsInterfaceDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
979public static bool IsParameter(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
982public static bool IsTypeConstraint(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
985public static bool IsVariableDeclarator(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
988public static bool IsFieldDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
991public static bool IsPropertyDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
994public static bool IsStructDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
997public static bool IsTypeArgumentList(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1004public static bool IsElseClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1006public static bool IsEqualsValueClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1013public static bool IsImplicitElementAccess(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1016public static bool IsIndexerMemberCref(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1019public static bool IsPrimaryConstructorBaseType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (39)
35where TExpressionSyntax : SyntaxNode
37where TAttributeSyntax : SyntaxNode
38where TArgumentSyntax : SyntaxNode
39where TForEachStatementSyntax : SyntaxNode
40where TThrowStatementSyntax : SyntaxNode
49private SyntaxNode? _lazySemanticRootOfOriginalExpression;
51private SyntaxNode? _lazySemanticRootOfReplacedExpression;
97protected abstract SyntaxNode GetSemanticRootForSpeculation(TExpressionSyntax expression);
98protected abstract SemanticModel CreateSpeculativeSemanticModel(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel);
101protected abstract bool ExpressionMightReferenceMember([NotNullWhen(true)] SyntaxNode? node);
116protected abstract bool ReplacementChangesSemanticsForNodeLanguageSpecific(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode);
118protected abstract bool IsParenthesizedExpression([NotNullWhen(true)] SyntaxNode? node);
130SyntaxNode ISpeculationAnalyzer.OriginalExpression => OriginalExpression;
137public SyntaxNode SemanticRootOfOriginalExpression
170SyntaxNode ISpeculationAnalyzer.ReplacedExpression => ReplacedExpression;
177public SyntaxNode SemanticRootOfReplacedExpression
200protected virtual SyntaxNode GetSemanticRootOfReplacedExpression(SyntaxNode semanticRootOfOriginalExpression, TExpressionSyntax annotatedReplacedExpression)
223protected abstract void ValidateSpeculativeSemanticModel(SemanticModel speculativeSemanticModel, SyntaxNode nodeToSpeculate);
230var nodeToSpeculate = this.SemanticRootOfReplacedExpression;
316protected bool SymbolsAreCompatible(SyntaxNode originalNode, SyntaxNode newNode, bool requireNonNullSymbols = false)
518protected bool ReplacementChangesSemantics(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode originalRoot, bool skipVerificationForCurrentNode)
526SyntaxNode? previousOriginalNode = null, previousReplacedNode = null;
570private bool ReplacementChangesSemanticsForNode(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode)
687var originalExpressionOfMemberAccess = syntaxFacts.GetExpressionOfMemberAccessExpression(originalExpression);
730private bool ReplacementBreaksSystemObjectMethodResolution(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, [NotNullWhen(true)] SyntaxNode? previousOriginalNode, [NotNullWhen(true)] SyntaxNode? previousReplacedNode)
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\Analyzers\Core\CodeFixes\AddExplicitCast\AbstractAddExplicitCastCodeFixProvider.cs (13)
22where TExpressionSyntax : SyntaxNode
31protected abstract void GetPartsOfCastOrConversionExpression(TExpressionSyntax expression, out SyntaxNode type, out TExpressionSyntax castedExpression);
49Document document, SemanticModel semanticModel, SyntaxNode root,
61Document document, SemanticModel semanticModel, SyntaxNode root,
72var root = await document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
116private (SyntaxNode finalTarget, SyntaxNode finalReplacement) ApplyFix(
136(SyntaxNode finalTarget, SyntaxNode finalReplacement) ApplyFixWorker()
141GetPartsOfCastOrConversionExpression(targetNode, out var castTypeNode, out var castedExpression);
161protected virtual (SyntaxNode finalTarget, SyntaxNode finalReplacement) Cast(SemanticModel semanticModel, TExpressionSyntax targetNode, ITypeSymbol conversionType)
218var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
src\Analyzers\Core\CodeFixes\ConvertToAsync\AbstractConvertToAsyncCodeFixProvider.cs (9)
19protected abstract Task<string> GetDescriptionAsync(Diagnostic diagnostic, SyntaxNode node, SemanticModel semanticModel, CancellationToken cancellationToken);
20protected abstract Task<(SyntaxTree syntaxTree, SyntaxNode root)?> GetRootInOtherSyntaxTreeAsync(SyntaxNode node, SemanticModel semanticModel, Diagnostic diagnostic, CancellationToken cancellationToken);
24var root = await context.Document.GetRequiredSyntaxRootAsync(context.CancellationToken).ConfigureAwait(false);
25if (!TryGetNode(root, context.Span, out var node))
39SyntaxNode root, TextSpan span, [NotNullWhen(true)] out SyntaxNode? node)
42var ancestors = root.FindToken(span.Start).GetAncestors<SyntaxNode>();
53SyntaxNode node, Document document, Diagnostic diagnostic, CancellationToken cancellationToken)
src\Analyzers\Core\CodeFixes\FileHeaders\AbstractFileHeaderCodeFixProvider.cs (8)
48private async Task<SyntaxNode> GetTransformedSyntaxRootAsync(Document document, CancellationToken cancellationToken)
57internal static async Task<SyntaxNode> GetTransformedSyntaxRootAsync(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, Document document, string? fileHeaderTemplate, CancellationToken cancellationToken)
60var root = await tree.GetRootAsync(cancellationToken).ConfigureAwait(false);
80SyntaxNode newSyntaxRoot;
93private static SyntaxNode ReplaceHeader(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, SyntaxNode root, string expectedFileHeader)
175private static SyntaxNode AddHeader(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, SyntaxNode root, string expectedFileHeader)
src\Analyzers\Core\CodeFixes\GenerateConstructor\AbstractGenerateConstructorService.cs (9)
26where TExpressionSyntax : SyntaxNode
29protected abstract bool IsSimpleNameGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
30protected abstract bool IsConstructorInitializerGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
31protected abstract bool IsImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
33protected abstract bool TryInitializeImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
34protected abstract bool TryInitializeSimpleNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
35protected abstract bool TryInitializeConstructorInitializerGeneration(SemanticDocument document, SyntaxNode constructorInitializer, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
36protected abstract bool TryInitializeSimpleAttributeNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
79public async Task<ImmutableArray<CodeAction>> GenerateConstructorAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
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\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\Analyzers\Core\CodeFixes\ImplementAbstractClass\ImplementAbstractClassData.cs (10)
33Document document, ImplementTypeOptions options, SyntaxNode classNode, SyntaxToken classIdentifier,
39private readonly SyntaxNode _classNode = classNode;
47Document document, SyntaxNode classNode, SyntaxToken classIdentifier, CancellationToken cancellationToken)
79Document document, SyntaxNode classNode, SyntaxToken classIdentifier, CancellationToken cancellationToken)
181var body = throughMember == null
249Func<SyntaxNode, SyntaxNode, SyntaxNode> createAddOrRemoveHandler)
255var throughExpression = generator.CreateDelegateThroughExpression(@event, throughMember);
256var statement = generator.ExpressionStatement(createAddOrRemoveHandler(
src\Analyzers\Core\CodeFixes\ImplementInterface\AbstractImplementInterfaceService.cs (10)
32protected abstract bool TryInitializeState(Document document, SemanticModel model, SyntaxNode interfaceNode, CancellationToken cancellationToken,
33[NotNullWhen(true)] out SyntaxNode? classOrStructDecl,
38protected abstract SyntaxNode AddCommentInsideIfStatement(SyntaxNode ifDisposingStatement, SyntaxTriviaList trivia);
39protected abstract SyntaxNode CreateFinalizer(SyntaxGenerator generator, INamedTypeSymbol classType, string disposeMethodDisplayString);
42Document document, ImplementTypeOptions options, SyntaxNode node, CancellationToken cancellationToken)
61public async Task<ImplementInterfaceInfo?> AnalyzeAsync(Document document, SyntaxNode interfaceType, CancellationToken cancellationToken)
67protected TNode AddComment<TNode>(string comment, TNode node) where TNode : SyntaxNode
70protected TNode AddComments<TNode>(string comment1, string comment2, TNode node) where TNode : SyntaxNode
73protected TNode AddComments<TNode>(string[] comments, TNode node) where TNode : SyntaxNode
src\Analyzers\Core\CodeFixes\MakeMethodAsynchronous\AbstractMakeMethodAsynchronousCodeFixProvider.cs (14)
20protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
27protected abstract SyntaxNode AddAsyncTokenAndFixReturnType(
28bool keepVoid, IMethodSymbol methodSymbol, SyntaxNode node, KnownTaskTypes knownTypes, CancellationToken cancellationToken);
41var node = GetContainingFunction(diagnostic, cancellationToken);
86private static IMethodSymbol? GetMethodSymbol(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
108var node = GetContainingFunction(diagnostic, cancellationToken);
146private SyntaxNode? GetContainingFunction(Diagnostic diagnostic, CancellationToken cancellationToken)
156SyntaxNode node,
172var newRoot = await newDocument.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
173if (syntaxPath.TryResolve(newRoot, out SyntaxNode? newNode))
188SyntaxNode node,
191var newNode = AddAsyncTokenAndFixReturnType(keepVoid, methodSymbol, node, knownTypes, cancellationToken);
193var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
194var newRoot = root.ReplaceNode(node, newNode);
src\Analyzers\Core\CodeFixes\MakeMethodSynchronous\AbstractMakeMethodSynchronousCodeFixProvider.cs (15)
24protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
25protected abstract SyntaxNode RemoveAsyncTokenAndFixReturnType(IMethodSymbol methodSymbol, SyntaxNode node, KnownTaskTypes knownTypes);
52Document document, SyntaxNode node, CancellationToken cancellationToken)
73private async Task<Solution> RenameThenRemoveAsyncTokenAsync(Document document, SyntaxNode node, IMethodSymbol methodSymbol, CancellationToken cancellationToken)
85var newRoot = await newDocument.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
86if (syntaxPath.TryResolve(newRoot, out SyntaxNode? newNode))
97Document document, IMethodSymbol methodSymbol, SyntaxNode node, CancellationToken cancellationToken)
103var newNode = RemoveAsyncTokenAndFixReturnType(methodSymbol, node, knownTypes)
106var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
107var newRoot = root.ReplaceNode(node, newNode);
122var syntaxRoot = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
123var methodDeclaration = syntaxRoot.GetAnnotatedNodes(annotation).FirstOrDefault();
175var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
182var newRoot = editor.GetChangedRoot();
src\Analyzers\Core\CodeFixes\RemoveAsyncModifier\AbstractRemoveAsyncModifierCodeFixProvider.cs (35)
22where TReturnStatementSyntax : SyntaxNode
23where TExpressionSyntax : SyntaxNode
25protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
26protected abstract SyntaxNode RemoveAsyncModifier(SyntaxGenerator generator, SyntaxNode methodLikeNode);
27protected abstract SyntaxNode? ConvertToBlockBody(SyntaxNode node, TExpressionSyntax expressionBody);
104private static IMethodSymbol? GetMethodSymbol(SyntaxNode node, SemanticModel semanticModel, CancellationToken cancellationToken)
117private SyntaxNode RemoveAsyncModifier(
121SyntaxNode node,
128var expression = generator.GetExpression(node);
134var blockBodiedNode = ConvertToBlockBody(node, expressionBody);
146var newExpressionBody = WrapExpressionWithTaskFromResult(generator, expressionBody, returnType, knownTypes);
166private static ControlFlowAnalysis? GetControlFlowAnalysis(SyntaxGenerator generator, SemanticModel semanticModel, SyntaxNode node)
177private static SyntaxNode AddReturnStatement(SyntaxGenerator generator, SyntaxNode node)
180private SyntaxNode ChangeReturnStatements(
184SyntaxNode node,
200var returnTaskCompletedTask = GetReturnTaskCompletedTaskStatement(generator, returnType, knownTypes);
206var newExpression = WrapExpressionWithTaskFromResult(generator, returnExpression, returnType, knownTypes);
214private static SyntaxNode GetReturnTaskCompletedTaskStatement(SyntaxGenerator generator, ITypeSymbol returnType, KnownTaskTypes knownTypes)
216SyntaxNode invocation;
219var taskTypeExpression = TypeExpressionForStaticMemberAccess(generator, knownTypes.TaskType);
227var statement = generator.ReturnStatement(invocation);
231private static SyntaxNode WrapExpressionWithTaskFromResult(SyntaxGenerator generator, SyntaxNode expression, ITypeSymbol returnType, KnownTaskTypes knownTypes)
235var taskTypeExpression = TypeExpressionForStaticMemberAccess(generator, knownTypes.TaskType!);
237var memberName = generator.GenericName(nameof(Task.FromResult), unwrappedReturnType);
238var taskFromResult = generator.MemberAccessExpression(taskTypeExpression, memberName);
249private static SyntaxNode TypeExpressionForStaticMemberAccess(SyntaxGenerator generator, INamedTypeSymbol typeSymbol)
254var typeExpression = generator.TypeExpression(typeSymbol);
258static SyntaxNode QualifiedNameToMemberAccess(int qualifiedNameSyntaxKind, int memberAccessExpressionSyntaxKind, SyntaxNode expression, SyntaxGenerator generator)
262var left = QualifiedNameToMemberAccess(qualifiedNameSyntaxKind, memberAccessExpressionSyntaxKind, expression.ChildNodes().First(), generator);
263var right = expression.ChildNodes().Last();
src\Analyzers\Core\CodeFixes\RemoveUnusedParametersAndValues\AbstractRemoveUnusedValuesCodeFixProvider.cs (73)
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);
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,
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);
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,
844var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
845var rootWithTrackedNodes = root.TrackNodes(originalDeclStatementsToMoveOrRemove);
903var rootWithRemovedDeclaration = root.RemoveNode(newDecl, SyntaxGenerator.DefaultRemoveOptions | SyntaxRemoveOptions.KeepLeadingTrivia);
930SyntaxNode memberDeclaration,
935private readonly SyntaxNode _memberDeclaration = memberDeclaration;
941public SyntaxToken GenerateUniqueNameAtSpanStart(SyntaxNode node)
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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\AbstractCodeGenerationService_FindDeclaration.cs (21)
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);
31protected static SyntaxToken GetEndToken(SyntaxNode node)
47protected static TextSpan GetSpan(SyntaxNode node)
55public bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken)
59SyntaxNode? destination,
131public SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(
141private (SyntaxNode? declaration, IList<bool>? availableIndices) FindMostRelevantDeclaration(
152using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var ancestors);
154var fallbackDeclaration = (SyntaxNode?)null;
158ancestors.AddRange(token.GetAncestors<SyntaxNode>());
163if (TryAddToRelatedDeclaration(declarations.Where(d => d is not ICompilationUnitSyntax), checkGeneratedCode: false, out var declaration1, out var availableIndices1) ||
171if (TryAddToWorker(declarations, checkGeneratedCode: true, out var declaration2, out var availableIndices2, predicate: node => true))
177IEnumerable<SyntaxNode> declarations,
179[NotNullWhen(true)] out SyntaxNode? declaration,
217IEnumerable<SyntaxNode> declarations,
219[NotNullWhen(true)] out SyntaxNode? declaration,
221Func<SyntaxNode, bool> predicate)
223foreach (var decl in declarations)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (18)
60SyntaxNode? initializer = null)
86bool isIndexer = false, SyntaxNode? initializer = null)
114SyntaxNode? initializer = null)
130ImmutableArray<SyntaxNode> statements = default,
131ImmutableArray<SyntaxNode> baseConstructorArguments = default,
132ImmutableArray<SyntaxNode> thisConstructorArguments = default,
145ImmutableArray<SyntaxNode> statements = default)
163ImmutableArray<SyntaxNode> statements = default,
164ImmutableArray<SyntaxNode> handlesExpressions = default,
184ImmutableArray<SyntaxNode> statements = default,
185ImmutableArray<SyntaxNode> handlesExpressions = default,
203ImmutableArray<SyntaxNode> statements = default,
229ImmutableArray<SyntaxNode> statements = default,
257ImmutableArray<SyntaxNode> statements = default,
366ImmutableArray<SyntaxNode> statements = default)
390ImmutableArray<SyntaxNode> statements)
523ImmutableArray<SyntaxNode> statements = default,
556SyntaxNode? initializer = null)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\ICodeGenerationService.cs (26)
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;
183bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken);
191SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(Solution solution, INamespaceOrTypeSymbol namespaceOrType, Location? location, CancellationToken cancellationToken);
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeRefactorings\AbstractRefactoringHelpersService.cs (47)
18where TExpressionSyntax : SyntaxNode
19where TArgumentSyntax : SyntaxNode
20where TExpressionStatementSyntax : SyntaxNode
24public abstract bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
26private static void AddNode<TSyntaxNode>(bool allowEmptyNodes, ref TemporaryArray<TSyntaxNode> result, TSyntaxNode node) where TSyntaxNode : SyntaxNode
35ParsedDocument document, TextSpan selectionRaw, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
42var root = document.Root;
137private static bool IsWantedTypeExpressionLike<TSyntaxNode>() where TSyntaxNode : SyntaxNode
157SyntaxNode root,
268CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
275var leftNode = tokenToLeft.Parent;
302SyntaxNode root,
307CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
313var rightNode = tokenToRightOrIn.Parent;
347SyntaxNode root,
352CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
354var selectionNode = root.FindNode(selectionTrimmed, getInnermostNodeForTie: true);
355var prevNode = selectionNode;
393protected virtual IEnumerable<SyntaxNode> ExtractNodesSimple(SyntaxNode? node, ISyntaxFactsService syntaxFacts)
411var localDeclarationStatement = syntaxFacts.IsLocalDeclarationStatement(node) ? node : node.Parent!;
480protected virtual IEnumerable<SyntaxNode> ExtractNodesInHeader(SyntaxNode root, int location, IHeaderFactsService headerFacts)
520CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
524var root = document.Root;
559IEnumerable<SyntaxNode> nodes, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
561foreach (var node in nodes)
573public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
576public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
579public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
582public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
585public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
588public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
591public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
594public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
597public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Editing\ImportAdderService.cs (20)
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));
172IEnumerable<SyntaxNode> annotatedNodes,
178using var _ = PooledDictionary<INamespaceSymbol, SyntaxNode>.GetInstance(out var importToSyntax);
188SyntaxNode? first = null, last = null;
190foreach (var annotatedNode in annotatedNodes)
218var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
236var importContainer = addImportsService.GetImportContainer(root, context, importToSyntax.First().Value, options);
257private static bool IsInsideNamespace(SyntaxNode node, INamespaceSymbol symbol, SemanticModel model, CancellationToken cancellationToken)
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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions.cs (46)
29public static SyntaxNode CreateThrowNotImplementedStatement(
36public static SyntaxNode CreateThrowNotImplementedExpression(
43private static SyntaxNode CreateNewNotImplementedException(SyntaxGenerator codeDefinitionFactory, Compilation compilation)
45var notImplementedExceptionTypeSyntax = compilation.NotImplementedExceptionType() is INamedTypeSymbol symbol
54public static ImmutableArray<SyntaxNode> CreateThrowNotImplementedStatementBlock(
58public static ImmutableArray<SyntaxNode> CreateArguments(
65private static SyntaxNode CreateArgument(
72public static SyntaxNode GetDefaultEqualityComparer(
94public static SyntaxNode IsPatternExpression(this SyntaxGeneratorInternal generator, SyntaxNode expression, SyntaxNode pattern)
100public static SyntaxNode GenerateDelegateThroughMemberStatement(
103var through = generator.MemberAccessExpression(
109var invocationExpression = generator.InvocationExpression(through, generator.CreateArguments(method.Parameters));
115public static SyntaxNode CreateDelegateThroughExpression(
118var name = generator.IdentifierName(throughMember.Name);
119var through = throughMember.IsStatic
165var explicitImplementationCast = generator.CastExpression(
180static SyntaxNode GenerateContainerName(SyntaxGenerator factory, ISymbol throughMember)
189public static ImmutableArray<SyntaxNode> GetGetAccessorStatements(
199var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
200var expression = property.IsIndexer
228public static ImmutableArray<SyntaxNode> GetSetAccessorStatements(
238var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
239var expression = property.IsIndexer
341public static ImmutableArray<SyntaxNode> CreateAssignmentStatements(
351using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var nullCheckStatements);
352using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var assignStatements);
364var assignExpression = factory.AssignmentStatement(
367var statement = factory.ExpressionStatement(assignExpression);
377var fieldAccess = factory.MemberAccessExpression(factory.ThisExpression(), factory.IdentifierName(fieldName))
397SyntaxNode fieldAccess,
400ArrayBuilder<SyntaxNode> nullCheckStatements,
401ArrayBuilder<SyntaxNode> assignStatements)
432public static SyntaxNode CreateAssignWithNullCheckStatement(
433this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter, SyntaxNode fieldAccess)
442public static SyntaxNode CreateThrowArgumentNullExpression(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
445private static SyntaxNode CreateNewArgumentNullException(SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
454public static SyntaxNode CreateNullCheckAndThrowStatement(
460var condition = factory.CreateNullCheckExpression(generatorInternal, semanticModel, parameter.Name);
461var throwStatement = factory.CreateThrowArgumentNullExceptionStatement(semanticModel.Compilation, parameter);
466public static SyntaxNode CreateNullCheckExpression(
469var identifier = factory.IdentifierName(identifierName);
470var nullExpr = factory.NullLiteralExpression();
471var condition = generatorInternal.SupportsPatterns(semanticModel.SyntaxTree.Options)
477public static SyntaxNode CreateThrowArgumentNullExceptionStatement(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_CreateEqualsMethod.cs (21)
49public static IMethodSymbol CreateEqualsMethod(this Compilation compilation, ImmutableArray<SyntaxNode> statements)
109private static ImmutableArray<SyntaxNode> CreateEqualsMethodStatements(
127using var statements = TemporaryArray<SyntaxNode>.Empty;
136var localNameExpression = factory.IdentifierName(localName);
137var objNameExpression = factory.IdentifierName(ObjName);
141using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
159var ifStatement = factory.IfStatement(
170var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
182var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
220ImmutableArray<ISymbol> members, SyntaxNode localNameExpression,
221ArrayBuilder<SyntaxNode> expressions)
231var symbolNameExpression = factory.IdentifierName(member.Name);
232var thisSymbol = factory.MemberAccessExpression(factory.ThisExpression(), symbolNameExpression)
234var otherSymbol = factory.MemberAccessExpression(localNameExpression, symbolNameExpression);
271private static ImmutableArray<SyntaxNode> CreateIEquatableEqualsMethodStatements(
279var statements = ArrayBuilder<SyntaxNode>.GetInstance();
281var otherNameExpression = factory.IdentifierName(OtherName);
285using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
323SyntaxGenerator factory, SyntaxGeneratorInternal generatorInternal, Compilation compilation, ParseOptions parseOptions, SyntaxNode otherNameExpression, ArrayBuilder<SyntaxNode> expressions)
325var nullLiteral = factory.NullLiteralExpression();
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_Negate.cs (34)
33public static SyntaxNode Negate(
36SyntaxNode expression,
43public static SyntaxNode Negate(
46SyntaxNode expressionOrPattern,
54public static SyntaxNode Negate(
57SyntaxNode expressionOrPattern,
138private static SyntaxNode GetNegationOfBinaryExpression(
139SyntaxNode expressionNode,
192SyntaxNode innerPattern;
201var typeExpression = generatorInternal.Type(isTypeOperation.TypeOperand, typeContext: false);
230private static SyntaxNode GetNegationOfBinaryPattern(
231SyntaxNode pattern,
245var newLeft = generator.Negate(generatorInternal, left, semanticModel, cancellationToken);
246var newRight = generator.Negate(generatorInternal, right, semanticModel, cancellationToken);
260private static SyntaxNode GetNegationOfIsPatternExpression(SyntaxNode isExpression, SyntaxGenerator generator, SyntaxGeneratorInternal generatorInternal, SemanticModel semanticModel, CancellationToken cancellationToken)
267SyntaxNode? negatedPattern = null;
302private static SyntaxNode GetNegationOfRelationalPattern(
303SyntaxNode expressionNode,
329private static bool IsLegalPattern(ISyntaxFacts syntaxFacts, SyntaxNode pattern, bool designatorsLegal)
378private static SyntaxNode NegateRelational(
381SyntaxNode leftOperand,
383SyntaxNode rightOperand)
469private static SyntaxNode GetNegationOfLiteralExpression(
470SyntaxNode expression,
475SyntaxNode newLiteralExpression;
493private static SyntaxNode GetNegationOfConstantPattern(
494SyntaxNode pattern,
518private static SyntaxNode GetNegationOfLogicalNotExpression(
519SyntaxNode expression,
529private static SyntaxNode GetNegationOfUnaryPattern(
530SyntaxNode pattern,
546private static SyntaxNode GetNegationOfNotPattern(
547SyntaxNode pattern,
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\AbstractAddImportsService.cs (62)
19where TCompilationUnitSyntax : SyntaxNode
20where TNamespaceDeclarationSyntax : SyntaxNode
21where TUsingOrAliasSyntax : SyntaxNode
22where TExternSyntax : SyntaxNode
29protected abstract SyntaxNode? GetAlias(TUsingOrAliasSyntax usingOrAlias);
30protected abstract ImmutableArray<SyntaxNode> GetGlobalImports(Compilation compilation, SyntaxGenerator generator);
31protected abstract SyntaxList<TUsingOrAliasSyntax> GetUsingsAndAliases(SyntaxNode node);
32protected abstract SyntaxList<TExternSyntax> GetExterns(SyntaxNode node);
47private bool HasAliases(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsAlias);
48private bool HasUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsSimpleUsing);
49private bool HasStaticUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsStaticUsing);
50private bool HasExterns(SyntaxNode node) => GetExterns(node).Any();
51private bool HasAnyImports(SyntaxNode node) => GetUsingsAndAliases(node).Any() || GetExterns(node).Any();
55SyntaxNode root,
56SyntaxNode? contextLocation,
57SyntaxNode import,
65private static ImmutableArray<SyntaxNode> GetAllContainers(SyntaxNode root, SyntaxNode? contextLocation)
69var applicableContainer = GetFirstApplicableContainer(contextLocation);
70return [.. applicableContainer.GetAncestorsOrThis<SyntaxNode>()];
74SyntaxNode import, ImmutableArray<SyntaxNode> containers, ImmutableArray<SyntaxNode> globalImports)
76foreach (var node in containers)
89foreach (var node in globalImports)
100protected abstract bool IsEquivalentImport(SyntaxNode a, SyntaxNode b);
102public SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options)
106out var externContainer, out var usingContainer, out var staticUsingContainer, out var aliasContainer);
129public SyntaxNode AddImports(
131SyntaxNode root,
132SyntaxNode? contextLocation,
133IEnumerable<SyntaxNode> newImports,
150out var externContainer, out var usingContainer, out var aliasContainer, out var staticUsingContainer);
152var newRoot = Rewrite(
160protected abstract SyntaxNode Rewrite(
162SyntaxNode externContainer, SyntaxNode usingContainer, SyntaxNode staticUsingContainer, SyntaxNode aliasContainer,
163AddImportPlacementOptions options, SyntaxNode root, CancellationToken cancellationToken);
165private void GetContainers(SyntaxNode root, SyntaxNode contextLocation, AddImportPlacementOptions options, out SyntaxNode externContainer, out SyntaxNode usingContainer, out SyntaxNode staticUsingContainer, out SyntaxNode aliasContainer)
167var applicableContainer = GetFirstApplicableContainer(contextLocation);
168var contextSpine = applicableContainer.GetAncestorsOrThis<SyntaxNode>().ToImmutableArray();
193private static SyntaxNode? GetFirstApplicableContainer(SyntaxNode contextNode)
199(SyntaxNode?)node.GetAncestorOrThis<TCompilationUnitSyntax>();
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\IAddImportsService.cs (15)
22bool HasExistingImport(Compilation compilation, SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, SyntaxGenerator generator);
28SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options);
30SyntaxNode AddImports(
31Compilation compilation, SyntaxNode root, SyntaxNode? contextLocation,
32IEnumerable<SyntaxNode> newImports, SyntaxGenerator generator, AddImportPlacementOptions options, CancellationToken cancellationToken);
37public static SyntaxNode AddImport(
38this IAddImportsService service, Compilation compilation, SyntaxNode root,
39SyntaxNode contextLocation, SyntaxNode newImport, SyntaxGenerator generator, AddImportPlacementOptions options,
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\AbstractInitializerParameterService.cs (22)
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);
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\MoveDeclarationNearReference\AbstractMoveDeclarationNearReferenceService.cs (14)
26where TStatementSyntax : SyntaxNode
28where TVariableDeclaratorSyntax : SyntaxNode
30protected abstract bool IsMeaningfulBlock(SyntaxNode node);
31protected abstract bool CanMoveToBlock(ILocalSymbol localSymbol, SyntaxNode currentBlock, SyntaxNode destinationBlock);
32protected abstract SyntaxNode GetVariableDeclaratorSymbolNode(TVariableDeclaratorSyntax variableDeclarator);
35protected abstract Task<bool> TypesAreCompatibleAsync(Document document, ILocalSymbol localSymbol, TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode right, CancellationToken cancellationToken);
37public async Task<(bool canMove, bool mayChangeSemantics)> CanMoveDeclarationNearReferenceAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
46private async Task<State> ComputeStateAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
77Document document, SyntaxNode localDeclarationStatement, CancellationToken cancellationToken)
83var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
113var newRoot = editor.GetChangedRoot();
150var originalNextStatement = state.OutermostBlockStatements[statementIndex + 1];
186var blocks = state.InnermostBlock.GetAncestorsOrThis<SyntaxNode>();
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\AbstractSemanticFactsService.cs (35)
41SemanticModel semanticModel, SyntaxNode location, SyntaxNode containerOpt,
49SemanticModel semanticModel, SyntaxNode location, SyntaxNode containerOpt,
57SemanticModel semanticModel, SyntaxNode location, SyntaxNode containerOpt,
65SemanticModel semanticModel, SyntaxNode location, SyntaxNode containerOpt,
74SyntaxNode location, SyntaxNode containerOpt,
92protected 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, 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)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\ISemanticFactsService.cs (12)
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);
47CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination);
49IMethodSymbol? TryGetDisposeMethod(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SyntaxGeneratorInternalExtensions\SyntaxGeneratorInternal.cs (93)
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);
48public abstract SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value);
52public abstract SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull);
54public abstract SyntaxNode MemberBindingExpression(SyntaxNode name);
56public abstract SyntaxNode RefExpression(SyntaxNode expression);
61public abstract SyntaxNode AddParentheses(SyntaxNode expression, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true);
67public abstract SyntaxNode YieldReturnStatement(SyntaxNode expression);
72/// <see cref="LocalDeclarationStatement(SyntaxNode, SyntaxToken, SyntaxNode, bool)"/>.
78public abstract SyntaxNode InterpolatedStringText(SyntaxToken textToken);
79public abstract SyntaxNode Interpolation(SyntaxNode syntaxNode);
80public abstract SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken);
81public abstract SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment);
82public abstract SyntaxNode InterpolationFormatClause(string format);
83public abstract SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames);
100public abstract SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext);
102public abstract SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right);
104public abstract SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type);
113public abstract SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isToken, SyntaxNode pattern);
115public abstract SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right);
116public abstract SyntaxNode ConstantPattern(SyntaxNode expression);
117public abstract SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name);
118public abstract SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression);
119public abstract SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression);
120public abstract SyntaxNode LessThanRelationalPattern(SyntaxNode expression);
121public abstract SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression);
122public abstract SyntaxNode NotPattern(SyntaxNode pattern);
123public abstract SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right);
124public abstract SyntaxNode ParenthesizedPattern(SyntaxNode pattern);
125public abstract SyntaxNode TypePattern(SyntaxNode type);
126public abstract SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern);
130public abstract SyntaxNode DefaultExpression(ITypeSymbol type);
131public abstract SyntaxNode DefaultExpression(SyntaxNode type);
133public abstract SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression);
135public SyntaxNode CastExpression(ITypeSymbol type, SyntaxNode expression)
138public SyntaxNode TypeExpression(ITypeSymbol typeSymbol)
141public abstract SyntaxNode TypeExpression(ITypeSymbol typeSymbol, RefKind refKind);
143public abstract SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right);
145public SyntaxNode MemberAccessExpression(SyntaxNode? expression, SyntaxNode memberName)
151public abstract SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode memberName);
152public abstract SyntaxNode IdentifierName(string identifier);
154public abstract SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression);
155public SyntaxNode ConvertExpression(ITypeSymbol type, SyntaxNode expression)
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
229var currentNode = currentNodeOrToken.AsNode()!;
234var newRoot = root.ReplaceNode(nodeOrToken.AsNode()!, currentNode.WithAdditionalAnnotations(marker));
277using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var importDeclarations);
292var root = await model.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
294var unusedImports = new HashSet<SyntaxNode>();
303var newRoot = gen.RemoveNodes(root, unusedImports);
312protected abstract void GetUnusedNamespaceImports(SemanticModel model, HashSet<SyntaxNode> namespaceImports, CancellationToken cancellationToken);
src\Analyzers\CSharp\Analyzers\RemoveConfusingSuppression\CSharpRemoveConfusingSuppressionDiagnosticAnalyzer.cs (1)
30var node = context.Node;
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\Analyzers\CSharp\Analyzers\UseExpressionBody\Helpers\UseExpressionBodyHelper`1.cs (10)
28where TDeclaration : SyntaxNode
63public override BlockSyntax? GetBody(SyntaxNode declaration)
66public override ArrowExpressionClauseSyntax? GetExpressionBody(SyntaxNode declaration)
69public override bool IsRelevantDeclarationNode(SyntaxNode node)
72public override bool CanOfferUseExpressionBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, CancellationToken cancellationToken)
75public override bool CanOfferUseBlockBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, out bool fixesError, [NotNullWhen(true)] out ArrowExpressionClauseSyntax? expressionBody)
78public sealed override SyntaxNode Update(SemanticModel semanticModel, SyntaxNode declaration, bool useExpressionBody, CancellationToken cancellationToken)
81public override Location GetDiagnosticLocation(SyntaxNode declaration)
131SyntaxNode declaration, ExpressionBodyPreference conversionPreference, CancellationToken cancellationToken,
src\Analyzers\CSharp\Analyzers\UseUtf8StringLiteral\UseUtf8StringLiteralDiagnosticAnalyzer.cs (3)
118private void ReportParameterArrayDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, ImmutableArray<IOperation> elements, NotificationOption2 notificationOption, ArrayCreationOperationLocation operationLocation)
130private void ReportArrayCreationDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, NotificationOption2 notificationOption)
138private void ReportDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, NotificationOption2 notificationOption, Location location, ArrayCreationOperationLocation operationLocation)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\SyntaxNodeExtensions.cs (74)
23public static LanguageVersion GetLanguageVersion(this SyntaxNode node)
26public static void Deconstruct(this SyntaxNode node, out SyntaxKind kind)
29public static bool IsKind<TNode>([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind, [NotNullWhen(true)] out TNode? result)
30where TNode : SyntaxNode
42public static bool IsParentKind([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind)
45public static bool IsParentKind<TNode>([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind, [NotNullWhen(true)] out TNode? result)
46where TNode : SyntaxNode
59this SyntaxNode node, SourceText? sourceText = null,
88public static bool IsAnyArgumentList([NotNullWhen(true)] this SyntaxNode? node)
97public static (SyntaxToken openBrace, SyntaxToken closeBrace) GetBraces(this SyntaxNode? node)
114public static bool IsEmbeddedStatementOwner([NotNullWhen(true)] this SyntaxNode? node)
128public static StatementSyntax? GetEmbeddedStatement(this SyntaxNode? node)
144public static BaseParameterListSyntax? GetParameterList(this SyntaxNode? declaration)
157public static SyntaxList<AttributeListSyntax> GetAttributeLists(this SyntaxNode? declaration)
170public static ConditionalAccessExpressionSyntax? GetParentConditionalAccessExpression(this SyntaxNode? node)
182var current = node;
249/// <inheritdoc cref="ISyntaxFacts.GetRootConditionalAccessExpression(SyntaxNode)"/>
251public static ConditionalAccessExpressionSyntax? GetRootConditionalAccessExpression(this SyntaxNode? node)
268public static ConditionalAccessExpressionSyntax? GetInnerMostConditionalAccessExpression(this SyntaxNode node)
279public static bool IsAsyncSupportingFunctionSyntax([NotNullWhen(true)] this SyntaxNode? node)
282public static bool IsCompoundAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
285public static bool IsLeftSideOfAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
289public static bool IsLeftSideOfAnyAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
292public static bool IsRightSideOfAnyAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
295public static bool IsLeftSideOfCompoundAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
306public static IEnumerable<UsingDirectiveSyntax> GetEnclosingUsingDirectives(this SyntaxNode node)
314public static IEnumerable<ExternAliasDirectiveSyntax> GetEnclosingExternAliasDirectives(this SyntaxNode node)
322public static bool IsUnsafeContext(this SyntaxNode node)
333public static bool IsInStaticContext(this SyntaxNode node)
335for (var current = node; current != null; current = current.Parent)
370public static BaseNamespaceDeclarationSyntax? GetInnermostNamespaceDeclarationWithUsings(this SyntaxNode contextNode)
393public static bool IsBreakableConstruct(this SyntaxNode node)
409public static bool IsContinuableConstruct(this SyntaxNode node)
424public static bool IsReturnableConstruct(this SyntaxNode node)
448public static bool ContainsYield(this SyntaxNode node)
451public static bool IsReturnableConstructOrTopLevelCompilationUnit(this SyntaxNode node)
454public static bool SpansPreprocessorDirective<TSyntaxNode>(this IEnumerable<TSyntaxNode> list) where TSyntaxNode : SyntaxNode
459where TNode : SyntaxNode
507public static bool ContainsInterleavedDirective(this SyntaxNode syntaxNode, CancellationToken cancellationToken)
511/// Similar to <see cref="ContainsInterleavedDirective(SyntaxNode, CancellationToken)"/> except that the span to check
514public static bool ContainsInterleavedDirective(this SyntaxNode syntaxNode, TextSpan span, CancellationToken cancellationToken)
553var structure = trivia.GetStructure()!;
595where TSyntaxNode : SyntaxNode
655public static ImmutableArray<SyntaxTrivia> GetLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
658public static TSyntaxNode GetNodeWithoutLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
661public static TSyntaxNode GetNodeWithoutLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node, out ImmutableArray<SyntaxTrivia> strippedTrivia) where TSyntaxNode : SyntaxNode
664public static ImmutableArray<SyntaxTrivia> GetLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
667public static TSyntaxNode GetNodeWithoutLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
670public static TSyntaxNode GetNodeWithoutLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node, out ImmutableArray<SyntaxTrivia> strippedTrivia) where TSyntaxNode : SyntaxNode
673public static bool IsVariableDeclaratorValue([NotNullWhen(true)] this SyntaxNode? node)
677public static BlockSyntax? FindInnermostCommonBlock(this IEnumerable<SyntaxNode> nodes)
680public static IEnumerable<SyntaxNode> GetAncestorsOrThis(this SyntaxNode? node, Func<SyntaxNode, bool> predicate)
682var current = node;
694public static (SyntaxToken openParen, SyntaxToken closeParen) GetParentheses(this SyntaxNode node)
724public static (SyntaxToken openBracket, SyntaxToken closeBracket) GetBrackets(this SyntaxNode? node)
737public static SyntaxTokenList GetModifiers(this SyntaxNode? member)
749public static SyntaxNode? WithModifiers(this SyntaxNode? member, SyntaxTokenList modifiers)
760public static void ForEachMember<TArg>(this SyntaxNode? node, Action<MemberDeclarationSyntax, TArg> callback, TArg arg)
785[NotNullWhen(true)] this SyntaxNode? node,
792for (var current = node; current != null; current = current.Parent)
837[NotNullWhen(true)] this SyntaxNode? node,
838[NotNullWhen(true)] out SyntaxNode? deconstructionLeft)
840SyntaxNode? previous = null;
841for (var current = node; current != null; current = current.Parent)
863where T : SyntaxNode
872where T : SyntaxNode
880where T : SyntaxNode
886public static T KeepCommentsAndAddElasticMarkers<T>(this T node) where T : SyntaxNode
891public static SyntaxNode WithPrependedNonIndentationTriviaFrom(
892this SyntaxNode to, SyntaxNode from)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Engine\CSharpFormatEngine.cs (1)
16SyntaxNode node,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\IndentBlockFormattingRule.cs (10)
46public override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
65private static void AddTypeParameterConstraintClauseOperation(List<IndentBlockOperation> list, SyntaxNode node)
74private void AddSwitchIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
134private void AddLabelIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
150private static void AddAlignmentBlockOperation(List<IndentBlockOperation> list, SyntaxNode node)
205private static void SetAlignmentBlockOperation(List<IndentBlockOperation> list, SyntaxNode baseNode, SyntaxNode body)
216private void AddBlockIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
253private static void AddBracketIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
294private static void AddEmbeddedStatementsIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\Precedence\AbstractCSharpPrecedenceService.cs (1)
13where TSyntax : SyntaxNode
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SemanticFacts\CSharpSemanticFacts.cs (29)
40public bool IsWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
43public bool IsOnlyWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
46public bool IsInOutContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
49public bool IsInRefContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
52public bool IsInInContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
55public bool CanReplaceWithRValue(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? expression, CancellationToken cancellationToken)
62foreach (var ancestor in token.GetAncestors<SyntaxNode>())
112SyntaxNode oldNode,
113SyntaxNode newNode,
169public ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode node)
183public SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
186public IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node)
197public ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node)
209public ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node)
234var node = syntaxRef.GetSyntax(cancellationToken);
245public IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken)
255public IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
258public IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
262public ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken)
265public ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken)
270public ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken)
292/// cref="ModelExtensions.GetSymbolInfo(SemanticModel, SyntaxNode, CancellationToken)"/>, but sometimes employs
296private ImmutableArray<ISymbol> GetSymbolInfo(SemanticModel semanticModel, SyntaxNode node, SyntaxToken token, CancellationToken cancellationToken)
368public bool IsInsideNameOfExpression(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
377var node = syntaxReference.GetSyntax(cancellationToken);
392public bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, [NotNullWhen(true)] INamedTypeSymbol? expressionType, CancellationToken cancellationToken)
395public string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken)
398public IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node)
410private static bool IsInPreprocessingSymbolContext(SyntaxNode node)
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)
54public override bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
67public override bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
80public override bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
93public override bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
106public override bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
121public override bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
134public override bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
147public override bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpSyntaxFacts.cs (311)
138public bool IsDirective([NotNullWhen(true)] SyntaxNode? node)
141public bool TryGetExternalSourceInfo([NotNullWhen(true)] SyntaxNode? node, out ExternalSourceInfo info)
162public bool IsNameOfSimpleMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
168public bool IsNameOfAnyMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
171public bool IsNameOfMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node)
178public SyntaxNode? GetStandaloneExpression(SyntaxNode? node)
181public SyntaxNode? GetRootConditionalAccessExpression(SyntaxNode? node)
184public bool IsDeclarationExpression([NotNullWhen(true)] SyntaxNode? node)
187public bool IsNamedArgument([NotNullWhen(true)] SyntaxNode? node)
190public bool IsNameOfNamedArgument([NotNullWhen(true)] SyntaxNode? node)
193public SyntaxNode? GetParameterList(SyntaxNode node)
196public bool IsParameterList([NotNullWhen(true)] SyntaxNode? node)
199public bool IsUsingDirectiveName([NotNullWhen(true)] SyntaxNode? node)
203public bool IsUsingAliasDirective([NotNullWhen(true)] SyntaxNode? node)
206public void GetPartsOfUsingAliasDirective(SyntaxNode node, out SyntaxToken globalKeyword, out SyntaxToken alias, out SyntaxNode name)
214public bool IsDeconstructionForEachStatement([NotNullWhen(true)] SyntaxNode? node)
217public bool IsUsingLocalDeclarationStatement([NotNullWhen(true)] SyntaxNode? node)
220public bool IsDeconstructionAssignment([NotNullWhen(true)] SyntaxNode? node)
223public Location GetDeconstructionReferenceLocation(SyntaxNode node)
233public bool IsStatement([NotNullWhen(true)] SyntaxNode? node)
236public bool IsExecutableStatement([NotNullWhen(true)] SyntaxNode? node)
239public bool IsGlobalStatement([NotNullWhen(true)] SyntaxNode? node)
242public SyntaxNode GetStatementOfGlobalStatement(SyntaxNode node)
245public bool IsMethodBody([NotNullWhen(true)] SyntaxNode? node)
257public SyntaxNode GetExpressionOfRefExpression(SyntaxNode node)
260public SyntaxNode? GetExpressionOfReturnStatement(SyntaxNode node)
304public bool IsPredefinedType(SyntaxNode? node)
307public bool IsPredefinedType(SyntaxNode? node, PredefinedType type)
528public bool IsPostfixUnaryExpression([NotNullWhen(true)] SyntaxNode? node)
531public bool IsElementBindingExpression([NotNullWhen(true)] SyntaxNode? node)
534public bool IsMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node)
537public bool IsPointerMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
540public void GetNameAndArityOfSimpleName(SyntaxNode node, out string name, out int arity)
547public bool LooksGeneric(SyntaxNode simpleName)
551public SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(SyntaxNode? genericName)
554public SyntaxNode? GetTargetOfMemberBinding(SyntaxNode? node)
557public SyntaxNode GetNameOfMemberBindingExpression(SyntaxNode node)
560public SyntaxNode? GetExpressionOfMemberAccessExpression(SyntaxNode node, bool allowImplicitTarget)
563public void GetPartsOfElementAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode argumentList)
570public SyntaxNode GetExpressionOfInterpolation(SyntaxNode node)
573public bool IsInStaticContext(SyntaxNode node)
576public bool IsInNamespaceOrTypeContext([NotNullWhen(true)] SyntaxNode? node)
579public bool IsBaseTypeList([NotNullWhen(true)] SyntaxNode? node)
582public SyntaxNode GetExpressionOfArgument(SyntaxNode node)
585public SyntaxNode GetExpressionOfAttributeArgument(SyntaxNode node)
588public RefKind GetRefKindOfArgument(SyntaxNode node)
591public bool IsArgument([NotNullWhen(true)] SyntaxNode? node)
594public bool IsAttributeArgument([NotNullWhen(true)] SyntaxNode? node)
597public bool IsSimpleArgument([NotNullWhen(true)] SyntaxNode? node)
604public bool IsInConstantContext([NotNullWhen(true)] SyntaxNode? node)
607public bool IsInConstructor(SyntaxNode node)
610public bool IsUnsafeContext(SyntaxNode node)
613public bool IsAttributeNamedArgumentIdentifier([NotNullWhen(true)] SyntaxNode? node)
616public SyntaxNode? GetContainingTypeDeclaration(SyntaxNode root, int position)
620.GetAncestors<SyntaxNode>()
624public SyntaxNode? GetContainingVariableDeclaratorOfFieldDeclaration(SyntaxNode? node)
627public bool IsNameOfSubpattern([NotNullWhen(true)] SyntaxNode? node)
632public bool IsPropertyPatternClause(SyntaxNode node)
636[NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? initializedInstance)
667public bool IsAnyInitializerExpression([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? creationExpression)
682public bool IsElementAccessExpression(SyntaxNode? node)
686public SyntaxNode? ConvertToSingleLine(SyntaxNode? node, bool useElasticTrivia = false)
689public SyntaxNode? GetContainingMemberDeclaration(SyntaxNode root, int position, bool useFullSpan = true)
692public SyntaxNode? GetContainingMethodDeclaration(SyntaxNode root, int position, bool useFullSpan = true)
695private static SyntaxNode? GetContainingMemberDeclaration<TMemberDeclarationSyntax>(SyntaxNode root, int position, bool useFullSpan = true)
708var node = root.FindToken(position).Parent;
726public bool IsMethodLevelMember([NotNullWhen(true)] SyntaxNode? node)
734public bool IsTopLevelNodeWithMembers([NotNullWhen(true)] SyntaxNode? node)
737public string GetDisplayName(SyntaxNode? node, DisplayNameOptions options, string? rootNamespace = null)
799private string? GetName(SyntaxNode node, DisplayNameOptions options)
886public SyntaxList<SyntaxNode> GetMembersOfTypeDeclaration(SyntaxNode typeDeclaration)
889protected override void AppendMembers(SyntaxNode? node, ArrayBuilder<SyntaxNode> list, bool topLevel, bool methodLevel)
913public TextSpan GetMemberBodySpanForSpeculativeBinding(SyntaxNode node)
918var member = GetContainingMemberDeclaration(node, node.SpanStart);
929public SyntaxNode? TryGetBindableParent(SyntaxToken token)
931var node = token.Parent;
934var parent = node.Parent;
992public IEnumerable<SyntaxNode> GetConstructors(SyntaxNode? root, CancellationToken cancellationToken)
997var constructors = new List<SyntaxNode>();
1002private static void AppendConstructors(SyntaxList<MemberDeclarationSyntax> members, List<SyntaxNode> constructors, CancellationToken cancellationToken)
1066public string GetNameForArgument(SyntaxNode? argument)
1069public string GetNameForAttributeArgument(SyntaxNode? argument)
1072public bool IsLeftSideOfDot([NotNullWhen(true)] SyntaxNode? node)
1075public SyntaxNode? GetRightSideOfDot(SyntaxNode? node)
1081public SyntaxNode? GetLeftSideOfDot(SyntaxNode? node, bool allowImplicitTarget)
1087public bool IsLeftSideOfExplicitInterfaceSpecifier([NotNullWhen(true)] SyntaxNode? node)
1090public bool IsLeftSideOfAssignment([NotNullWhen(true)] SyntaxNode? node)
1093public bool IsLeftSideOfAnyAssignment([NotNullWhen(true)] SyntaxNode? node)
1096public bool IsLeftSideOfCompoundAssignment([NotNullWhen(true)] SyntaxNode? node)
1099public SyntaxNode GetRightHandSideOfAssignment(SyntaxNode node)
1102public bool IsInferredAnonymousObjectMemberDeclarator([NotNullWhen(true)] SyntaxNode? node)
1106public bool IsOperandOfIncrementExpression([NotNullWhen(true)] SyntaxNode? node)
1109public static bool IsOperandOfDecrementExpression([NotNullWhen(true)] SyntaxNode? node)
1112public bool IsOperandOfIncrementOrDecrementExpression([NotNullWhen(true)] SyntaxNode? node)
1115public SyntaxList<SyntaxNode> GetContentsOfInterpolatedString(SyntaxNode interpolatedString)
1131public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfObjectCreationExpression(SyntaxNode objectCreationExpression)
1136public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfArgumentList(SyntaxNode argumentList)
1139public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfAttributeArgumentList(SyntaxNode argumentList)
1151public bool IsPragmaDirective(SyntaxTrivia trivia, out bool isDisable, out bool isActive, out SeparatedSyntaxList<SyntaxNode> errorCodes)
1157public bool IsDocumentationComment(SyntaxNode node)
1160public bool IsUsingOrExternOrImport([NotNullWhen(true)] SyntaxNode? node)
1163public bool IsGlobalAssemblyAttribute([NotNullWhen(true)] SyntaxNode? node)
1166public bool IsGlobalModuleAttribute([NotNullWhen(true)] SyntaxNode? node)
1169private static bool IsGlobalAttribute([NotNullWhen(true)] SyntaxNode? node, SyntaxKind attributeTarget)
1174public bool IsDeclaration(SyntaxNode? node)
1223public bool IsTypeDeclaration(SyntaxNode node)
1226public bool IsSimpleAssignmentStatement([NotNullWhen(true)] SyntaxNode? statement)
1231SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1238SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1240var expression = statement;
1253public bool IsAnyAssignmentStatement([NotNullWhen(true)] SyntaxNode? node)
1256public SyntaxToken GetIdentifierOfSimpleName(SyntaxNode node)
1259public SyntaxToken GetIdentifierOfVariableDeclarator(SyntaxNode node)
1262public SyntaxToken GetIdentifierOfTypeDeclaration(SyntaxNode node)
1270public bool IsDeclaratorOfLocalDeclarationStatement(SyntaxNode declarator, SyntaxNode localDeclarationStatement)
1277public bool AreEquivalent(SyntaxNode? node1, SyntaxNode? node2)
1280public static SyntaxNode GetExpressionOfInvocationExpression(SyntaxNode node)
1283public bool IsExpressionOfForeach([NotNullWhen(true)] SyntaxNode? node)
1286public SyntaxNode GetExpressionOfExpressionStatement(SyntaxNode node)
1289public void GetPartsOfTupleExpression<TArgumentSyntax>(SyntaxNode node,
1290out SyntaxToken openParen, out SeparatedSyntaxList<TArgumentSyntax> arguments, out SyntaxToken closeParen) where TArgumentSyntax : SyntaxNode
1294arguments = (SeparatedSyntaxList<TArgumentSyntax>)(SeparatedSyntaxList<SyntaxNode>)tupleExpression.Arguments;
1301public SyntaxNode? GetMatchingDirective(SyntaxNode directive, CancellationToken cancellationToken)
1304public ImmutableArray<SyntaxNode> GetMatchingConditionalDirectives(SyntaxNode directive, CancellationToken cancellationToken)
1305=> ((DirectiveTriviaSyntax)directive).GetMatchingConditionalDirectives(cancellationToken).CastArray<SyntaxNode>();
1310public SyntaxTokenList GetModifiers(SyntaxNode? node)
1314public SyntaxNode? WithModifiers(SyntaxNode? node, SyntaxTokenList modifiers)
1317public SeparatedSyntaxList<SyntaxNode> GetVariablesOfLocalDeclarationStatement(SyntaxNode node)
1320public SyntaxNode? GetInitializerOfVariableDeclarator(SyntaxNode node)
1323public SyntaxNode? GetInitializerOfPropertyDeclaration(SyntaxNode node)
1326public SyntaxNode GetTypeOfVariableDeclarator(SyntaxNode node)
1329public SyntaxNode GetValueOfEqualsValueClause(SyntaxNode node)
1332public bool IsEqualsValueOfPropertyDeclaration(SyntaxNode? node)
1335public bool IsConversionExpression([NotNullWhen(true)] SyntaxNode? node)
1338public bool IsCastExpression([NotNullWhen(true)] SyntaxNode? node)
1341public void GetPartsOfCastExpression(SyntaxNode node, out SyntaxNode type, out SyntaxNode expression)
1358public SyntaxList<SyntaxNode> GetAttributeLists(SyntaxNode? node)
1361public bool IsParameterNameXmlElementSyntax([NotNullWhen(true)] SyntaxNode? node)
1365public SyntaxList<SyntaxNode> GetContentFromDocumentationCommentTriviaSyntax(SyntaxTrivia trivia)
1375public void GetPartsOfAnyIsTypeExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode type)
1382public void GetPartsOfIsPatternExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken isToken, out SyntaxNode right)
1390public bool IsAnyPattern([NotNullWhen(true)] SyntaxNode? node)
1393public SyntaxNode GetExpressionOfConstantPattern(SyntaxNode node)
1396public void GetPartsOfDeclarationPattern(SyntaxNode node, out SyntaxNode type, out SyntaxNode designation)
1403public void GetPartsOfRecursivePattern(SyntaxNode node, out SyntaxNode? type, out SyntaxNode? positionalPart, out SyntaxNode? propertyPart, out SyntaxNode? designation)
1419public bool IsBinaryPattern([NotNullWhen(true)] SyntaxNode? node)
1422public bool IsUnaryPattern([NotNullWhen(true)] SyntaxNode? node)
1425public void GetPartsOfParenthesizedPattern(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode pattern, out SyntaxToken closeParen)
1433public void GetPartsOfBinaryPattern(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1441public void GetPartsOfUnaryPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode pattern)
1448public void GetPartsOfRelationalPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode expression)
1455public SyntaxNode GetTypeOfTypePattern(SyntaxNode node)
1458public bool IsVerbatimInterpolatedStringExpression([NotNullWhen(true)] SyntaxNode? node)
1473public bool IsAnonymousFunctionExpression([NotNullWhen(true)] SyntaxNode? node)
1476public bool IsBaseNamespaceDeclaration([NotNullWhen(true)] SyntaxNode? node)
1479public bool IsBinaryExpression([NotNullWhen(true)] SyntaxNode? node)
1482public bool IsLiteralExpression([NotNullWhen(true)] SyntaxNode? node)
1485public bool IsMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
1488public bool IsMethodDeclaration([NotNullWhen(true)] SyntaxNode? node)
1491public bool IsSimpleName([NotNullWhen(true)] SyntaxNode? node)
1494public bool IsAnyName([NotNullWhen(true)] SyntaxNode? node)
1497public bool IsAnyType([NotNullWhen(true)] SyntaxNode? node)
1500public bool IsNamedMemberInitializer([NotNullWhen(true)] SyntaxNode? node)
1503public bool IsElementAccessInitializer([NotNullWhen(true)] SyntaxNode? node)
1506public bool IsObjectMemberInitializer([NotNullWhen(true)] SyntaxNode? node)
1509public bool IsObjectCollectionInitializer([NotNullWhen(true)] SyntaxNode? node)
1516public void GetPartsOfAliasQualifiedName(SyntaxNode node, out SyntaxNode alias, out SyntaxToken colonColonToken, out SyntaxNode name)
1524public void GetPartsOfArgumentList(SyntaxNode node, out SyntaxToken openParenToken, out SeparatedSyntaxList<SyntaxNode> arguments, out SyntaxToken closeParenToken)
1532public void GetPartsOfAttribute(SyntaxNode node, out SyntaxNode name, out SyntaxNode? argumentList)
1539public void GetPartsOfBaseObjectCreationExpression(SyntaxNode node, out SyntaxNode? argumentList, out SyntaxNode? initializer)
1546public void GetPartsOfBinaryExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1554public void GetPartsOfCompilationUnit(SyntaxNode node, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> attributeLists, out SyntaxList<SyntaxNode> members)
1563SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode whenNotNull)
1571public void GetPartsOfConditionalExpression(SyntaxNode node, out SyntaxNode condition, out SyntaxNode whenTrue, out SyntaxNode whenFalse)
1579public SyntaxNode GetExpressionOfForeachStatement(SyntaxNode statement)
1585public void GetPartsOfGenericName(SyntaxNode node, out SyntaxToken identifier, out SeparatedSyntaxList<SyntaxNode> typeArguments)
1592public void GetPartsOfInterpolationExpression(SyntaxNode node,
1593out SyntaxToken stringStartToken, out SyntaxList<SyntaxNode> contents, out SyntaxToken stringEndToken)
1601public void GetPartsOfInvocationExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode? argumentList)
1608public void GetPartsOfMemberAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode name)
1616public void GetPartsOfBaseNamespaceDeclaration(SyntaxNode node, out SyntaxNode name, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> members)
1624public void GetPartsOfNamedMemberInitializer(SyntaxNode node, out SyntaxNode identifier, out SyntaxNode expression)
1631public void GetPartsOfObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode type, out SyntaxNode? argumentList, out SyntaxNode? initializer)
1640public void GetPartsOfImplicitObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode argumentList, out SyntaxNode? initializer)
1648public void GetPartsOfParameter(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode? @default)
1656SyntaxNode node, out SyntaxToken openParen, out SyntaxNode expression, out SyntaxToken closeParen)
1664public void GetPartsOfPrefixUnaryExpression(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode operand)
1671public void GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1683public SyntaxNode GetArgumentListOfImplicitElementAccess(SyntaxNode node)
1686public SeparatedSyntaxList<SyntaxNode> GetAttributesOfAttributeList(SyntaxNode node)
1689public SyntaxNode GetExpressionOfAwaitExpression(SyntaxNode node)
1692public SyntaxNode GetExpressionOfThrowExpression(SyntaxNode node)
1695public SyntaxNode? GetExpressionOfThrowStatement(SyntaxNode node)
1698public SeparatedSyntaxList<SyntaxNode> GetInitializersOfObjectMemberInitializer(SyntaxNode node)
1701public SeparatedSyntaxList<SyntaxNode> GetExpressionsOfObjectCollectionInitializer(SyntaxNode node)
1704public SyntaxToken GetTokenOfLiteralExpression(SyntaxNode node)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\SpeculationAnalyzer.cs (19)
70protected override SyntaxNode GetSemanticRootForSpeculation(ExpressionSyntax expression)
74SyntaxNode previousNode = null;
75SyntaxNode parentNodeToSpeculate = null;
76foreach (var node in expression.AncestorsAndSelf(ascendOutOfTrivia: false))
94public static bool CanSpeculateOnNode(SyntaxNode node)
103protected override void ValidateSpeculativeSemanticModel(SemanticModel speculativeSemanticModel, SyntaxNode nodeToSpeculate)
112protected override SemanticModel CreateSpeculativeSemanticModel(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel)
115public static SemanticModel CreateSpeculativeSemanticModelForNode(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel)
122public static SemanticModel CreateSpeculativeSemanticModelForNode(SyntaxNode nodeToSpeculate, SemanticModel semanticModel, int position, bool isInNamespaceOrTypeContext)
195SyntaxNode originalLambdaBody, replacedLambdaBody;
274SyntaxNode originalRoot)
294protected override bool ReplacementChangesSemanticsForNodeLanguageSpecific(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode previousOriginalNode, SyntaxNode previousReplacedNode)
579protected override bool ExpressionMightReferenceMember(SyntaxNode node)
661protected override bool IsParenthesizedExpression(SyntaxNode node)
src\Analyzers\CSharp\CodeFixes\AssignOutParameters\AbstractAssignOutParametersCodeFixProvider.cs (20)
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(
104var result = new MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>();
149SyntaxEditor editor, SyntaxNode container,
150MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol> unassignedParameters)>.ValueSet values,
153protected static ImmutableArray<SyntaxNode> GenerateAssignmentStatements(
156var result = ArrayBuilder<SyntaxNode>.GetInstance();
src\Analyzers\CSharp\CodeFixes\AssignOutParameters\AssignOutParametersAboveReturnCodeFixProvider.cs (7)
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)
src\Analyzers\CSharp\CodeFixes\ConvertNamespace\ConvertNamespaceTransform.cs (6)
81private static (SyntaxNode root, TextSpan semicolonSpan) ReplaceWithFileScopedNamespace(
119(SyntaxNode stringNode, int closeTerminatorIndentationLength) lastRawStringLiteralData = default;
135SyntaxNode stringNode;
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\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\Analyzers\CSharp\CodeFixes\InlineDeclaration\CSharpInlineDeclarationCodeFixProvider.cs (10)
63var originalRoot = editor.OriginalRoot;
70static t => (t.invocationOrCreation, ImmutableArray.Create<SyntaxNode>(t.identifier, t.declarator)),
79private static (VariableDeclaratorSyntax declarator, IdentifierNameSyntax identifier, SyntaxNode invocationOrCreation) FindDiagnosticNodes(
95private static SyntaxNode ReplaceIdentifierWithInlineDeclaration(
98SyntaxNode currentRoot, VariableDeclaratorSyntax declarator,
99IdentifierNameSyntax identifier, SyntaxNode currentNode,
325SyntaxNode nodeToReplace,
374private static SyntaxNode GetTopmostContainer(SyntaxNode expression)
385int position, SyntaxNode topmostContainer,
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\Analyzers\CSharp\CodeFixes\UseUnboundGenericTypeInNameOf\CSharpUseUnboundGenericTypeInNameOfCodeFixProvider.cs (1)
60where TSyntax : SyntaxNode
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\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpAddImportsService.cs (27)
34protected override ImmutableArray<SyntaxNode> GetGlobalImports(Compilation compilation, SyntaxGenerator generator)
37protected override SyntaxNode? GetAlias(UsingDirectiveSyntax usingOrAlias)
43protected override SyntaxNode Rewrite(
48SyntaxNode externContainer,
49SyntaxNode usingContainer,
50SyntaxNode staticUsingContainer,
51SyntaxNode aliasContainer,
53SyntaxNode root,
61var newRoot = rewriter.Visit(root);
65protected override SyntaxList<UsingDirectiveSyntax> GetUsingsAndAliases(SyntaxNode node)
73protected override SyntaxList<ExternAliasDirectiveSyntax> GetExterns(SyntaxNode node)
81protected override bool IsEquivalentImport(SyntaxNode a, SyntaxNode b)
88private readonly SyntaxNode _externContainer;
89private readonly SyntaxNode _usingContainer;
90private readonly SyntaxNode _aliasContainer;
91private readonly SyntaxNode _staticUsingContainer;
102SyntaxNode externContainer,
103SyntaxNode usingContainer,
104SyntaxNode aliasContainer,
105SyntaxNode staticUsingContainer,
122public override SyntaxNode? Visit(SyntaxNode? node)
125public override SyntaxNode VisitNamespaceDeclaration(NamespaceDeclarationSyntax node)
128public override SyntaxNode? VisitFileScopedNamespaceDeclaration(FileScopedNamespaceDeclarationSyntax node)
131private SyntaxNode VisitBaseNamespaceDeclaration(
165public override SyntaxNode VisitCompilationUnit(CompilationUnitSyntax node)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpSyntaxGeneratorInternal.cs (88)
52public override SyntaxNode LocalDeclarationStatement(SyntaxNode? type, SyntaxToken name, SyntaxNode? initializer, bool isConst)
59public override SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer)
62public override SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value)
65internal static VariableDeclarationSyntax VariableDeclaration(SyntaxNode? type, SyntaxToken name, SyntaxNode? expression)
77public override SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull)
80public override SyntaxNode MemberBindingExpression(SyntaxNode name)
83public override SyntaxNode RefExpression(SyntaxNode expression)
86public override SyntaxNode AddParentheses(SyntaxNode expressionOrPattern, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
89internal static SyntaxNode Parenthesize(SyntaxNode expressionOrPattern, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
97public override SyntaxNode YieldReturnStatement(SyntaxNode expression)
106public override SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken)
109public override SyntaxNode InterpolatedStringText(SyntaxToken textToken)
119public override SyntaxNode Interpolation(SyntaxNode syntaxNode)
122public override SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment)
125public override SyntaxNode InterpolationFormatClause(string format)
130public override SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames)
179public override SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext)
182public override SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right)
190public override SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type)
198public override SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isKeyword, SyntaxNode pattern)
204public override SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right)
207public override SyntaxNode ConstantPattern(SyntaxNode expression)
210public override SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name)
215public override SyntaxNode LessThanRelationalPattern(SyntaxNode expression)
218public override SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression)
221public override SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression)
224public override SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression)
227public override SyntaxNode NotPattern(SyntaxNode pattern)
230public override SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right)
233public override SyntaxNode ParenthesizedPattern(SyntaxNode pattern)
236public override SyntaxNode TypePattern(SyntaxNode type)
239public override SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern)
244public override SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression)
247public override SyntaxNode DefaultExpression(SyntaxNode type)
250public override SyntaxNode DefaultExpression(ITypeSymbol type)
285public override SyntaxNode TypeExpression(ITypeSymbol typeSymbol, RefKind refKind)
296public override SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode simpleName)
328public override SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right)
331public static SyntaxNode CreateBinaryExpression(SyntaxKind syntaxKind, SyntaxNode left, SyntaxNode right)
334public override SyntaxNode IdentifierName(string identifier)
337public override SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression)
AddImport\CSharpAddImportFeatureService.cs (26)
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)
134protected override bool CanAddImportForDeconstruct(string diagnosticId, SyntaxNode node)
137protected override bool CanAddImportForGetAwaiter(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node)
143protected override bool CanAddImportForGetEnumerator(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node)
146protected override bool CanAddImportForGetAsyncEnumerator(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node)
149protected override bool CanAddImportForNamespace(string diagnosticId, SyntaxNode node, out SimpleNameSyntax nameNode)
155protected override bool CanAddImportForQuery(string diagnosticId, SyntaxNode node)
161string diagnosticId, SyntaxNode node, out SimpleNameSyntax nameNode)
206private static bool TryFindStandaloneType(SyntaxNode node, out SimpleNameSyntax nameNode)
235SyntaxNode node,
242SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
249SyntaxNode node,
296SyntaxNode contextNode,
342SyntaxNode contextNode,
354Document document, CompilationUnitSyntax root, SyntaxNode contextNode, INamespaceOrTypeSymbol namespaceOrTypeSymbol,
365using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var newImports);
390SyntaxNode contextNode, IReadOnlyList<string> namespaceParts,
424SyntaxNode contextNode)
443SyntaxNode contextNode)
561SyntaxNode contextNode)
587private static bool HasExistingExternAlias(string alias, SyntaxNode contextNode)
602SyntaxNode contextNode, CancellationToken cancellationToken)
607protected override bool IsViableExtensionMethod(IMethodSymbol method, SyntaxNode expression, SemanticModel semanticModel, ISyntaxFacts syntaxFacts, CancellationToken cancellationToken)
630protected override bool IsAddMethodContext(SyntaxNode node, SemanticModel semanticModel)
ChangeSignature\CSharpChangeSignatureService.cs (30)
137var matchingNode = GetMatchingNode(token.Parent, restrictToDeclarations);
189private static int TryGetSelectedIndexFromDeclaration(int position, SyntaxNode matchingNode)
195private static SyntaxNode? GetMatchingNode(SyntaxNode node, bool restrictToDeclarations)
201for (var current = node; current != null; current = current.Parent)
218private static bool InSymbolHeader(SyntaxNode matchingNode, int position)
221var lastAttributes = matchingNode.ChildNodes().LastOrDefault(n => n is AttributeListSyntax);
231var parameterList = matchingNode.ChildNodes().LastOrDefault(n => n is ParameterListSyntax);
241public override SyntaxNode? FindNodeToUpdate(Document document, SyntaxNode node)
249var matchingNode = node.AncestorsAndSelf().FirstOrDefault(n => _updatableAncestorKinds.Contains(n.Kind()));
255var nodeContainingOriginal = GetNodeContainingTargetNode(matchingNode);
264private static SyntaxNode? GetNodeContainingTargetNode(SyntaxNode matchingNode)
292public override SyntaxNode ChangeSignature(
295SyntaxNode potentiallyUpdatedNode,
296SyntaxNode originalNode,
602private static bool IsParamsArrayExpanded(SemanticModel semanticModel, SyntaxNode node, SymbolInfo symbolInfo, CancellationToken cancellationToken)
690Func<AddedParameter, T> createNewParameterMethod) where T : SyntaxNode
696protected override T TransferLeadingWhitespaceTrivia<T>(T newArgument, SyntaxNode oldArgument)
723where TArgumentSyntax : SyntaxNode
771where T : SyntaxNode
772where U : SyntaxNode
810private ImmutableArray<SyntaxNode> VerifyAndPermuteParamNodes(IEnumerable<XmlElementSyntax> paramNodes, ISymbol declarationSymbol, SignatureChange updatedSignature)
850var permutedParams = ArrayBuilder<SyntaxNode>.GetInstance();
878using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var convertedMethodNodes);
916ArgumentSyntax a => (TArgumentSyntax)(SyntaxNode)a.WithNameColon(NameColon(name)),
917AttributeArgumentSyntax a => (TArgumentSyntax)(SyntaxNode)a.WithNameColon(NameColon(name)),
927var listOfArguments = SeparatedList(newArguments.Skip(indexInExistingList).Select(a => ((ArgumentSyntax)(SyntaxNode)a).Expression), newArguments.GetSeparators().Skip(indexInExistingList));
930return (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 (16)
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)
853VariableDeclaratorSyntax variableDeclarator, SyntaxTokenList modifiers, SyntaxToken semicolon, Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
903where TNode : SyntaxNode
948var parent = expression.Parent;
EditAndContinue\CSharpEditAndContinueAnalyzer.cs (185)
70internal override bool TryFindMemberDeclaration(SyntaxNode? root, SyntaxNode node, TextSpan activeSpan, out OneOrMany<SyntaxNode> declarations)
72var current = node;
173internal override MemberBody? TryGetDeclarationBody(SyntaxNode node, ISymbol? symbol)
176internal override bool IsDeclarationWithSharedBody(SyntaxNode declaration, ISymbol member)
182protected override IEnumerable<SyntaxNode> GetVariableUseSites(IEnumerable<SyntaxNode> roots, ISymbol localOrParameter, SemanticModel model, CancellationToken cancellationToken)
198internal static SyntaxNode FindStatementAndPartner(
200SyntaxNode body,
201SyntaxNode? partnerBody,
202out SyntaxNode? partnerStatement,
213SyntaxNode node;
368private static bool AreEquivalentIgnoringLambdaBodies(SyntaxNode left, SyntaxNode right)
379internal override bool IsClosureScope(SyntaxNode node)
382internal override SyntaxNode GetCapturedParameterScope(SyntaxNode methodOrLambda)
390BaseMethodDeclarationSyntax method => method.Body ?? (SyntaxNode?)method.ExpressionBody!,
398protected override LambdaBody? FindEnclosingLambdaBody(SyntaxNode encompassingAncestor, SyntaxNode node)
400var current = node;
403if (LambdaUtilities.IsLambdaBodyStatementOrExpression(current, out var body))
414protected override Match<SyntaxNode> ComputeTopLevelMatch(SyntaxNode oldCompilationUnit, SyntaxNode newCompilationUnit)
417protected override BidirectionalMap<SyntaxNode>? ComputeParameterMap(SyntaxNode oldDeclaration, SyntaxNode newDeclaration)
419BidirectionalMap<SyntaxNode>.FromMatch(SyntaxComparer.TopLevel.ComputeMatch(oldParameterList, newParameterList)) : null;
421private static SyntaxNode? GetDeclarationParameterList(SyntaxNode declaration)
430internal static Match<SyntaxNode> ComputeBodyMatch(SyntaxNode oldBody, SyntaxNode newBody, IEnumerable<KeyValuePair<SyntaxNode, SyntaxNode>>? knownMatches)
456static SyntaxNode GetMatchingRoot(SyntaxNode body)
458var parent = body.Parent!;
464var oldRoot = GetMatchingRoot(oldBody);
465var newRoot = GetMatchingRoot(newBody);
474private static IEnumerable<SyntaxNode> GetChildNodes(SyntaxNode root, SyntaxNode body)
512SyntaxNode oldBody,
513SyntaxNode newBody,
514SyntaxNode oldStatement,
515[NotNullWhen(true)] out SyntaxNode? newStatement)
536protected override bool IsNamespaceDeclaration(SyntaxNode node)
539private static bool IsTypeDeclaration(SyntaxNode node)
542protected override bool IsCompilationUnitWithGlobalStatements(SyntaxNode node)
545protected override bool IsGlobalStatement(SyntaxNode node)
548protected override IEnumerable<SyntaxNode> GetTopLevelTypeDeclarations(SyntaxNode compilationUnit)
580protected override IEnumerable<SequenceEdit> GetSyntaxSequenceEdits(ImmutableArray<SyntaxNode> oldNodes, ImmutableArray<SyntaxNode> newNodes)
583internal override SyntaxNode EmptyCompilationUnit
590protected override bool StatementLabelEquals(SyntaxNode node1, SyntaxNode node2)
596protected override bool TryGetActiveSpan(SyntaxNode node, int statementPart, int minLength, out TextSpan span)
680public static (SyntaxNode node, int part) GetFirstBodyActiveStatement(SyntaxNode memberBody)
683protected override IEnumerable<(SyntaxNode statement, int statementPart)> EnumerateNearStatements(SyntaxNode statement)
695var parent = statement.Parent;
740var node = nodeOrToken.AsNode();
774protected override bool AreEquivalentActiveStatements(SyntaxNode oldStatement, SyntaxNode newStatement, int statementPart)
886(SyntaxNode?)oldNode.Declaration ?? oldNode.Expression!,
887(SyntaxNode?)newNode.Declaration ?? newNode.Expression!);
923internal override bool IsInterfaceDeclaration(SyntaxNode node)
926internal override bool IsRecordDeclaration(SyntaxNode node)
929internal override SyntaxNode? TryGetContainingTypeDeclaration(SyntaxNode node)
932internal override bool IsDeclarationWithInitializer(SyntaxNode declaration)
948internal override bool IsPrimaryConstructorDeclaration(SyntaxNode declaration)
1003protected override SyntaxNode? GetSymbolDeclarationSyntax(ISymbol symbol, Func<ImmutableArray<SyntaxReference>, SyntaxReference?> selector, CancellationToken cancellationToken)
1008var syntax = symbol switch
1028protected override ISymbol? GetDeclaredSymbol(SemanticModel model, SyntaxNode declaration, CancellationToken cancellationToken)
1043SyntaxNode? oldNode,
1044SyntaxNode? newNode,
1087SyntaxNode? oldNode,
1089SyntaxNode? newNode,
1093Match<SyntaxNode> topMatch,
1094IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
1321var node = oldNode ?? newNode;
1399SyntaxNode node,
1435private ISymbol? GetParameterContainingMemberOrType(SyntaxNode? node, SyntaxNode? otherNode, SemanticModel? model, IReadOnlyDictionary<SyntaxNode, SyntaxNode> fromOtherMap, CancellationToken cancellationToken)
1440SyntaxNode? declaration;
1462static SyntaxNode GetContainingDeclaration(SyntaxNode node)
1466private static bool SupportsMove(SyntaxNode node)
1471internal override Func<SyntaxNode, bool> IsLambda
1474internal override Func<SyntaxNode, bool> IsNotLambda
1477internal override Func<SyntaxNode, IEnumerable<SyntaxToken>> DescendantTokensIgnoringLambdaBodies
1483internal override bool IsLocalFunction(SyntaxNode node)
1486internal override bool IsGenericLocalFunction(SyntaxNode node)
1489internal override bool IsNestedFunction(SyntaxNode node)
1492internal override bool TryGetLambdaBodies(SyntaxNode node, [NotNullWhen(true)] out LambdaBody? body1, out LambdaBody? body2)
1494if (LambdaUtilities.TryGetLambdaBodies(node, out var bodyNode1, out var bodyNode2))
1506internal override IMethodSymbol GetLambdaExpressionSymbol(SemanticModel model, SyntaxNode lambdaExpression, CancellationToken cancellationToken)
1508var bodyExpression = LambdaUtilities.GetNestedFunctionBody(lambdaExpression);
1512internal override SyntaxNode? GetContainingQueryExpression(SyntaxNode node)
1515internal override bool QueryClauseLambdasTypeEquivalent(SemanticModel oldModel, SyntaxNode oldNode, SemanticModel newModel, SyntaxNode newNode, CancellationToken cancellationToken)
1616protected override TextSpan? TryGetDiagnosticSpan(SyntaxNode node, EditKind editKind)
1619internal static new TextSpan GetDiagnosticSpan(SyntaxNode node, EditKind editKind)
1622private static TextSpan? TryGetDiagnosticSpanImpl(SyntaxNode node, EditKind editKind)
1626internal static TextSpan? TryGetDiagnosticSpanImpl(SyntaxKind kind, SyntaxNode node, EditKind editKind)
1635var globalNode =
1761var startNode = parameter.Type ?? (SyntaxNode)parameter;
1957internal override TextSpan GetLambdaParameterDiagnosticSpan(SyntaxNode lambda, int ordinal)
2007protected override string? TryGetDisplayName(SyntaxNode node, EditKind editKind)
2010internal static new string? GetDisplayName(SyntaxNode node, EditKind editKind)
2013internal static string? TryGetDisplayNameImpl(SyntaxNode node, EditKind editKind)
2277protected override string GetSuspensionPointDisplayName(SyntaxNode node, EditKind editKind)
2302private readonly Match<SyntaxNode>? _match;
2303private readonly SyntaxNode? _oldNode;
2304private readonly SyntaxNode? _newNode;
2311SyntaxNode? oldNode,
2312SyntaxNode? newNode,
2314Match<SyntaxNode>? match = null,
2331private void ReportError(RudeEditKind kind, SyntaxNode? spanNode = null, SyntaxNode? displayNode = null)
2334var node = displayNode ?? _newNode ?? _oldNode;
2384private void ClassifyMove(SyntaxNode newNode)
2394private void ClassifyReorder(SyntaxNode newNode)
2415private void ClassifyInsert(SyntaxNode node)
2439private void ClassifyDelete(SyntaxNode oldNode)
2465private void ClassifyUpdate(SyntaxNode newNode)
2491Match<SyntaxNode> match,
2492Edit<SyntaxNode> edit,
2493Dictionary<SyntaxNode, EditKind> editMap)
2504internal override bool HasUnsupportedOperation(IEnumerable<SyntaxNode> nodes, [NotNullWhen(true)] out SyntaxNode? unsupportedNode, out RudeEditKind rudeEdit)
2509foreach (var node in nodes)
2528internal override void ReportInsertedMemberSymbolRudeEdits(RudeEditDiagnosticsBuilder diagnostics, ISymbol newSymbol, SyntaxNode newNode, bool insertingIntoExistingContainingType)
2590protected override List<SyntaxNode> GetExceptionHandlingAncestors(SyntaxNode node, SyntaxNode root, bool isNonLeaf)
2592var result = new List<SyntaxNode>();
2594var current = node;
2643IEnumerable<Edit<SyntaxNode>> exceptionHandlingEdits,
2644SyntaxNode oldStatement,
2659private static bool AreExceptionClausesEquivalent(SyntaxNode oldNode, SyntaxNode newNode)
2692protected override TextSpan GetExceptionHandlingRegion(SyntaxNode node, out bool coversAllChildren)
2731internal override bool IsStateMachineMethod(SyntaxNode declaration)
2734internal override void ReportStateMachineSuspensionPointRudeEdits(DiagnosticContext diagnosticContext, SyntaxNode oldNode, SyntaxNode newNode)
2750private static SyntaxNode FindContainingStatementPart(SyntaxNode node)
2784private static bool HasNoSpilledState(SyntaxNode awaitExpression, SyntaxNode containingStatementPart)
2825private static ExpressionSyntax GetExpressionFromStatementPart(SyntaxNode statement)
2841private static bool IsSimpleAwaitAssignment(SyntaxNode node, SyntaxNode awaitExpression)
2857IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap,
2858SyntaxNode oldActiveStatement,
2861SyntaxNode newActiveStatement,
2879private void ReportRudeEditsForSwitchWhenClauses(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode oldActiveStatement, SyntaxNode newActiveStatement)
2936SyntaxNode oldActiveStatement,
2937SyntaxNode newActiveStatement,
2970private static CheckedStatementSyntax? TryGetCheckedStatementAncestor(SyntaxNode? node)
2991IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap,
2992SyntaxNode oldActiveStatement,
2993SyntaxNode oldEncompassingAncestor,
2995SyntaxNode newActiveStatement,
2996SyntaxNode newEncompassingAncestor,
3019getTypedNodes: static n => OneOrMany.OneOrNone<SyntaxNode>(n.Expression),
3050getTypedNodes: static n => OneOrMany.Create<SyntaxNode>(n.Expression!),
3065getTypedNodes: static n => OneOrMany.OneOrNone<SyntaxNode>(n.Expression),
3070static OneOrMany<SyntaxNode> GetTypedNodes(VariableDeclarationSyntax declaration)
3072? OneOrMany.Create<SyntaxNode>(initializer.Value)
3073: OneOrMany.Create(declaration.Variables.Select(static v => (SyntaxNode?)v.Initializer?.Value).WhereNotNull().ToImmutableArray());
EditAndContinue\DeclarationBody\FieldWithInitializerDeclarationBody.cs (12)
46public override SyntaxNode EncompassingAncestor
49public override IEnumerable<SyntaxToken> GetActiveTokens(Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
55public override IEnumerable<SyntaxToken> GetUserCodeTokens(Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
61public override OneOrMany<SyntaxNode> RootNodes
62=> OneOrMany.Create<SyntaxNode>(InitializerExpression);
64public override Match<SyntaxNode>? ComputeSingleRootMatch(DeclarationBody newBody, IEnumerable<KeyValuePair<SyntaxNode, SyntaxNode>>? knownMatches)
67public override bool TryMatchActiveStatement(DeclarationBody newBody, SyntaxNode oldStatement, ref int statementPart, [NotNullWhen(true)] out SyntaxNode? newStatement)
79public 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)
36public override SyntaxNode EncompassingAncestor
39public override IEnumerable<SyntaxToken>? GetActiveTokens(Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
42public override IEnumerable<SyntaxToken> GetUserCodeTokens(Func<SyntaxNode, IEnumerable<SyntaxToken>> getDescendantTokens)
51public override OneOrMany<SyntaxNode> RootNodes
52=> OneOrMany.Create(GlobalStatements.ToImmutableArray<SyntaxNode>());
54public override Match<SyntaxNode>? ComputeSingleRootMatch(DeclarationBody newBody, IEnumerable<KeyValuePair<SyntaxNode, SyntaxNode>>? knownMatches)
57public override SyntaxNode FindStatementAndPartner(TextSpan span, MemberBody? partnerDeclarationBody, out SyntaxNode? partnerStatement, out int statementPart)
65public override bool TryMatchActiveStatement(DeclarationBody newBody, SyntaxNode oldStatement, ref int statementPart, [NotNullWhen(true)] out SyntaxNode? newStatement)
EditAndContinue\SyntaxComparer.cs (50)
27SyntaxNode? oldRoot,
28SyntaxNode? newRoot,
29IEnumerable<SyntaxNode>? oldRootChildren,
30IEnumerable<SyntaxNode>? newRootChildren,
36protected override bool IsLambdaBodyStatementOrExpression(SyntaxNode node)
234internal override int Classify(int kind, SyntaxNode? node, out bool isLeaf)
237internal Label Classify(SyntaxKind kind, SyntaxNode? node, out bool isLeaf)
293private static Label ClassifyStatementSyntax(SyntaxKind kind, SyntaxNode? node, out bool isLeaf)
560private static Label ClassifyTopSyntax(SyntaxKind kind, SyntaxNode? node, out bool isLeaf)
706public override bool ValuesEqual(SyntaxNode left, SyntaxNode right)
765private static SyntaxNode? GetBody(SyntaxNode node)
769case BaseMethodDeclarationSyntax baseMethodDeclarationSyntax: return baseMethodDeclarationSyntax.Body ?? (SyntaxNode?)baseMethodDeclarationSyntax.ExpressionBody?.Expression;
770case AccessorDeclarationSyntax accessorDeclarationSyntax: return accessorDeclarationSyntax.Body ?? (SyntaxNode?)accessorDeclarationSyntax.ExpressionBody?.Expression;
775protected override bool TryComputeWeightedDistance(SyntaxNode leftNode, SyntaxNode rightNode, out double distance)
817(SyntaxNode?)leftUsing.Expression ?? leftUsing.Declaration!,
819(SyntaxNode?)rightUsing.Expression ?? rightUsing.Declaration!,
938private static double ComputeWeightedDistanceOfNestedFunctions(SyntaxNode leftNode, SyntaxNode rightNode)
965SyntaxNode nestedFunction,
968out SyntaxNode body,
1021body = (SyntaxNode?)localFunction.Body ?? localFunction.ExpressionBody!;
1203SyntaxNode? leftHeader,
1205SyntaxNode? rightHeader,
1281foreach (var child in block.ChildNodes())
1376SyntaxNode? left1,
1377SyntaxNode? right1,
1378SyntaxNode? left2,
1379SyntaxNode? right2,
1411private static SyntaxNodeOrToken? TryGetName(SyntaxNode node)
1506public sealed override double GetDistance(SyntaxNode oldNode, SyntaxNode newNode)
1528internal static double ComputeValueDistance(SyntaxNode? oldNode, SyntaxNode? newNode)
1557var leftNode = oldNodeOrToken.AsNode();
1558var rightNode = newNodeOrToken.AsNode();
1571where TSyntaxNode : SyntaxNode
1588public static double ComputeDistance(SyntaxNode? oldNode, SyntaxNode? newNode)
1627public static double ComputeDistance(IEnumerable<SyntaxNode>? oldNodes, IEnumerable<SyntaxNode>? newNodes)
1633public static IEnumerable<SequenceEdit> GetSequenceEdits(IEnumerable<SyntaxNode>? oldNodes, IEnumerable<SyntaxNode>? newNodes)
1639public static IEnumerable<SequenceEdit> GetSequenceEdits(ImmutableArray<SyntaxNode> oldNodes, ImmutableArray<SyntaxNode> newNodes)
1662private sealed class LcsNodes : LongestCommonImmutableArraySubsequence<SyntaxNode>
1666protected override bool Equals(SyntaxNode oldElement, SyntaxNode newElement)
ExtractMethod\CSharpMethodExtractor.CSharpCodeGenerator.cs (39)
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();
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>();
781SyntaxNode insertionPointNode,
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
1074static bool ReturnOperationBelongsToMethod(SyntaxNode returnOperationSyntax, SyntaxNode methodSyntax)
1076var enclosingMethod = returnOperationSyntax.FirstAncestorOrSelf<SyntaxNode>(n => n switch
1088SyntaxNode node,
1104var syntax = returnOperation.ReturnedValue?.Syntax ?? returnOperation.Syntax;
GenerateType\CSharpGenerateTypeService.cs (9)
476? genericName.TypeArgumentList.Arguments.OfType<SyntaxNode>().ToList()
477: Enumerable.Repeat<SyntaxNode>(null, state.SimpleName.Arity);
543INamedTypeSymbol namedTypeSymbol, string[] containers, Document selectedDocument, SyntaxNode selectedDocumentRoot, CancellationToken cancellationToken)
662var node = expression as SyntaxNode;
663SyntaxNode previousNode = null;
699private static bool IsAllContainingTypeDeclsPublic(SyntaxNode node)
714Solution updatedSolution, SyntaxNode modifiedRoot, Document document, SimpleNameSyntax simpleName, string includeUsingsOrImports, CancellationToken cancellationToken)
722SyntaxNode root = null;
ImplementInterface\AbstractChangeImplementationCodeRefactoringProvider.cs (8)
43protected abstract SyntaxNode ChangeImplementation(SyntaxGenerator generator, SyntaxNode currentDecl, ISymbol implMember, ISymbol interfaceMember);
127private static async Task<(SyntaxNode?, ExplicitInterfaceSpecifierSyntax?, SyntaxToken)> GetContainerAsync(CodeRefactoringContext context)
154private static (SyntaxNode? declaration, ExplicitInterfaceSpecifierSyntax?, SyntaxToken) GetContainer(SyntaxToken token)
156for (var node = token.Parent; node != null; node = node.Parent)
163_ => default((SyntaxNode member, ExplicitInterfaceSpecifierSyntax?, SyntaxToken)),
229var documentToImplDeclarations = new OrderedMultiDictionary<Document, (SyntaxNode, ISymbol impl, SetWithInsertionOrder<ISymbol> interfaceMembers)>();
239var 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)
SignatureHelp\ElementAccessExpressionSignatureHelpProvider.cs (6)
43private static bool TryGetElementAccessExpression(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, SignatureHelpTriggerReason triggerReason, CancellationToken cancellationToken, [NotNullWhen(true)] out ExpressionSyntax? identifier, out SyntaxToken openBrace)
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 (8)
37private SignatureHelpState? GetCurrentArgumentState(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, TextSpan currentSpan, CancellationToken cancellationToken)
63private bool GetOuterMostTupleExpressionInSpan(SyntaxNode root, int position,
82private bool GetOuterMostParenthesizedExpressionInSpan(SyntaxNode root, int position,
123private IEnumerable<INamedTypeSymbol>? FindNearestTupleConstructionWithInferrableType(SyntaxNode root, SemanticModel semanticModel, int position, SignatureHelpTriggerInfo triggerInfo,
148private SignatureHelpItems? CreateItems(int position, SyntaxNode root, ISyntaxFactsService syntaxFacts,
149SyntaxNode targetExpression, SemanticModel semanticModel, IEnumerable<INamedTypeSymbol> tupleTypes, CancellationToken cancellationToken)
200private bool TryGetTupleExpression(SignatureHelpTriggerReason triggerReason, SyntaxNode root, int position,
217private 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\Analyzers\CSharp\Analyzers\RemoveConfusingSuppression\CSharpRemoveConfusingSuppressionDiagnosticAnalyzer.cs (1)
30var node = context.Node;
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\Analyzers\CSharp\Analyzers\UseExpressionBody\Helpers\UseExpressionBodyHelper`1.cs (10)
28where TDeclaration : SyntaxNode
63public override BlockSyntax? GetBody(SyntaxNode declaration)
66public override ArrowExpressionClauseSyntax? GetExpressionBody(SyntaxNode declaration)
69public override bool IsRelevantDeclarationNode(SyntaxNode node)
72public override bool CanOfferUseExpressionBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, CancellationToken cancellationToken)
75public override bool CanOfferUseBlockBody(CodeStyleOption2<ExpressionBodyPreference> preference, SyntaxNode declaration, bool forAnalyzer, out bool fixesError, [NotNullWhen(true)] out ArrowExpressionClauseSyntax? expressionBody)
78public sealed override SyntaxNode Update(SemanticModel semanticModel, SyntaxNode declaration, bool useExpressionBody, CancellationToken cancellationToken)
81public override Location GetDiagnosticLocation(SyntaxNode declaration)
131SyntaxNode declaration, ExpressionBodyPreference conversionPreference, CancellationToken cancellationToken,
src\Analyzers\CSharp\Analyzers\UseUtf8StringLiteral\UseUtf8StringLiteralDiagnosticAnalyzer.cs (3)
118private void ReportParameterArrayDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, ImmutableArray<IOperation> elements, NotificationOption2 notificationOption, ArrayCreationOperationLocation operationLocation)
130private void ReportArrayCreationDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, NotificationOption2 notificationOption)
138private void ReportDiagnostic(OperationAnalysisContext context, SyntaxNode syntaxNode, NotificationOption2 notificationOption, Location location, ArrayCreationOperationLocation operationLocation)
src\Analyzers\CSharp\CodeFixes\AssignOutParameters\AbstractAssignOutParametersCodeFixProvider.cs (20)
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(
104var result = new MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol>)>();
149SyntaxEditor editor, SyntaxNode container,
150MultiDictionary<SyntaxNode, (SyntaxNode exprOrStatement, ImmutableArray<IParameterSymbol> unassignedParameters)>.ValueSet values,
153protected static ImmutableArray<SyntaxNode> GenerateAssignmentStatements(
156var result = ArrayBuilder<SyntaxNode>.GetInstance();
src\Analyzers\CSharp\CodeFixes\AssignOutParameters\AssignOutParametersAboveReturnCodeFixProvider.cs (7)
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)
src\Analyzers\CSharp\CodeFixes\ConvertNamespace\ConvertNamespaceTransform.cs (8)
81private static (SyntaxNode root, TextSpan semicolonSpan) ReplaceWithFileScopedNamespace(
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\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\Analyzers\CSharp\CodeFixes\InlineDeclaration\CSharpInlineDeclarationCodeFixProvider.cs (11)
63var originalRoot = editor.OriginalRoot;
70static t => (t.invocationOrCreation, ImmutableArray.Create<SyntaxNode>(t.identifier, t.declarator)),
79private static (VariableDeclaratorSyntax declarator, IdentifierNameSyntax identifier, SyntaxNode invocationOrCreation) FindDiagnosticNodes(
95private static SyntaxNode ReplaceIdentifierWithInlineDeclaration(
98SyntaxNode currentRoot, VariableDeclaratorSyntax declarator,
99IdentifierNameSyntax identifier, SyntaxNode currentNode,
119var block = CSharpBlockFacts.Instance.GetImmediateParentExecutableBlockForStatement(localDeclarationStatement);
325SyntaxNode nodeToReplace,
374private static SyntaxNode GetTopmostContainer(SyntaxNode expression)
385int position, SyntaxNode topmostContainer,
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\Analyzers\CSharp\CodeFixes\UseUnboundGenericTypeInNameOf\CSharpUseUnboundGenericTypeInNameOfCodeFixProvider.cs (1)
60where TSyntax : SyntaxNode
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)
319SyntaxNode node, string bannerText, bool autoCollapse,
331SyntaxNode node, SyntaxToken syntaxToken, bool compressEmptyLines,
341SyntaxNode node, SyntaxToken startToken,
368private static TextSpan GetHintSpan(SyntaxNode node, int endPos)
386SyntaxNode node, SyntaxToken startToken,
397SyntaxNode node, bool autoCollapse, string type, bool isCollapsible)
410SyntaxNode node, SyntaxToken syntaxToken, bool compressEmptyLines,
424SyntaxNode node, SyntaxToken startToken, SyntaxToken endToken, bool compressEmptyLines,
439IEnumerable<SyntaxNode> syntaxList, bool compressEmptyLines, bool autoCollapse,
UseExpressionBody\UseExpressionBodyCodeRefactoringProvider.cs (24)
91private static SyntaxNode? TryGetDeclaration(
92UseExpressionBodyHelper helper, SourceText text, SyntaxNode node, int position)
112CodeRefactoringContext context, SyntaxNode root, SyntaxNode declaration,
148private static SyntaxNode? GetDeclaration(SyntaxNode node, UseExpressionBodyHelper helper)
150for (var current = node; current != null; current = current.Parent)
160Document document, SyntaxNode root, SyntaxNode declaration,
169private static SyntaxNode GetUpdatedRoot(
170SemanticModel semanticModel, SyntaxNode root, SyntaxNode declaration,
173var updatedDeclaration = helper.Update(semanticModel, declaration, useExpressionBody, cancellationToken);
175var parent = declaration is AccessorDeclarationSyntax
179var updatedParent = parent.ReplaceNode(declaration, updatedDeclaration)
202static IEnumerable<SyntaxNode> GetDeclarationsToFix(
204SyntaxNode root,
213var spanNode = root.FindNode(span);
215foreach (var node in spanNode.DescendantNodesAndSelf())
235SyntaxNode root,
236ImmutableArray<SyntaxNode> declarationsToFix,
242var currentRoot = root.TrackNodes(declarationsToFix);
245foreach (var declaration in declarationsToFix.Reverse())
251var currentDeclaration = currentRoot.GetCurrentNodes(declaration).Single();
Classification\SyntaxClassification\FunctionPointerUnmanagedCallingConventionClassifier.cs (1)
22SyntaxNode syntax,
CodeGeneration\CSharpSyntaxGenerator.cs (613)
69internal override SyntaxTrivia Trivia(SyntaxNode node)
79internal override SyntaxNode DocumentationCommentTrivia(IEnumerable<SyntaxNode> nodes, SyntaxTriviaList trailingTrivia, string endOfLineString)
92internal override SyntaxNode? DocumentationCommentTriviaWithUpdatedContent(SyntaxTrivia trivia, IEnumerable<SyntaxNode> content)
105public override SyntaxNode CompilationUnit(IEnumerable<SyntaxNode> declarations)
112private SyntaxList<UsingDirectiveSyntax> AsUsingDirectives(IEnumerable<SyntaxNode> declarations)
119private SyntaxNode? AsUsingDirective(SyntaxNode node)
129private static SyntaxList<MemberDeclarationSyntax> AsNamespaceMembers(IEnumerable<SyntaxNode> declarations)
136private static SyntaxNode? AsNamespaceMember(SyntaxNode declaration)
155public override SyntaxNode NamespaceImportDeclaration(SyntaxNode name)
158public override SyntaxNode AliasImportDeclaration(string aliasIdentifierName, SyntaxNode name)
161public override SyntaxNode NamespaceDeclaration(SyntaxNode name, IEnumerable<SyntaxNode> declarations)
170public override SyntaxNode FieldDeclaration(
172SyntaxNode type,
175SyntaxNode? initializer)
191private protected override SyntaxNode ParameterDeclaration(
192string name, SyntaxNode? type, SyntaxNode? initializer, RefKind refKind, bool isExtension, bool isParams, bool isScoped)
225private protected override SyntaxNode MethodDeclaration(
227IEnumerable<SyntaxNode>? parameters,
228IEnumerable<SyntaxNode>? typeParameters,
229SyntaxNode? returnType,
232IEnumerable<SyntaxNode>? statements)
264public override SyntaxNode OperatorDeclaration(OperatorKind kind, IEnumerable<SyntaxNode>? parameters = null, SyntaxNode? returnType = null, Accessibility accessibility = Accessibility.NotApplicable, DeclarationModifiers modifiers = default, IEnumerable<SyntaxNode>? statements = null)
270private 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)
347private static ParameterListSyntax AsParameterList(IEnumerable<SyntaxNode>? parameters)
354public override SyntaxNode ConstructorDeclaration(
356IEnumerable<SyntaxNode>? parameters,
359IEnumerable<SyntaxNode>? baseConstructorArguments,
360IEnumerable<SyntaxNode>? statements)
371private protected override SyntaxNode DestructorDeclaration(IMethodSymbol destructorMethod)
374public override SyntaxNode PropertyDeclaration(
376SyntaxNode type,
379IEnumerable<SyntaxNode>? getAccessorStatements,
380IEnumerable<SyntaxNode>? setAccessorStatements)
382SyntaxNode? getAccessor = null;
383SyntaxNode? setAccessor = null;
394private protected override SyntaxNode PropertyDeclaration(
396SyntaxNode type,
397SyntaxNode? getAccessor,
398SyntaxNode? setAccessor,
420public override SyntaxNode GetAccessorDeclaration(Accessibility accessibility, IEnumerable<SyntaxNode>? statements)
423private protected override SyntaxNode SetAccessorDeclaration(Accessibility accessibility, bool isInitOnly, IEnumerable<SyntaxNode>? statements)
426private static SyntaxNode AccessorDeclaration(
427SyntaxKind kind, Accessibility accessibility, IEnumerable<SyntaxNode>? statements)
440public override SyntaxNode WithAccessorDeclarations(SyntaxNode declaration, IEnumerable<SyntaxNode> accessorDeclarations)
456private static AccessorListSyntax CreateAccessorList(AccessorListSyntax? accessorList, IEnumerable<SyntaxNode> accessorDeclarations)
464public override SyntaxNode IndexerDeclaration(
465IEnumerable<SyntaxNode> parameters,
466SyntaxNode type,
469IEnumerable<SyntaxNode>? getAccessorStatements,
470IEnumerable<SyntaxNode>? setAccessorStatements)
511private static BracketedParameterListSyntax AsBracketedParameterList(IEnumerable<SyntaxNode> parameters)
518private static AccessorDeclarationSyntax AccessorDeclaration(SyntaxKind kind, IEnumerable<SyntaxNode>? statements)
532public override SyntaxNode EventDeclaration(
534SyntaxNode type,
546public override SyntaxNode CustomEventDeclaration(
548SyntaxNode type,
551IEnumerable<SyntaxNode>? parameters,
552IEnumerable<SyntaxNode>? addAccessorStatements,
553IEnumerable<SyntaxNode>? removeAccessorStatements)
579public override SyntaxNode? AsPublicInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceTypeName, string? interfaceMemberName)
596public override SyntaxNode? AsPrivateInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceTypeName, string? interfaceMemberName)
612private SyntaxNode WithoutConstraints(SyntaxNode declaration)
625private static SyntaxNode WithInterfaceSpecifier(SyntaxNode declaration, ExplicitInterfaceSpecifierSyntax? specifier)
637private SyntaxNode AsImplementation(SyntaxNode declaration, Accessibility requiredAccess)
645private static SyntaxNode WithBodies(SyntaxNode declaration)
694private protected override SyntaxNode ClassDeclaration(
697IEnumerable<SyntaxNode>? typeParameters,
700SyntaxNode? baseType,
701IEnumerable<SyntaxNode>? interfaceTypes,
702IEnumerable<SyntaxNode>? members)
726private SyntaxList<MemberDeclarationSyntax> AsClassMembers(string className, IEnumerable<SyntaxNode>? members)
733private MemberDeclarationSyntax? AsClassMember(SyntaxNode node, string className)
750private protected override SyntaxNode StructDeclaration(
753IEnumerable<SyntaxNode>? typeParameters,
756IEnumerable<SyntaxNode>? interfaceTypes,
757IEnumerable<SyntaxNode>? members)
773private protected override SyntaxNode InterfaceDeclaration(
775IEnumerable<SyntaxNode>? typeParameters,
777IEnumerable<SyntaxNode>? interfaceTypes = null,
778IEnumerable<SyntaxNode>? members = null)
796private SyntaxList<MemberDeclarationSyntax> AsInterfaceMembers(IEnumerable<SyntaxNode>? members)
803internal override SyntaxNode AsInterfaceMember(SyntaxNode m)
866var type = GetType(f);
878public override SyntaxNode EnumDeclaration(
882IEnumerable<SyntaxNode>? members)
887internal override SyntaxNode EnumDeclaration(string name, SyntaxNode? underlyingType, Accessibility accessibility = Accessibility.NotApplicable, DeclarationModifiers modifiers = default, IEnumerable<SyntaxNode>? members = null)
897public override SyntaxNode EnumMember(string name, SyntaxNode? expression)
905private EnumMemberDeclarationSyntax AsEnumMember(SyntaxNode node)
927private SeparatedSyntaxList<EnumMemberDeclarationSyntax> AsEnumMembers(IEnumerable<SyntaxNode>? members)
930private protected override SyntaxNode DelegateDeclaration(
932IEnumerable<SyntaxNode>? parameters,
933IEnumerable<SyntaxNode>? typeParameters,
934SyntaxNode? returnType,
948public override SyntaxNode Attribute(SyntaxNode name, IEnumerable<SyntaxNode>? attributeArguments)
951public override SyntaxNode AttributeArgument(string? name, SyntaxNode expression)
958private static AttributeArgumentListSyntax? AsAttributeArgumentList(IEnumerable<SyntaxNode>? arguments)
961private static AttributeArgumentSyntax AsAttributeArgument(SyntaxNode node)
990private static SyntaxList<AttributeListSyntax> AsAttributeLists(IEnumerable<SyntaxNode> attributes)
995private static AttributeListSyntax AsAttributeList(SyntaxNode node)
1000private static readonly ConditionalWeakTable<SyntaxNode, IReadOnlyList<SyntaxNode>> s_declAttributes = new();
1002public override IReadOnlyList<SyntaxNode> GetAttributes(SyntaxNode declaration)
1013private static readonly ConditionalWeakTable<SyntaxNode, IReadOnlyList<SyntaxNode>> s_declReturnAttributes = new();
1015public override IReadOnlyList<SyntaxNode> GetReturnAttributes(SyntaxNode declaration)
1029public override SyntaxNode InsertAttributes(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes)
1032private SyntaxNode InsertAttributesInternal(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes)
1053public override SyntaxNode InsertReturnAttributes(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes)
1067private SyntaxNode InsertReturnAttributesInternal(SyntaxNode d, int index, IEnumerable<SyntaxNode> attributes)
1088private static IEnumerable<AttributeListSyntax> AsReturnAttributes(IEnumerable<SyntaxNode> attributes)
1099private static SyntaxList<AttributeListSyntax> WithRequiredTargetSpecifier(SyntaxList<AttributeListSyntax> attributes, SyntaxNode declaration)
1109public override IReadOnlyList<SyntaxNode> GetAttributeArguments(SyntaxNode attributeDeclaration)
1134public override SyntaxNode InsertAttributeArguments(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributeArguments)
1137private static SyntaxNode InsertAttributeArgumentsInternal(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributeArguments)
1157private static AttributeArgumentListSyntax? GetAttributeArgumentList(SyntaxNode declaration)
1177private static SyntaxNode WithAttributeArgumentList(SyntaxNode declaration, AttributeArgumentListSyntax? argList)
1197internal static SyntaxList<AttributeListSyntax> GetAttributeLists(SyntaxNode declaration)
1208private static SyntaxNode WithAttributeLists(SyntaxNode declaration, SyntaxList<AttributeListSyntax> attributeLists)
1221internal override SyntaxNode? GetPrimaryConstructorParameterList(SyntaxNode declaration)
1224internal override ImmutableArray<SyntaxNode> GetTypeInheritance(SyntaxNode declaration)
1227: ImmutableArray<SyntaxNode>.Empty;
1229public override IReadOnlyList<SyntaxNode> GetNamespaceImports(SyntaxNode declaration)
1237public override SyntaxNode InsertNamespaceImports(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> imports)
1239var result = PreserveTrivia(declaration, d => InsertNamespaceImportsInternal(d, index, imports));
1244private SyntaxNode InsertNamespaceImportsInternal(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> imports)
1256public override IReadOnlyList<SyntaxNode> GetMembers(SyntaxNode declaration)
1266private static ImmutableArray<SyntaxNode> Flatten(IEnumerable<SyntaxNode> declarations)
1268var builder = ArrayBuilder<SyntaxNode>.GetInstance();
1270foreach (var declaration in declarations)
1311static void FlattenDeclaration(ArrayBuilder<SyntaxNode> builder, SyntaxNode declaration, VariableDeclarationSyntax variableDeclaration)
1324private static int GetDeclarationCount(SyntaxNode declaration)
1335private static SyntaxNode EnsureTypeDeclarationHasBody(SyntaxNode declaration)
1348public override SyntaxNode InsertMembers(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> members)
1376private IEnumerable<MemberDeclarationSyntax>? AsMembersOf(SyntaxNode declaration, IEnumerable<SyntaxNode>? members)
1379private SyntaxNode? AsMemberOf(SyntaxNode declaration, SyntaxNode member)
1390private static bool CanHaveAccessibility(SyntaxNode declaration)
1398public override Accessibility GetAccessibility(SyntaxNode declaration)
1404public override SyntaxNode WithAccessibility(SyntaxNode declaration, Accessibility accessibility)
1606public override DeclarationModifiers GetModifiers(SyntaxNode declaration)
1613private static SyntaxTokenList GetModifierTokens(SyntaxNode declaration)
1619private SyntaxNode WithModifiersInternal(SyntaxNode declaration, DeclarationModifiers modifiers)
1651private static SyntaxNode SetModifierTokens(SyntaxNode declaration, SyntaxTokenList modifiers)
1727private protected override SyntaxNode TypeParameter(string name)
1730private protected override SyntaxNode TypeParameter(ITypeParameterSymbol typeParameter)
1743private static TypeParameterListSyntax? AsTypeParameterList(IEnumerable<SyntaxNode>? typeParameterNodes)
1752private protected override SyntaxNode WithTypeParameters(SyntaxNode declaration, IEnumerable<SyntaxNode> typeParameters)
1765internal override SyntaxNode WithExplicitInterfaceImplementations(
1766SyntaxNode declaration,
1790private static SyntaxNode RemoveDefaultValue(ParameterSyntax parameter, bool removeDefaults)
1808private protected override SyntaxNode WithTypeConstraint(
1809SyntaxNode declaration, string typeParameterName, SpecialTypeConstraintKind kinds, bool isUnmanagedType, IEnumerable<SyntaxNode>? types)
1818private protected override SyntaxNode WithDefaultConstraint(SyntaxNode declaration, string typeParameterName)
1830IEnumerable<SyntaxNode>? types)
1876public override DeclarationKind GetDeclarationKind(SyntaxNode declaration)
1879public override string GetName(SyntaxNode declaration)
1901public override SyntaxNode WithName(SyntaxNode declaration, string name)
1904private SyntaxNode WithNameInternal(SyntaxNode declaration, string name)
1941public override SyntaxNode? GetType(SyntaxNode declaration)
1980public override SyntaxNode WithType(SyntaxNode declaration, SyntaxNode type)
1983private static SyntaxNode WithTypeInternal(SyntaxNode declaration, SyntaxNode type)
1999private SyntaxNode Isolate(SyntaxNode declaration, Func<SyntaxNode, SyntaxNode> editor)
2002private SyntaxNode AsIsolatedDeclaration(SyntaxNode declaration)
2038private static SyntaxNode WithVariable(SyntaxNode declaration, VariableDeclaratorSyntax variable)
2049private static VariableDeclarationSyntax? GetVariableDeclaration(SyntaxNode declaration)
2058private static SyntaxNode WithVariableDeclaration(SyntaxNode declaration, VariableDeclarationSyntax variables)
2067private static SyntaxNode GetFullDeclaration(SyntaxNode declaration)
2098private SyntaxNode? AsNodeLike(SyntaxNode existingNode, SyntaxNode newNode)
2108var container = GetDeclaration(existingNode.Parent);
2123public override IReadOnlyList<SyntaxNode> GetParameters(SyntaxNode declaration)
2133public override SyntaxNode InsertParameters(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> parameters)
2146public override IReadOnlyList<SyntaxNode> GetSwitchSections(SyntaxNode switchStatement)
2152public override SyntaxNode InsertSwitchSections(SyntaxNode switchStatement, int index, IEnumerable<SyntaxNode> switchSections)
2179public override SyntaxNode? Visit(SyntaxNode? node)
2202internal override SyntaxNode? GetParameterListNode(SyntaxNode declaration)
2205private static SyntaxNode WithParameterList(SyntaxNode declaration, BaseParameterListSyntax list)
2251public override SyntaxNode? GetExpression(SyntaxNode declaration)
2301public override SyntaxNode WithExpression(SyntaxNode declaration, SyntaxNode expression)
2304private static SyntaxNode WithExpressionInternal(SyntaxNode declaration, SyntaxNode expression)
2377private static EqualsValueClauseSyntax? GetEqualsValue(SyntaxNode declaration)
2417private static SyntaxNode WithEqualsValue(SyntaxNode declaration, EqualsValueClauseSyntax? initializer)
2457public override IReadOnlyList<SyntaxNode> GetStatements(SyntaxNode declaration)
2479public override SyntaxNode WithStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
2504public override IReadOnlyList<SyntaxNode> GetAccessors(SyntaxNode declaration)
2510public override SyntaxNode InsertAccessors(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> accessors)
2531internal static AccessorListSyntax? GetAccessorList(SyntaxNode declaration)
2534private static bool CanHaveAccessors(SyntaxNode declaration)
2543private static SyntaxNode WithAccessorList(SyntaxNode declaration, AccessorListSyntax accessorList)
2550private static AccessorListSyntax AsAccessorList(IEnumerable<SyntaxNode> nodes, SyntaxKind parentKind)
2553private static AccessorDeclarationSyntax? AsAccessor(SyntaxNode node, SyntaxKind parentKind)
2581private static AccessorDeclarationSyntax? GetAccessor(SyntaxNode declaration, SyntaxKind kind)
2587private SyntaxNode WithAccessor(SyntaxNode declaration, SyntaxKind kind, AccessorDeclarationSyntax accessor)
2590private SyntaxNode WithAccessor(SyntaxNode declaration, AccessorListSyntax? accessorList, SyntaxKind kind, AccessorDeclarationSyntax? accessor)
2608public override IReadOnlyList<SyntaxNode> GetGetAccessorStatements(SyntaxNode declaration)
2614public override IReadOnlyList<SyntaxNode> GetSetAccessorStatements(SyntaxNode declaration)
2620public override SyntaxNode WithGetAccessorStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
2623public override SyntaxNode WithSetAccessorStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
2626private SyntaxNode WithAccessorStatements(SyntaxNode declaration, SyntaxKind kind, IEnumerable<SyntaxNode> statements)
2640public override IReadOnlyList<SyntaxNode> GetBaseAndInterfaceTypes(SyntaxNode declaration)
2653public override SyntaxNode AddBaseType(SyntaxNode declaration, SyntaxNode baseType)
2667public override SyntaxNode AddInterfaceType(SyntaxNode declaration, SyntaxNode interfaceType)
2681private static SyntaxNode AddBaseList(SyntaxNode declaration, BaseListSyntax baseList)
2683var newDecl = WithBaseList(declaration, baseList);
2689private static BaseListSyntax? GetBaseList(SyntaxNode declaration)
2694private static SyntaxNode WithBaseList(SyntaxNode declaration, BaseListSyntax baseList)
2703public override SyntaxNode ReplaceNode(SyntaxNode root, SyntaxNode declaration, SyntaxNode? newDeclaration)
2718var newFullDecl = AsIsolatedDeclaration(newDeclaration);
2719var fullDecl = GetFullDeclaration(declaration);
2727var newSubDecl = GetSubDeclarations(newFullDecl)[0];
2751private static bool AreInlineReplaceableSubDeclarations(SyntaxNode decl1, SyntaxNode decl2)
2767private static bool AreSimilarExceptForSubDeclarations(SyntaxNode? decl1, SyntaxNode? decl2)
2816private IEnumerable<SyntaxNode> SplitAndReplace(SyntaxNode multiPartDeclaration, int index, IEnumerable<SyntaxNode> newDeclarations)
2822var newNodes = new List<SyntaxNode>();
2846public override SyntaxNode InsertNodesBefore(SyntaxNode root, SyntaxNode declaration, IEnumerable<SyntaxNode> newDeclarations)
2865private SyntaxNode InsertNodesBeforeInternal(SyntaxNode root, SyntaxNode declaration, IEnumerable<SyntaxNode> newDeclarations)
2867var fullDecl = GetFullDeclaration(declaration);
2885public override SyntaxNode InsertNodesAfter(SyntaxNode root, SyntaxNode declaration, IEnumerable<SyntaxNode> newDeclarations)
2904private SyntaxNode InsertNodesAfterInternal(SyntaxNode root, SyntaxNode declaration, IEnumerable<SyntaxNode> newDeclarations)
2906var fullDecl = GetFullDeclaration(declaration);
2925private IEnumerable<SyntaxNode> SplitAndInsert(SyntaxNode multiPartDeclaration, int index, IEnumerable<SyntaxNode> newDeclarations)
2928var newNodes = new List<SyntaxNode>
2937private SyntaxNode WithSubDeclarationsRemoved(SyntaxNode declaration, int index, int count)
2940private static IReadOnlyList<SyntaxNode> GetSubDeclarations(SyntaxNode declaration)
2951public override SyntaxNode RemoveNode(SyntaxNode root, SyntaxNode node)
2954public override SyntaxNode RemoveNode(SyntaxNode root, SyntaxNode node, SyntaxRemoveOptions options)
2975private SyntaxNode RemoveNodeInternal(SyntaxNode root, SyntaxNode declaration, SyntaxRemoveOptions options)
3001var full = GetFullDeclaration(declaration);
3020var parent = declaration.Parent;
3039private static SyntaxNode ShiftTrivia(SyntaxNode root, SyntaxNode node)
3045var newNode = node.WithTrailingTrivia(node.GetTrailingTrivia().AddRange(previousToken.TrailingTrivia));
3063public override SyntaxNode AddEventHandler(SyntaxNode @event, SyntaxNode handler)
3066public override SyntaxNode RemoveEventHandler(SyntaxNode @event, SyntaxNode handler)
3069public override SyntaxNode AwaitExpression(SyntaxNode expression)
3072public override SyntaxNode NameOfExpression(SyntaxNode expression)
3075public override SyntaxNode ReturnStatement(SyntaxNode? expression = null)
3078public override SyntaxNode ThrowStatement(SyntaxNode? expression = null)
3081public override SyntaxNode ThrowExpression(SyntaxNode expression)
3084public override SyntaxNode IfStatement(SyntaxNode condition, IEnumerable<SyntaxNode> trueStatements, IEnumerable<SyntaxNode>? falseStatements = null)
3106IEnumerable<SyntaxNode>? statements = null,
3123private static SyntaxList<StatementSyntax> AsStatementList(IEnumerable<SyntaxNode>? nodes)
3126private static StatementSyntax AsStatement(SyntaxNode node)
3136public override SyntaxNode ExpressionStatement(SyntaxNode expression)
3139public override SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull)
3142public override SyntaxNode MemberBindingExpression(SyntaxNode name)
3145public override SyntaxNode ElementBindingExpression(IEnumerable<SyntaxNode> arguments)
3149private static SeparatedSyntaxList<ExpressionSyntax> AsExpressionList(IEnumerable<SyntaxNode> expressions)
3152public override SyntaxNode ArrayCreationExpression(SyntaxNode elementType, SyntaxNode size)
3158public override SyntaxNode ArrayCreationExpression(SyntaxNode elementType, IEnumerable<SyntaxNode> elements)
3166public override SyntaxNode ObjectCreationExpression(SyntaxNode type, IEnumerable<SyntaxNode> arguments)
3169internal override SyntaxNode ObjectCreationExpression(SyntaxNode type, SyntaxToken openParen, SeparatedSyntaxList<SyntaxNode> arguments, SyntaxToken closeParen)
3175private static ArgumentListSyntax CreateArgumentList(IEnumerable<SyntaxNode> arguments)
3178private static SeparatedSyntaxList<ArgumentSyntax> CreateArguments(IEnumerable<SyntaxNode> arguments)
3181private static ArgumentSyntax AsArgument(SyntaxNode argOrExpression)
3184public override SyntaxNode InvocationExpression(SyntaxNode expression, IEnumerable<SyntaxNode> arguments)
3187public override SyntaxNode ElementAccessExpression(SyntaxNode expression, IEnumerable<SyntaxNode> arguments)
3193private static SyntaxNode Parenthesize(SyntaxNode expression, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
3196public override SyntaxNode IsTypeExpression(SyntaxNode expression, SyntaxNode type)
3199public override SyntaxNode TypeOfExpression(SyntaxNode type)
3202public override SyntaxNode TryCastExpression(SyntaxNode expression, SyntaxNode type)
3205public override SyntaxNode AssignmentStatement(SyntaxNode left, SyntaxNode right)
3208private static SyntaxNode CreateBinaryExpression(SyntaxKind syntaxKind, SyntaxNode left, SyntaxNode right)
3211public override SyntaxNode ValueEqualsExpression(SyntaxNode left, SyntaxNode right)
3214public override SyntaxNode ReferenceEqualsExpression(SyntaxNode left, SyntaxNode right)
3217public override SyntaxNode ValueNotEqualsExpression(SyntaxNode left, SyntaxNode right)
3220public override SyntaxNode ReferenceNotEqualsExpression(SyntaxNode left, SyntaxNode right)
3223public override SyntaxNode LessThanExpression(SyntaxNode left, SyntaxNode right)
3226public override SyntaxNode LessThanOrEqualExpression(SyntaxNode left, SyntaxNode right)
3229public override SyntaxNode GreaterThanExpression(SyntaxNode left, SyntaxNode right)
3232public override SyntaxNode GreaterThanOrEqualExpression(SyntaxNode left, SyntaxNode right)
3235public override SyntaxNode NegateExpression(SyntaxNode expression)
3238public override SyntaxNode AddExpression(SyntaxNode left, SyntaxNode right)
3241public override SyntaxNode SubtractExpression(SyntaxNode left, SyntaxNode right)
3244public override SyntaxNode MultiplyExpression(SyntaxNode left, SyntaxNode right)
3247public override SyntaxNode DivideExpression(SyntaxNode left, SyntaxNode right)
3250public override SyntaxNode ModuloExpression(SyntaxNode left, SyntaxNode right)
3253public override SyntaxNode BitwiseAndExpression(SyntaxNode left, SyntaxNode right)
3256public override SyntaxNode BitwiseNotExpression(SyntaxNode operand)
3259public override SyntaxNode LogicalAndExpression(SyntaxNode left, SyntaxNode right)
3262public override SyntaxNode LogicalOrExpression(SyntaxNode left, SyntaxNode right)
3265public override SyntaxNode LogicalNotExpression(SyntaxNode expression)
3268public override SyntaxNode ConditionalExpression(SyntaxNode condition, SyntaxNode whenTrue, SyntaxNode whenFalse)
3271public override SyntaxNode CoalesceExpression(SyntaxNode left, SyntaxNode right)
3274public override SyntaxNode ThisExpression()
3277public override SyntaxNode BaseExpression()
3280public override SyntaxNode TypedConstantExpression(TypedConstant value)
3283private protected override SyntaxNode GenerateExpression(ITypeSymbol? type, object? value, bool canUseFieldReference)
3286public override SyntaxNode GenericName(string identifier, IEnumerable<SyntaxNode> typeArguments)
3289internal override SyntaxNode GenericName(SyntaxToken identifier, IEnumerable<SyntaxNode> typeArguments)
3293public override SyntaxNode WithTypeArguments(SyntaxNode expression, IEnumerable<SyntaxNode> typeArguments)
3323public override SyntaxNode QualifiedName(SyntaxNode left, SyntaxNode right)
3326internal override SyntaxNode GlobalAliasedName(SyntaxNode name)
3331public override SyntaxNode NameExpression(INamespaceOrTypeSymbol namespaceOrTypeSymbol)
3334public override SyntaxNode TypeExpression(SpecialType specialType)
3355public override SyntaxNode ArrayTypeExpression(SyntaxNode type)
3358public override SyntaxNode NullableTypeExpression(SyntaxNode type)
3370internal override SyntaxNode CreateTupleType(IEnumerable<SyntaxNode> elements)
3373public override SyntaxNode TupleElementExpression(SyntaxNode type, string? name = null)
3376public override SyntaxNode Argument(string? name, RefKind refKind, SyntaxNode expression)
3384public override SyntaxNode LocalDeclarationStatement(SyntaxNode? type, string name, SyntaxNode? initializer, bool isConst)
3387public override SyntaxNode UsingStatement(SyntaxNode? type, string name, SyntaxNode expression, IEnumerable<SyntaxNode> statements)
3395public override SyntaxNode UsingStatement(SyntaxNode expression, IEnumerable<SyntaxNode> statements)
3403public override SyntaxNode LockStatement(SyntaxNode expression, IEnumerable<SyntaxNode> statements)
3410public override SyntaxNode TryCatchStatement(IEnumerable<SyntaxNode>? tryStatements, IEnumerable<SyntaxNode>? catchClauses, IEnumerable<SyntaxNode>? finallyStatements = null)
3418public override SyntaxNode CatchClause(SyntaxNode type, string name, IEnumerable<SyntaxNode> statements)
3426public override SyntaxNode WhileStatement(SyntaxNode condition, IEnumerable<SyntaxNode> statements)
3429public override SyntaxNode SwitchStatement(SyntaxNode expression, IEnumerable<SyntaxNode> caseClauses)
3450public override SyntaxNode SwitchSection(IEnumerable<SyntaxNode> expressions, IEnumerable<SyntaxNode> statements)
3453internal override SyntaxNode SwitchSectionFromLabels(IEnumerable<SyntaxNode> labels, IEnumerable<SyntaxNode> statements)
3460public override SyntaxNode DefaultSwitchSection(IEnumerable<SyntaxNode> statements)
3463private static SyntaxList<SwitchLabelSyntax> AsSwitchLabels(IEnumerable<SyntaxNode> expressions)
3475public override SyntaxNode ExitSwitchStatement()
3478internal override SyntaxNode ScopeBlock(IEnumerable<SyntaxNode> statements)
3481internal override SyntaxNode GlobalStatement(SyntaxNode statement)
3484public override SyntaxNode ValueReturningLambdaExpression(IEnumerable<SyntaxNode>? parameterDeclarations, SyntaxNode expression)
3493private static bool IsSimpleLambdaParameter(SyntaxNode node)
3496public override SyntaxNode VoidReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, SyntaxNode expression)
3499public override SyntaxNode ValueReturningLambdaExpression(IEnumerable<SyntaxNode>? parameterDeclarations, IEnumerable<SyntaxNode> statements)
3502public override SyntaxNode VoidReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, IEnumerable<SyntaxNode> statements)
3505public override SyntaxNode LambdaParameter(string identifier, SyntaxNode? type = null)
3508internal override SyntaxNode IdentifierName(SyntaxToken identifier)
3511internal override SyntaxNode NamedAnonymousObjectMemberDeclarator(SyntaxNode identifier, SyntaxNode expression)
3518public override SyntaxNode TupleExpression(IEnumerable<SyntaxNode> arguments)
3521internal override SyntaxNode RemoveAllComments(SyntaxNode node)
3561internal override SyntaxNode ParseExpression(string stringToParse)
FindSymbols\CSharpDeclaredSymbolInfoFactoryService.cs (8)
92private static void AddAliasMaps(SyntaxNode node, List<Dictionary<string, string>> aliasMaps)
94for (var current = node; current != null; current = current.Parent)
204SyntaxNode container,
252SyntaxNode container,
273SyntaxNode container,
416SyntaxNode container,
603private static Accessibility GetAccessibility(SyntaxNode container, SyntaxTokenList modifiers)
701private static bool TryGetSimpleTypeName(SyntaxNode node, ImmutableArray<string>? typeParameterNames, out string simpleTypeName, out bool isArray)
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\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Extensions\SyntaxNodeExtensions.cs (74)
23public static LanguageVersion GetLanguageVersion(this SyntaxNode node)
26public static void Deconstruct(this SyntaxNode node, out SyntaxKind kind)
29public static bool IsKind<TNode>([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind, [NotNullWhen(true)] out TNode? result)
30where TNode : SyntaxNode
42public static bool IsParentKind([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind)
45public static bool IsParentKind<TNode>([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind, [NotNullWhen(true)] out TNode? result)
46where TNode : SyntaxNode
59this SyntaxNode node, SourceText? sourceText = null,
88public static bool IsAnyArgumentList([NotNullWhen(true)] this SyntaxNode? node)
97public static (SyntaxToken openBrace, SyntaxToken closeBrace) GetBraces(this SyntaxNode? node)
114public static bool IsEmbeddedStatementOwner([NotNullWhen(true)] this SyntaxNode? node)
128public static StatementSyntax? GetEmbeddedStatement(this SyntaxNode? node)
144public static BaseParameterListSyntax? GetParameterList(this SyntaxNode? declaration)
157public static SyntaxList<AttributeListSyntax> GetAttributeLists(this SyntaxNode? declaration)
170public static ConditionalAccessExpressionSyntax? GetParentConditionalAccessExpression(this SyntaxNode? node)
182var current = node;
249/// <inheritdoc cref="ISyntaxFacts.GetRootConditionalAccessExpression(SyntaxNode)"/>
251public static ConditionalAccessExpressionSyntax? GetRootConditionalAccessExpression(this SyntaxNode? node)
268public static ConditionalAccessExpressionSyntax? GetInnerMostConditionalAccessExpression(this SyntaxNode node)
279public static bool IsAsyncSupportingFunctionSyntax([NotNullWhen(true)] this SyntaxNode? node)
282public static bool IsCompoundAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
285public static bool IsLeftSideOfAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
289public static bool IsLeftSideOfAnyAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
292public static bool IsRightSideOfAnyAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
295public static bool IsLeftSideOfCompoundAssignExpression([NotNullWhen(true)] this SyntaxNode? node)
306public static IEnumerable<UsingDirectiveSyntax> GetEnclosingUsingDirectives(this SyntaxNode node)
314public static IEnumerable<ExternAliasDirectiveSyntax> GetEnclosingExternAliasDirectives(this SyntaxNode node)
322public static bool IsUnsafeContext(this SyntaxNode node)
333public static bool IsInStaticContext(this SyntaxNode node)
335for (var current = node; current != null; current = current.Parent)
370public static BaseNamespaceDeclarationSyntax? GetInnermostNamespaceDeclarationWithUsings(this SyntaxNode contextNode)
393public static bool IsBreakableConstruct(this SyntaxNode node)
409public static bool IsContinuableConstruct(this SyntaxNode node)
424public static bool IsReturnableConstruct(this SyntaxNode node)
448public static bool ContainsYield(this SyntaxNode node)
451public static bool IsReturnableConstructOrTopLevelCompilationUnit(this SyntaxNode node)
454public static bool SpansPreprocessorDirective<TSyntaxNode>(this IEnumerable<TSyntaxNode> list) where TSyntaxNode : SyntaxNode
459where TNode : SyntaxNode
507public static bool ContainsInterleavedDirective(this SyntaxNode syntaxNode, CancellationToken cancellationToken)
511/// Similar to <see cref="ContainsInterleavedDirective(SyntaxNode, CancellationToken)"/> except that the span to check
514public static bool ContainsInterleavedDirective(this SyntaxNode syntaxNode, TextSpan span, CancellationToken cancellationToken)
553var structure = trivia.GetStructure()!;
595where TSyntaxNode : SyntaxNode
655public static ImmutableArray<SyntaxTrivia> GetLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
658public static TSyntaxNode GetNodeWithoutLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
661public static TSyntaxNode GetNodeWithoutLeadingBlankLines<TSyntaxNode>(this TSyntaxNode node, out ImmutableArray<SyntaxTrivia> strippedTrivia) where TSyntaxNode : SyntaxNode
664public static ImmutableArray<SyntaxTrivia> GetLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
667public static TSyntaxNode GetNodeWithoutLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node) where TSyntaxNode : SyntaxNode
670public static TSyntaxNode GetNodeWithoutLeadingBannerAndPreprocessorDirectives<TSyntaxNode>(this TSyntaxNode node, out ImmutableArray<SyntaxTrivia> strippedTrivia) where TSyntaxNode : SyntaxNode
673public static bool IsVariableDeclaratorValue([NotNullWhen(true)] this SyntaxNode? node)
677public static BlockSyntax? FindInnermostCommonBlock(this IEnumerable<SyntaxNode> nodes)
680public static IEnumerable<SyntaxNode> GetAncestorsOrThis(this SyntaxNode? node, Func<SyntaxNode, bool> predicate)
682var current = node;
694public static (SyntaxToken openParen, SyntaxToken closeParen) GetParentheses(this SyntaxNode node)
724public static (SyntaxToken openBracket, SyntaxToken closeBracket) GetBrackets(this SyntaxNode? node)
737public static SyntaxTokenList GetModifiers(this SyntaxNode? member)
749public static SyntaxNode? WithModifiers(this SyntaxNode? member, SyntaxTokenList modifiers)
760public static void ForEachMember<TArg>(this SyntaxNode? node, Action<MemberDeclarationSyntax, TArg> callback, TArg arg)
785[NotNullWhen(true)] this SyntaxNode? node,
792for (var current = node; current != null; current = current.Parent)
837[NotNullWhen(true)] this SyntaxNode? node,
838[NotNullWhen(true)] out SyntaxNode? deconstructionLeft)
840SyntaxNode? previous = null;
841for (var current = node; current != null; current = current.Parent)
863where T : SyntaxNode
872where T : SyntaxNode
880where T : SyntaxNode
886public static T KeepCommentsAndAddElasticMarkers<T>(this T node) where T : SyntaxNode
891public static SyntaxNode WithPrependedNonIndentationTriviaFrom(
892this SyntaxNode to, SyntaxNode from)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Engine\CSharpFormatEngine.cs (1)
16SyntaxNode node,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Formatting\Rules\IndentBlockFormattingRule.cs (10)
46public override void AddIndentBlockOperations(List<IndentBlockOperation> list, SyntaxNode node, in NextIndentBlockOperationAction nextOperation)
65private static void AddTypeParameterConstraintClauseOperation(List<IndentBlockOperation> list, SyntaxNode node)
74private void AddSwitchIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
134private void AddLabelIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
150private static void AddAlignmentBlockOperation(List<IndentBlockOperation> list, SyntaxNode node)
205private static void SetAlignmentBlockOperation(List<IndentBlockOperation> list, SyntaxNode baseNode, SyntaxNode body)
216private void AddBlockIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
253private static void AddBracketIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
294private static void AddEmbeddedStatementsIndentationOperation(List<IndentBlockOperation> list, SyntaxNode node)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\Precedence\AbstractCSharpPrecedenceService.cs (1)
13where TSyntax : SyntaxNode
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SemanticFacts\CSharpSemanticFacts.cs (29)
40public bool IsWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
43public bool IsOnlyWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
46public bool IsInOutContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
49public bool IsInRefContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
52public bool IsInInContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
55public bool CanReplaceWithRValue(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? expression, CancellationToken cancellationToken)
62foreach (var ancestor in token.GetAncestors<SyntaxNode>())
112SyntaxNode oldNode,
113SyntaxNode newNode,
169public ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode node)
183public SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
186public IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node)
197public ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node)
209public ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node)
234var node = syntaxRef.GetSyntax(cancellationToken);
245public IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken)
255public IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
258public IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken)
262public ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken)
265public ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken)
270public ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken)
292/// cref="ModelExtensions.GetSymbolInfo(SemanticModel, SyntaxNode, CancellationToken)"/>, but sometimes employs
296private ImmutableArray<ISymbol> GetSymbolInfo(SemanticModel semanticModel, SyntaxNode node, SyntaxToken token, CancellationToken cancellationToken)
368public bool IsInsideNameOfExpression(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken)
377var node = syntaxReference.GetSyntax(cancellationToken);
392public bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, [NotNullWhen(true)] INamedTypeSymbol? expressionType, CancellationToken cancellationToken)
395public string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken)
398public IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node)
410private static bool IsInPreprocessingSymbolContext(SyntaxNode node)
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)
54public override bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
67public override bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
80public override bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
93public override bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
106public override bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
121public override bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
134public override bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
147public override bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Services\SyntaxFacts\CSharpSyntaxFacts.cs (311)
138public bool IsDirective([NotNullWhen(true)] SyntaxNode? node)
141public bool TryGetExternalSourceInfo([NotNullWhen(true)] SyntaxNode? node, out ExternalSourceInfo info)
162public bool IsNameOfSimpleMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
168public bool IsNameOfAnyMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
171public bool IsNameOfMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node)
178public SyntaxNode? GetStandaloneExpression(SyntaxNode? node)
181public SyntaxNode? GetRootConditionalAccessExpression(SyntaxNode? node)
184public bool IsDeclarationExpression([NotNullWhen(true)] SyntaxNode? node)
187public bool IsNamedArgument([NotNullWhen(true)] SyntaxNode? node)
190public bool IsNameOfNamedArgument([NotNullWhen(true)] SyntaxNode? node)
193public SyntaxNode? GetParameterList(SyntaxNode node)
196public bool IsParameterList([NotNullWhen(true)] SyntaxNode? node)
199public bool IsUsingDirectiveName([NotNullWhen(true)] SyntaxNode? node)
203public bool IsUsingAliasDirective([NotNullWhen(true)] SyntaxNode? node)
206public void GetPartsOfUsingAliasDirective(SyntaxNode node, out SyntaxToken globalKeyword, out SyntaxToken alias, out SyntaxNode name)
214public bool IsDeconstructionForEachStatement([NotNullWhen(true)] SyntaxNode? node)
217public bool IsUsingLocalDeclarationStatement([NotNullWhen(true)] SyntaxNode? node)
220public bool IsDeconstructionAssignment([NotNullWhen(true)] SyntaxNode? node)
223public Location GetDeconstructionReferenceLocation(SyntaxNode node)
233public bool IsStatement([NotNullWhen(true)] SyntaxNode? node)
236public bool IsExecutableStatement([NotNullWhen(true)] SyntaxNode? node)
239public bool IsGlobalStatement([NotNullWhen(true)] SyntaxNode? node)
242public SyntaxNode GetStatementOfGlobalStatement(SyntaxNode node)
245public bool IsMethodBody([NotNullWhen(true)] SyntaxNode? node)
257public SyntaxNode GetExpressionOfRefExpression(SyntaxNode node)
260public SyntaxNode? GetExpressionOfReturnStatement(SyntaxNode node)
304public bool IsPredefinedType(SyntaxNode? node)
307public bool IsPredefinedType(SyntaxNode? node, PredefinedType type)
528public bool IsPostfixUnaryExpression([NotNullWhen(true)] SyntaxNode? node)
531public bool IsElementBindingExpression([NotNullWhen(true)] SyntaxNode? node)
534public bool IsMemberBindingExpression([NotNullWhen(true)] SyntaxNode? node)
537public bool IsPointerMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
540public void GetNameAndArityOfSimpleName(SyntaxNode node, out string name, out int arity)
547public bool LooksGeneric(SyntaxNode simpleName)
551public SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(SyntaxNode? genericName)
554public SyntaxNode? GetTargetOfMemberBinding(SyntaxNode? node)
557public SyntaxNode GetNameOfMemberBindingExpression(SyntaxNode node)
560public SyntaxNode? GetExpressionOfMemberAccessExpression(SyntaxNode node, bool allowImplicitTarget)
563public void GetPartsOfElementAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode argumentList)
570public SyntaxNode GetExpressionOfInterpolation(SyntaxNode node)
573public bool IsInStaticContext(SyntaxNode node)
576public bool IsInNamespaceOrTypeContext([NotNullWhen(true)] SyntaxNode? node)
579public bool IsBaseTypeList([NotNullWhen(true)] SyntaxNode? node)
582public SyntaxNode GetExpressionOfArgument(SyntaxNode node)
585public SyntaxNode GetExpressionOfAttributeArgument(SyntaxNode node)
588public RefKind GetRefKindOfArgument(SyntaxNode node)
591public bool IsArgument([NotNullWhen(true)] SyntaxNode? node)
594public bool IsAttributeArgument([NotNullWhen(true)] SyntaxNode? node)
597public bool IsSimpleArgument([NotNullWhen(true)] SyntaxNode? node)
604public bool IsInConstantContext([NotNullWhen(true)] SyntaxNode? node)
607public bool IsInConstructor(SyntaxNode node)
610public bool IsUnsafeContext(SyntaxNode node)
613public bool IsAttributeNamedArgumentIdentifier([NotNullWhen(true)] SyntaxNode? node)
616public SyntaxNode? GetContainingTypeDeclaration(SyntaxNode root, int position)
620.GetAncestors<SyntaxNode>()
624public SyntaxNode? GetContainingVariableDeclaratorOfFieldDeclaration(SyntaxNode? node)
627public bool IsNameOfSubpattern([NotNullWhen(true)] SyntaxNode? node)
632public bool IsPropertyPatternClause(SyntaxNode node)
636[NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? initializedInstance)
667public bool IsAnyInitializerExpression([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? creationExpression)
682public bool IsElementAccessExpression(SyntaxNode? node)
686public SyntaxNode? ConvertToSingleLine(SyntaxNode? node, bool useElasticTrivia = false)
689public SyntaxNode? GetContainingMemberDeclaration(SyntaxNode root, int position, bool useFullSpan = true)
692public SyntaxNode? GetContainingMethodDeclaration(SyntaxNode root, int position, bool useFullSpan = true)
695private static SyntaxNode? GetContainingMemberDeclaration<TMemberDeclarationSyntax>(SyntaxNode root, int position, bool useFullSpan = true)
708var node = root.FindToken(position).Parent;
726public bool IsMethodLevelMember([NotNullWhen(true)] SyntaxNode? node)
734public bool IsTopLevelNodeWithMembers([NotNullWhen(true)] SyntaxNode? node)
737public string GetDisplayName(SyntaxNode? node, DisplayNameOptions options, string? rootNamespace = null)
799private string? GetName(SyntaxNode node, DisplayNameOptions options)
886public SyntaxList<SyntaxNode> GetMembersOfTypeDeclaration(SyntaxNode typeDeclaration)
889protected override void AppendMembers(SyntaxNode? node, ArrayBuilder<SyntaxNode> list, bool topLevel, bool methodLevel)
913public TextSpan GetMemberBodySpanForSpeculativeBinding(SyntaxNode node)
918var member = GetContainingMemberDeclaration(node, node.SpanStart);
929public SyntaxNode? TryGetBindableParent(SyntaxToken token)
931var node = token.Parent;
934var parent = node.Parent;
992public IEnumerable<SyntaxNode> GetConstructors(SyntaxNode? root, CancellationToken cancellationToken)
997var constructors = new List<SyntaxNode>();
1002private static void AppendConstructors(SyntaxList<MemberDeclarationSyntax> members, List<SyntaxNode> constructors, CancellationToken cancellationToken)
1066public string GetNameForArgument(SyntaxNode? argument)
1069public string GetNameForAttributeArgument(SyntaxNode? argument)
1072public bool IsLeftSideOfDot([NotNullWhen(true)] SyntaxNode? node)
1075public SyntaxNode? GetRightSideOfDot(SyntaxNode? node)
1081public SyntaxNode? GetLeftSideOfDot(SyntaxNode? node, bool allowImplicitTarget)
1087public bool IsLeftSideOfExplicitInterfaceSpecifier([NotNullWhen(true)] SyntaxNode? node)
1090public bool IsLeftSideOfAssignment([NotNullWhen(true)] SyntaxNode? node)
1093public bool IsLeftSideOfAnyAssignment([NotNullWhen(true)] SyntaxNode? node)
1096public bool IsLeftSideOfCompoundAssignment([NotNullWhen(true)] SyntaxNode? node)
1099public SyntaxNode GetRightHandSideOfAssignment(SyntaxNode node)
1102public bool IsInferredAnonymousObjectMemberDeclarator([NotNullWhen(true)] SyntaxNode? node)
1106public bool IsOperandOfIncrementExpression([NotNullWhen(true)] SyntaxNode? node)
1109public static bool IsOperandOfDecrementExpression([NotNullWhen(true)] SyntaxNode? node)
1112public bool IsOperandOfIncrementOrDecrementExpression([NotNullWhen(true)] SyntaxNode? node)
1115public SyntaxList<SyntaxNode> GetContentsOfInterpolatedString(SyntaxNode interpolatedString)
1131public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfObjectCreationExpression(SyntaxNode objectCreationExpression)
1136public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfArgumentList(SyntaxNode argumentList)
1139public SeparatedSyntaxList<SyntaxNode> GetArgumentsOfAttributeArgumentList(SyntaxNode argumentList)
1151public bool IsPragmaDirective(SyntaxTrivia trivia, out bool isDisable, out bool isActive, out SeparatedSyntaxList<SyntaxNode> errorCodes)
1157public bool IsDocumentationComment(SyntaxNode node)
1160public bool IsUsingOrExternOrImport([NotNullWhen(true)] SyntaxNode? node)
1163public bool IsGlobalAssemblyAttribute([NotNullWhen(true)] SyntaxNode? node)
1166public bool IsGlobalModuleAttribute([NotNullWhen(true)] SyntaxNode? node)
1169private static bool IsGlobalAttribute([NotNullWhen(true)] SyntaxNode? node, SyntaxKind attributeTarget)
1174public bool IsDeclaration(SyntaxNode? node)
1223public bool IsTypeDeclaration(SyntaxNode node)
1226public bool IsSimpleAssignmentStatement([NotNullWhen(true)] SyntaxNode? statement)
1231SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1238SyntaxNode statement, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1240var expression = statement;
1253public bool IsAnyAssignmentStatement([NotNullWhen(true)] SyntaxNode? node)
1256public SyntaxToken GetIdentifierOfSimpleName(SyntaxNode node)
1259public SyntaxToken GetIdentifierOfVariableDeclarator(SyntaxNode node)
1262public SyntaxToken GetIdentifierOfTypeDeclaration(SyntaxNode node)
1270public bool IsDeclaratorOfLocalDeclarationStatement(SyntaxNode declarator, SyntaxNode localDeclarationStatement)
1277public bool AreEquivalent(SyntaxNode? node1, SyntaxNode? node2)
1280public static SyntaxNode GetExpressionOfInvocationExpression(SyntaxNode node)
1283public bool IsExpressionOfForeach([NotNullWhen(true)] SyntaxNode? node)
1286public SyntaxNode GetExpressionOfExpressionStatement(SyntaxNode node)
1289public void GetPartsOfTupleExpression<TArgumentSyntax>(SyntaxNode node,
1290out SyntaxToken openParen, out SeparatedSyntaxList<TArgumentSyntax> arguments, out SyntaxToken closeParen) where TArgumentSyntax : SyntaxNode
1294arguments = (SeparatedSyntaxList<TArgumentSyntax>)(SeparatedSyntaxList<SyntaxNode>)tupleExpression.Arguments;
1301public SyntaxNode? GetMatchingDirective(SyntaxNode directive, CancellationToken cancellationToken)
1304public ImmutableArray<SyntaxNode> GetMatchingConditionalDirectives(SyntaxNode directive, CancellationToken cancellationToken)
1305=> ((DirectiveTriviaSyntax)directive).GetMatchingConditionalDirectives(cancellationToken).CastArray<SyntaxNode>();
1310public SyntaxTokenList GetModifiers(SyntaxNode? node)
1314public SyntaxNode? WithModifiers(SyntaxNode? node, SyntaxTokenList modifiers)
1317public SeparatedSyntaxList<SyntaxNode> GetVariablesOfLocalDeclarationStatement(SyntaxNode node)
1320public SyntaxNode? GetInitializerOfVariableDeclarator(SyntaxNode node)
1323public SyntaxNode? GetInitializerOfPropertyDeclaration(SyntaxNode node)
1326public SyntaxNode GetTypeOfVariableDeclarator(SyntaxNode node)
1329public SyntaxNode GetValueOfEqualsValueClause(SyntaxNode node)
1332public bool IsEqualsValueOfPropertyDeclaration(SyntaxNode? node)
1335public bool IsConversionExpression([NotNullWhen(true)] SyntaxNode? node)
1338public bool IsCastExpression([NotNullWhen(true)] SyntaxNode? node)
1341public void GetPartsOfCastExpression(SyntaxNode node, out SyntaxNode type, out SyntaxNode expression)
1358public SyntaxList<SyntaxNode> GetAttributeLists(SyntaxNode? node)
1361public bool IsParameterNameXmlElementSyntax([NotNullWhen(true)] SyntaxNode? node)
1365public SyntaxList<SyntaxNode> GetContentFromDocumentationCommentTriviaSyntax(SyntaxTrivia trivia)
1375public void GetPartsOfAnyIsTypeExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode type)
1382public void GetPartsOfIsPatternExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken isToken, out SyntaxNode right)
1390public bool IsAnyPattern([NotNullWhen(true)] SyntaxNode? node)
1393public SyntaxNode GetExpressionOfConstantPattern(SyntaxNode node)
1396public void GetPartsOfDeclarationPattern(SyntaxNode node, out SyntaxNode type, out SyntaxNode designation)
1403public void GetPartsOfRecursivePattern(SyntaxNode node, out SyntaxNode? type, out SyntaxNode? positionalPart, out SyntaxNode? propertyPart, out SyntaxNode? designation)
1419public bool IsBinaryPattern([NotNullWhen(true)] SyntaxNode? node)
1422public bool IsUnaryPattern([NotNullWhen(true)] SyntaxNode? node)
1425public void GetPartsOfParenthesizedPattern(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode pattern, out SyntaxToken closeParen)
1433public void GetPartsOfBinaryPattern(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1441public void GetPartsOfUnaryPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode pattern)
1448public void GetPartsOfRelationalPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode expression)
1455public SyntaxNode GetTypeOfTypePattern(SyntaxNode node)
1458public bool IsVerbatimInterpolatedStringExpression([NotNullWhen(true)] SyntaxNode? node)
1473public bool IsAnonymousFunctionExpression([NotNullWhen(true)] SyntaxNode? node)
1476public bool IsBaseNamespaceDeclaration([NotNullWhen(true)] SyntaxNode? node)
1479public bool IsBinaryExpression([NotNullWhen(true)] SyntaxNode? node)
1482public bool IsLiteralExpression([NotNullWhen(true)] SyntaxNode? node)
1485public bool IsMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node)
1488public bool IsMethodDeclaration([NotNullWhen(true)] SyntaxNode? node)
1491public bool IsSimpleName([NotNullWhen(true)] SyntaxNode? node)
1494public bool IsAnyName([NotNullWhen(true)] SyntaxNode? node)
1497public bool IsAnyType([NotNullWhen(true)] SyntaxNode? node)
1500public bool IsNamedMemberInitializer([NotNullWhen(true)] SyntaxNode? node)
1503public bool IsElementAccessInitializer([NotNullWhen(true)] SyntaxNode? node)
1506public bool IsObjectMemberInitializer([NotNullWhen(true)] SyntaxNode? node)
1509public bool IsObjectCollectionInitializer([NotNullWhen(true)] SyntaxNode? node)
1516public void GetPartsOfAliasQualifiedName(SyntaxNode node, out SyntaxNode alias, out SyntaxToken colonColonToken, out SyntaxNode name)
1524public void GetPartsOfArgumentList(SyntaxNode node, out SyntaxToken openParenToken, out SeparatedSyntaxList<SyntaxNode> arguments, out SyntaxToken closeParenToken)
1532public void GetPartsOfAttribute(SyntaxNode node, out SyntaxNode name, out SyntaxNode? argumentList)
1539public void GetPartsOfBaseObjectCreationExpression(SyntaxNode node, out SyntaxNode? argumentList, out SyntaxNode? initializer)
1546public void GetPartsOfBinaryExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1554public void GetPartsOfCompilationUnit(SyntaxNode node, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> attributeLists, out SyntaxList<SyntaxNode> members)
1563SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode whenNotNull)
1571public void GetPartsOfConditionalExpression(SyntaxNode node, out SyntaxNode condition, out SyntaxNode whenTrue, out SyntaxNode whenFalse)
1579public SyntaxNode GetExpressionOfForeachStatement(SyntaxNode statement)
1585public void GetPartsOfGenericName(SyntaxNode node, out SyntaxToken identifier, out SeparatedSyntaxList<SyntaxNode> typeArguments)
1592public void GetPartsOfInterpolationExpression(SyntaxNode node,
1593out SyntaxToken stringStartToken, out SyntaxList<SyntaxNode> contents, out SyntaxToken stringEndToken)
1601public void GetPartsOfInvocationExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode? argumentList)
1608public void GetPartsOfMemberAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode name)
1616public void GetPartsOfBaseNamespaceDeclaration(SyntaxNode node, out SyntaxNode name, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> members)
1624public void GetPartsOfNamedMemberInitializer(SyntaxNode node, out SyntaxNode identifier, out SyntaxNode expression)
1631public void GetPartsOfObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode type, out SyntaxNode? argumentList, out SyntaxNode? initializer)
1640public void GetPartsOfImplicitObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode argumentList, out SyntaxNode? initializer)
1648public void GetPartsOfParameter(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode? @default)
1656SyntaxNode node, out SyntaxToken openParen, out SyntaxNode expression, out SyntaxToken closeParen)
1664public void GetPartsOfPrefixUnaryExpression(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode operand)
1671public void GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right)
1683public SyntaxNode GetArgumentListOfImplicitElementAccess(SyntaxNode node)
1686public SeparatedSyntaxList<SyntaxNode> GetAttributesOfAttributeList(SyntaxNode node)
1689public SyntaxNode GetExpressionOfAwaitExpression(SyntaxNode node)
1692public SyntaxNode GetExpressionOfThrowExpression(SyntaxNode node)
1695public SyntaxNode? GetExpressionOfThrowStatement(SyntaxNode node)
1698public SeparatedSyntaxList<SyntaxNode> GetInitializersOfObjectMemberInitializer(SyntaxNode node)
1701public SeparatedSyntaxList<SyntaxNode> GetExpressionsOfObjectCollectionInitializer(SyntaxNode node)
1704public SyntaxToken GetTokenOfLiteralExpression(SyntaxNode node)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\CSharp\Utilities\SpeculationAnalyzer.cs (19)
70protected override SyntaxNode GetSemanticRootForSpeculation(ExpressionSyntax expression)
74SyntaxNode previousNode = null;
75SyntaxNode parentNodeToSpeculate = null;
76foreach (var node in expression.AncestorsAndSelf(ascendOutOfTrivia: false))
94public static bool CanSpeculateOnNode(SyntaxNode node)
103protected override void ValidateSpeculativeSemanticModel(SemanticModel speculativeSemanticModel, SyntaxNode nodeToSpeculate)
112protected override SemanticModel CreateSpeculativeSemanticModel(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel)
115public static SemanticModel CreateSpeculativeSemanticModelForNode(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel)
122public static SemanticModel CreateSpeculativeSemanticModelForNode(SyntaxNode nodeToSpeculate, SemanticModel semanticModel, int position, bool isInNamespaceOrTypeContext)
195SyntaxNode originalLambdaBody, replacedLambdaBody;
274SyntaxNode originalRoot)
294protected override bool ReplacementChangesSemanticsForNodeLanguageSpecific(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode previousOriginalNode, SyntaxNode previousReplacedNode)
579protected override bool ExpressionMightReferenceMember(SyntaxNode node)
661protected override bool IsParenthesizedExpression(SyntaxNode node)
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\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpAddImportsService.cs (27)
34protected override ImmutableArray<SyntaxNode> GetGlobalImports(Compilation compilation, SyntaxGenerator generator)
37protected override SyntaxNode? GetAlias(UsingDirectiveSyntax usingOrAlias)
43protected override SyntaxNode Rewrite(
48SyntaxNode externContainer,
49SyntaxNode usingContainer,
50SyntaxNode staticUsingContainer,
51SyntaxNode aliasContainer,
53SyntaxNode root,
61var newRoot = rewriter.Visit(root);
65protected override SyntaxList<UsingDirectiveSyntax> GetUsingsAndAliases(SyntaxNode node)
73protected override SyntaxList<ExternAliasDirectiveSyntax> GetExterns(SyntaxNode node)
81protected override bool IsEquivalentImport(SyntaxNode a, SyntaxNode b)
88private readonly SyntaxNode _externContainer;
89private readonly SyntaxNode _usingContainer;
90private readonly SyntaxNode _aliasContainer;
91private readonly SyntaxNode _staticUsingContainer;
102SyntaxNode externContainer,
103SyntaxNode usingContainer,
104SyntaxNode aliasContainer,
105SyntaxNode staticUsingContainer,
122public override SyntaxNode? Visit(SyntaxNode? node)
125public override SyntaxNode VisitNamespaceDeclaration(NamespaceDeclarationSyntax node)
128public override SyntaxNode? VisitFileScopedNamespaceDeclaration(FileScopedNamespaceDeclarationSyntax node)
131private SyntaxNode VisitBaseNamespaceDeclaration(
165public override SyntaxNode VisitCompilationUnit(CompilationUnitSyntax node)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\CSharp\LanguageServices\CSharpSyntaxGeneratorInternal.cs (88)
52public override SyntaxNode LocalDeclarationStatement(SyntaxNode? type, SyntaxToken name, SyntaxNode? initializer, bool isConst)
59public override SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer)
62public override SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value)
65internal static VariableDeclarationSyntax VariableDeclaration(SyntaxNode? type, SyntaxToken name, SyntaxNode? expression)
77public override SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull)
80public override SyntaxNode MemberBindingExpression(SyntaxNode name)
83public override SyntaxNode RefExpression(SyntaxNode expression)
86public override SyntaxNode AddParentheses(SyntaxNode expressionOrPattern, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
89internal static SyntaxNode Parenthesize(SyntaxNode expressionOrPattern, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
97public override SyntaxNode YieldReturnStatement(SyntaxNode expression)
106public override SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken)
109public override SyntaxNode InterpolatedStringText(SyntaxToken textToken)
119public override SyntaxNode Interpolation(SyntaxNode syntaxNode)
122public override SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment)
125public override SyntaxNode InterpolationFormatClause(string format)
130public override SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames)
179public override SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext)
182public override SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right)
190public override SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type)
198public override SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isKeyword, SyntaxNode pattern)
204public override SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right)
207public override SyntaxNode ConstantPattern(SyntaxNode expression)
210public override SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name)
215public override SyntaxNode LessThanRelationalPattern(SyntaxNode expression)
218public override SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression)
221public override SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression)
224public override SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression)
227public override SyntaxNode NotPattern(SyntaxNode pattern)
230public override SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right)
233public override SyntaxNode ParenthesizedPattern(SyntaxNode pattern)
236public override SyntaxNode TypePattern(SyntaxNode type)
239public override SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern)
244public override SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression)
247public override SyntaxNode DefaultExpression(SyntaxNode type)
250public override SyntaxNode DefaultExpression(ITypeSymbol type)
285public override SyntaxNode TypeExpression(ITypeSymbol typeSymbol, RefKind refKind)
296public override SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode simpleName)
328public override SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right)
331public static SyntaxNode CreateBinaryExpression(SyntaxKind syntaxKind, SyntaxNode left, SyntaxNode right)
334public override SyntaxNode IdentifierName(string identifier)
337public override SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression)
AddImport\AbstractAddImportFeatureService.cs (32)
32where TSimpleNameSyntax : SyntaxNode
40protected abstract bool IsWithinImport(SyntaxNode node);
41protected abstract bool CanAddImport(SyntaxNode node, bool allowInHiddenRegions, CancellationToken cancellationToken);
42protected abstract bool CanAddImportForMethod(string diagnosticId, ISyntaxFacts syntaxFacts, SyntaxNode node, out TSimpleNameSyntax nameNode);
43protected abstract bool CanAddImportForNamespace(string diagnosticId, SyntaxNode node, out TSimpleNameSyntax nameNode);
44protected abstract bool CanAddImportForDeconstruct(string diagnosticId, SyntaxNode node);
45protected abstract bool CanAddImportForGetAwaiter(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node);
46protected abstract bool CanAddImportForGetEnumerator(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node);
47protected abstract bool CanAddImportForGetAsyncEnumerator(string diagnosticId, ISyntaxFacts syntaxFactsService, SyntaxNode node);
48protected abstract bool CanAddImportForQuery(string diagnosticId, SyntaxNode node);
49protected abstract bool CanAddImportForTypeOrNamespace(string diagnosticId, SyntaxNode node, out TSimpleNameSyntax nameNode);
51protected abstract ISet<INamespaceSymbol> GetImportNamespacesInScope(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
52protected abstract ITypeSymbol GetDeconstructInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
53protected abstract ITypeSymbol GetQueryClauseInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
54protected abstract bool IsViableExtensionMethod(IMethodSymbol method, SyntaxNode expression, SemanticModel semanticModel, ISyntaxFacts syntaxFacts, 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);
59protected abstract bool IsAddMethodContext(SyntaxNode node, SemanticModel semanticModel);
62protected abstract (string description, bool hasExistingImport) GetDescription(Document document, AddImportPlacementOptions options, INamespaceOrTypeSymbol symbol, SemanticModel semanticModel, SyntaxNode root, CancellationToken cancellationToken);
135SyntaxNode node,
630private static ITypeSymbol? GetAwaitInfo(SemanticModel semanticModel, ISyntaxFacts syntaxFactsService, SyntaxNode node)
632var awaitExpression = FirstAwaitExpressionAncestor(syntaxFactsService, node);
637var innerExpression = syntaxFactsService.GetExpressionOfAwaitExpression(awaitExpression);
642private static ITypeSymbol? GetCollectionExpressionType(SemanticModel semanticModel, ISyntaxFacts syntaxFactsService, SyntaxNode node)
644var collectionExpression = FirstForeachCollectionExpressionAncestor(syntaxFactsService, node);
654protected static bool AncestorOrSelfIsAwaitExpression(ISyntaxFacts syntaxFactsService, SyntaxNode node)
657private static SyntaxNode? FirstAwaitExpressionAncestor(ISyntaxFacts syntaxFactsService, SyntaxNode node)
658=> node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFacts>((n, syntaxFactsService) => syntaxFactsService.IsAwaitExpression(n), syntaxFactsService);
660private static SyntaxNode? FirstForeachCollectionExpressionAncestor(ISyntaxFacts syntaxFactsService, SyntaxNode node)
661=> node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFacts>((n, syntaxFactsService) => syntaxFactsService.IsExpressionOfForeach(n), syntaxFactsService);
ChangeSignature\AbstractChangeSignatureService.cs (40)
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>();
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 (21)
46protected abstract SyntaxTriviaList CreatePragmaDisableDirectiveTrivia(Diagnostic diagnostic, Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine, CancellationToken cancellationToken);
47protected abstract SyntaxTriviaList CreatePragmaRestoreDirectiveTrivia(Diagnostic diagnostic, Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode, bool needsLeadingEndOfLine, bool needsTrailingEndOfLine, CancellationToken cancellationToken);
49protected abstract SyntaxNode AddGlobalSuppressMessageAttribute(
50SyntaxNode newRoot,
59protected abstract SyntaxNode AddLocalSuppressMessageAttribute(
60SyntaxNode targetNode, ISymbol targetSymbol, INamedTypeSymbol suppressMessageAttribute, Diagnostic diagnostic);
64protected abstract bool IsAttributeListWithAssemblyAttributes(SyntaxNode node);
67protected abstract bool IsSingleAttributeInAttributeList(SyntaxNode attribute);
91protected abstract SyntaxNode GetContainingStatement(SyntaxToken token);
94protected SyntaxToken GetAdjustedTokenForPragmaDisable(SyntaxToken token, SyntaxNode root, TextLineCollection lines)
96var containingStatement = GetContainingStatement(token);
116private SyntaxToken GetAdjustedTokenForPragmaRestore(SyntaxToken token, SyntaxNode root, TextLineCollection lines, int indexOfLine)
118var containingStatement = GetContainingStatement(token);
258public SyntaxNode NodeWithTokens { get; set; }
259public SyntaxNode TargetMemberNode { get; set; }
271var root = await syntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
285var nodeWithTokens = GetNodeWithTokens(startToken, endToken, root);
341internal SyntaxNode GetNodeWithTokens(SyntaxToken startToken, SyntaxToken endToken, SyntaxNode root)
CodeLens\CodeLensReferencesService.cs (8)
42private static async Task<T?> FindAsync<T>(Solution solution, DocumentId documentId, SyntaxNode syntaxNode,
89public async Task<ReferenceCount?> GetReferenceCountAsync(Solution solution, DocumentId documentId, SyntaxNode syntaxNode, int maxSearchResults, CancellationToken cancellationToken)
120var node = GetEnclosingCodeElementNode(document, token, langServices, cancellationToken);
170private static SyntaxNode GetEnclosingCodeElementNode(Document document, SyntaxToken token, ICodeLensDisplayInfoService langServices, CancellationToken cancellationToken)
174var node = token.Parent;
202public async Task<ImmutableArray<ReferenceLocationDescriptor>?> FindReferenceLocationsAsync(Solution solution, DocumentId documentId, SyntaxNode syntaxNode, CancellationToken cancellationToken)
259public Task<ImmutableArray<ReferenceMethodDescriptor>?> FindReferenceMethodsAsync(Solution solution, DocumentId documentId, SyntaxNode syntaxNode, CancellationToken cancellationToken)
275public async Task<string> GetFullyQualifiedNameAsync(Solution solution, DocumentId documentId, SyntaxNode syntaxNode,
CodeLens\ICodeLensReferencesService.cs (4)
23Task<ReferenceCount?> GetReferenceCountAsync(Solution solution, DocumentId documentId, SyntaxNode? syntaxNode, int maxSearchResults, CancellationToken cancellationToken);
28Task<ImmutableArray<ReferenceLocationDescriptor>?> FindReferenceLocationsAsync(Solution solution, DocumentId documentId, SyntaxNode? syntaxNode, CancellationToken cancellationToken);
33Task<ImmutableArray<ReferenceMethodDescriptor>?> FindReferenceMethodsAsync(Solution solution, DocumentId documentId, SyntaxNode? syntaxNode, CancellationToken cancellationToken);
38Task<string?> GetFullyQualifiedNameAsync(Solution solution, DocumentId documentId, SyntaxNode? syntaxNode, CancellationToken cancellationToken);
CodeRefactorings\CodeRefactoringContextExtensions.cs (12)
40public static Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
43public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNode) where TSyntaxNode : SyntaxNode
49public static Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context) where TSyntaxNode : SyntaxNode
52public static async Task<ImmutableArray<TSyntaxNode>> GetRelevantNodesAsync<TSyntaxNode>(this CodeRefactoringContext context, bool allowEmptyNodes) where TSyntaxNode : SyntaxNode
58public static async Task<TSyntaxNode?> TryGetRelevantNodeAsync<TSyntaxNode>(this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
64public static TSyntaxNode? TryGetRelevantNode<TSyntaxNode>(this ParsedDocument document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
67public static TSyntaxNode? TryGetRelevantNode<TSyntaxNode>(this ParsedDocument document, TextSpan span, bool allowEmptyNode, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
75this Document document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
81this Document document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
88this ParsedDocument document, TextSpan span, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
92this ParsedDocument document, TextSpan span, bool allowEmptyNodes, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
101this ParsedDocument document, TextSpan span, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
CodeRefactorings\SyncNamespace\AbstractChangeNamespaceService.cs (45)
39public abstract Task<bool> CanChangeNamespaceAsync(Document document, SyntaxNode container, CancellationToken cancellationToken);
41public abstract Task<Solution> ChangeNamespaceAsync(Document document, SyntaxNode container, string targetNamespace, CancellationToken cancellationToken);
57public abstract bool TryGetReplacementReferenceSyntax(SyntaxNode reference, ImmutableArray<string> newNamespaceParts, ISyntaxFactsService syntaxFacts, [NotNullWhen(returnValue: true)] out SyntaxNode? old, [NotNullWhen(returnValue: true)] out SyntaxNode? @new);
62where TNamespaceDeclarationSyntax : SyntaxNode
63where TCompilationUnitSyntax : SyntaxNode
64where TMemberDeclarationSyntax : SyntaxNode
80protected abstract SyntaxList<TMemberDeclarationSyntax> GetMemberDeclarationsInContainer(SyntaxNode compilationUnitOrNamespaceDecl);
82protected abstract Task<SyntaxNode?> TryGetApplicableContainerFromSpanAsync(Document document, TextSpan span, CancellationToken cancellationToken);
84protected abstract string GetDeclaredNamespace(SyntaxNode container);
88/// <see cref="IChangeNamespaceService.CanChangeNamespaceAsync(Document, SyntaxNode, CancellationToken)"/>
95protected abstract Task<ImmutableArray<(DocumentId id, SyntaxNode container)>> GetValidContainersFromAllLinkedDocumentsAsync(Document document, SyntaxNode container, CancellationToken cancellationToken);
97private static bool IsValidContainer(SyntaxNode container)
103public override async Task<bool> CanChangeNamespaceAsync(Document document, SyntaxNode container, CancellationToken cancellationToken)
157var namespaceToRename = namespaces[i];
163static async Task<ImmutableArray<SyntaxNode>> GetTopLevelNamespacesAsync(Document document, CancellationToken cancellationToken)
176SyntaxNode container,
266protected async Task<ImmutableArray<(DocumentId, SyntaxNode)>> TryGetApplicableContainersFromAllDocumentsAsync(
278using var _1 = ArrayBuilder<(DocumentId, SyntaxNode)>.GetInstance(ids.Length, out var containers);
309protected static async Task<Solution> AnnotateContainersAsync(Solution solution, ImmutableArray<(DocumentId, SyntaxNode)> containers, CancellationToken cancellationToken)
322Document document, SyntaxNode container, CancellationToken cancellationToken)
366SyntaxNode container,
399private static ImmutableArray<SyntaxNode> CreateImports(Document document, ImmutableArray<string> names, bool withFormatterAnnotation)
402var builder = new FixedSizeArrayBuilder<SyntaxNode>(names.Length);
409private static SyntaxNode CreateImport(SyntaxGenerator syntaxGenerator, string name, bool withFormatterAnnotation)
411var import = syntaxGenerator.NamespaceImportDeclaration(name);
485var fixedDocuments = await ProducerConsumer<(DocumentId documentId, SyntaxNode newRoot)>.RunParallelAsync(
586ImmutableArray<SyntaxNode> containersToAddImports;
683private static async Task<(Document, ImmutableArray<SyntaxNode>)> FixReferencesAsync(
692var root = editor.OriginalRoot;
693using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var containers);
726var refNode = root.FindNode(refLoc.ReferenceLocation.Location.SourceSpan, findInsideTrivia: true, getInnermostNodeForTie: true);
732refNode, newNamespaceParts, syntaxFacts, out var oldNode, out var newNode))
741var container = addImportService.GetImportContainer(root, refNode, dummyImport, addImportsOptions);
777var changedDocuments = await ProducerConsumer<(DocumentId documentId, SyntaxNode newRoot)>.RunParallelAsync(
794IEnumerable<SyntaxNode> importsToRemove,
815ImmutableArray<SyntaxNode> containers,
830foreach (var container in containers)
835var contextLocation = container is TNamespaceDeclarationSyntax
855private sealed class SyntaxNodeSpanStartComparer : IComparer<SyntaxNode>
863public int Compare(SyntaxNode? x, SyntaxNode? y)
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();
ConvertIfToSwitch\AbstractConvertIfToSwitchCodeRefactoringProvider.cs (3)
45if (!ShouldOfferRefactoring(ifStatement, semanticModel, syntaxFactsService, out var analyzer, out var sections, out var target))
75[NotNullWhen(true)] out SyntaxNode? target)
248if (!ShouldOfferRefactoring(ifStatement, semanticModel, syntaxFactsService, out var analyzer, out var sections, out var target))
ConvertToInterpolatedString\AbstractConvertConcatenationToInterpolatedStringRefactoringProvider.cs (22)
25where TExpressionSyntax : SyntaxNode
51var declarator = top.FirstAncestorOrSelf<SyntaxNode>(syntaxFacts.IsVariableDeclarator);
69using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var pieces);
118Document document, SyntaxNode top, bool isVerbatimStringLiteral, ImmutableArray<SyntaxNode> pieces, CancellationToken cancellationToken)
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)
169var newText = ConcatenateTextToTextNode(generator, existingInterpolatedStringTextNode, textWithoutQuotes, valueTextWithEscapedBraces);
195var newText = ConcatenateTextToTextNode(generator, content.Last(), contentPart.GetFirstToken().Text, contentPart.GetFirstToken().ValueText);
210var converted = TryRemoveToString(piece);
226SyntaxNode TryRemoveToString(SyntaxNode piece)
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 (32)
47where TExpressionSyntax : SyntaxNode
53where TArgumentSyntax : SyntaxNode
54where TTupleTypeSyntax : SyntaxNode
55where TTypeBlockSyntax : SyntaxNode
56where TNamespaceDeclarationSyntax : SyntaxNode
120SyntaxNode tupleExprOrTypeNode,
126var containingMember = GetContainingMember(context.Document, tupleExprOrTypeNode);
163private static SyntaxNode? GetContainingMember(Document document, SyntaxNode tupleExprOrTypeNode)
166return tupleExprOrTypeNode.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>((node, syntaxFacts) => syntaxFacts.IsMethodLevelMember(node), syntaxFacts);
182private static async Task<(SyntaxNode, INamedTypeSymbol)> TryGetTupleInfoAsync(
197var expressionOrType =
198parsedDocument.TryGetRelevantNode<TTupleTypeSyntax>(span, cancellationToken) as SyntaxNode ??
326SyntaxNode tupleExprOrTypeNode, INamedTypeSymbol tupleType,
418Document document, SyntaxNode tupleExprOrTypeNode,
517Document startingDocument, SyntaxNode tupleExprOrTypeNode, CancellationToken cancellationToken)
542Document document, SyntaxNode tupleExprOrTypeNode)
544var containingMember = GetContainingMember(document, tupleExprOrTypeNode);
552Document document, SyntaxNode tupleExprOrTypeNode, INamedTypeSymbol namedTypeSymbol,
590var newRoot = editor.GetChangedRoot();
614SyntaxNode startingNode, INamedTypeSymbol tupleType, TNameSyntax fullyQualifiedStructName,
616SyntaxNode containerToUpdate, CancellationToken cancellationToken)
634SyntaxNode startingNode, INamedTypeSymbol tupleType, TNameSyntax qualifiedTypeName,
636SyntaxNode containingMember, CancellationToken cancellationToken)
690TNameSyntax qualifiedTypeName, SyntaxNode startingCreationNode, TTupleExpressionSyntax childCreation,
747Document document, SyntaxEditor editor, SyntaxNode startingNode,
750SyntaxNode containingMember, CancellationToken cancellationToken)
780TNameSyntax qualifiedTypeName, SyntaxNode startingNode, TTupleTypeSyntax childTupleType)
884var valueNode = generator.IdentifierName(ValueName);
885var arguments = tupleType.TupleElements.SelectAsArray<IFieldSymbol, SyntaxNode>(
889var convertToTupleStatement = generator.ReturnStatement(
892var convertToStructStatement = generator.ReturnStatement(
EditAndContinue\AbstractEditAndContinueAnalyzer.cs (206)
74private Action<SyntaxNode>? _testFaultInjector;
89internal abstract bool TryFindMemberDeclaration(SyntaxNode? root, SyntaxNode node, TextSpan activeSpan, out OneOrMany<SyntaxNode> declarations);
104internal abstract MemberBody? TryGetDeclarationBody(SyntaxNode node, ISymbol? symbol);
109internal abstract bool IsDeclarationWithSharedBody(SyntaxNode declaration, ISymbol member);
116protected abstract LambdaBody? FindEnclosingLambdaBody(SyntaxNode encompassingAncestor, SyntaxNode node);
118protected abstract Match<SyntaxNode> ComputeTopLevelMatch(SyntaxNode oldCompilationUnit, SyntaxNode newCompilationUnit);
119protected abstract BidirectionalMap<SyntaxNode>? ComputeParameterMap(SyntaxNode oldDeclaration, SyntaxNode newDeclaration);
120protected abstract IEnumerable<SequenceEdit> GetSyntaxSequenceEdits(ImmutableArray<SyntaxNode> oldNodes, ImmutableArray<SyntaxNode> newNodes);
128/// In case there are multiple breakpoint spans starting at the <see cref="SyntaxNode.SpanStart"/> of the <paramref name="node"/>,
139protected abstract bool TryGetActiveSpan(SyntaxNode node, int statementPart, int minLength, out TextSpan span);
149protected abstract IEnumerable<(SyntaxNode statement, int statementPart)> EnumerateNearStatements(SyntaxNode statement);
151protected abstract bool StatementLabelEquals(SyntaxNode node1, SyntaxNode node2);
160protected abstract bool AreEquivalentActiveStatements(SyntaxNode oldStatement, SyntaxNode newStatement, int statementPart);
170protected abstract bool IsNamespaceDeclaration(SyntaxNode node);
171protected abstract bool IsCompilationUnitWithGlobalStatements(SyntaxNode node);
172protected abstract bool IsGlobalStatement(SyntaxNode node);
177protected abstract IEnumerable<SyntaxNode> GetTopLevelTypeDeclarations(SyntaxNode compilationUnit);
187SyntaxNode? oldNode,
189SyntaxNode? newNode,
193Match<SyntaxNode> topMatch,
194IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
203SyntaxNode? oldNode,
204SyntaxNode? newNode,
211SyntaxNode? oldNode,
212SyntaxNode? newNode,
215Match<SyntaxNode> topMatch,
216IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
258protected abstract IEnumerable<SyntaxNode> GetVariableUseSites(IEnumerable<SyntaxNode> roots, ISymbol localOrParameter, SemanticModel model, CancellationToken cancellationToken);
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; }
535SyntaxNode oldRoot;
559var newRoot = await newTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
626using var _3 = ArrayBuilder<(SyntaxNode OldNode, SyntaxNode NewNode, TextSpan DiagnosticSpan)>.GetInstance(out var triviaEdits);
742private void ReportTopLevelSyntacticRudeEdits(RudeEditDiagnosticsBuilder diagnostics, EditScript<SyntaxNode> syntacticEdits, Dictionary<SyntaxNode, EditKind> editMap)
750internal Dictionary<SyntaxNode, EditKind> BuildEditMap(EditScript<SyntaxNode> editScript)
752var map = new Dictionary<SyntaxNode, EditKind>(editScript.Edits.Length);
789Match<SyntaxNode> topMatch,
821var hasPartner = topMatch.TryGetNewNode(oldMemberDeclaration, out var newMemberDeclaration);
834var oldStatementSyntax = oldBody.FindStatement(oldStatementSpan, out var _);
843SyntaxNode? newStatement = null;
904internal readonly struct ActiveNode(int activeStatementIndex, SyntaxNode oldNode, LambdaBody? enclosingLambdaBody, int statementPart, SyntaxNode? newTrackedNode)
907public readonly SyntaxNode OldNode = oldNode;
908public readonly SyntaxNode? NewTrackedNode = newTrackedNode;
945SyntaxNode? oldDeclaration,
946SyntaxNode? newDeclaration,
955Match<SyntaxNode> topMatch,
1036var oldStatementSyntax = oldMemberBody.FindStatement(oldStatementSpan, out var statementPart);
1057SyntaxNode? trackedNode = null;
1191SyntaxNode? newStatementSyntax;
1330private static bool TryGetTrackedStatement(ImmutableArray<ActiveStatementLineSpan> activeStatementSpans, ActiveStatementId id, SourceText text, MemberBody body, [NotNullWhen(true)] out SyntaxNode? trackedStatement, out int trackedStatementPart)
1375IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap,
1376SyntaxNode oldStatementSyntax,
1377SyntaxNode oldEncompassingAncestor,
1378SyntaxNode? newStatementSyntax,
1379SyntaxNode newEncompassingAncestor,
1404var edits = new MapBasedLongestCommonSubsequence<SyntaxNode>(forwardMap).GetEdits(oldAncestors, newAncestors);
1424ArrayBuilder<(DeclarationBodyMap map, SyntaxNode? oldLambda)>? lambdaBodyMaps = null;
1425SyntaxNode? currentOldLambda = null;
1441lambdaBodyMaps ??= ArrayBuilder<(DeclarationBodyMap, SyntaxNode?)>.GetInstance();
1475var map = new Dictionary<SyntaxNode, SyntaxNode>();
1476var additionalReverseMap = ImmutableDictionary.CreateBuilder<SyntaxNode, SyntaxNode>();
1581private static List<KeyValuePair<SyntaxNode, SyntaxNode>>? GetMatchingActiveNodes(IEnumerable<ActiveNode> activeNodes)
1584List<KeyValuePair<SyntaxNode, SyntaxNode>>? lazyKnownMatches = null;
1598public ActiveStatementExceptionRegions GetExceptionRegions(SyntaxNode root, TextSpan unmappedActiveStatementSpan, bool isNonLeaf, CancellationToken cancellationToken)
1600var node = root.FindToken(unmappedActiveStatementSpan.Start).Parent;
1607private ActiveStatementExceptionRegions GetExceptionRegions(List<SyntaxNode> exceptionHandlingAncestors, SyntaxTree tree, CancellationToken cancellationToken)
1640SyntaxNode oldEncompassingAncestor,
1641IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap,
1647var oldLambda = oldLambdaBody.GetLambda();
1663private TextSpan FindClosestActiveSpan(SyntaxNode statement, int statementPart)
1690internal TextSpan GetDeletedNodeActiveSpan(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode deletedNode)
1699if (forwardMap.TryGetValue(oldNode, out var newNode))
1708internal TextSpan GetDeletedDeclarationActiveSpan(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode deletedDeclaration)
1730internal TextSpan GetDeletedNodeDiagnosticSpan(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode deletedNode)
1740private static bool TryGetMatchingAncestor(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode? oldNode, [NotNullWhen(true)] out SyntaxNode? newAncestor)
1758protected static bool HasParentEdit(IReadOnlyDictionary<SyntaxNode, EditKind> editMap, Edit<SyntaxNode> edit)
1760SyntaxNode node;
1778protected static bool HasEdit(IReadOnlyDictionary<SyntaxNode, EditKind> editMap, SyntaxNode? node, EditKind editKind)
1790protected void AddAroundActiveStatementRudeDiagnostic(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode? oldNode, SyntaxNode? newNode, TextSpan newActiveStatementSpan)
1808protected void AddRudeTypeUpdateAroundActiveStatement(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode newNode, ITypeSymbol oldType, ITypeSymbol newType)
1817protected void AddRudeUpdateAroundActiveStatement(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode newNode)
1826protected void AddRudeInsertAroundActiveStatement(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode newNode)
1835protected void AddRudeDeleteAroundActiveStatement(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode oldNode, TextSpan newActiveStatementSpan)
1846IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap,
1847SyntaxNode oldActiveStatement,
1848SyntaxNode oldEncompassingAncestor,
1850SyntaxNode newActiveStatement,
1851SyntaxNode newEncompassingAncestor,
1853Func<SyntaxNode, bool> nodeSelector,
1854Func<TSyntaxNode, OneOrMany<SyntaxNode>> getTypedNodes,
1858where TSyntaxNode : SyntaxNode
1890private void ReportRudeEditsAndInserts(List<SyntaxNode?>? oldNodes, List<SyntaxNode?> newNodes, RudeEditDiagnosticsBuilder diagnostics)
1896var newNode = newNodes[i];
1916List<SyntaxNode?> oldNodes,
1918List<SyntaxNode?> newNodes,
1921IReadOnlyDictionary<SyntaxNode, SyntaxNode>? reverseMap,
1922Func<TSyntaxNode, OneOrMany<SyntaxNode>> getTypedNodes,
1926where TSyntaxNode : SyntaxNode
1932var newNode = newNodes[newIndex];
1938SyntaxNode? oldNode;
1962else if (reverseMap.TryGetValue(newNode, out var oldPartner) && comparer((TSyntaxNode)oldPartner, (TSyntaxNode)newNode))
2013private static int IndexOfEquivalent<TSyntaxNode>(SyntaxNode newNode, List<SyntaxNode?> oldNodes, int startIndex, Func<TSyntaxNode, TSyntaxNode, bool> comparer)
2014where TSyntaxNode : SyntaxNode
2018var oldNode = oldNodes[i];
2028private static List<SyntaxNode?>? GetAncestors(SyntaxNode? root, SyntaxNode node, Func<SyntaxNode, bool> nodeSelector)
2030List<SyntaxNode?>? list = null;
2031var current = node;
2062Match<SyntaxNode> topMatch,
2063IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
2064[Out] ArrayBuilder<(SyntaxNode OldNode, SyntaxNode NewNode, TextSpan DiagnosticSpan)> triviaEdits,
2079using var _ = ArrayBuilder<(string filePath, int oldStartLine, int oldEndLine, int delta, SyntaxNode oldNode, SyntaxNode newNode)>.GetInstance(out var segments);
2503public readonly Dictionary<SyntaxNode, SyntaxMaps> ChangedDeclarations = [];
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 (5)
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,
139protected static string? GetNameOfType(SyntaxNode? typeNode, ISyntaxFacts syntaxFacts)
153protected string? GetNameOfInvokedExpression(SyntaxNode invokedExpression)
EmbeddedLanguages\Json\LanguageServices\AbstractJsonDetectionAnalyzer.cs (1)
55SyntaxNode node,
EmbeddedLanguages\Json\LanguageServices\AbstractJsonDiagnosticAnalyzer.cs (1)
53SyntaxNode node,
GenerateEqualsAndGetHashCodeFromMembers\GenerateEqualsAndGetHashCodeFromMembersCodeRefactoringProvider.cs (4)
201Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> selectedMembers,
241Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
258Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
295Document document, SyntaxNode typeDeclaration, INamedTypeSymbol containingType, ImmutableArray<ISymbol> members,
GenerateType\AbstractGenerateTypeService.cs (12)
30where TExpressionSyntax : SyntaxNode
31where TTypeDeclarationSyntax : SyntaxNode
32where TArgumentSyntax : SyntaxNode
57Solution updatedSolution, SyntaxNode modifiedRoot, Document document, TSimpleNameSyntax simpleName, string includeUsingsOrImports, CancellationToken cancellationToken);
63public abstract Task<(INamespaceSymbol, INamespaceOrTypeSymbol, Location)> GetOrGenerateEnclosingNamespaceSymbolAsync(INamedTypeSymbol namedTypeSymbol, string[] containers, Document selectedDocument, SyntaxNode selectedDocumentRoot, CancellationToken cancellationToken);
67SyntaxNode node,
99SyntaxNode node,
137private static bool CanGenerateIntoContainingNamespace(SemanticDocument semanticDocument, SyntaxNode node, CancellationToken cancellationToken)
147.FirstOrDefault(node.GetAncestorsOrThis<SyntaxNode>().Contains);
156SyntaxNode node,
182IEnumerable<SyntaxNode> typeArguments,
195var argument = i < arguments.Count ? arguments[i] : null;
InitializeParameter\AbstractInitializeMemberFromParameterCodeRefactoringProviderMemberCreation.cs (21)
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,
372var nodesToTrack = new List<SyntaxNode> { constructorDeclaration };
389var currentConstructorDeclaration = currentRoot.GetCurrentNode(constructorDeclaration);
422SyntaxNode constructorDeclaration,
454var withoutThrowNotImplemented = RemoveThrowNotImplemented(propertySyntax);
471SyntaxNode constructorDeclaration,
540SyntaxNode typeDeclaration, CancellationToken cancellationToken)
551var symbolSyntax = symbol.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
InlineHints\AbstractInlineParameterNameHintsService.cs (10)
28SyntaxNode node,
29ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> buffer,
32protected abstract bool IsIndexer(SyntaxNode node, IParameterSymbol parameter);
63using var _2 = ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)>.GetInstance(out var buffer);
79void AddHintsIfAppropriate(SyntaxNode node)
128ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> parameterHints)
138ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> parameterHints)
156ArrayBuilder<(int position, SyntaxNode argument, IParameterSymbol? parameter, HintKind kind)> parameterHints)
282private static bool ParameterMatchesArgumentName(SyntaxNode argument, IParameterSymbol parameter, ISyntaxFactsService syntaxFacts)
288protected static string GetIdentifierNameFromArgument(SyntaxNode argument, ISyntaxFactsService syntaxFacts)
IntroduceParameter\AbstractIntroduceParameterCodeRefactoringProvider.cs (15)
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);
115private static bool IsValidExpression(SyntaxNode expression, ISyntaxFactsService syntaxFacts)
130var invalidNode = expression.FirstAncestorOrSelf<SyntaxNode>(node => syntaxFacts.IsAttributeArgument(node) || syntaxFacts.IsParameter(node));
140TExpressionSyntax expression, IMethodSymbol methodSymbol, SyntaxNode containingMethod,
201foreach (var variable in variablesInExpression)
237IMethodSymbol methodSymbol, SyntaxNode containingMethod, Dictionary<Document, List<TExpressionSyntax>> methodCallSites, bool allOccurrences, IntroduceParameterCodeActionKind selectedCodeAction,
244var changedRoots = await ProducerConsumer<(DocumentId documentId, SyntaxNode newRoot)>.RunParallelAsync(
IntroduceParameter\IntroduceParameterDocumentRewriter.cs (44)
28SyntaxNode containingMethod,
39private readonly SyntaxNode _containerMethod = containingMethod;
43public async Task<SyntaxNode> RewriteDocumentAsync(Compilation compilation, Document document, List<TExpressionSyntax> invocations, CancellationToken cancellationToken)
100private bool ShouldRemoveVariableDeclaratorContainingExpression([NotNullWhen(true)] out string? varDeclName, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
102var declarator = _expression?.Parent?.Parent;
137var parameterList = _syntaxFacts.GetParameterList(_containerMethod);
219private async Task<SyntaxNode> ModifyDocumentInvocationsTrampolineOverloadAndIntroduceParameterAsync(Compilation compilation, Document currentDocument,
267var parameter = _generator.ParameterDeclaration(parameterName, _generator.TypeExpression(parameterType));
304SyntaxNode GenerateNewArgumentListSyntaxForTrampoline(Compilation compilation, SemanticModel invocationSemanticModel,
305Dictionary<IParameterSymbol, int> parameterToArgumentMap, SyntaxNode currentArgumentListSyntax,
306SyntaxNode argumentListSyntax, SyntaxNode invocation, ImmutableArray<IParameterSymbol> validParameters,
313var requiredArguments = new List<SyntaxNode>();
323var conditionalRoot = _syntaxFacts.GetRootConditionalAccessExpression(invocation);
325var newMethodInvocation = GenerateNewMethodInvocation(invocation, requiredArguments, newMethodIdentifier);
336var expressionsWithConditionalAccessors = conditionalRoot.ReplaceNode(invocation, newMethodInvocation);
351private SyntaxNode GenerateNewMethodInvocation(SyntaxNode invocation, List<SyntaxNode> arguments, string newMethodIdentifier)
353var methodName = _generator.IdentifierName(newMethodIdentifier);
357var receiverExpression = _syntaxFacts.GetExpressionOfMemberAccessExpression(fullExpression);
388private async Task<SyntaxNode> ExtractMethodAsync(ImmutableArray<IParameterSymbol> validParameters, string newMethodIdentifier, SyntaxGenerator generator, CancellationToken cancellationToken)
391var returnStatement = generator.ReturnStatement(_expression.WithoutTrivia());
393var newMethodDeclaration = await CreateMethodDeclarationAsync(returnStatement,
420private async Task<SyntaxNode> GenerateNewMethodOverloadAsync(int insertionIndex, SyntaxGenerator generator, CancellationToken cancellationToken)
427var memberName = _methodSymbol.IsGenericMethod
430var invocation = generator.InvocationExpression(memberName, arguments);
432var newStatement = _methodSymbol.ReturnsVoid
436var newMethodDeclaration = await CreateMethodDeclarationAsync(newStatement,
441private async Task<SyntaxNode> CreateMethodDeclarationAsync(SyntaxNode newStatement, ImmutableArray<IParameterSymbol>? validParameters,
481private async Task<SyntaxNode> ModifyDocumentInvocationsAndIntroduceParameterAsync(Compilation compilation, Document document, int insertionIndex,
528var parameter = _generator.ParameterDeclaration(name: parameterName, type:
544SeparatedSyntaxList<SyntaxNode> updatedInvocationArguments)
551var updatedInvocationArgument = updatedInvocationArguments[index];
552var argumentExpression = _syntaxFacts.GetExpressionOfArgument(updatedInvocationArgument);
553var parenthesizedArgumentExpression = editor.Generator.AddParentheses(argumentExpression, includeElasticTrivia: false);
558var generatedExpression = _service.GenerateExpressionFromOptionalParameter(mappedParameter);
559var parenthesizedGeneratedExpression = editor.Generator.AddParentheses(generatedExpression, includeElasticTrivia: false);
572SeparatedSyntaxList<TArgumentSyntax> invocationArguments, SyntaxNode newArgumentExpression,
582SeparatedSyntaxList<SyntaxNode> invocationArguments, int methodInsertionIndex,
586foreach (var invocationArgument in invocationArguments)
608Dictionary<IParameterSymbol, int> mapping, SeparatedSyntaxList<SyntaxNode> arguments,
646if (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 (20)
98var destinationSyntaxNode = codeGenerationService.FindMostRelevantNameSpaceOrTypeDeclaration(
120foreach (var declaration in symbolToDeclarationsMap[analysisResult.Member])
197SyntaxNode memberDeclaration,
226SyntaxNode eventDeclaration,
231var declaration = editor.Generator.GetDeclaration(eventDeclaration);
252var publicAndNonStaticSyntax = codeGenerationService.CreateEventDeclaration(publicAndNonStaticSymbol, CodeGenerationDestination.ClassType, eventGenerationInfo, cancellationToken);
274var destinationSyntaxNode = codeGenerationService.FindMostRelevantNameSpaceOrTypeDeclaration(
308using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var sourceImports);
327foreach (var syntax in symbolToDeclarations[analysisResult.Member])
345var declarationSyntax = originalMemberEditor.Generator.GetDeclaration(syntax);
388var destinationRoot = AddLeadingTriviaBeforeFirstMember(
403private static SyntaxTriviaList GetLeadingTriviaBeforeFirstMember(SyntaxNode root, ISyntaxFactsService syntaxFacts)
411private static SyntaxNode RemoveLeadingTriviaBeforeFirstMember(SyntaxNode root, ISyntaxFactsService syntaxFacts)
419private static SyntaxNode AddLeadingTriviaBeforeFirstMember(SyntaxNode root, ISyntaxFactsService syntaxFacts, SyntaxTriviaList trivia)
432private static ImmutableArray<SyntaxNode> GetImports(SyntaxNode start, ISyntaxFactsService syntaxFacts)
467private static async Task<ImmutableDictionary<ISymbol, ImmutableArray<SyntaxNode>>> InitializeSymbolToDeclarationsMapAsync(
473var symbolToDeclarationsBuilder = ImmutableDictionary.CreateBuilder<ISymbol, ImmutableArray<SyntaxNode>>();
ReplaceConditionalWithStatements\AbstractReplaceConditionalWithStatementsCodeRefactoringProvider.cs (22)
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)
238var identifier = generator.IdentifierName(symbol.Name);
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 (32)
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 =
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 (25)
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);
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 (17)
25protected abstract Task<SyntaxNode> GetChangedRootAsync(
27SyntaxNode root,
28SyntaxNode ifOrElseIf,
29SyntaxNode leftCondition,
30SyntaxNode rightCondition,
49if (IsPartOfBinaryExpressionChain(token, GetLogicalExpressionKind(syntaxKinds), out var rootExpression) &&
65var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
68var ifOrElseIf = root.FindNode(ifOrElseIfSpan);
74var newRoot = await GetChangedRootAsync(document, root, ifOrElseIf, left, right, cancellationToken).ConfigureAwait(false);
78private static bool IsPartOfBinaryExpressionChain(SyntaxToken token, int syntaxKind, out SyntaxNode rootExpression)
94private static (SyntaxNode left, SyntaxNode right) SplitBinaryExpressionChain(
95SyntaxToken token, SyntaxNode rootExpression, ISyntaxFactsService syntaxFacts)
104syntaxFacts.GetPartsOfBinaryExpression(token.Parent, out var parentLeft, out _, out var parentRight);
106var left = parentLeft;
107var right = rootExpression.ReplaceNode(token.Parent, parentRight);
SplitOrMergeIfStatements\Consecutive\AbstractMergeConsecutiveIfStatementsCodeRefactoringProvider.cs (23)
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)
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 (19)
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)
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\Analyzers\Core\Analyzers\AddAccessibilityModifiers\IAddAccessibilityModifiersService.cs (1)
19SyntaxNode member,
src\Analyzers\Core\Analyzers\NewLines\MultipleBlankLines\AbstractMultipleBlankLinesDiagnosticAnalyzer.cs (1)
47SyntaxNode node,
src\Analyzers\Core\Analyzers\RemoveUnnecessarySuppressions\AbstractRemoveUnnecessaryPragmaSuppressionsDiagnosticAnalyzer.cs (18)
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);
226SyntaxNode root,
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);
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);
src\Analyzers\Core\Analyzers\SimplifyTypeNames\SimplifyTypeNamesDiagnosticAnalyzerBase.cs (6)
78internal abstract bool IsCandidate(SyntaxNode node);
80SemanticModel model, SyntaxNode node, TSimplifierOptions options,
110protected abstract bool IsIgnoredCodeBlock(SyntaxNode codeBlock);
111protected abstract ImmutableArray<Diagnostic> AnalyzeCodeBlock(CodeBlockAnalysisContext context, SyntaxNode root);
112protected abstract ImmutableArray<Diagnostic> AnalyzeSemanticModel(SemanticModelAnalysisContext context, SyntaxNode root, TextSpanMutableIntervalTree? codeBlockIntervalTree);
114public bool TrySimplify(SemanticModel model, SyntaxNode node, [NotNullWhen(true)] out Diagnostic? diagnostic, TSimplifierOptions options, AnalyzerOptions analyzerOptions, CancellationToken cancellationToken)
src\Analyzers\Core\Analyzers\UseAutoProperty\AbstractUseAutoPropertyAnalyzer.cs (24)
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);
212if (!shouldAnalyze && analysisRoot.FirstAncestorOrSelf<SyntaxNode>(node => node is TPropertyDeclaration or TFieldDeclaration) == null)
222ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldReads,
223ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites,
225SyntaxNode codeBlock,
535ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> ineligibleFieldUsageIfOutsideProperty,
536ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldReads,
537ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites,
622static bool NotWithinProperty(IEnumerable<SyntaxNode> nodes, TPropertyDeclaration propertyDeclaration)
624foreach (var node in nodes)
633static IEnumerable<SyntaxNode> NonConstructorLocations(IEnumerable<SyntaxNode> nodes)
src\Analyzers\Core\Analyzers\UseCompoundAssignment\UseCompoundAssignmentUtilities.cs (6)
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\Analyzers\Core\Analyzers\UseNullPropagation\AbstractUseNullPropagationDiagnosticAnalyzer.cs (9)
50where TExpressionSyntax : SyntaxNode
51where TStatementSyntax : SyntaxNode
124conditionalExpression, out var condition, out var whenTrue, out var whenFalse);
261syntaxFacts.GetPartsOfBinaryExpression(condition, out var conditionLeft, out var conditionRight);
374syntaxFacts.GetPartsOfCastExpression(node, out var type, out var expression);
402syntaxFacts.GetPartsOfAssignmentExpressionOrStatement(node, out var left, out _, out _);
src\Analyzers\Core\CodeFixes\AddExplicitCast\AbstractAddExplicitCastCodeFixProvider.cs (11)
22where TExpressionSyntax : SyntaxNode
31protected abstract void GetPartsOfCastOrConversionExpression(TExpressionSyntax expression, out SyntaxNode type, out TExpressionSyntax castedExpression);
49Document document, SemanticModel semanticModel, SyntaxNode root,
61Document document, SemanticModel semanticModel, SyntaxNode root,
116private (SyntaxNode finalTarget, SyntaxNode finalReplacement) ApplyFix(
136(SyntaxNode finalTarget, SyntaxNode finalReplacement) ApplyFixWorker()
141GetPartsOfCastOrConversionExpression(targetNode, out var castTypeNode, out var castedExpression);
161protected virtual (SyntaxNode finalTarget, SyntaxNode finalReplacement) Cast(SemanticModel semanticModel, TExpressionSyntax targetNode, ITypeSymbol conversionType)
src\Analyzers\Core\CodeFixes\ConvertToAsync\AbstractConvertToAsyncCodeFixProvider.cs (8)
19protected abstract Task<string> GetDescriptionAsync(Diagnostic diagnostic, SyntaxNode node, SemanticModel semanticModel, CancellationToken cancellationToken);
20protected abstract Task<(SyntaxTree syntaxTree, SyntaxNode root)?> GetRootInOtherSyntaxTreeAsync(SyntaxNode node, SemanticModel semanticModel, Diagnostic diagnostic, CancellationToken cancellationToken);
25if (!TryGetNode(root, context.Span, out var node))
39SyntaxNode root, TextSpan span, [NotNullWhen(true)] out SyntaxNode? node)
42var ancestors = root.FindToken(span.Start).GetAncestors<SyntaxNode>();
53SyntaxNode node, Document document, Diagnostic diagnostic, CancellationToken cancellationToken)
src\Analyzers\Core\CodeFixes\FileHeaders\AbstractFileHeaderCodeFixProvider.cs (7)
48private async Task<SyntaxNode> GetTransformedSyntaxRootAsync(Document document, CancellationToken cancellationToken)
57internal static async Task<SyntaxNode> GetTransformedSyntaxRootAsync(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, Document document, string? fileHeaderTemplate, CancellationToken cancellationToken)
80SyntaxNode newSyntaxRoot;
93private static SyntaxNode ReplaceHeader(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, SyntaxNode root, string expectedFileHeader)
175private static SyntaxNode AddHeader(ISyntaxFacts syntaxFacts, AbstractFileHeaderHelper fileHeaderHelper, SyntaxTrivia newLineTrivia, SyntaxNode root, string expectedFileHeader)
src\Analyzers\Core\CodeFixes\GenerateConstructor\AbstractGenerateConstructorService.cs (9)
26where TExpressionSyntax : SyntaxNode
29protected abstract bool IsSimpleNameGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
30protected abstract bool IsConstructorInitializerGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
31protected abstract bool IsImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
33protected abstract bool TryInitializeImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
34protected abstract bool TryInitializeSimpleNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
35protected abstract bool TryInitializeConstructorInitializerGeneration(SemanticDocument document, SyntaxNode constructorInitializer, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
36protected abstract bool TryInitializeSimpleAttributeNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
79public async Task<ImmutableArray<CodeAction>> GenerateConstructorAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
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\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\Analyzers\Core\CodeFixes\ImplementAbstractClass\ImplementAbstractClassData.cs (7)
33Document document, ImplementTypeOptions options, SyntaxNode classNode, SyntaxToken classIdentifier,
39private readonly SyntaxNode _classNode = classNode;
47Document document, SyntaxNode classNode, SyntaxToken classIdentifier, CancellationToken cancellationToken)
79Document document, SyntaxNode classNode, SyntaxToken classIdentifier, CancellationToken cancellationToken)
249Func<SyntaxNode, SyntaxNode, SyntaxNode> createAddOrRemoveHandler)
src\Analyzers\Core\CodeFixes\ImplementInterface\AbstractImplementInterfaceService.cs (10)
32protected abstract bool TryInitializeState(Document document, SemanticModel model, SyntaxNode interfaceNode, CancellationToken cancellationToken,
33[NotNullWhen(true)] out SyntaxNode? classOrStructDecl,
38protected abstract SyntaxNode AddCommentInsideIfStatement(SyntaxNode ifDisposingStatement, SyntaxTriviaList trivia);
39protected abstract SyntaxNode CreateFinalizer(SyntaxGenerator generator, INamedTypeSymbol classType, string disposeMethodDisplayString);
42Document document, ImplementTypeOptions options, SyntaxNode node, CancellationToken cancellationToken)
61public async Task<ImplementInterfaceInfo?> AnalyzeAsync(Document document, SyntaxNode interfaceType, CancellationToken cancellationToken)
67protected TNode AddComment<TNode>(string comment, TNode node) where TNode : SyntaxNode
70protected TNode AddComments<TNode>(string comment1, string comment2, TNode node) where TNode : SyntaxNode
73protected TNode AddComments<TNode>(string[] comments, TNode node) where TNode : SyntaxNode
src\Analyzers\Core\CodeFixes\MakeMethodAsynchronous\AbstractMakeMethodAsynchronousCodeFixProvider.cs (11)
20protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
27protected abstract SyntaxNode AddAsyncTokenAndFixReturnType(
28bool keepVoid, IMethodSymbol methodSymbol, SyntaxNode node, KnownTaskTypes knownTypes, CancellationToken cancellationToken);
41var node = GetContainingFunction(diagnostic, cancellationToken);
86private static IMethodSymbol? GetMethodSymbol(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken)
108var node = GetContainingFunction(diagnostic, cancellationToken);
146private SyntaxNode? GetContainingFunction(Diagnostic diagnostic, CancellationToken cancellationToken)
156SyntaxNode node,
173if (syntaxPath.TryResolve(newRoot, out SyntaxNode? newNode))
188SyntaxNode node,
191var newNode = AddAsyncTokenAndFixReturnType(keepVoid, methodSymbol, node, knownTypes, cancellationToken);
src\Analyzers\Core\CodeFixes\MakeMethodSynchronous\AbstractMakeMethodSynchronousCodeFixProvider.cs (11)
24protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
25protected abstract SyntaxNode RemoveAsyncTokenAndFixReturnType(IMethodSymbol methodSymbol, SyntaxNode node, KnownTaskTypes knownTypes);
52Document document, SyntaxNode node, CancellationToken cancellationToken)
73private async Task<Solution> RenameThenRemoveAsyncTokenAsync(Document document, SyntaxNode node, IMethodSymbol methodSymbol, CancellationToken cancellationToken)
86if (syntaxPath.TryResolve(newRoot, out SyntaxNode? newNode))
97Document document, IMethodSymbol methodSymbol, SyntaxNode node, CancellationToken cancellationToken)
103var newNode = RemoveAsyncTokenAndFixReturnType(methodSymbol, node, knownTypes)
182var newRoot = editor.GetChangedRoot();
249var currentConfigureAwaitInvocation = syntaxFacts.GetExpressionOfAwaitExpression(currentAwaitExpression);
251var currentInvocationExpression = syntaxFacts.GetExpressionOfMemberAccessExpression(currentMemberAccess);
src\Analyzers\Core\CodeFixes\RemoveAsyncModifier\AbstractRemoveAsyncModifierCodeFixProvider.cs (36)
22where TReturnStatementSyntax : SyntaxNode
23where TExpressionSyntax : SyntaxNode
25protected abstract bool IsAsyncSupportingFunctionSyntax(SyntaxNode node);
26protected abstract SyntaxNode RemoveAsyncModifier(SyntaxGenerator generator, SyntaxNode methodLikeNode);
27protected abstract SyntaxNode? ConvertToBlockBody(SyntaxNode node, TExpressionSyntax expressionBody);
104private static IMethodSymbol? GetMethodSymbol(SyntaxNode node, SemanticModel semanticModel, CancellationToken cancellationToken)
117private SyntaxNode RemoveAsyncModifier(
121SyntaxNode node,
128var expression = generator.GetExpression(node);
134var blockBodiedNode = ConvertToBlockBody(node, expressionBody);
146var newExpressionBody = WrapExpressionWithTaskFromResult(generator, expressionBody, returnType, knownTypes);
166private static ControlFlowAnalysis? GetControlFlowAnalysis(SyntaxGenerator generator, SemanticModel semanticModel, SyntaxNode node)
177private static SyntaxNode AddReturnStatement(SyntaxGenerator generator, SyntaxNode node)
180private SyntaxNode ChangeReturnStatements(
184SyntaxNode node,
196var returnExpression = syntaxFacts.GetExpressionOfReturnStatement(returnSyntax);
200var returnTaskCompletedTask = GetReturnTaskCompletedTaskStatement(generator, returnType, knownTypes);
206var newExpression = WrapExpressionWithTaskFromResult(generator, returnExpression, returnType, knownTypes);
214private static SyntaxNode GetReturnTaskCompletedTaskStatement(SyntaxGenerator generator, ITypeSymbol returnType, KnownTaskTypes knownTypes)
216SyntaxNode invocation;
219var taskTypeExpression = TypeExpressionForStaticMemberAccess(generator, knownTypes.TaskType);
227var statement = generator.ReturnStatement(invocation);
231private static SyntaxNode WrapExpressionWithTaskFromResult(SyntaxGenerator generator, SyntaxNode expression, ITypeSymbol returnType, KnownTaskTypes knownTypes)
235var taskTypeExpression = TypeExpressionForStaticMemberAccess(generator, knownTypes.TaskType!);
237var memberName = generator.GenericName(nameof(Task.FromResult), unwrappedReturnType);
238var taskFromResult = generator.MemberAccessExpression(taskTypeExpression, memberName);
249private static SyntaxNode TypeExpressionForStaticMemberAccess(SyntaxGenerator generator, INamedTypeSymbol typeSymbol)
254var typeExpression = generator.TypeExpression(typeSymbol);
258static SyntaxNode QualifiedNameToMemberAccess(int qualifiedNameSyntaxKind, int memberAccessExpressionSyntaxKind, SyntaxNode expression, SyntaxGenerator generator)
262var left = QualifiedNameToMemberAccess(qualifiedNameSyntaxKind, memberAccessExpressionSyntaxKind, expression.ChildNodes().First(), generator);
263var right = expression.ChildNodes().Last();
src\Analyzers\Core\CodeFixes\RemoveUnusedParametersAndValues\AbstractRemoveUnusedValuesCodeFixProvider.cs (63)
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);
239private static IEnumerable<IGrouping<SyntaxNode, Diagnostic>> GetDiagnosticsGroupedByMember(
242SyntaxNode root,
264private static IEnumerable<IGrouping<SyntaxNode, Diagnostic>> GetDiagnosticsGroupedByMember(
267SyntaxNode root)
292private async Task<SyntaxNode> GetNewRootAsync(
324var containingMemberDeclaration = diagnosticsToFix.Key;
334var currentRoot = editor.GetChangedRoot();
335var newRoot = await PostProcessDocumentAsync(document, options, currentRoot,
349SyntaxNode root,
350SyntaxNode containingMemberDeclaration,
386SyntaxNode root,
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);
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,
785using var _1 = PooledDictionary<SyntaxNode, SyntaxNode>.GetInstance(out var memberDeclReplacementsMap);
805private async Task<SyntaxNode> ReplaceDiscardDeclarationsWithAssignmentsAsync(SyntaxNode memberDeclaration, Document document, SyntaxFormattingOptions options, CancellationToken cancellationToken)
821private async Task<SyntaxNode> AdjustLocalDeclarationsAsync(
822SyntaxNode memberDeclaration,
930SyntaxNode memberDeclaration,
935private readonly SyntaxNode _memberDeclaration = memberDeclaration;
941public SyntaxToken GenerateUniqueNameAtSpanStart(SyntaxNode node)
src\Analyzers\Core\CodeFixes\UseCoalesceExpression\UseCoalesceExpressionForTernaryConditionalCheckCodeFixProvider.cs (16)
61var root = editor.OriginalRoot;
62var conditionalExpression = root.FindNode(diagnostic.AdditionalLocations[0].SourceSpan, getInnermostNodeForTie: true);
63var conditionalPartHigh = root.FindNode(diagnostic.AdditionalLocations[1].SourceSpan);
64var whenPart = root.FindNode(diagnostic.AdditionalLocations[2].SourceSpan);
66conditionalExpression, out var condition, out var whenTrue, out var whenFalse);
73c, out var currentCondition, out var currentWhenTrue, out var currentWhenFalse);
91private static SyntaxNode GetCoalesceExpression(
93SyntaxNode whenPart, SyntaxNode whenTrue,
94SyntaxNode conditionalPartLow,
95SyntaxNode currentWhenTrue, SyntaxNode currentWhenFalse)
src\Compilers\Core\AnalyzerDriver\DeclarationComputer.cs (12)
15internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, IEnumerable<SyntaxNode>? executableCodeBlocks, CancellationToken cancellationToken)
21internal static DeclarationInfo GetDeclarationInfo(SyntaxNode node, ISymbol? declaredSymbol, IEnumerable<SyntaxNode>? executableCodeBlocks)
23var codeBlocks = executableCodeBlocks?.Where(c => c != null).AsImmutableOrEmpty() ?? ImmutableArray<SyntaxNode>.Empty;
27internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, CancellationToken cancellationToken)
29return GetDeclarationInfo(model, node, getSymbol, (IEnumerable<SyntaxNode>?)null, cancellationToken);
32internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, SyntaxNode executableCodeBlock, CancellationToken cancellationToken)
37internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, CancellationToken cancellationToken, params SyntaxNode[] executableCodeBlocks)
42private 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)
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\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\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\Workspaces\SharedUtilitiesAndExtensions\Workspace\VisualBasic\CodeGeneration\VisualBasicCodeGenerationService.vb (37)
41Public Overloads Overrides Function GetDestination(containerNode As SyntaxNode) As CodeGenerationDestination
45Protected Overrides Function GetMemberComparer() As IComparer(Of SyntaxNode)
49Protected Overrides Function GetAvailableInsertionIndices(destination As SyntaxNode, cancellationToken As CancellationToken) As IList(Of Boolean)
92Protected Overrides Function AddEvent(Of TDeclarationNode As SyntaxNode)(
102Protected Overrides Function AddField(Of TDeclarationNode As SyntaxNode)(
118Protected Overrides Function AddProperty(Of TDeclarationNode As SyntaxNode)(
133Protected Overrides Function AddMethod(Of TDeclarationNode As SyntaxNode)(
177Protected Overloads Overrides Function AddNamedType(Of TDeclarationNode As SyntaxNode)(
193Protected Overrides Function AddNamespace(Of TDeclarationNode As SyntaxNode)(
208Public Overrides Function AddParameters(Of TDeclarationNode As SyntaxNode)(
236Protected Overrides Function AddMembers(Of TDeclarationNode As SyntaxNode)(destination As TDeclarationNode, members As IEnumerable(Of SyntaxNode)) As TDeclarationNode
249Private Overloads Function AddParametersToMethod(Of TDeclarationNode As SyntaxNode)(
284Private Overloads Function AddParametersToProperty(Of TDeclarationNode As SyntaxNode)(
291Dim newPropertyBlock As SyntaxNode = propertyBlock.WithPropertyStatement(newPropertyStatement)
325Public Overrides Function AddAttributes(Of TDeclarationNode As SyntaxNode)(
359Public Overrides Function RemoveAttribute(Of TDeclarationNode As SyntaxNode)(destination As TDeclarationNode, attributeToRemove As AttributeData, options As VisualBasicCodeGenerationContextInfo, cancellationToken As CancellationToken) As TDeclarationNode
368Public Overrides Function RemoveAttribute(Of TDeclarationNode As SyntaxNode)(destination As TDeclarationNode, attributeToRemove As SyntaxNode, options As VisualBasicCodeGenerationContextInfo, cancellationToken As CancellationToken) As TDeclarationNode
409Private Shared Function RemoveAttributeFromAttributeLists(attributeLists As SyntaxList(Of AttributeListSyntax), attributeToRemove As SyntaxNode,
438Private Shared Function RemoveAttributeFromAttributeStatements(attributeStatements As SyntaxList(Of AttributesStatementSyntax), attributeToRemove As SyntaxNode,
459Public Overrides Function AddStatements(Of TDeclarationNode As SyntaxNode)(
461statements As IEnumerable(Of SyntaxNode),
492Private Shared Function AddStatementsWorker(Of TDeclarationNode As SyntaxNode)(
494statements As IEnumerable(Of SyntaxNode),
509Dim newBlock As SyntaxNode
530cancellationToken As CancellationToken) As SyntaxNode
551cancellationToken As CancellationToken) As SyntaxNode
558cancellationToken As CancellationToken) As SyntaxNode
569cancellationToken As CancellationToken) As SyntaxNode
576cancellationToken As CancellationToken) As SyntaxNode
583cancellationToken As CancellationToken) As SyntaxNode
587Private Overloads Shared Function UpdateDeclarationModifiers(Of TDeclarationNode As SyntaxNode)(declaration As TDeclarationNode, computeNewModifiersList As Func(Of SyntaxTokenList, SyntaxTokenList)) As TDeclarationNode
633Public Overrides Function UpdateDeclarationModifiers(Of TDeclarationNode As SyntaxNode)(declaration As TDeclarationNode, newModifiers As IEnumerable(Of SyntaxToken), options As VisualBasicCodeGenerationContextInfo, cancellationToken As CancellationToken) As TDeclarationNode
641Public Overrides Function UpdateDeclarationAccessibility(Of TDeclarationNode As SyntaxNode)(declaration As TDeclarationNode, newAccessibility As Accessibility, options As VisualBasicCodeGenerationContextInfo, cancellationToken As CancellationToken) As TDeclarationNode
696Public Overrides Function UpdateDeclarationType(Of TDeclarationNode As SyntaxNode)(declaration As TDeclarationNode, newType As ITypeSymbol, options As VisualBasicCodeGenerationContextInfo, cancellationToken As CancellationToken) As TDeclarationNode
758Public Overrides Function UpdateDeclarationMembers(Of TDeclarationNode As SyntaxNode)(declaration As TDeclarationNode, newMembers As IList(Of ISymbol), options As VisualBasicCodeGenerationContextInfo, cancellationToken As CancellationToken) As TDeclarationNode
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\VisualBasic\Editing\VisualBasicImportAdder.vb (7)
25Protected Overrides Function GetExplicitNamespaceSymbol(node As SyntaxNode, model As SemanticModel) As INamespaceSymbol
39Protected Overrides Function AddPotentiallyConflictingImportsAsync(model As SemanticModel, container As SyntaxNode, namespaceSymbols As ImmutableArray(Of INamespaceSymbol), conflicts As HashSet(Of INamespaceSymbol), cancellationToken As CancellationToken) As Task
128Public Async Function AddPotentiallyConflictingImportsAsync(container As SyntaxNode, conflicts As HashSet(Of INamespaceSymbol), cancellationToken As CancellationToken) As Task
129Dim nodes = ArrayBuilder(Of SyntaxNode).GetInstance()
135Function(node As SyntaxNode, onItemsFound As Action(Of INamespaceSymbol), conflictFinder As ConflictFinder, cancellationToken1 As CancellationToken) As Task
155Private Sub CollectInfoFromContainer(container As SyntaxNode, nodes As ArrayBuilder(Of SyntaxNode), ByRef containsAnonymousMethods As Boolean)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\VisualBasic\Extensions\CompilationUnitSyntaxExtensions.vb (1)
20contextNode As SyntaxNode,
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\VisualBasic\Indentation\SpecialFormattingOperation.vb (10)
22Public Overrides Sub AddSuppressOperationsSlow(list As ArrayBuilder(Of SuppressOperation), node As SyntaxNode, ByRef nextOperation As NextSuppressOperationAction)
57Public Overrides Sub AddIndentBlockOperationsSlow(list As List(Of IndentBlockOperation), node As SyntaxNode, ByRef nextOperation As NextIndentBlockOperationAction)
83Private Overloads Shared Sub AddIndentBlockOperations(Of T As SyntaxNode)(list As List(Of IndentBlockOperation), node As SyntaxNode, predicate As Func(Of T, Boolean), Optional indentationDelta As Integer = 0)
96Private Overloads Shared Sub AddIndentBlockOperations(list As List(Of IndentBlockOperation), parameterOrArgumentList As SyntaxNode, indentationDelta As Integer)
113Private Shared Sub AddArgumentListIndentBlockOperations(operations As List(Of IndentBlockOperation), node As SyntaxNode)
169Public Overrides Sub AddAlignTokensOperationsSlow(operations As List(Of AlignTokensOperation), node As SyntaxNode, ByRef nextAction As NextAlignTokensOperationAction)
184Private Shared Sub AddCaseClauseAlignTokensOperations(operations As List(Of AlignTokensOperation), node As SyntaxNode)
201Private Overloads Shared Sub AddAlignTokensOperations(Of T As SyntaxNode)(operations As List(Of AlignTokensOperation), node As SyntaxNode, baseTokenGetter As Func(Of T, SyntaxToken))
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\VisualBasic\LanguageServices\VisualBasicSemanticFactsService.vb (12)
107semanticModel As SemanticModel, location As SyntaxNode, containerOpt As SyntaxNode, baseName As String, cancellationToken As CancellationToken) As SyntaxToken Implements ISemanticFactsService.GenerateUniqueName
112semanticModel As SemanticModel, location As SyntaxNode, containerOpt As SyntaxNode, baseName As String, usedNames As IEnumerable(Of String), cancellationToken As CancellationToken) As SyntaxToken Implements ISemanticFactsService.GenerateUniqueName
117semanticModel As SemanticModel, location As SyntaxNode, containerOpt As SyntaxNode, baseName As String, cancellationToken As CancellationToken) As SyntaxToken Implements ISemanticFactsService.GenerateUniqueLocalName
122semanticModel As SemanticModel, location As SyntaxNode, containerOpt As SyntaxNode, baseName As String, usedName As IEnumerable(Of String), cancellationToken As CancellationToken) As SyntaxToken Implements ISemanticFactsService.GenerateUniqueLocalName
126Private Function ISemanticFactsService_GenerateUniqueName(semanticModel As SemanticModel, location As SyntaxNode, containerOpt As SyntaxNode, baseName As String, filter As Func(Of ISymbol, Boolean), usedNames As IEnumerable(Of String), cancellationToken As CancellationToken) As SyntaxToken Implements ISemanticFactsService.GenerateUniqueName
134Public Function ClassifyConversion(semanticModel As SemanticModel, expression As SyntaxNode, destination As ITypeSymbol) As CommonConversion Implements ISemanticFactsService.ClassifyConversion
138Public Function TryGetDisposeMethod(semanticModel As SemanticModel, node As SyntaxNode, cancellationToken As CancellationToken) As IMethodSymbol Implements ISemanticFactsService.TryGetDisposeMethod
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\VisualBasic\LanguageServices\VisualBasicSyntaxGeneratorInternal.vb (104)
58Public Overloads Overrides Function LocalDeclarationStatement(type As SyntaxNode, identifier As SyntaxToken, Optional initializer As SyntaxNode = Nothing, Optional isConst As Boolean = False) As SyntaxNode
64Public Overrides Function WithInitializer(variableDeclarator As SyntaxNode, initializer As SyntaxNode) As SyntaxNode
68Public Overrides Function EqualsValueClause(operatorToken As SyntaxToken, value As SyntaxNode) As SyntaxNode
72Friend Shared Function VariableDeclarator(type As SyntaxNode, name As ModifiedIdentifierSyntax, Optional expression As SyntaxNode = Nothing) As VariableDeclaratorSyntax
85Public Overrides Function ConditionalAccessExpression(expression As SyntaxNode, whenNotNull As SyntaxNode) As SyntaxNode
91Public Overrides Function MemberBindingExpression(name As SyntaxNode) As SyntaxNode
95Public Overrides Function RefExpression(expression As SyntaxNode) As SyntaxNode
99Public Overrides Function AddParentheses(expression As SyntaxNode, Optional includeElasticTrivia As Boolean = True, Optional addSimplifierAnnotation As Boolean = True) As SyntaxNode
103Friend Shared Function Parenthesize(expression As SyntaxNode, Optional addSimplifierAnnotation As Boolean = True) As ParenthesizedExpressionSyntax
107Public Overrides Function YieldReturnStatement(expression As SyntaxNode) As SyntaxNode
117Public Overrides Function InterpolatedStringExpression(startToken As SyntaxToken, content As IEnumerable(Of SyntaxNode), endToken As SyntaxToken) As SyntaxNode
122Public Overrides Function InterpolatedStringText(textToken As SyntaxToken) As SyntaxNode
130Public Overrides Function Interpolation(syntaxNode As SyntaxNode) As SyntaxNode
134Public Overrides Function InterpolationAlignmentClause(alignment As SyntaxNode) As SyntaxNode
140Public Overrides Function InterpolationFormatClause(format As String) As SyntaxNode
146Public Overrides Function TypeParameterList(typeParameterNames As IEnumerable(Of String)) As SyntaxNode
152Public Overrides Function Type(typeSymbol As ITypeSymbol, typeContext As Boolean) As SyntaxNode
156Public Overrides Function NegateEquality(generator As SyntaxGenerator, node As SyntaxNode, left As SyntaxNode, negatedKind As Operations.BinaryOperatorKind, right As SyntaxNode) As SyntaxNode
171Public Overrides Function IsNotTypeExpression(expression As SyntaxNode, type As SyntaxNode) As SyntaxNode
177type As SyntaxNode,
180Optional parameters As IEnumerable(Of SyntaxNode) = Nothing,
181Optional addAccessorStatements As IEnumerable(Of SyntaxNode) = Nothing,
182Optional removeAccessorStatements As IEnumerable(Of SyntaxNode) = Nothing,
183Optional raiseAccessorStatements As IEnumerable(Of SyntaxNode) = Nothing) As SyntaxNode
193addAccessorStatements = SpecializedCollections.EmptyEnumerable(Of SyntaxNode)()
197removeAccessorStatements = SpecializedCollections.EmptyEnumerable(Of SyntaxNode)()
201raiseAccessorStatements = SpecializedCollections.EmptyEnumerable(Of SyntaxNode)()
225Friend Shared Function CreateAddHandlerAccessorBlock(delegateType As SyntaxNode, statements As IEnumerable(Of SyntaxNode)) As AccessorBlockSyntax
247Friend Shared Function CreateRemoveHandlerAccessorBlock(delegateType As SyntaxNode, statements As IEnumerable(Of SyntaxNode)) As AccessorBlockSyntax
269Friend Shared Function CreateRaiseEventAccessorBlock(parameters As IEnumerable(Of SyntaxNode), statements As IEnumerable(Of SyntaxNode)) As AccessorBlockSyntax
284Friend Shared Function GetStatementList(nodes As IEnumerable(Of SyntaxNode)) As SyntaxList(Of StatementSyntax)
292Friend Shared Function AsStatement(node As SyntaxNode) As StatementSyntax
361Friend Shared Function GetParameterList(parameters As IEnumerable(Of SyntaxNode)) As ParameterListSyntax
365Friend Shared Function GetModifierList(accessibility As Accessibility, modifiers As DeclarationModifiers, declaration As SyntaxNode, kind As DeclarationKind, Optional isDefault As Boolean = False) As SyntaxTokenList
466Public Overrides Function IsPatternExpression(expression As SyntaxNode, isToken As SyntaxToken, pattern As SyntaxNode) As SyntaxNode
470Public Overrides Function AndPattern(left As SyntaxNode, right As SyntaxNode) As SyntaxNode
474Public Overrides Function ConstantPattern(expression As SyntaxNode) As SyntaxNode
478Public Overrides Function DeclarationPattern(type As INamedTypeSymbol, name As String) As SyntaxNode
482Public Overrides Function LessThanRelationalPattern(expression As SyntaxNode) As SyntaxNode
486Public Overrides Function LessThanEqualsRelationalPattern(expression As SyntaxNode) As SyntaxNode
490Public Overrides Function GreaterThanRelationalPattern(expression As SyntaxNode) As SyntaxNode
494Public Overrides Function GreaterThanEqualsRelationalPattern(expression As SyntaxNode) As SyntaxNode
498Public Overrides Function NotPattern(pattern As SyntaxNode) As SyntaxNode
502Public Overrides Function OrPattern(left As SyntaxNode, right As SyntaxNode) As SyntaxNode
506Public Overrides Function ParenthesizedPattern(pattern As SyntaxNode) As SyntaxNode
510Public Overrides Function TypePattern(type As SyntaxNode) As SyntaxNode
514Public Overrides Function UnaryPattern(operatorToken As SyntaxToken, pattern As SyntaxNode) As SyntaxNode
520Public Overrides Function BitwiseOrExpression(left As SyntaxNode, right As SyntaxNode) As SyntaxNode
524Public Overrides Function CastExpression(type As SyntaxNode, expression As SyntaxNode) As SyntaxNode
528Public Overrides Function DefaultExpression(type As ITypeSymbol) As SyntaxNode
532Public Overrides Function DefaultExpression(type As SyntaxNode) As SyntaxNode
536Public Overrides Function IdentifierName(identifier As String) As SyntaxNode
540Public Overrides Function MemberAccessExpressionWorker(expression As SyntaxNode, simpleName As SyntaxNode) As SyntaxNode
548Public Shared Function ParenthesizeLeft(expression As SyntaxNode) As ExpressionSyntax
561Public Overrides Function TypeExpression(typeSymbol As ITypeSymbol, refKind As RefKind) As SyntaxNode
566Public Overrides Function ConvertExpression(type As SyntaxNode, expression As SyntaxNode) As SyntaxNode
AddImport\VisualBasicAddImportFeatureService.vb (21)
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,
329expression As SyntaxNode,
337Dim leftExpression As SyntaxNode
355Protected Overrides Function IsAddMethodContext(node As SyntaxNode, semanticModel As SemanticModel) As Boolean
ChangeSignature\VisualBasicChangeSignatureService.vb (29)
152Private Shared Function TryGetSelectedIndexFromDeclaration(position As Integer, matchingNode As SyntaxNode) As Integer
157Private Shared Function GetMatchingNode(node As SyntaxNode, restrictToDeclarations As Boolean) As SyntaxNode
176Private Shared Function IsInSymbolHeader(matchingNode As SyntaxNode, position As Integer) As Boolean
204matchingNode As SyntaxNode,
228Public Overrides Function FindNodeToUpdate(document As Document, node As SyntaxNode) As SyntaxNode
243Private Shared Function GetNodeContainingTargetNode(originalNode As SyntaxNode, matchingNode As SyntaxNode) As SyntaxNode
262Private Shared Function GetUpdatableNode(matchingNode As SyntaxNode) As SyntaxNode
277potentiallyUpdatedNode As SyntaxNode,
278originalNode As SyntaxNode,
281cancellationToken As CancellationToken) As SyntaxNode
523Private Shared Function IsParamsArrayExpanded(semanticModel As SemanticModel, node As SyntaxNode, symbolInfo As SymbolInfo, cancellationToken As CancellationToken) As Boolean
581Private Function UpdateDeclaration(Of T As SyntaxNode)(
633Private Function VerifyAndPermuteParamNodes(paramNodes As ImmutableArray(Of XmlElementSyntax), declarationSymbol As ISymbol, updatedSignature As SignatureChange) As ImmutableArray(Of SyntaxNode)
641Return ImmutableArray(Of SyntaxNode).Empty
645Return ImmutableArray(Of SyntaxNode).Empty
653Return ImmutableArray(Of SyntaxNode).Empty
658Return ImmutableArray(Of SyntaxNode).Empty
666Dim permutedParams = ArrayBuilder(Of SyntaxNode).GetInstance()
745Protected Overrides Function TransferLeadingWhitespaceTrivia(Of T As SyntaxNode)(newArgument As T, oldArgument As SyntaxNode) As T
761Protected Overrides Function CreateExplicitParamsArrayFromIndividualArguments(Of TArgumentSyntax As SyntaxNode)(newArguments As SeparatedSyntaxList(Of TArgumentSyntax), indexInExistingList As Integer, parameterSymbol As IParameterSymbol) As TArgumentSyntax
767Protected Overrides Function AddNameToArgument(Of TArgumentSyntax As SyntaxNode)(newArgument As TArgumentSyntax, name As String) As TArgumentSyntax
770Return CType(CType(simpleArgument.WithNameColonEquals(NameColonEquals(IdentifierName(name))), SyntaxNode), TArgumentSyntax)
775Return 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)
28Protected Overrides Function CreatePragmaRestoreDirectiveTrivia(diagnostic As Diagnostic, formatNode As Func(Of SyntaxNode, CancellationToken, SyntaxNode), needsLeadingEndOfLine As Boolean, needsTrailingEndOfLine As Boolean, cancellationToken As CancellationToken) As SyntaxTriviaList
35Protected Overrides Function CreatePragmaDisableDirectiveTrivia(diagnostic As Diagnostic, formatNode As Func(Of SyntaxNode, CancellationToken, SyntaxNode), needsLeadingEndOfLine As Boolean, needsTrailingEndOfLine As Boolean, cancellationToken As CancellationToken) As SyntaxTriviaList
55formatNode As Func(Of SyntaxNode, CancellationToken, SyntaxNode),
82Protected Overrides Function GetContainingStatement(token As SyntaxToken) As SyntaxNode
102Protected Overrides Function IsAttributeListWithAssemblyAttributes(node As SyntaxNode) As Boolean
117newRoot As SyntaxNode,
124cancellationToken As CancellationToken) As SyntaxNode
152targetNode As SyntaxNode,
155diagnostic As Diagnostic) As SyntaxNode
209Protected Overrides Function IsSingleAttributeInAttributeList(attribute As SyntaxNode) As Boolean
CodeRefactorings\SyncNamespace\VisualBasicChangeNamespaceService.vb (9)
24Public Overrides Function TryGetReplacementReferenceSyntax(reference As SyntaxNode, newNamespaceParts As ImmutableArray(Of String), syntaxFacts As ISyntaxFactsService, ByRef old As SyntaxNode, ByRef [new] As SyntaxNode) As Boolean
60Protected Overrides Function GetValidContainersFromAllLinkedDocumentsAsync(document As Document, container As SyntaxNode, cancellationToken As CancellationToken) As Task(Of ImmutableArray(Of (DocumentId, SyntaxNode)))
61Return SpecializedTasks.Default(Of ImmutableArray(Of (DocumentId, SyntaxNode)))()
70Protected Overrides Function GetMemberDeclarationsInContainer(container As SyntaxNode) As SyntaxList(Of StatementSyntax)
75Protected Overrides Function TryGetApplicableContainerFromSpanAsync(document As Document, span As TextSpan, cancellationToken As CancellationToken) As Task(Of SyntaxNode)
80Protected Overrides Function GetDeclaredNamespace(container As SyntaxNode) As String
Completion\CompletionProviders\ImplementsClauseCompletionProvider.vb (3)
191Private Function GetInterfacesAndContainers(position As Integer, node As SyntaxNode, semanticModel As SemanticModel, kind As SyntaxKind, cancellationToken As CancellationToken) As ImmutableArray(Of ISymbol)
228Private Shared Sub AddAliasesAndContainers(symbol As ISymbol, interfacesAndContainers As ICollection(Of ISymbol), node As SyntaxNode, semanticModel As SemanticModel)
246Private 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 (155)
30Friend Overrides Function TryFindMemberDeclaration(rootOpt As SyntaxNode, node As SyntaxNode, activeSpan As TextSpan, <Out> ByRef declarations As OneOrMany(Of SyntaxNode)) As Boolean
59declarations = OneOrMany.Create(Of SyntaxNode)(variableDeclarator.Names(0))
61declarations = OneOrMany.Create(variableDeclarator.Names.SelectAsArray(Function(n) CType(n, SyntaxNode)))
88Friend Overrides Function TryGetDeclarationBody(node As SyntaxNode, symbol As ISymbol) As MemberBody
92Friend Overrides Function IsDeclarationWithSharedBody(declaration As SyntaxNode, member As ISymbol) As Boolean
101Protected Overrides Function GetVariableUseSites(roots As IEnumerable(Of SyntaxNode), localOrParameter As ISymbol, model As SemanticModel, cancellationToken As CancellationToken) As IEnumerable(Of SyntaxNode)
118body As SyntaxNode,
119partnerBody As SyntaxNode,
120<Out> ByRef partnerStatement As SyntaxNode,
121<Out> ByRef statementPart As Integer) As SyntaxNode
130Dim node As SyntaxNode = Nothing
173Friend Overrides Function IsClosureScope(node As SyntaxNode) As Boolean
177Friend Overrides Function GetCapturedParameterScope(methodOrLambda As SyntaxNode) As SyntaxNode
181Protected Overrides Function FindEnclosingLambdaBody(encompassingAncestor As SyntaxNode, node As SyntaxNode) As LambdaBody
183Dim body As SyntaxNode = Nothing
194Protected Overrides Function ComputeTopLevelMatch(oldCompilationUnit As SyntaxNode, newCompilationUnit As SyntaxNode) As Match(Of SyntaxNode)
198Protected Overrides Function ComputeParameterMap(oldDeclaration As SyntaxNode, newDeclaration As SyntaxNode) As BidirectionalMap(Of SyntaxNode)?
209Dim map = BidirectionalMap(Of SyntaxNode).FromMatch(If(primaryMatch, secondaryMatch))
218Private Shared Function GetTopLevelMatch(oldNode As SyntaxNode, newNode As SyntaxNode) As Match(Of SyntaxNode)
222Private Shared Function GetDeclarationParameterLists(declaration As SyntaxNode) As (Primary As SyntaxNode, Secondary As SyntaxNode)
241Protected Overrides Function IsNamespaceDeclaration(node As SyntaxNode) As Boolean
246Private Shared Function IsTypeDeclaration(node As SyntaxNode) As Boolean
250Protected Overrides Function IsCompilationUnitWithGlobalStatements(node As SyntaxNode) As Boolean
254Protected Overrides Function IsGlobalStatement(node As SyntaxNode) As Boolean
258Protected Overrides Iterator Function GetTopLevelTypeDeclarations(compilationUnit As SyntaxNode) As IEnumerable(Of SyntaxNode)
292Protected Overrides Function GetSyntaxSequenceEdits(oldNodes As ImmutableArray(Of SyntaxNode), newNodes As ImmutableArray(Of SyntaxNode)) As IEnumerable(Of SequenceEdit)
296Friend Overrides ReadOnly Property EmptyCompilationUnit As SyntaxNode
307Protected Overrides Function StatementLabelEquals(node1 As SyntaxNode, node2 As SyntaxNode) As Boolean
311Private Shared Function ChildrenCompiledInBody(node As SyntaxNode) As Boolean
322Protected Overrides Function TryGetActiveSpan(node As SyntaxNode, statementPart As Integer, minLength As Integer, <Out> ByRef span As TextSpan) As Boolean
326Protected Overrides Iterator Function EnumerateNearStatements(statement As SyntaxNode) As IEnumerable(Of ValueTuple(Of SyntaxNode, Integer))
334Dim lastBlockStatement As SyntaxNode = Nothing
398Private Shared Function GetFieldOrPropertyModifiers(node As SyntaxNode) As SyntaxTokenList?
408Private Shared Function AreEquivalentIgnoringLambdaBodies(left As SyntaxNode, right As SyntaxNode) As Boolean
417Protected Overrides Function AreEquivalentActiveStatements(oldStatement As SyntaxNode, newStatement As SyntaxNode, statementPart As Integer) As Boolean
450Private Shared Function HasMultiInitializer(modifiedIdentifier As SyntaxNode) As Boolean
459Friend Overrides Function IsInterfaceDeclaration(node As SyntaxNode) As Boolean
463Friend Overrides Function IsRecordDeclaration(node As SyntaxNode) As Boolean
468Friend Overrides Function TryGetContainingTypeDeclaration(node As SyntaxNode) As SyntaxNode
472Friend Overrides Function IsDeclarationWithInitializer(declaration As SyntaxNode) As Boolean
502Friend Overrides Function IsPrimaryConstructorDeclaration(declaration As SyntaxNode) As Boolean
524Protected Overrides Function GetSymbolDeclarationSyntax(symbol As ISymbol, selector As Func(Of ImmutableArray(Of SyntaxReference), SyntaxReference), cancellationToken As CancellationToken) As SyntaxNode
629Protected Overrides Function GetDeclaredSymbol(model As SemanticModel, declaration As SyntaxNode, cancellationToken As CancellationToken) As ISymbol
699oldNode As SyntaxNode,
700newNode As SyntaxNode,
740oldNode As SyntaxNode,
742newNode As SyntaxNode,
746topMatch As Match(Of SyntaxNode),
747editMap As IReadOnlyDictionary(Of SyntaxNode, EditKind),
887node As SyntaxNode,
935Private Function GetParameterContainingMemberOrType(node As SyntaxNode, otherNode As SyntaxNode, model As SemanticModel, fromOtherMap As IReadOnlyDictionary(Of SyntaxNode, SyntaxNode), cancellationToken As CancellationToken) As ISymbol
942Dim declaration As SyntaxNode = Nothing
952Private Shared Function GetContainingDeclaration(node As SyntaxNode) As SyntaxNode
956Friend Overrides ReadOnly Property IsLambda As Func(Of SyntaxNode, Boolean)
962Friend Overrides ReadOnly Property IsNotLambda As Func(Of SyntaxNode, Boolean)
968Friend Overrides ReadOnly Property DescendantTokensIgnoringLambdaBodies As Func(Of SyntaxNode, IEnumerable(Of SyntaxToken))
980Friend Overrides Function IsNestedFunction(node As SyntaxNode) As Boolean
984Friend Overrides Function IsLocalFunction(node As SyntaxNode) As Boolean
988Friend Overrides Function IsGenericLocalFunction(node As SyntaxNode) As Boolean
992Friend Overrides Function TryGetLambdaBodies(node As SyntaxNode, <Out> ByRef body1 As LambdaBody, <Out> ByRef body2 As LambdaBody) As Boolean
993Dim bodyNode1 As SyntaxNode = Nothing
994Dim bodyNode2 As SyntaxNode = Nothing
1004Friend Overrides Function GetLambdaExpressionSymbol(model As SemanticModel, lambdaExpression As SyntaxNode, cancellationToken As CancellationToken) As IMethodSymbol
1011Friend Overrides Function GetContainingQueryExpression(node As SyntaxNode) As SyntaxNode
1015Friend Overrides Function QueryClauseLambdasTypeEquivalent(oldModel As SemanticModel, oldNode As SyntaxNode, newModel As SemanticModel, newNode As SyntaxNode, cancellationToken As CancellationToken) As Boolean
1073Protected Overrides Function TryGetDiagnosticSpan(node As SyntaxNode, editKind As EditKind) As TextSpan?
1077Protected Overloads Shared Function GetDiagnosticSpan(node As SyntaxNode, editKind As EditKind) As TextSpan
1081Private Shared Function TryGetDiagnosticSpanImpl(node As SyntaxNode, editKind As EditKind) As TextSpan?
1085Protected Overrides Function GetBodyDiagnosticSpan(node As SyntaxNode, editKind As EditKind) As TextSpan
1090Friend Shared Function TryGetDiagnosticSpanImpl(kind As SyntaxKind, node As SyntaxNode, editKind As EditKind) As TextSpan?
1322Private Overloads Shared Function GetDiagnosticSpan(ifKeyword As SyntaxToken, condition As SyntaxNode, thenKeywordOpt As SyntaxToken) As TextSpan
1419Friend Overrides Function GetLambdaParameterDiagnosticSpan(lambda As SyntaxNode, ordinal As Integer) As TextSpan
1462Protected Overrides Function TryGetDisplayName(node As SyntaxNode, editKind As EditKind) As String
1466Protected Overloads Shared Function GetDisplayName(node As SyntaxNode, editKind As EditKind) As String
1476Protected Overrides Function GetBodyDisplayName(node As SyntaxNode, Optional editKind As EditKind = EditKind.Update) As String
1480Private Shared Function TryGetDisplayNameImpl(node As SyntaxNode, editKind As EditKind) As String
1709Private ReadOnly _match As Match(Of SyntaxNode)
1710Private ReadOnly _oldNode As SyntaxNode
1711Private ReadOnly _newNode As SyntaxNode
1717oldNode As SyntaxNode,
1718newNode As SyntaxNode,
1720Optional match As Match(Of SyntaxNode) = Nothing,
1780Private Sub ClassifyMove(newNode As SyntaxNode)
1803Private Sub ClassifyReorder(oldNode As SyntaxNode, newNode As SyntaxNode)
1826Private Sub ClassifyInsert(node As SyntaxNode)
1858Private Sub ClassifyDelete(oldNode As SyntaxNode)
1885Private Sub ClassifyUpdate(newNode As SyntaxNode)
1909match As Match(Of SyntaxNode),
1910edit As Edit(Of SyntaxNode),
1911editMap As Dictionary(Of SyntaxNode, EditKind))
1942Friend Overrides Function HasUnsupportedOperation(nodes As IEnumerable(Of SyntaxNode), <Out> ByRef unsupportedNode As SyntaxNode, <Out> ByRef rudeEdit As RudeEditKind) As Boolean
1985Friend Overrides Sub ReportInsertedMemberSymbolRudeEdits(diagnostics As RudeEditDiagnosticsBuilder, newSymbol As ISymbol, newNode As SyntaxNode, insertingIntoExistingContainingType As Boolean)
2060Protected Overrides Function GetExceptionHandlingAncestors(node As SyntaxNode, root As SyntaxNode, isNonLeaf As Boolean) As List(Of SyntaxNode)
2061Dim result = New List(Of SyntaxNode)()
2097exceptionHandlingEdits As IEnumerable(Of Edit(Of SyntaxNode)),
2098oldStatement As SyntaxNode,
2109Private Shared Function AreExceptionHandlingPartsEquivalent(oldNode As SyntaxNode, newNode As SyntaxNode) As Boolean
2131Protected Overrides Function GetExceptionHandlingRegion(node As SyntaxNode, <Out> ByRef coversAllChildren As Boolean) As TextSpan
2161Friend Overrides Function IsStateMachineMethod(declaration As SyntaxNode) As Boolean
2166Friend Shared Function GetStateMachineInfo(body As SyntaxNode) As StateMachineInfo
2177Friend Overrides Sub ReportStateMachineSuspensionPointRudeEdits(diagnosticContext As DiagnosticContext, oldNode As SyntaxNode, newNode As SyntaxNode)
2192Private Shared Function FindContainingStatementPart(node As SyntaxNode) As SyntaxNode
2218Private Shared Function HasNoSpilledState(awaitExpression As SyntaxNode, containingStatementPart As SyntaxNode) As Boolean
2263Private Shared Function GetExpressionFromStatementPart(statement As SyntaxNode) As ExpressionSyntax
2276Private Shared Function IsSimpleAwaitAssignment(node As SyntaxNode, awaitExpression As SyntaxNode) As Boolean
2289forwardMap As IReadOnlyDictionary(Of SyntaxNode, SyntaxNode),
2290oldActiveStatement As SyntaxNode,
2293newActiveStatement As SyntaxNode,
2307Private Shared Function FindOnErrorOrResumeStatement(newBody As DeclarationBody) As SyntaxNode
2327forwardMap As IReadOnlyDictionary(Of SyntaxNode, SyntaxNode),
2328oldActiveStatement As SyntaxNode,
2329oldEncompassingAncestor As SyntaxNode,
2331newActiveStatement As SyntaxNode,
2332newEncompassingAncestor As SyntaxNode,
2347getTypedNodes:=Function(n) OneOrMany.Create(Of SyntaxNode)(n.SyncLockStatement.Expression),
2354getTypedNodes:=Function(n) OneOrMany.Create(Of SyntaxNode)(n.WithStatement.Expression),
2361getTypedNodes:=Function(n) OneOrMany.Create(Of SyntaxNode)(n.UsingStatement.Expression),
2368getTypedNodes:=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)
375genericName.TypeArgumentList.Arguments.OfType(Of SyntaxNode)().ToList(),
376Enumerable.Repeat(Of SyntaxNode)(Nothing, state.SimpleName.Arity))
420Public 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))
462Private Shared Function GetDeclaringNamespace(containers As List(Of String), indexDone As Integer, localRoot As SyntaxNode) As NamespaceStatementSyntax
557Dim node As SyntaxNode = expression
589Private Shared Function IsAllContainingTypeBlocksPublic(node As SyntaxNode) As Boolean
614modifiedRoot As SyntaxNode,
625Dim root As SyntaxNode = Nothing
SignatureHelp\AbstractIntrinsicOperatorSignatureHelpProvider.vb (4)
12Friend MustInherit Class AbstractIntrinsicOperatorSignatureHelpProvider(Of TSyntaxNode As SyntaxNode)
19Private Function TryGetSyntaxNode(root As SyntaxNode, position As Integer, syntaxFacts As ISyntaxFactsService, triggerReason As SignatureHelpTriggerReason, cancellationToken As CancellationToken, ByRef node As TSyntaxNode) As Boolean
83Protected Overridable Function GetCurrentArgumentStateWorker(node As SyntaxNode, position As Integer) As SignatureHelpState
104Private Function GetCurrentArgumentState(root As SyntaxNode, position As Integer, syntaxFacts As ISyntaxFactsService, currentSpan As TextSpan, cancellationToken As CancellationToken) As SignatureHelpState
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\Analyzers\VisualBasic\Analyzers\OrderModifiers\VisualBasicOrderModifiersDiagnosticAnalyzer.vb (1)
31root As SyntaxNode)
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\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\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
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 (51)
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)
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 (801)
28/// possible. For example, generating <see cref="MemberAccessExpression(SyntaxNode, string)"/>
85public SyntaxNode? GetDeclaration(SyntaxNode? node)
103public SyntaxNode? GetDeclaration(SyntaxNode? node, DeclarationKind kind)
121public abstract SyntaxNode FieldDeclaration(
123SyntaxNode type,
126SyntaxNode? initializer = null);
131public SyntaxNode FieldDeclaration(IFieldSymbol field)
135var initializer = field.HasConstantValue ? this.LiteralExpression(field.ConstantValue, canUseFieldReference) : null;
142public SyntaxNode FieldDeclaration(IFieldSymbol field, SyntaxNode? initializer)
160public SyntaxNode MethodDeclaration(
162IEnumerable<SyntaxNode>? parameters = null,
164SyntaxNode? returnType = null,
167IEnumerable<SyntaxNode>? statements = null)
174private protected abstract SyntaxNode MethodDeclaration(
176IEnumerable<SyntaxNode>? parameters,
177IEnumerable<SyntaxNode>? typeParameters,
178SyntaxNode? returnType,
181IEnumerable<SyntaxNode>? statements);
186public SyntaxNode MethodDeclaration(IMethodSymbol method, IEnumerable<SyntaxNode>? statements = null)
189internal SyntaxNode MethodDeclaration(IMethodSymbol method, string name, IEnumerable<SyntaxNode>? statements = null)
191var decl = MethodDeclaration(
255public virtual SyntaxNode OperatorDeclaration(
257IEnumerable<SyntaxNode>? parameters = null,
258SyntaxNode? returnType = null,
261IEnumerable<SyntaxNode>? statements = null)
266private protected abstract SyntaxNode OperatorDeclaration(
269IEnumerable<SyntaxNode>? parameters = null,
270SyntaxNode? returnType = null,
273IEnumerable<SyntaxNode>? statements = null);
278public SyntaxNode OperatorDeclaration(IMethodSymbol method, IEnumerable<SyntaxNode>? statements = null)
283var decl = OperatorDeclaration(
299public SyntaxNode ParameterDeclaration(
301SyntaxNode? type = null,
302SyntaxNode? initializer = null,
309private protected abstract SyntaxNode ParameterDeclaration(
311SyntaxNode? type,
312SyntaxNode? initializer,
321public SyntaxNode ParameterDeclaration(IParameterSymbol symbol, SyntaxNode? initializer = null)
334private protected abstract SyntaxNode TypeParameter(ITypeParameterSymbol typeParameter);
335private protected abstract SyntaxNode TypeParameter(string name);
337private protected abstract SyntaxNode GenerateExpression(ITypeSymbol? type, object? value, bool canUseFieldReference);
352public abstract SyntaxNode PropertyDeclaration(
354SyntaxNode type,
357IEnumerable<SyntaxNode>? getAccessorStatements = null,
358IEnumerable<SyntaxNode>? setAccessorStatements = null);
363public SyntaxNode PropertyDeclaration(
365IEnumerable<SyntaxNode>? getAccessorStatements = null,
366IEnumerable<SyntaxNode>? setAccessorStatements = null)
372SyntaxNode? getAccessor = null;
373SyntaxNode? setAccessor = null;
390var propDecl = PropertyDeclaration(
407private protected abstract SyntaxNode PropertyDeclaration(
409SyntaxNode type,
410SyntaxNode? getAccessor,
411SyntaxNode? setAccessor,
415public SyntaxNode WithAccessorDeclarations(SyntaxNode declaration, params SyntaxNode[] accessorDeclarations)
416=> WithAccessorDeclarations(declaration, (IEnumerable<SyntaxNode>)accessorDeclarations);
418public abstract SyntaxNode WithAccessorDeclarations(SyntaxNode declaration, IEnumerable<SyntaxNode> accessorDeclarations);
420public abstract SyntaxNode GetAccessorDeclaration(
422IEnumerable<SyntaxNode>? statements = null);
424public SyntaxNode SetAccessorDeclaration(
426IEnumerable<SyntaxNode>? statements = null)
429private protected abstract SyntaxNode SetAccessorDeclaration(
430Accessibility accessibility, bool isInitOnly, IEnumerable<SyntaxNode>? statements);
435public abstract SyntaxNode IndexerDeclaration(
436IEnumerable<SyntaxNode> parameters,
437SyntaxNode type,
440IEnumerable<SyntaxNode>? getAccessorStatements = null,
441IEnumerable<SyntaxNode>? setAccessorStatements = null);
446public SyntaxNode IndexerDeclaration(
448IEnumerable<SyntaxNode>? getAccessorStatements = null,
449IEnumerable<SyntaxNode>? setAccessorStatements = null)
451var indexerDecl = IndexerDeclaration(
471public abstract SyntaxNode AddEventHandler(SyntaxNode @event, SyntaxNode handler);
476public abstract SyntaxNode RemoveEventHandler(SyntaxNode @event, SyntaxNode handler);
481public abstract SyntaxNode EventDeclaration(
483SyntaxNode type,
490public SyntaxNode EventDeclaration(IEventSymbol symbol)
492var ev = EventDeclaration(
510public abstract SyntaxNode CustomEventDeclaration(
512SyntaxNode type,
515IEnumerable<SyntaxNode>? parameters = null,
516IEnumerable<SyntaxNode>? addAccessorStatements = null,
517IEnumerable<SyntaxNode>? removeAccessorStatements = null);
522public SyntaxNode CustomEventDeclaration(
524IEnumerable<SyntaxNode>? addAccessorStatements = null,
525IEnumerable<SyntaxNode>? removeAccessorStatements = null)
543public abstract SyntaxNode ConstructorDeclaration(
545IEnumerable<SyntaxNode>? parameters = null,
548IEnumerable<SyntaxNode>? baseConstructorArguments = null,
549IEnumerable<SyntaxNode>? statements = null);
554public SyntaxNode ConstructorDeclaration(
556IEnumerable<SyntaxNode>? baseConstructorArguments = null,
557IEnumerable<SyntaxNode>? statements = null)
568private protected abstract SyntaxNode DestructorDeclaration(IMethodSymbol destructorMethod);
574public SyntaxNode? AsPublicInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceType)
581public abstract SyntaxNode? AsPublicInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceType, string? interfaceMemberName);
587public SyntaxNode? AsPrivateInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceType)
594public abstract SyntaxNode? AsPrivateInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceType, string? interfaceMemberName);
599public SyntaxNode ClassDeclaration(
604SyntaxNode? baseType = null,
605IEnumerable<SyntaxNode>? interfaceTypes = null,
606IEnumerable<SyntaxNode>? members = null)
612private protected abstract SyntaxNode ClassDeclaration(
615IEnumerable<SyntaxNode>? typeParameters,
618SyntaxNode? baseType,
619IEnumerable<SyntaxNode>? interfaceTypes,
620IEnumerable<SyntaxNode>? members);
625public SyntaxNode StructDeclaration(
630IEnumerable<SyntaxNode>? interfaceTypes = null,
631IEnumerable<SyntaxNode>? members = null)
637private protected abstract SyntaxNode StructDeclaration(
640IEnumerable<SyntaxNode>? typeParameters,
643IEnumerable<SyntaxNode>? interfaceTypes,
644IEnumerable<SyntaxNode>? members);
649public SyntaxNode InterfaceDeclaration(
653IEnumerable<SyntaxNode>? interfaceTypes = null,
654IEnumerable<SyntaxNode>? members = null)
660private protected abstract SyntaxNode InterfaceDeclaration(
662IEnumerable<SyntaxNode>? typeParameters,
664IEnumerable<SyntaxNode>? interfaceTypes,
665IEnumerable<SyntaxNode>? members);
670public abstract SyntaxNode EnumDeclaration(
674IEnumerable<SyntaxNode>? members = null);
679internal abstract SyntaxNode EnumDeclaration(
681SyntaxNode? underlyingType,
684IEnumerable<SyntaxNode>? members = null);
689public abstract SyntaxNode EnumMember(string name, SyntaxNode? expression = null);
694public SyntaxNode DelegateDeclaration(
696IEnumerable<SyntaxNode>? parameters = null,
698SyntaxNode? returnType = null,
706private protected abstract SyntaxNode DelegateDeclaration(
708IEnumerable<SyntaxNode>? parameters,
709IEnumerable<SyntaxNode>? typeParameters,
710SyntaxNode? returnType,
717public SyntaxNode Declaration(ISymbol symbol)
758var declaration = type.TypeKind switch
860private SyntaxNode WithTypeParametersAndConstraints(SyntaxNode declaration, ImmutableArray<ITypeParameterSymbol> typeParameters)
886internal abstract SyntaxNode WithExplicitInterfaceImplementations(
887SyntaxNode declaration, ImmutableArray<ISymbol> explicitInterfaceImplementations, bool removeDefaults = true);
892public SyntaxNode WithTypeParameters(SyntaxNode declaration, IEnumerable<string> typeParameters)
895private protected abstract SyntaxNode WithTypeParameters(SyntaxNode declaration, IEnumerable<SyntaxNode> typeParameters);
900public SyntaxNode WithTypeParameters(SyntaxNode declaration, params string[] typeParameters)
907public SyntaxNode WithTypeConstraint(SyntaxNode declaration, string typeParameterName, SpecialTypeConstraintKind kinds, IEnumerable<SyntaxNode>? types = null)
911private protected abstract SyntaxNode WithTypeConstraint(
912SyntaxNode declaration, string typeParameterName, SpecialTypeConstraintKind kinds, bool isUnamangedType, IEnumerable<SyntaxNode>? types);
914private protected abstract SyntaxNode WithDefaultConstraint(SyntaxNode declaration, string typeParameterName);
919public SyntaxNode WithTypeConstraint(SyntaxNode declaration, string typeParameterName, SpecialTypeConstraintKind kinds, params SyntaxNode[] types)
920=> WithTypeConstraint(declaration, typeParameterName, kinds, (IEnumerable<SyntaxNode>)types);
925public SyntaxNode WithTypeConstraint(SyntaxNode declaration, string typeParameterName, params SyntaxNode[] types)
926=> WithTypeConstraint(declaration, typeParameterName, SpecialTypeConstraintKind.None, (IEnumerable<SyntaxNode>)types);
933public abstract SyntaxNode NamespaceDeclaration(SyntaxNode name, IEnumerable<SyntaxNode> declarations);
940public SyntaxNode NamespaceDeclaration(SyntaxNode name, params SyntaxNode[] declarations)
941=> NamespaceDeclaration(name, (IEnumerable<SyntaxNode>)declarations);
948public SyntaxNode NamespaceDeclaration(string name, IEnumerable<SyntaxNode> declarations)
956public SyntaxNode NamespaceDeclaration(string name, params SyntaxNode[] declarations)
957=> NamespaceDeclaration(DottedName(name), (IEnumerable<SyntaxNode>)declarations);
963public abstract SyntaxNode CompilationUnit(IEnumerable<SyntaxNode> declarations);
969public SyntaxNode CompilationUnit(params SyntaxNode[] declarations)
970=> CompilationUnit((IEnumerable<SyntaxNode>)declarations);
976public abstract SyntaxNode NamespaceImportDeclaration(SyntaxNode name);
982public SyntaxNode NamespaceImportDeclaration(string name)
990public SyntaxNode AliasImportDeclaration(string aliasIdentifierName, INamespaceOrTypeSymbol symbol)
998public abstract SyntaxNode AliasImportDeclaration(string aliasIdentifierName, SyntaxNode name);
1003public abstract SyntaxNode Attribute(SyntaxNode name, IEnumerable<SyntaxNode>? attributeArguments = null);
1008public SyntaxNode Attribute(string name, IEnumerable<SyntaxNode>? attributeArguments = null)
1014public SyntaxNode Attribute(string name, params SyntaxNode[] attributeArguments)
1015=> Attribute(name, (IEnumerable<SyntaxNode>)attributeArguments);
1020public SyntaxNode Attribute(AttributeData attribute)
1036public abstract SyntaxNode AttributeArgument(string? name, SyntaxNode expression);
1041public SyntaxNode AttributeArgument(SyntaxNode expression)
1047public SyntaxNode RemoveAllAttributes(SyntaxNode declaration)
1054internal abstract SyntaxNode RemoveAllComments(SyntaxNode node);
1056internal SyntaxNode RemovePrimaryConstructor(SyntaxNode declaration)
1058var node = GetPrimaryConstructorParameterList(declaration);
1062internal abstract SyntaxNode? GetPrimaryConstructorParameterList(SyntaxNode declaration);
1064internal SyntaxNode RemoveLeadingAndTrailingComments(SyntaxNode node)
1080internal SyntaxNode RemoveAllTypeInheritance(SyntaxNode declaration)
1083internal abstract ImmutableArray<SyntaxNode> GetTypeInheritance(SyntaxNode declaration);
1088public abstract IReadOnlyList<SyntaxNode> GetAttributes(SyntaxNode declaration);
1093public abstract SyntaxNode InsertAttributes(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes);
1098public SyntaxNode InsertAttributes(SyntaxNode declaration, int index, params SyntaxNode[] attributes)
1099=> this.InsertAttributes(declaration, index, (IEnumerable<SyntaxNode>)attributes);
1104public SyntaxNode AddAttributes(SyntaxNode declaration, IEnumerable<SyntaxNode> attributes)
1110public SyntaxNode AddAttributes(SyntaxNode declaration, params SyntaxNode[] attributes)
1111=> AddAttributes(declaration, (IEnumerable<SyntaxNode>)attributes);
1116public abstract IReadOnlyList<SyntaxNode> GetReturnAttributes(SyntaxNode declaration);
1121public abstract SyntaxNode InsertReturnAttributes(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes);
1126public SyntaxNode InsertReturnAttributes(SyntaxNode declaration, int index, params SyntaxNode[] attributes)
1127=> this.InsertReturnAttributes(declaration, index, (IEnumerable<SyntaxNode>)attributes);
1132public SyntaxNode AddReturnAttributes(SyntaxNode declaration, IEnumerable<SyntaxNode> attributes)
1138public SyntaxNode AddReturnAttributes(SyntaxNode declaration, params SyntaxNode[] attributes)
1139=> AddReturnAttributes(declaration, (IEnumerable<SyntaxNode>)attributes);
1144public abstract IReadOnlyList<SyntaxNode> GetAttributeArguments(SyntaxNode attributeDeclaration);
1149public abstract SyntaxNode InsertAttributeArguments(SyntaxNode attributeDeclaration, int index, IEnumerable<SyntaxNode> attributeArguments);
1154public SyntaxNode AddAttributeArguments(SyntaxNode attributeDeclaration, IEnumerable<SyntaxNode> attributeArguments)
1160public abstract IReadOnlyList<SyntaxNode> GetNamespaceImports(SyntaxNode declaration);
1165public abstract SyntaxNode InsertNamespaceImports(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> imports);
1170public SyntaxNode InsertNamespaceImports(SyntaxNode declaration, int index, params SyntaxNode[] imports)
1171=> this.InsertNamespaceImports(declaration, index, (IEnumerable<SyntaxNode>)imports);
1176public SyntaxNode AddNamespaceImports(SyntaxNode declaration, IEnumerable<SyntaxNode> imports)
1182public SyntaxNode AddNamespaceImports(SyntaxNode declaration, params SyntaxNode[] imports)
1183=> this.AddNamespaceImports(declaration, (IEnumerable<SyntaxNode>)imports);
1188public abstract IReadOnlyList<SyntaxNode> GetMembers(SyntaxNode declaration);
1193public abstract SyntaxNode InsertMembers(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> members);
1198public SyntaxNode InsertMembers(SyntaxNode declaration, int index, params SyntaxNode[] members)
1199=> this.InsertMembers(declaration, index, (IEnumerable<SyntaxNode>)members);
1204public SyntaxNode AddMembers(SyntaxNode declaration, IEnumerable<SyntaxNode> members)
1210public SyntaxNode AddMembers(SyntaxNode declaration, params SyntaxNode[] members)
1211=> this.AddMembers(declaration, (IEnumerable<SyntaxNode>)members);
1216public abstract Accessibility GetAccessibility(SyntaxNode declaration);
1221public abstract SyntaxNode WithAccessibility(SyntaxNode declaration, Accessibility accessibility);
1226public abstract DeclarationModifiers GetModifiers(SyntaxNode declaration);
1231public SyntaxNode WithModifiers(SyntaxNode declaration, DeclarationModifiers modifiers)
1232=> WithModifiers<SyntaxNode>(declaration, modifiers);
1235where TSyntaxNode : SyntaxNode;
1240public abstract DeclarationKind GetDeclarationKind(SyntaxNode declaration);
1245public abstract string GetName(SyntaxNode declaration);
1250public abstract SyntaxNode WithName(SyntaxNode declaration, string name);
1255public abstract SyntaxNode? GetType(SyntaxNode declaration);
1260public abstract SyntaxNode WithType(SyntaxNode declaration, SyntaxNode type);
1265public abstract IReadOnlyList<SyntaxNode> GetParameters(SyntaxNode declaration);
1267internal abstract SyntaxNode? GetParameterListNode(SyntaxNode declaration);
1272public abstract SyntaxNode InsertParameters(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> parameters);
1277public SyntaxNode AddParameters(SyntaxNode declaration, IEnumerable<SyntaxNode> parameters)
1283public abstract IReadOnlyList<SyntaxNode> GetSwitchSections(SyntaxNode switchStatement);
1288public abstract SyntaxNode InsertSwitchSections(SyntaxNode switchStatement, int index, IEnumerable<SyntaxNode> switchSections);
1293public SyntaxNode AddSwitchSections(SyntaxNode switchStatement, IEnumerable<SyntaxNode> switchSections)
1299public abstract SyntaxNode? GetExpression(SyntaxNode declaration);
1304public abstract SyntaxNode WithExpression(SyntaxNode declaration, SyntaxNode expression);
1309public abstract IReadOnlyList<SyntaxNode> GetStatements(SyntaxNode declaration);
1314public abstract SyntaxNode WithStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements);
1319public abstract IReadOnlyList<SyntaxNode> GetAccessors(SyntaxNode declaration);
1324public SyntaxNode? GetAccessor(SyntaxNode declaration, DeclarationKind kind)
1330public abstract SyntaxNode InsertAccessors(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> accessors);
1335public SyntaxNode AddAccessors(SyntaxNode declaration, IEnumerable<SyntaxNode> accessors)
1341public abstract IReadOnlyList<SyntaxNode> GetGetAccessorStatements(SyntaxNode declaration);
1346public abstract SyntaxNode WithGetAccessorStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements);
1351public abstract IReadOnlyList<SyntaxNode> GetSetAccessorStatements(SyntaxNode declaration);
1356public abstract SyntaxNode WithSetAccessorStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements);
1361public abstract IReadOnlyList<SyntaxNode> GetBaseAndInterfaceTypes(SyntaxNode declaration);
1366public abstract SyntaxNode AddBaseType(SyntaxNode declaration, SyntaxNode baseType);
1371public abstract SyntaxNode AddInterfaceType(SyntaxNode declaration, SyntaxNode interfaceType);
1373internal abstract SyntaxNode AsInterfaceMember(SyntaxNode member);
1382public virtual SyntaxNode ReplaceNode(SyntaxNode root, SyntaxNode node, SyntaxNode? newDeclaration)
1385internal static SyntaxNode ReplaceNode(SyntaxNode root, SyntaxNode node, IEnumerable<SyntaxNode> newDeclarations)
1394public virtual SyntaxNode InsertNodesBefore(SyntaxNode root, SyntaxNode node, IEnumerable<SyntaxNode> newDeclarations)
1400public virtual SyntaxNode InsertNodesAfter(SyntaxNode root, SyntaxNode node, IEnumerable<SyntaxNode> newDeclarations)
1406public virtual SyntaxNode RemoveNode(SyntaxNode root, SyntaxNode node)
1412public virtual SyntaxNode RemoveNode(SyntaxNode root, SyntaxNode node, SyntaxRemoveOptions options)
1418public SyntaxNode RemoveNodes(SyntaxNode root, IEnumerable<SyntaxNode> declarations)
1420var newRoot = root.TrackNodes(declarations);
1422foreach (var declaration in declarations)
1424var newDeclaration = newRoot.GetCurrentNode(declaration);
1440internal abstract SeparatedSyntaxList<TElement> SeparatedList<TElement>(SyntaxNodeOrTokenList list) where TElement : SyntaxNode;
1442internal abstract SeparatedSyntaxList<TElement> SeparatedList<TElement>(IEnumerable<TElement> nodes, IEnumerable<SyntaxToken> separators) where TElement : SyntaxNode;
1467protected static SyntaxNode? PreserveTrivia<TNode>(TNode? node, Func<TNode, SyntaxNode> nodeChanger) where TNode : SyntaxNode
1476var changedNode = nodeChanger(nodeWithoutTrivia);
1487protected static SyntaxNode ReplaceWithTrivia(SyntaxNode root, SyntaxNode original, SyntaxNode replacement)
1489var combinedTriviaReplacement =
1496protected static SyntaxNode ReplaceWithTrivia<TNode>(SyntaxNode root, TNode original, Func<TNode, SyntaxNode> replacer)
1497where TNode : SyntaxNode
1502protected static SyntaxNode ReplaceWithTrivia(SyntaxNode root, SyntaxToken original, SyntaxToken replacement)
1515public abstract TNode ClearTrivia<TNode>([MaybeNull] TNode node) where TNode : SyntaxNode;
1532protected static SyntaxNode ReplaceRange(SyntaxNode root, SyntaxNode node, IEnumerable<SyntaxNode> replacements)
1534var first = replacements.First();
1535var trackedFirst = first.TrackNodes(first);
1536var newRoot = root.ReplaceNode(node, trackedFirst);
1537var currentFirst = newRoot.GetCurrentNode(first);
1544where TNode : SyntaxNode
1555where TNode : SyntaxNode
1573public abstract SyntaxNode ExpressionStatement(SyntaxNode expression);
1579public abstract SyntaxNode ReturnStatement(SyntaxNode? expression = null);
1585internal SyntaxNode YieldReturnStatement(SyntaxNode expression)
1592public abstract SyntaxNode ThrowStatement(SyntaxNode? expression = null);
1597public abstract SyntaxNode ThrowExpression(SyntaxNode expression);
1608/// <see cref="LocalDeclarationStatement(ITypeSymbol, string, SyntaxNode, bool)"/>.
1616public abstract SyntaxNode LocalDeclarationStatement(
1617SyntaxNode? type, string identifier, SyntaxNode? initializer = null, bool isConst = false);
1619internal SyntaxNode LocalDeclarationStatement(SyntaxNode? type, SyntaxToken identifier, SyntaxNode? initializer = null, bool isConst = false)
1622internal SyntaxNode WithInitializer(SyntaxNode variableDeclarator, SyntaxNode initializer)
1625internal SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value)
1631public SyntaxNode LocalDeclarationStatement(ITypeSymbol type, string name, SyntaxNode? initializer = null, bool isConst = false)
1637public SyntaxNode LocalDeclarationStatement(string name, SyntaxNode initializer)
1638=> LocalDeclarationStatement(type: (SyntaxNode?)null, name, initializer);
1643internal SyntaxNode LocalDeclarationStatement(SyntaxToken name, SyntaxNode initializer)
1652public abstract SyntaxNode IfStatement(
1653SyntaxNode condition, IEnumerable<SyntaxNode> trueStatements, IEnumerable<SyntaxNode>? falseStatements = null);
1661public SyntaxNode IfStatement(SyntaxNode condition, IEnumerable<SyntaxNode> trueStatements, SyntaxNode falseStatement)
1667public abstract SyntaxNode SwitchStatement(SyntaxNode expression, IEnumerable<SyntaxNode> sections);
1672public SyntaxNode SwitchStatement(SyntaxNode expression, params SyntaxNode[] sections)
1673=> SwitchStatement(expression, (IEnumerable<SyntaxNode>)sections);
1678public abstract SyntaxNode SwitchSection(IEnumerable<SyntaxNode> caseExpressions, IEnumerable<SyntaxNode> statements);
1680internal abstract SyntaxNode SwitchSectionFromLabels(IEnumerable<SyntaxNode> labels, IEnumerable<SyntaxNode> statements);
1685public SyntaxNode SwitchSection(SyntaxNode caseExpression, IEnumerable<SyntaxNode> statements)
1691public abstract SyntaxNode DefaultSwitchSection(IEnumerable<SyntaxNode> statements);
1696public abstract SyntaxNode ExitSwitchStatement();
1701public abstract SyntaxNode UsingStatement(SyntaxNode? type, string name, SyntaxNode expression, IEnumerable<SyntaxNode> statements);
1706public SyntaxNode UsingStatement(string name, SyntaxNode expression, IEnumerable<SyntaxNode> statements)
1712public abstract SyntaxNode UsingStatement(SyntaxNode expression, IEnumerable<SyntaxNode> statements);
1717public abstract SyntaxNode LockStatement(SyntaxNode expression, IEnumerable<SyntaxNode> statements);
1722public abstract SyntaxNode TryCatchStatement(IEnumerable<SyntaxNode> tryStatements, IEnumerable<SyntaxNode>? catchClauses, IEnumerable<SyntaxNode>? finallyStatements = null);
1727public SyntaxNode TryCatchStatement(IEnumerable<SyntaxNode> tryStatements, params SyntaxNode[] catchClauses)
1728=> TryCatchStatement(tryStatements, (IEnumerable<SyntaxNode>?)catchClauses);
1733public SyntaxNode TryFinallyStatement(IEnumerable<SyntaxNode> tryStatements, IEnumerable<SyntaxNode> finallyStatements)
1739public abstract SyntaxNode CatchClause(SyntaxNode type, string identifier, IEnumerable<SyntaxNode> statements);
1744public SyntaxNode CatchClause(ITypeSymbol type, string identifier, IEnumerable<SyntaxNode> statements)
1750public abstract SyntaxNode WhileStatement(SyntaxNode condition, IEnumerable<SyntaxNode> statements);
1755internal abstract SyntaxNode ScopeBlock(IEnumerable<SyntaxNode> statements);
1757internal abstract SyntaxNode GlobalStatement(SyntaxNode statement);
1767internal SyntaxNode InterpolatedStringText(SyntaxToken textToken)
1769internal SyntaxNode Interpolation(SyntaxNode syntaxNode)
1771internal SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken)
1773internal SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment)
1775internal SyntaxNode InterpolationFormatClause(string format)
1782public SyntaxNode DefaultExpression(SyntaxNode type)
1785public SyntaxNode DefaultExpression(ITypeSymbol type)
1791public abstract SyntaxNode ThisExpression();
1796public abstract SyntaxNode BaseExpression();
1801public SyntaxNode LiteralExpression(object? value)
1807private SyntaxNode LiteralExpression(object? value, bool canUseFieldReference)
1813public abstract SyntaxNode TypedConstantExpression(TypedConstant value);
1818public SyntaxNode FalseLiteralExpression()
1824public SyntaxNode TrueLiteralExpression()
1830public SyntaxNode NullLiteralExpression()
1837public SyntaxNode IdentifierName(string identifier)
1840internal abstract SyntaxNode IdentifierName(SyntaxToken identifier);
1842internal abstract SyntaxNode NamedAnonymousObjectMemberDeclarator(SyntaxNode identifier, SyntaxNode expression);
1847public abstract SyntaxNode GenericName(string identifier, IEnumerable<SyntaxNode> typeArguments);
1849internal abstract SyntaxNode GenericName(SyntaxToken identifier, IEnumerable<SyntaxNode> typeArguments);
1854public SyntaxNode GenericName(string identifier, IEnumerable<ITypeSymbol> typeArguments)
1860public SyntaxNode GenericName(string identifier, params SyntaxNode[] typeArguments)
1861=> GenericName(identifier, (IEnumerable<SyntaxNode>)typeArguments);
1866public SyntaxNode GenericName(string identifier, params ITypeSymbol[] typeArguments)
1873public abstract SyntaxNode WithTypeArguments(SyntaxNode expression, IEnumerable<SyntaxNode> typeArguments);
1879public SyntaxNode WithTypeArguments(SyntaxNode expression, params SyntaxNode[] typeArguments)
1880=> WithTypeArguments(expression, (IEnumerable<SyntaxNode>)typeArguments);
1887public abstract SyntaxNode QualifiedName(SyntaxNode left, SyntaxNode right);
1892internal abstract SyntaxNode GlobalAliasedName(SyntaxNode name);
1897public SyntaxNode DottedName(string dottedName)
1907SyntaxNode? name = null;
1930public abstract SyntaxNode NameExpression(INamespaceOrTypeSymbol namespaceOrTypeSymbol);
1935public SyntaxNode TypeExpression(ITypeSymbol typeSymbol)
1943public SyntaxNode TypeExpression(ITypeSymbol typeSymbol, bool addImport)
1945var expression = TypeExpression(typeSymbol);
1954public abstract SyntaxNode TypeExpression(SpecialType specialType);
1959public abstract SyntaxNode ArrayTypeExpression(SyntaxNode type);
1964public abstract SyntaxNode NullableTypeExpression(SyntaxNode type);
1969public SyntaxNode TupleTypeExpression(IEnumerable<SyntaxNode> elements)
1984internal abstract SyntaxNode CreateTupleType(IEnumerable<SyntaxNode> elements);
1989public SyntaxNode TupleTypeExpression(params SyntaxNode[] elements)
1990=> TupleTypeExpression((IEnumerable<SyntaxNode>)elements);
1995public SyntaxNode TupleTypeExpression(IEnumerable<ITypeSymbol> elementTypes, IEnumerable<string>? elementNames = null)
2019public abstract SyntaxNode TupleElementExpression(SyntaxNode type, string? name = null);
2024public SyntaxNode TupleElementExpression(ITypeSymbol type, string? name = null)
2031public abstract SyntaxNode AssignmentStatement(SyntaxNode left, SyntaxNode right);
2036public abstract SyntaxNode ValueEqualsExpression(SyntaxNode left, SyntaxNode right);
2041public abstract SyntaxNode ReferenceEqualsExpression(SyntaxNode left, SyntaxNode right);
2046public abstract SyntaxNode ValueNotEqualsExpression(SyntaxNode left, SyntaxNode right);
2051public abstract SyntaxNode ReferenceNotEqualsExpression(SyntaxNode left, SyntaxNode right);
2056public abstract SyntaxNode LessThanExpression(SyntaxNode left, SyntaxNode right);
2061public abstract SyntaxNode LessThanOrEqualExpression(SyntaxNode left, SyntaxNode right);
2066public abstract SyntaxNode GreaterThanExpression(SyntaxNode left, SyntaxNode right);
2071public abstract SyntaxNode GreaterThanOrEqualExpression(SyntaxNode left, SyntaxNode right);
2076public abstract SyntaxNode NegateExpression(SyntaxNode expression);
2081public abstract SyntaxNode AddExpression(SyntaxNode left, SyntaxNode right);
2086public abstract SyntaxNode SubtractExpression(SyntaxNode left, SyntaxNode right);
2091public abstract SyntaxNode MultiplyExpression(SyntaxNode left, SyntaxNode right);
2096public abstract SyntaxNode DivideExpression(SyntaxNode left, SyntaxNode right);
2101public abstract SyntaxNode ModuloExpression(SyntaxNode left, SyntaxNode right);
2106public abstract SyntaxNode BitwiseAndExpression(SyntaxNode left, SyntaxNode right);
2111public SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right)
2117public abstract SyntaxNode BitwiseNotExpression(SyntaxNode operand);
2122public abstract SyntaxNode LogicalAndExpression(SyntaxNode left, SyntaxNode right);
2127public abstract SyntaxNode LogicalOrExpression(SyntaxNode left, SyntaxNode right);
2132public abstract SyntaxNode LogicalNotExpression(SyntaxNode expression);
2137public abstract SyntaxNode ConditionalExpression(SyntaxNode condition, SyntaxNode whenTrue, SyntaxNode whenFalse);
2142/// cref="ElementBindingExpression(IEnumerable{SyntaxNode})"/> to generate the <paramref
2145public abstract SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull);
2150public abstract SyntaxNode MemberBindingExpression(SyntaxNode name);
2155public abstract SyntaxNode ElementBindingExpression(IEnumerable<SyntaxNode> arguments);
2160public SyntaxNode ElementBindingExpression(params SyntaxNode[] arguments)
2161=> ElementBindingExpression((IEnumerable<SyntaxNode>)arguments);
2166public abstract SyntaxNode CoalesceExpression(SyntaxNode left, SyntaxNode right);
2171public SyntaxNode MemberAccessExpression(SyntaxNode? expression, SyntaxNode memberName)
2174internal SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode memberName)
2177internal SyntaxNode RefExpression(SyntaxNode expression)
2183public SyntaxNode MemberAccessExpression(SyntaxNode? expression, string memberName)
2189public abstract SyntaxNode ArrayCreationExpression(SyntaxNode elementType, SyntaxNode size);
2194public abstract SyntaxNode ArrayCreationExpression(SyntaxNode elementType, IEnumerable<SyntaxNode> elements);
2199public abstract SyntaxNode ObjectCreationExpression(SyntaxNode namedType, IEnumerable<SyntaxNode> arguments);
2201internal abstract SyntaxNode ObjectCreationExpression(
2202SyntaxNode namedType, SyntaxToken openParen, SeparatedSyntaxList<SyntaxNode> arguments, SyntaxToken closeParen);
2207public SyntaxNode ObjectCreationExpression(ITypeSymbol type, IEnumerable<SyntaxNode> arguments)
2213public SyntaxNode ObjectCreationExpression(SyntaxNode type, params SyntaxNode[] arguments)
2214=> ObjectCreationExpression(type, (IEnumerable<SyntaxNode>)arguments);
2219public SyntaxNode ObjectCreationExpression(ITypeSymbol type, params SyntaxNode[] arguments)
2220=> ObjectCreationExpression(type, (IEnumerable<SyntaxNode>)arguments);
2225public abstract SyntaxNode InvocationExpression(SyntaxNode expression, IEnumerable<SyntaxNode> arguments);
2230public SyntaxNode InvocationExpression(SyntaxNode expression, params SyntaxNode[] arguments)
2231=> InvocationExpression(expression, (IEnumerable<SyntaxNode>)arguments);
2236public abstract SyntaxNode Argument(string? name, RefKind refKind, SyntaxNode expression);
2241public SyntaxNode Argument(RefKind refKind, SyntaxNode expression)
2247public SyntaxNode Argument(SyntaxNode expression)
2253public abstract SyntaxNode ElementAccessExpression(SyntaxNode expression, IEnumerable<SyntaxNode> arguments);
2258public SyntaxNode ElementAccessExpression(SyntaxNode expression, params SyntaxNode[] arguments)
2259=> ElementAccessExpression(expression, (IEnumerable<SyntaxNode>)arguments);
2264public abstract SyntaxNode TypeOfExpression(SyntaxNode type);
2269public abstract SyntaxNode IsTypeExpression(SyntaxNode expression, SyntaxNode type);
2274public SyntaxNode IsTypeExpression(SyntaxNode expression, ITypeSymbol type)
2280public abstract SyntaxNode TryCastExpression(SyntaxNode expression, SyntaxNode type);
2285public SyntaxNode TryCastExpression(SyntaxNode expression, ITypeSymbol type)
2291public SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression)
2297public SyntaxNode CastExpression(ITypeSymbol type, SyntaxNode expression)
2303public SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression)
2309public SyntaxNode ConvertExpression(ITypeSymbol type, SyntaxNode expression)
2315public abstract SyntaxNode ValueReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, SyntaxNode expression);
2320public abstract SyntaxNode VoidReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, SyntaxNode expression);
2325public abstract SyntaxNode ValueReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, IEnumerable<SyntaxNode> statements);
2330public abstract SyntaxNode VoidReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, IEnumerable<SyntaxNode> statements);
2335public SyntaxNode ValueReturningLambdaExpression(string parameterName, SyntaxNode expression)
2341public SyntaxNode VoidReturningLambdaExpression(string parameterName, SyntaxNode expression)
2347public SyntaxNode ValueReturningLambdaExpression(string parameterName, IEnumerable<SyntaxNode> statements)
2353public SyntaxNode VoidReturningLambdaExpression(string parameterName, IEnumerable<SyntaxNode> statements)
2359public SyntaxNode ValueReturningLambdaExpression(SyntaxNode expression)
2360=> ValueReturningLambdaExpression((IEnumerable<SyntaxNode>?)null, expression);
2365public SyntaxNode VoidReturningLambdaExpression(SyntaxNode expression)
2366=> VoidReturningLambdaExpression((IEnumerable<SyntaxNode>?)null, expression);
2371public SyntaxNode ValueReturningLambdaExpression(IEnumerable<SyntaxNode> statements)
2372=> ValueReturningLambdaExpression((IEnumerable<SyntaxNode>?)null, statements);
2377public SyntaxNode VoidReturningLambdaExpression(IEnumerable<SyntaxNode> statements)
2378=> VoidReturningLambdaExpression((IEnumerable<SyntaxNode>?)null, statements);
2383public abstract SyntaxNode LambdaParameter(string identifier, SyntaxNode? type = null);
2388public SyntaxNode LambdaParameter(string identifier, ITypeSymbol type)
2394public abstract SyntaxNode AwaitExpression(SyntaxNode expression);
2399internal SyntaxNode AddParentheses(SyntaxNode expression, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
2405public abstract SyntaxNode NameOfExpression(SyntaxNode expression);
2410public abstract SyntaxNode TupleExpression(IEnumerable<SyntaxNode> arguments);
2415internal abstract SyntaxNode ParseExpression(string stringToParse);
2417internal abstract SyntaxTrivia Trivia(SyntaxNode node);
2419internal abstract SyntaxNode DocumentationCommentTrivia(IEnumerable<SyntaxNode> nodes, SyntaxTriviaList trailingTrivia, string endOfLineString);
2421internal abstract SyntaxNode? DocumentationCommentTriviaWithUpdatedContent(SyntaxTrivia trivia, IEnumerable<SyntaxNode> content);
FindSymbols\FindReferences\Finders\AbstractReferenceFinder.cs (15)
54ISymbol searchSymbol, FindReferencesDocumentState state, SyntaxNode node, CancellationToken cancellationToken)
218SyntaxNode node,
227var directive = node.GetRequiredParent();
371SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData);
403SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData)
442SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData)
485SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData)
523SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData)
554SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData)
598SyntaxNode node,
606var topNameNode = node;
626else if (node.FirstAncestorOrSelf<SyntaxNode, ISyntaxFactsService>((node, syntaxFacts) => syntaxFacts.IsUsingOrExternOrImport(node), syntaxFacts) != null)
733private static bool IsNodeOrAnyAncestorLeftSideOfDot(SyntaxNode node, ISyntaxFactsService syntaxFacts)
751SyntaxNode node, FindReferencesDocumentState state)
768void TryAddAdditionalProperty(SyntaxNode? node, string key)
FindSymbols\FindReferences\Finders\PropertySymbolReferenceFinder.cs (12)
89var constructorSyntax = constructor.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
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)
305private static (bool matched, CandidateReason reason, SyntaxNode indexerReference) ComputeImplicitElementAccessInformation(
306IPropertySymbol symbol, SyntaxNode node, FindReferencesDocumentState state, CancellationToken cancellationToken)
FindSymbols\SyntaxTree\SyntaxTreeIndex_Create.cs (17)
40ProjectState project, SyntaxNode root, Checksum checksum, CancellationToken _)
89var node = current.AsNode();
218bool IsPartialClass(SyntaxNode node)
234private static bool IsGlobalSuppressMessageAttribute(ISyntaxFactsService syntaxFacts, SyntaxNode node)
239var name = syntaxFacts.GetNameOfAttribute(node);
242syntaxFacts.GetPartsOfQualifiedName(name, out _, out _, out var right);
260SyntaxNode node)
277foreach (var attributeList in attributeLists)
279foreach (var attribute in syntaxFacts.GetAttributesOfAttributeList(attributeList))
281syntaxFacts.GetPartsOfAttribute(attribute, out var attributeName, out var argumentList);
289var versionArg = syntaxFacts.GetExpressionOfAttributeArgument(arguments[0]);
290var dataArg = syntaxFacts.GetExpressionOfAttributeArgument(arguments[1]);
305syntaxFacts.GetPartsOfQualifiedName(attributeName, out _, out _, out var right);
329SyntaxNode node)
334syntaxFacts.GetPartsOfUsingAliasDirective(node, out var globalToken, out var alias, out var usingTarget);
339syntaxFacts.GetPartsOfQualifiedName(usingTarget, out _, out _, out var right);
Formatting\Formatter.cs (35)
94var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
115var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
132var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
151public static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
154internal static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken)
157private static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
177internal static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
188public static SyntaxNode Format(SyntaxNode node, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
191internal static SyntaxNode Format(SyntaxNode node, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken)
203public static SyntaxNode Format(SyntaxNode node, TextSpan span, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
206internal static SyntaxNode Format(SyntaxNode node, TextSpan span, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken)
218public static SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
221private static SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
227internal static SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
230private static IFormattingResult? GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
254internal static IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
268public static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
271internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken)
283public static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, TextSpan span, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
286internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, TextSpan span, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken = default)
298public static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
301internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken = default)
304private static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
312internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken = default)
LanguageServices\DeclaredSymbolFactoryService\AbstractDeclaredSymbolInfoFactoryService.cs (10)
25where TCompilationUnitSyntax : SyntaxNode
26where TUsingDirectiveSyntax : SyntaxNode
31where TMemberDeclarationSyntax : SyntaxNode
32where TNameSyntax : SyntaxNode
68SyntaxNode container, TTypeDeclarationSyntax typeDeclaration, StringTable stringTable, string containerDisplayName, string fullyQualifiedContainerName);
70SyntaxNode container, TEnumDeclarationSyntax enumDeclaration, StringTable stringTable, string containerDisplayName, string fullyQualifiedContainerName);
72SyntaxNode container, TMemberDeclarationSyntax memberDeclaration, StringTable stringTable, ArrayBuilder<DeclaredSymbolInfo> declaredSymbolInfos, string containerDisplayName, string fullyQualifiedContainerName);
76SyntaxNode container, TMemberDeclarationSyntax memberDeclaration, StringTable stringTable, ArrayBuilder<DeclaredSymbolInfo> declaredSymbolInfos, string containerDisplayName, string fullyQualifiedContainerName, CancellationToken cancellationToken);
154SyntaxNode root,
175SyntaxNode container,
SemanticModelReuse\AbstractSemanticModelReuseLanguageService.cs (20)
19where TMemberDeclarationSyntax : SyntaxNode
21where TAccessorDeclarationSyntax : SyntaxNode
27public abstract SyntaxNode? TryGetContainingMethodBodyForSpeculation(SyntaxNode node);
29protected abstract SemanticModel? TryGetSpeculativeSemanticModelWorker(SemanticModel previousSemanticModel, SyntaxNode previousBodyNode, SyntaxNode currentBodyNode);
42public async Task<SemanticModel?> TryGetSpeculativeSemanticModelAsync(SemanticModel previousSemanticModel, SyntaxNode currentBodyNode, CancellationToken cancellationToken)
56var previousRoot = await previousSemanticModel.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
57var currentRoot = await currentBodyNode.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
58var previousBodyNode = GetPreviousBodyNode(previousRoot, currentRoot, currentBodyNode);
80protected SyntaxNode GetPreviousBodyNode(SyntaxNode previousRoot, SyntaxNode currentRoot, SyntaxNode currentBodyNode)
88var previousContainer = GetPreviousBodyNode(previousRoot, currentRoot, currentContainer);
114var previousNode = previousRoot;
126var childAsNode = children[childIndex].AsNode();
140private static void GetNodeChildIndexPathToRootReversed(SyntaxNode node, ArrayBuilder<int> path)
142var current = node;
143var parent = current.Parent;
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\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\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) &&
220SyntaxNode expression,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Extensions\SyntaxNodeExtensions.cs (122)
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)
239var commonAncestor = FindCommonAncestor(node, commonAncestorsSet);
281static SyntaxNode? FindCommonAncestor(SyntaxNode node, HashSet<SyntaxNode> commonAncestorsSet)
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>();
441var original = (SyntaxNode?)retryAnnotations.GetAnnotations(currentNode).SingleOrDefault() ?? currentNode;
472if (rewritten != original || !nodeReplacements.TryGetValue(original, out var replaced))
598SyntaxNode root,
614this SyntaxNode root,
653this SyntaxNode root,
690params SyntaxTrivia[] trivia) where T : SyntaxNode
702SyntaxTriviaList trivia) where T : SyntaxNode
714IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
724params SyntaxTrivia[] trivia) where T : SyntaxNode
736SyntaxTriviaList trivia) where T : SyntaxNode
748IEnumerable<SyntaxTrivia> trivia) where T : SyntaxNode
759IEnumerable<SyntaxTrivia> trailingTrivia) where T : SyntaxNode
784public static SyntaxNode FindNode(this SyntaxNode root, TextSpan? span, bool findInTrivia, bool getInnermostNodeForTie)
792public static SyntaxNode? GetParent(this SyntaxNode node, bool ascendOutOfTrivia)
794var parent = node.Parent;
806public static TNode? FirstAncestorOrSelfUntil<TNode>(this SyntaxNode? node, Func<SyntaxNode, bool> predicate)
807where TNode : SyntaxNode
809for (var current = node; current != null; current = current.GetParent(ascendOutOfTrivia: true))
826SyntaxNode root,
829where TDirectiveTriviaSyntax : SyntaxNode
835where TDirectiveTriviaSyntax : SyntaxNode
855SyntaxNode root,
943public static SyntaxTriviaList GetLeadingTriviaIncludingMissingTokens(this SyntaxNode node)
959public static SyntaxTriviaList GetTrailingTriviaIncludingMissingTokens(this SyntaxNode node)
978public static SyntaxNode WithLeadingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
983public static SyntaxNode WithTrailingTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
988public static SyntaxNode WithTriviaFromIncludingMissingTokens(this SyntaxNode node, SyntaxNode other)
997public static ValueAncestorsAndSelfEnumerable ValueAncestorsAndSelf(this SyntaxNode syntaxNode, bool ascendOutOfTrivia = true)
1000public readonly struct ValueAncestorsAndSelfEnumerable(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1005public struct Enumerator(SyntaxNode syntaxNode, bool ascendOutOfTrivia)
1007public SyntaxNode Current { get; private set; } = null!;
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\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\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\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\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAlignTokensOperationAction.cs (1)
14SyntaxNode node,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextAnchorIndentationOperationAction.cs (1)
14SyntaxNode node,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextIndentBlockOperationAction.cs (1)
14SyntaxNode node,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Formatting\Rules\NextSuppressOperationAction.cs (1)
14SyntaxNode node,
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Helpers\RemoveUnnecessaryImports\AbstractUnnecessaryImportsProvider.cs (4)
18where TSyntaxNode : SyntaxNode
21SemanticModel model, Func<SyntaxNode, bool>? predicate, CancellationToken cancellationToken);
27SemanticModel model, TextSpan? span, Func<SyntaxNode, bool>? predicate, CancellationToken cancellationToken)
32var node = model.SyntaxTree.FindNode(span, findInTrivia: false, getInnermostNodeForTie: false, cancellationToken);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\HeaderFacts\AbstractHeaderFacts.cs (28)
18public abstract bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
19public abstract bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration);
20public abstract bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter);
21public abstract bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method);
22public abstract bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction);
23public abstract bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration);
24public abstract bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement);
25public abstract bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement);
26public abstract bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement);
28public bool IsOnHeader(SyntaxNode root, int position, SyntaxNode ownerOfHeader, SyntaxNodeOrToken lastTokenOrNodeOfHeader)
29=> IsOnHeader(root, position, ownerOfHeader, lastTokenOrNodeOfHeader, ImmutableArray<SyntaxNode>.Empty);
32SyntaxNode root,
34SyntaxNode ownerOfHeader,
37where THoleSyntax : SyntaxNode
66protected TNode? TryGetAncestorForLocation<TNode>(SyntaxNode root, int position) where TNode : SyntaxNode
84protected int GetStartOfNodeExcludingAttributes(SyntaxNode root, SyntaxNode node)
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\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SemanticFacts\ISemanticFacts.cs (23)
51bool IsWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
58bool IsOnlyWrittenTo(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
59bool IsInOutContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
60bool IsInRefContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
61bool IsInInContext(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
63bool CanReplaceWithRValue(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? expression, CancellationToken cancellationToken);
72bool TryGetSpeculativeSemanticModel(SemanticModel oldSemanticModel, SyntaxNode oldNode, SyntaxNode newNode, [NotNullWhen(true)] out SemanticModel? speculativeModel);
79ForEachSymbols GetForEachSymbols(SemanticModel semanticModel, SyntaxNode forEachStatement);
80SymbolInfo GetCollectionInitializerSymbolInfo(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
82IMethodSymbol? GetGetAwaiterMethod(SemanticModel semanticModel, SyntaxNode node);
84ImmutableArray<IMethodSymbol> GetDeconstructionAssignmentMethods(SemanticModel semanticModel, SyntaxNode node);
86ImmutableArray<IMethodSymbol> GetDeconstructionForEachMethods(SemanticModel semanticModel, SyntaxNode node);
90IEnumerable<ISymbol> GetDeclaredSymbols(SemanticModel semanticModel, SyntaxNode memberDeclaration, CancellationToken cancellationToken);
92IParameterSymbol? FindParameterForArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
93IParameterSymbol? FindParameterForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, bool allowUncertainCandidates, bool allowParams, CancellationToken cancellationToken);
95ISymbol? FindFieldOrPropertyForArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
96ISymbol? FindFieldOrPropertyForAttributeArgument(SemanticModel semanticModel, SyntaxNode argument, CancellationToken cancellationToken);
98ImmutableArray<ISymbol> GetBestOrAllSymbols(SemanticModel semanticModel, SyntaxNode? node, SyntaxToken token, CancellationToken cancellationToken);
100bool IsInsideNameOfExpression(SemanticModel semanticModel, [NotNullWhen(true)] SyntaxNode? node, CancellationToken cancellationToken);
107bool IsInExpressionTree(SemanticModel semanticModel, SyntaxNode node, [NotNullWhen(true)] INamedTypeSymbol? expressionType, CancellationToken cancellationToken);
109string GenerateNameForExpression(SemanticModel semanticModel, SyntaxNode expression, bool capitalize, CancellationToken cancellationToken);
120IPreprocessingSymbol? GetPreprocessingSymbol(SemanticModel semanticModel, SyntaxNode node);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFacts.cs (301)
121bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node);
122bool IsPredefinedType([NotNullWhen(true)] SyntaxNode? node, PredefinedType type);
172bool IsUsingOrExternOrImport([NotNullWhen(true)] SyntaxNode? node);
173bool IsGlobalAssemblyAttribute([NotNullWhen(true)] SyntaxNode? node);
174bool IsGlobalModuleAttribute([NotNullWhen(true)] SyntaxNode? node);
175bool IsDeclaration([NotNullWhen(true)] SyntaxNode? node);
176bool IsTypeDeclaration(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 IsAnyInitializerExpression([NotNullWhen(true)] SyntaxNode? node, [NotNullWhen(true)] out SyntaxNode? creationExpression);
337bool IsDirective([NotNullWhen(true)] SyntaxNode? node);
338bool IsStatement([NotNullWhen(true)] SyntaxNode? node);
339bool IsExecutableStatement([NotNullWhen(true)] SyntaxNode? node);
340bool IsGlobalStatement([NotNullWhen(true)] SyntaxNode? node);
341SyntaxNode GetStatementOfGlobalStatement(SyntaxNode node);
343bool IsDeconstructionAssignment([NotNullWhen(true)] SyntaxNode? node);
344bool IsDeconstructionForEachStatement([NotNullWhen(true)] SyntaxNode? node);
345bool IsUsingLocalDeclarationStatement(SyntaxNode node);
359bool IsMethodBody([NotNullWhen(true)] SyntaxNode? node);
361bool IsDeclaratorOfLocalDeclarationStatement(SyntaxNode declarator, SyntaxNode localDeclarationStatement);
362SeparatedSyntaxList<SyntaxNode> GetVariablesOfLocalDeclarationStatement(SyntaxNode node);
363SyntaxNode? GetInitializerOfVariableDeclarator(SyntaxNode node);
364SyntaxNode? GetInitializerOfPropertyDeclaration(SyntaxNode node);
369bool IsElementAccessExpression([NotNullWhen(true)] SyntaxNode? node);
387bool IsInStaticContext(SyntaxNode node);
388bool IsUnsafeContext(SyntaxNode node);
390bool IsInNamespaceOrTypeContext([NotNullWhen(true)] SyntaxNode? node);
392bool IsBaseTypeList([NotNullWhen(true)] SyntaxNode? node);
394bool IsInConstantContext([NotNullWhen(true)] SyntaxNode? node);
395bool IsInConstructor(SyntaxNode node);
396bool IsMethodLevelMember([NotNullWhen(true)] SyntaxNode? node);
397bool IsTopLevelNodeWithMembers([NotNullWhen(true)] SyntaxNode? node);
400bool AreEquivalent(SyntaxNode? node1, SyntaxNode? node2);
402string GetDisplayName(SyntaxNode? node, DisplayNameOptions options, string? rootNamespace = null);
405SyntaxNode? GetContainingTypeDeclaration(SyntaxNode root, int position);
406SyntaxNode? GetContainingMemberDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
407SyntaxNode? GetContainingMethodDeclaration(SyntaxNode root, int position, bool useFullSpan = true);
408SyntaxNode? GetContainingVariableDeclaratorOfFieldDeclaration(SyntaxNode? node);
412SyntaxNode? ConvertToSingleLine(SyntaxNode? node, bool useElasticTrivia = false);
415void AddTopLevelAndMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
417void AddTopLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
419void AddMethodLevelMembers(SyntaxNode? root, ArrayBuilder<SyntaxNode> result);
421SyntaxList<SyntaxNode> GetMembersOfTypeDeclaration(SyntaxNode typeDeclaration);
427/// Given a <see cref="SyntaxNode"/>, return the <see cref="TextSpan"/> representing the span of the member body
433TextSpan GetMemberBodySpanForSpeculativeBinding(SyntaxNode node);
441SyntaxNode? TryGetBindableParent(SyntaxToken token);
444IEnumerable<SyntaxNode> GetConstructors(SyntaxNode? root, CancellationToken cancellationToken);
447/// Given a <see cref="SyntaxNode"/>, that represents and argument return the string representation of
451string GetNameForArgument(SyntaxNode? argument);
454/// Given a <see cref="SyntaxNode"/>, that represents an attribute argument return the string representation of
458string GetNameForAttributeArgument(SyntaxNode? argument);
460bool IsNameOfSubpattern([NotNullWhen(true)] SyntaxNode? node);
461bool IsPropertyPatternClause(SyntaxNode node);
463bool IsAnyPattern([NotNullWhen(true)] SyntaxNode? node);
464bool IsBinaryPattern([NotNullWhen(true)] SyntaxNode? node);
465bool IsUnaryPattern([NotNullWhen(true)] SyntaxNode? node);
467SyntaxNode GetExpressionOfConstantPattern(SyntaxNode node);
468SyntaxNode GetTypeOfTypePattern(SyntaxNode node);
470void GetPartsOfParenthesizedPattern(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode pattern, out SyntaxToken closeParen);
471void GetPartsOfBinaryPattern(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
472void GetPartsOfDeclarationPattern(SyntaxNode node, out SyntaxNode type, out SyntaxNode designation);
473void GetPartsOfRecursivePattern(SyntaxNode node, out SyntaxNode? type, out SyntaxNode? positionalPart, out SyntaxNode? propertyPart, out SyntaxNode? designation);
474void GetPartsOfRelationalPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode expression);
475void GetPartsOfUnaryPattern(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode pattern);
479SyntaxTokenList GetModifiers(SyntaxNode? node);
483SyntaxNode? WithModifiers(SyntaxNode? node, SyntaxTokenList modifiers);
486Location GetDeconstructionReferenceLocation(SyntaxNode node);
491bool IsParameterNameXmlElementSyntax([NotNullWhen(true)] SyntaxNode? node);
493SyntaxList<SyntaxNode> GetContentFromDocumentationCommentTriviaSyntax(SyntaxTrivia trivia);
499bool IsAnonymousFunctionExpression([NotNullWhen(true)] SyntaxNode? node);
500bool IsBaseNamespaceDeclaration([NotNullWhen(true)] SyntaxNode? node);
501bool IsBinaryExpression([NotNullWhen(true)] SyntaxNode? node);
502bool IsLiteralExpression([NotNullWhen(true)] SyntaxNode? node);
503bool IsMemberAccessExpression([NotNullWhen(true)] SyntaxNode? node);
504bool IsMethodDeclaration([NotNullWhen(true)] SyntaxNode? node);
505bool IsSimpleName([NotNullWhen(true)] SyntaxNode? node);
506bool IsAnyName([NotNullWhen(true)] SyntaxNode? node);
507bool IsAnyType([NotNullWhen(true)] SyntaxNode? node);
509bool IsNamedMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
510bool IsElementAccessInitializer([NotNullWhen(true)] SyntaxNode? node);
512bool IsObjectMemberInitializer([NotNullWhen(true)] SyntaxNode? node);
513bool IsObjectCollectionInitializer([NotNullWhen(true)] SyntaxNode? node);
519void GetPartsOfAliasQualifiedName(SyntaxNode node, out SyntaxNode alias, out SyntaxToken colonColonToken, out SyntaxNode name);
520void GetPartsOfAnyIsTypeExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode type);
521void GetPartsOfArgumentList(SyntaxNode node, out SyntaxToken openParenToken, out SeparatedSyntaxList<SyntaxNode> arguments, out SyntaxToken closeParenToken);
522void GetPartsOfAttribute(SyntaxNode node, out SyntaxNode name, out SyntaxNode? argumentList);
523void GetPartsOfBaseNamespaceDeclaration(SyntaxNode node, out SyntaxNode name, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> members);
524void GetPartsOfBaseObjectCreationExpression(SyntaxNode node, out SyntaxNode? argumentList, out SyntaxNode? initializer);
525void GetPartsOfBinaryExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken operatorToken, out SyntaxNode right);
526void GetPartsOfCastExpression(SyntaxNode node, out SyntaxNode type, out SyntaxNode expression);
527void GetPartsOfCompilationUnit(SyntaxNode node, out SyntaxList<SyntaxNode> imports, out SyntaxList<SyntaxNode> attributeLists, out SyntaxList<SyntaxNode> members);
528void GetPartsOfConditionalAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode whenNotNull);
529void GetPartsOfConditionalExpression(SyntaxNode node, out SyntaxNode condition, out SyntaxNode whenTrue, out SyntaxNode whenFalse);
530void GetPartsOfGenericName(SyntaxNode node, out SyntaxToken identifier, out SeparatedSyntaxList<SyntaxNode> typeArguments);
531void GetPartsOfInterpolationExpression(SyntaxNode node, out SyntaxToken stringStartToken, out SyntaxList<SyntaxNode> contents, out SyntaxToken stringEndToken);
532void GetPartsOfInvocationExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxNode? argumentList);
533void GetPartsOfIsPatternExpression(SyntaxNode node, out SyntaxNode left, out SyntaxToken isToken, out SyntaxNode right);
534void GetPartsOfMemberAccessExpression(SyntaxNode node, out SyntaxNode expression, out SyntaxToken operatorToken, out SyntaxNode name);
535void GetPartsOfNamedMemberInitializer(SyntaxNode node, out SyntaxNode name, out SyntaxNode expression);
536void GetPartsOfObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode type, out SyntaxNode? argumentList, out SyntaxNode? initializer);
537void GetPartsOfImplicitObjectCreationExpression(SyntaxNode node, out SyntaxToken keyword, out SyntaxNode argumentList, out SyntaxNode? initializer);
538void GetPartsOfParameter(SyntaxNode node, out SyntaxToken identifier, out SyntaxNode? @default);
539void GetPartsOfParenthesizedExpression(SyntaxNode node, out SyntaxToken openParen, out SyntaxNode expression, out SyntaxToken closeParen);
540void GetPartsOfPrefixUnaryExpression(SyntaxNode node, out SyntaxToken operatorToken, out SyntaxNode operand);
541void GetPartsOfQualifiedName(SyntaxNode node, out SyntaxNode left, out SyntaxToken dotToken, out SyntaxNode right);
542void GetPartsOfUsingAliasDirective(SyntaxNode node, out SyntaxToken globalKeyword, out SyntaxToken alias, out SyntaxNode name);
552SyntaxNode GetArgumentListOfImplicitElementAccess(SyntaxNode node);
554SyntaxNode GetExpressionOfAwaitExpression(SyntaxNode node);
555SyntaxNode GetExpressionOfExpressionStatement(SyntaxNode node);
556SyntaxNode GetExpressionOfRefExpression(SyntaxNode node);
557SyntaxNode? GetExpressionOfReturnStatement(SyntaxNode node);
558SyntaxNode GetExpressionOfThrowExpression(SyntaxNode node);
559SyntaxNode? GetExpressionOfThrowStatement(SyntaxNode node);
561bool IsEqualsValueOfPropertyDeclaration([NotNullWhen(true)] SyntaxNode? node);
562SyntaxNode GetValueOfEqualsValueClause(SyntaxNode node);
564SeparatedSyntaxList<SyntaxNode> GetInitializersOfObjectMemberInitializer(SyntaxNode node);
565SeparatedSyntaxList<SyntaxNode> GetExpressionsOfObjectCollectionInitializer(SyntaxNode node);
567SyntaxToken GetTokenOfLiteralExpression(SyntaxNode node);
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Services\SyntaxFacts\ISyntaxFactsExtensions.cs (205)
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 GetOperandOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
584syntaxFacts.GetPartsOfPrefixUnaryExpression(node, out _, out var operand);
588public static SyntaxToken GetOperatorTokenOfPrefixUnaryExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
594public static SeparatedSyntaxList<SyntaxNode> GetTypeArgumentsOfGenericName(this ISyntaxFacts syntaxFacts, SyntaxNode node)
600public static SyntaxNode GetTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, SyntaxNode node)
602syntaxFacts.GetPartsOfObjectCreationExpression(node, out _, out var type, out _, out _);
610public static bool IsExpressionOfAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
612var parent = node?.Parent;
619public static bool IsExpressionOfInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
621var parent = node?.Parent;
625syntaxFacts.GetPartsOfInvocationExpression(parent, out var expression, out _);
629public static bool IsExpressionOfMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
631var parent = node?.Parent;
635syntaxFacts.GetPartsOfMemberAccessExpression(parent, out var expression, out _);
639public static bool IsNameOfAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
644syntaxFacts.GetPartsOfAttribute(node.Parent, out var name, out _);
648public static bool IsRightOfQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
650var parent = node?.Parent;
654syntaxFacts.GetPartsOfQualifiedName(parent, out _, out _, out var right);
658public static bool IsRightOfAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
660var parent = node?.Parent;
664syntaxFacts.GetPartsOfAliasQualifiedName(parent, out _, out _, out var right);
668public static bool IsTypeOfObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
670var parent = node?.Parent;
674syntaxFacts.GetPartsOfObjectCreationExpression(parent, out _, out var type, out _, out _);
705public static bool IsSkippedTokensTrivia(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
745public static bool IsAliasQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
748public static bool IsGenericName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
751public static bool IsIdentifierName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
754public static bool IsQualifiedName(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
761public static bool IsTupleType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
768public static bool IsCharacterLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
771public static bool IsDefaultLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
774public static bool IsFalseLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
777public static bool IsNumericLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
780public static bool IsNullLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
783public static bool IsStringLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
786public static bool IsTrueLiteralExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
793public static bool IsArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
796public static bool IsAwaitExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
799public static bool IsBaseExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
802public static bool IsConditionalExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
805public static bool IsConditionalAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
808public static bool IsFieldExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
811public static bool IsImplicitArrayCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
814public static bool IsImplicitObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
817public static bool IsIndexExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
820public static bool IsInterpolatedStringExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
823public static bool IsInterpolation(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
826public static bool IsInterpolatedStringText(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
829public static bool IsInvocationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
832public static bool IsIsTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
835public static bool IsIsNotTypeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
838public static bool IsIsPatternExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
841public static bool IsLogicalAndExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
844public static bool IsLogicalOrExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
847public static bool IsLogicalNotExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
850public static bool IsObjectCreationExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
853public static bool IsParenthesizedExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
856public static bool IsQueryExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
859public static bool IsRangeExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
862public static bool IsRefExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
865public static bool IsSimpleMemberAccessExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
868public static bool IsThisExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
871public static bool IsThrowExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
874public static bool IsTupleExpression(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
877public static bool ContainsGlobalStatement(this ISyntaxFacts syntaxFacts, SyntaxNode node)
884public static bool IsAndPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
887public static bool IsConstantPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
890public static bool IsDeclarationPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
893public static bool IsListPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
896public static bool IsNotPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
899public static bool IsOrPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
902public static bool IsParenthesizedPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
905public static bool IsRecursivePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
908public static bool IsRelationalPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
911public static bool IsTypePattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
914public static bool IsVarPattern(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
921public static bool IsExpressionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
924public static bool IsForEachStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
927public static bool IsForStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
930public static bool IsIfStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
933public static bool IsLocalDeclarationStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
936public static bool IsLocalFunctionStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
939public static bool IsLockStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
942public static bool IsReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
945public static bool IsThrowStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
948public static bool IsUsingStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
951public static bool IsWhileStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
954public static bool IsYieldReturnStatement(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
961public static bool IsAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
964public static bool IsClassDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
967public static bool IsConstructorDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
970public static bool IsEnumDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
973public static bool IsGlobalAttribute(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
976public static bool IsInterfaceDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
979public static bool IsParameter(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
982public static bool IsTypeConstraint(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
985public static bool IsVariableDeclarator(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
988public static bool IsFieldDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
991public static bool IsPropertyDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
994public static bool IsStructDeclaration(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
997public static bool IsTypeArgumentList(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1004public static bool IsElseClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1006public static bool IsEqualsValueClause(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1013public static bool IsImplicitElementAccess(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1016public static bool IsIndexerMemberCref(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
1019public static bool IsPrimaryConstructorBaseType(this ISyntaxFacts syntaxFacts, [NotNullWhen(true)] SyntaxNode? node)
src\Workspaces\SharedUtilitiesAndExtensions\Compiler\Core\Utilities\AbstractSpeculationAnalyzer.cs (39)
35where TExpressionSyntax : SyntaxNode
37where TAttributeSyntax : SyntaxNode
38where TArgumentSyntax : SyntaxNode
39where TForEachStatementSyntax : SyntaxNode
40where TThrowStatementSyntax : SyntaxNode
49private SyntaxNode? _lazySemanticRootOfOriginalExpression;
51private SyntaxNode? _lazySemanticRootOfReplacedExpression;
97protected abstract SyntaxNode GetSemanticRootForSpeculation(TExpressionSyntax expression);
98protected abstract SemanticModel CreateSpeculativeSemanticModel(SyntaxNode originalNode, SyntaxNode nodeToSpeculate, SemanticModel semanticModel);
101protected abstract bool ExpressionMightReferenceMember([NotNullWhen(true)] SyntaxNode? node);
116protected abstract bool ReplacementChangesSemanticsForNodeLanguageSpecific(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode);
118protected abstract bool IsParenthesizedExpression([NotNullWhen(true)] SyntaxNode? node);
130SyntaxNode ISpeculationAnalyzer.OriginalExpression => OriginalExpression;
137public SyntaxNode SemanticRootOfOriginalExpression
170SyntaxNode ISpeculationAnalyzer.ReplacedExpression => ReplacedExpression;
177public SyntaxNode SemanticRootOfReplacedExpression
200protected virtual SyntaxNode GetSemanticRootOfReplacedExpression(SyntaxNode semanticRootOfOriginalExpression, TExpressionSyntax annotatedReplacedExpression)
223protected abstract void ValidateSpeculativeSemanticModel(SemanticModel speculativeSemanticModel, SyntaxNode nodeToSpeculate);
230var nodeToSpeculate = this.SemanticRootOfReplacedExpression;
316protected bool SymbolsAreCompatible(SyntaxNode originalNode, SyntaxNode newNode, bool requireNonNullSymbols = false)
518protected bool ReplacementChangesSemantics(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode originalRoot, bool skipVerificationForCurrentNode)
526SyntaxNode? previousOriginalNode = null, previousReplacedNode = null;
570private bool ReplacementChangesSemanticsForNode(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, SyntaxNode? previousOriginalNode, SyntaxNode? previousReplacedNode)
687var originalExpressionOfMemberAccess = syntaxFacts.GetExpressionOfMemberAccessExpression(originalExpression);
730private bool ReplacementBreaksSystemObjectMethodResolution(SyntaxNode currentOriginalNode, SyntaxNode currentReplacedNode, [NotNullWhen(true)] SyntaxNode? previousOriginalNode, [NotNullWhen(true)] SyntaxNode? previousReplacedNode)
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\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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\AbstractCodeGenerationService_FindDeclaration.cs (21)
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);
31protected static SyntaxToken GetEndToken(SyntaxNode node)
47protected static TextSpan GetSpan(SyntaxNode node)
55public bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken)
59SyntaxNode? destination,
131public SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(
141private (SyntaxNode? declaration, IList<bool>? availableIndices) FindMostRelevantDeclaration(
152using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var ancestors);
154var fallbackDeclaration = (SyntaxNode?)null;
158ancestors.AddRange(token.GetAncestors<SyntaxNode>());
163if (TryAddToRelatedDeclaration(declarations.Where(d => d is not ICompilationUnitSyntax), checkGeneratedCode: false, out var declaration1, out var availableIndices1) ||
171if (TryAddToWorker(declarations, checkGeneratedCode: true, out var declaration2, out var availableIndices2, predicate: node => true))
177IEnumerable<SyntaxNode> declarations,
179[NotNullWhen(true)] out SyntaxNode? declaration,
217IEnumerable<SyntaxNode> declarations,
219[NotNullWhen(true)] out SyntaxNode? declaration,
221Func<SyntaxNode, bool> predicate)
223foreach (var decl in declarations)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\CodeGenerationSymbolFactory.cs (18)
60SyntaxNode? initializer = null)
86bool isIndexer = false, SyntaxNode? initializer = null)
114SyntaxNode? initializer = null)
130ImmutableArray<SyntaxNode> statements = default,
131ImmutableArray<SyntaxNode> baseConstructorArguments = default,
132ImmutableArray<SyntaxNode> thisConstructorArguments = default,
145ImmutableArray<SyntaxNode> statements = default)
163ImmutableArray<SyntaxNode> statements = default,
164ImmutableArray<SyntaxNode> handlesExpressions = default,
184ImmutableArray<SyntaxNode> statements = default,
185ImmutableArray<SyntaxNode> handlesExpressions = default,
203ImmutableArray<SyntaxNode> statements = default,
229ImmutableArray<SyntaxNode> statements = default,
257ImmutableArray<SyntaxNode> statements = default,
366ImmutableArray<SyntaxNode> statements = default)
390ImmutableArray<SyntaxNode> statements)
523ImmutableArray<SyntaxNode> statements = default,
556SyntaxNode? initializer = null)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeGeneration\ICodeGenerationService.cs (26)
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;
183bool CanAddTo(SyntaxNode destination, Solution solution, CancellationToken cancellationToken);
191SyntaxNode? FindMostRelevantNameSpaceOrTypeDeclaration(Solution solution, INamespaceOrTypeSymbol namespaceOrType, Location? location, CancellationToken cancellationToken);
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\CodeRefactorings\AbstractRefactoringHelpersService.cs (62)
18where TExpressionSyntax : SyntaxNode
19where TArgumentSyntax : SyntaxNode
20where TExpressionStatementSyntax : SyntaxNode
24public abstract bool IsBetweenTypeMembers(SourceText sourceText, SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? typeDeclaration);
26private static void AddNode<TSyntaxNode>(bool allowEmptyNodes, ref TemporaryArray<TSyntaxNode> result, TSyntaxNode node) where TSyntaxNode : SyntaxNode
35ParsedDocument document, TextSpan selectionRaw, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
42var root = document.Root;
137private static bool IsWantedTypeExpressionLike<TSyntaxNode>() where TSyntaxNode : SyntaxNode
157SyntaxNode root,
268CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
275var leftNode = tokenToLeft.Parent;
302SyntaxNode root,
307CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
313var rightNode = tokenToRightOrIn.Parent;
347SyntaxNode root,
352CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
354var selectionNode = root.FindNode(selectionTrimmed, getInnermostNodeForTie: true);
355var prevNode = selectionNode;
393protected virtual IEnumerable<SyntaxNode> ExtractNodesSimple(SyntaxNode? node, ISyntaxFactsService syntaxFacts)
411var localDeclarationStatement = syntaxFacts.IsLocalDeclarationStatement(node) ? node : node.Parent!;
421var declaredVariable = variables.First();
427var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(declaredVariable);
430var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
443var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(node);
446var value = syntaxFacts.GetValueOfEqualsValueClause(initializer);
458syntaxFacts.GetPartsOfAssignmentExpressionOrStatement(node, out _, out _, out var rightSide);
480protected virtual IEnumerable<SyntaxNode> ExtractNodesInHeader(SyntaxNode root, int location, IHeaderFactsService headerFacts)
483if (headerFacts.IsOnPropertyDeclarationHeader(root, location, out var propertyDeclaration))
487if (headerFacts.IsOnParameterHeader(root, location, out var parameter))
491if (headerFacts.IsOnMethodHeader(root, location, out var method))
495if (headerFacts.IsOnLocalFunctionHeader(root, location, out var localFunction))
499if (headerFacts.IsOnLocalDeclarationHeader(root, location, out var localDeclaration))
503if (headerFacts.IsOnIfStatementHeader(root, location, out var ifStatement))
507if (headerFacts.IsOnForeachHeader(root, location, out var foreachStatement))
510if (headerFacts.IsOnTypeHeader(root, location, out var typeDeclaration))
520CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
524var root = document.Root;
531var ancestor = token.Parent;
559IEnumerable<SyntaxNode> nodes, bool allowEmptyNodes, int maxCount, ref TemporaryArray<TSyntaxNode> result, CancellationToken cancellationToken) where TSyntaxNode : SyntaxNode
561foreach (var node in nodes)
573public bool IsOnTypeHeader(SyntaxNode root, int position, bool fullHeader, [NotNullWhen(true)] out SyntaxNode? typeDeclaration)
576public bool IsOnPropertyDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? propertyDeclaration)
579public bool IsOnParameterHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? parameter)
582public bool IsOnMethodHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? method)
585public bool IsOnLocalFunctionHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localFunction)
588public bool IsOnLocalDeclarationHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? localDeclaration)
591public bool IsOnIfStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? ifStatement)
594public bool IsOnWhileStatementHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? whileStatement)
597public bool IsOnForeachHeader(SyntaxNode root, int position, [NotNullWhen(true)] out SyntaxNode? foreachStatement)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Editing\ImportAdderService.cs (22)
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);
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);
257private static bool IsInsideNamespace(SyntaxNode node, INamespaceSymbol symbol, SemanticModel model, CancellationToken cancellationToken)
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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions.cs (47)
29public static SyntaxNode CreateThrowNotImplementedStatement(
36public static SyntaxNode CreateThrowNotImplementedExpression(
43private static SyntaxNode CreateNewNotImplementedException(SyntaxGenerator codeDefinitionFactory, Compilation compilation)
45var notImplementedExceptionTypeSyntax = compilation.NotImplementedExceptionType() is INamedTypeSymbol symbol
54public static ImmutableArray<SyntaxNode> CreateThrowNotImplementedStatementBlock(
58public static ImmutableArray<SyntaxNode> CreateArguments(
65private static SyntaxNode CreateArgument(
72public static SyntaxNode GetDefaultEqualityComparer(
79var typeExpression = equalityComparerType == null
94public static SyntaxNode IsPatternExpression(this SyntaxGeneratorInternal generator, SyntaxNode expression, SyntaxNode pattern)
100public static SyntaxNode GenerateDelegateThroughMemberStatement(
103var through = generator.MemberAccessExpression(
109var invocationExpression = generator.InvocationExpression(through, generator.CreateArguments(method.Parameters));
115public static SyntaxNode CreateDelegateThroughExpression(
118var name = generator.IdentifierName(throughMember.Name);
119var through = throughMember.IsStatic
165var explicitImplementationCast = generator.CastExpression(
180static SyntaxNode GenerateContainerName(SyntaxGenerator factory, ISymbol throughMember)
189public static ImmutableArray<SyntaxNode> GetGetAccessorStatements(
199var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
200var expression = property.IsIndexer
228public static ImmutableArray<SyntaxNode> GetSetAccessorStatements(
238var throughExpression = CreateDelegateThroughExpression(generator, property, throughMember);
239var expression = property.IsIndexer
341public static ImmutableArray<SyntaxNode> CreateAssignmentStatements(
351using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var nullCheckStatements);
352using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var assignStatements);
364var assignExpression = factory.AssignmentStatement(
367var statement = factory.ExpressionStatement(assignExpression);
377var fieldAccess = factory.MemberAccessExpression(factory.ThisExpression(), factory.IdentifierName(fieldName))
397SyntaxNode fieldAccess,
400ArrayBuilder<SyntaxNode> nullCheckStatements,
401ArrayBuilder<SyntaxNode> assignStatements)
432public static SyntaxNode CreateAssignWithNullCheckStatement(
433this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter, SyntaxNode fieldAccess)
442public static SyntaxNode CreateThrowArgumentNullExpression(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
445private static SyntaxNode CreateNewArgumentNullException(SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
454public static SyntaxNode CreateNullCheckAndThrowStatement(
460var condition = factory.CreateNullCheckExpression(generatorInternal, semanticModel, parameter.Name);
461var throwStatement = factory.CreateThrowArgumentNullExceptionStatement(semanticModel.Compilation, parameter);
466public static SyntaxNode CreateNullCheckExpression(
469var identifier = factory.IdentifierName(identifierName);
470var nullExpr = factory.NullLiteralExpression();
471var condition = generatorInternal.SupportsPatterns(semanticModel.SyntaxTree.Options)
477public static SyntaxNode CreateThrowArgumentNullExceptionStatement(this SyntaxGenerator factory, Compilation compilation, IParameterSymbol parameter)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\Extensions\SyntaxGeneratorExtensions_CreateEqualsMethod.cs (21)
49public static IMethodSymbol CreateEqualsMethod(this Compilation compilation, ImmutableArray<SyntaxNode> statements)
109private static ImmutableArray<SyntaxNode> CreateEqualsMethodStatements(
127using var statements = TemporaryArray<SyntaxNode>.Empty;
136var localNameExpression = factory.IdentifierName(localName);
137var objNameExpression = factory.IdentifierName(ObjName);
141using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
159var ifStatement = factory.IfStatement(
170var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
182var localDeclaration = factory.SimpleLocalDeclarationStatement(generatorInternal,
220ImmutableArray<ISymbol> members, SyntaxNode localNameExpression,
221ArrayBuilder<SyntaxNode> expressions)
231var symbolNameExpression = factory.IdentifierName(member.Name);
232var thisSymbol = factory.MemberAccessExpression(factory.ThisExpression(), symbolNameExpression)
234var otherSymbol = factory.MemberAccessExpression(localNameExpression, symbolNameExpression);
271private static ImmutableArray<SyntaxNode> CreateIEquatableEqualsMethodStatements(
279var statements = ArrayBuilder<SyntaxNode>.GetInstance();
281var otherNameExpression = factory.IdentifierName(OtherName);
285using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var expressions);
323SyntaxGenerator factory, SyntaxGeneratorInternal generatorInternal, Compilation compilation, ParseOptions parseOptions, SyntaxNode otherNameExpression, ArrayBuilder<SyntaxNode> expressions)
325var nullLiteral = factory.NullLiteralExpression();
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);
138private static SyntaxNode GetNegationOfBinaryExpression(
139SyntaxNode expressionNode,
146syntaxFacts.GetPartsOfBinaryExpression(expressionNode, out var leftOperand, out var operatorToken, out var rightOperand);
174var newBinaryExpressionSyntax = negatedKind is BinaryOperatorKind.Equals or BinaryOperatorKind.NotEquals
192SyntaxNode innerPattern;
201var typeExpression = generatorInternal.Type(isTypeOperation.TypeOperand, typeContext: false);
230private static SyntaxNode GetNegationOfBinaryPattern(
231SyntaxNode pattern,
243syntaxFacts.GetPartsOfBinaryPattern(pattern, out var left, out var operatorToken, out var right);
245var newLeft = generator.Negate(generatorInternal, left, semanticModel, cancellationToken);
246var newRight = generator.Negate(generatorInternal, right, semanticModel, cancellationToken);
248var newPattern =
260private static SyntaxNode GetNegationOfIsPatternExpression(SyntaxNode isExpression, SyntaxGenerator generator, SyntaxGeneratorInternal generatorInternal, SemanticModel semanticModel, CancellationToken cancellationToken)
265syntaxFacts.GetPartsOfIsPatternExpression(isExpression, out var left, out var isToken, out var pattern);
267SyntaxNode? negatedPattern = null;
289var type = syntaxFacts.GetTypeOfTypePattern(negatedPattern);
302private static SyntaxNode GetNegationOfRelationalPattern(
303SyntaxNode expressionNode,
314syntaxFacts.GetPartsOfRelationalPattern(expressionNode, out var operatorToken, out var expression);
329private static bool IsLegalPattern(ISyntaxFacts syntaxFacts, SyntaxNode pattern, bool designatorsLegal)
334syntaxFacts.GetPartsOfBinaryPattern(pattern, out var left, out _, out var right);
344syntaxFacts.GetPartsOfUnaryPattern(pattern, out _, out var subPattern);
356syntaxFacts.GetPartsOfParenthesizedPattern(pattern, out _, out var subPattern, out _);
362syntaxFacts.GetPartsOfDeclarationPattern(pattern, out _, out var designator);
368syntaxFacts.GetPartsOfRecursivePattern(pattern, out _, out _, out _, out var designator);
378private static SyntaxNode NegateRelational(
381SyntaxNode leftOperand,
383SyntaxNode rightOperand)
469private static SyntaxNode GetNegationOfLiteralExpression(
470SyntaxNode expression,
475SyntaxNode newLiteralExpression;
493private static SyntaxNode GetNegationOfConstantPattern(
494SyntaxNode pattern,
506var expression = syntaxFacts.GetExpressionOfConstantPattern(pattern);
518private static SyntaxNode GetNegationOfLogicalNotExpression(
519SyntaxNode expression,
523var operand = syntaxFacts.GetOperandOfPrefixUnaryExpression(expression);
529private static SyntaxNode GetNegationOfUnaryPattern(
530SyntaxNode pattern,
546private static SyntaxNode GetNegationOfNotPattern(
547SyntaxNode pattern,
554syntaxFacts.GetPartsOfUnaryPattern(pattern, out var opToken, out var subPattern);
560var type = syntaxFacts.GetTypeOfTypePattern(subPattern);
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\AbstractAddImportsService.cs (64)
19where TCompilationUnitSyntax : SyntaxNode
20where TNamespaceDeclarationSyntax : SyntaxNode
21where TUsingOrAliasSyntax : SyntaxNode
22where TExternSyntax : SyntaxNode
29protected abstract SyntaxNode? GetAlias(TUsingOrAliasSyntax usingOrAlias);
30protected abstract ImmutableArray<SyntaxNode> GetGlobalImports(Compilation compilation, SyntaxGenerator generator);
31protected abstract SyntaxList<TUsingOrAliasSyntax> GetUsingsAndAliases(SyntaxNode node);
32protected abstract SyntaxList<TExternSyntax> GetExterns(SyntaxNode node);
47private bool HasAliases(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsAlias);
48private bool HasUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsSimpleUsing);
49private bool HasStaticUsings(SyntaxNode node) => GetUsingsAndAliases(node).Any(IsStaticUsing);
50private bool HasExterns(SyntaxNode node) => GetExterns(node).Any();
51private bool HasAnyImports(SyntaxNode node) => GetUsingsAndAliases(node).Any() || GetExterns(node).Any();
55SyntaxNode root,
56SyntaxNode? contextLocation,
57SyntaxNode import,
65private static ImmutableArray<SyntaxNode> GetAllContainers(SyntaxNode root, SyntaxNode? contextLocation)
69var applicableContainer = GetFirstApplicableContainer(contextLocation);
70return [.. applicableContainer.GetAncestorsOrThis<SyntaxNode>()];
74SyntaxNode import, ImmutableArray<SyntaxNode> containers, ImmutableArray<SyntaxNode> globalImports)
76foreach (var node in containers)
89foreach (var node in globalImports)
100protected abstract bool IsEquivalentImport(SyntaxNode a, SyntaxNode b);
102public SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options)
106out var externContainer, out var usingContainer, out var staticUsingContainer, out var aliasContainer);
129public SyntaxNode AddImports(
131SyntaxNode root,
132SyntaxNode? contextLocation,
133IEnumerable<SyntaxNode> newImports,
150out var externContainer, out var usingContainer, out var aliasContainer, out var staticUsingContainer);
152var newRoot = Rewrite(
160protected abstract SyntaxNode Rewrite(
162SyntaxNode externContainer, SyntaxNode usingContainer, SyntaxNode staticUsingContainer, SyntaxNode aliasContainer,
163AddImportPlacementOptions options, SyntaxNode root, CancellationToken cancellationToken);
165private void GetContainers(SyntaxNode root, SyntaxNode contextLocation, AddImportPlacementOptions options, out SyntaxNode externContainer, out SyntaxNode usingContainer, out SyntaxNode staticUsingContainer, out SyntaxNode aliasContainer)
167var applicableContainer = GetFirstApplicableContainer(contextLocation);
168var contextSpine = applicableContainer.GetAncestorsOrThis<SyntaxNode>().ToImmutableArray();
173var fallbackNode = contextSpine.FirstOrDefault(HasAnyImports);
193private static SyntaxNode? GetFirstApplicableContainer(SyntaxNode contextNode)
197var node = usingDirective != null ? usingDirective.Parent! : contextNode;
199(SyntaxNode?)node.GetAncestorOrThis<TCompilationUnitSyntax>();
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\AddImports\IAddImportsService.cs (15)
22bool HasExistingImport(Compilation compilation, SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, SyntaxGenerator generator);
28SyntaxNode GetImportContainer(SyntaxNode root, SyntaxNode? contextLocation, SyntaxNode import, AddImportPlacementOptions options);
30SyntaxNode AddImports(
31Compilation compilation, SyntaxNode root, SyntaxNode? contextLocation,
32IEnumerable<SyntaxNode> newImports, SyntaxGenerator generator, AddImportPlacementOptions options, CancellationToken cancellationToken);
37public static SyntaxNode AddImport(
38this IAddImportsService service, Compilation compilation, SyntaxNode root,
39SyntaxNode contextLocation, SyntaxNode newImport, SyntaxGenerator generator, AddImportPlacementOptions options,
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\InitializeParameter\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\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\MoveDeclarationNearReference\AbstractMoveDeclarationNearReferenceService.cs (20)
26where TStatementSyntax : SyntaxNode
28where TVariableDeclaratorSyntax : SyntaxNode
30protected abstract bool IsMeaningfulBlock(SyntaxNode node);
31protected abstract bool CanMoveToBlock(ILocalSymbol localSymbol, SyntaxNode currentBlock, SyntaxNode destinationBlock);
32protected abstract SyntaxNode GetVariableDeclaratorSymbolNode(TVariableDeclaratorSyntax variableDeclarator);
35protected abstract Task<bool> TypesAreCompatibleAsync(Document document, ILocalSymbol localSymbol, TLocalDeclarationStatementSyntax declarationStatement, SyntaxNode right, CancellationToken cancellationToken);
37public async Task<(bool canMove, bool mayChangeSemantics)> CanMoveDeclarationNearReferenceAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
46private async Task<State> ComputeStateAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
77Document document, SyntaxNode localDeclarationStatement, CancellationToken cancellationToken)
83var root = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
113var newRoot = editor.GetChangedRoot();
150var originalNextStatement = state.OutermostBlockStatements[statementIndex + 1];
186var blocks = state.InnermostBlock.GetAncestorsOrThis<SyntaxNode>();
187foreach (var block in blocks)
210var initializer = syntaxFacts.GetInitializerOfVariableDeclarator(state.VariableDeclarator);
217syntaxFacts.GetPartsOfAssignmentStatement(firstStatement, out var left, out var right);
242out var _, out var operatorToken, out var right);
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\AbstractSemanticFactsService.cs (36)
41SemanticModel semanticModel, SyntaxNode location, SyntaxNode containerOpt,
49SemanticModel semanticModel, SyntaxNode location, SyntaxNode containerOpt,
57SemanticModel semanticModel, SyntaxNode location, SyntaxNode containerOpt,
65SemanticModel semanticModel, SyntaxNode location, SyntaxNode containerOpt,
74SyntaxNode location, SyntaxNode containerOpt,
78var container = containerOpt ?? location.AncestorsAndSelf().FirstOrDefault(
92protected 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, 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)
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SemanticsFactsService\ISemanticFactsService.cs (12)
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);
47CommonConversion ClassifyConversion(SemanticModel semanticModel, SyntaxNode expression, ITypeSymbol destination);
49IMethodSymbol? TryGetDisposeMethod(SemanticModel semanticModel, SyntaxNode node, CancellationToken cancellationToken);
src\Workspaces\SharedUtilitiesAndExtensions\Workspace\Core\LanguageServices\SyntaxGeneratorInternalExtensions\SyntaxGeneratorInternal.cs (93)
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);
48public abstract SyntaxNode EqualsValueClause(SyntaxToken operatorToken, SyntaxNode value);
52public abstract SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull);
54public abstract SyntaxNode MemberBindingExpression(SyntaxNode name);
56public abstract SyntaxNode RefExpression(SyntaxNode expression);
61public abstract SyntaxNode AddParentheses(SyntaxNode expression, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true);
67public abstract SyntaxNode YieldReturnStatement(SyntaxNode expression);
72/// <see cref="LocalDeclarationStatement(SyntaxNode, SyntaxToken, SyntaxNode, bool)"/>.
78public abstract SyntaxNode InterpolatedStringText(SyntaxToken textToken);
79public abstract SyntaxNode Interpolation(SyntaxNode syntaxNode);
80public abstract SyntaxNode InterpolatedStringExpression(SyntaxToken startToken, IEnumerable<SyntaxNode> content, SyntaxToken endToken);
81public abstract SyntaxNode InterpolationAlignmentClause(SyntaxNode alignment);
82public abstract SyntaxNode InterpolationFormatClause(string format);
83public abstract SyntaxNode TypeParameterList(IEnumerable<string> typeParameterNames);
100public abstract SyntaxNode Type(ITypeSymbol typeSymbol, bool typeContext);
102public abstract SyntaxNode NegateEquality(SyntaxGenerator generator, SyntaxNode binaryExpression, SyntaxNode left, BinaryOperatorKind negatedKind, SyntaxNode right);
104public abstract SyntaxNode IsNotTypeExpression(SyntaxNode expression, SyntaxNode type);
113public abstract SyntaxNode IsPatternExpression(SyntaxNode expression, SyntaxToken isToken, SyntaxNode pattern);
115public abstract SyntaxNode AndPattern(SyntaxNode left, SyntaxNode right);
116public abstract SyntaxNode ConstantPattern(SyntaxNode expression);
117public abstract SyntaxNode DeclarationPattern(INamedTypeSymbol type, string name);
118public abstract SyntaxNode GreaterThanRelationalPattern(SyntaxNode expression);
119public abstract SyntaxNode GreaterThanEqualsRelationalPattern(SyntaxNode expression);
120public abstract SyntaxNode LessThanRelationalPattern(SyntaxNode expression);
121public abstract SyntaxNode LessThanEqualsRelationalPattern(SyntaxNode expression);
122public abstract SyntaxNode NotPattern(SyntaxNode pattern);
123public abstract SyntaxNode OrPattern(SyntaxNode left, SyntaxNode right);
124public abstract SyntaxNode ParenthesizedPattern(SyntaxNode pattern);
125public abstract SyntaxNode TypePattern(SyntaxNode type);
126public abstract SyntaxNode UnaryPattern(SyntaxToken operatorToken, SyntaxNode pattern);
130public abstract SyntaxNode DefaultExpression(ITypeSymbol type);
131public abstract SyntaxNode DefaultExpression(SyntaxNode type);
133public abstract SyntaxNode CastExpression(SyntaxNode type, SyntaxNode expression);
135public SyntaxNode CastExpression(ITypeSymbol type, SyntaxNode expression)
138public SyntaxNode TypeExpression(ITypeSymbol typeSymbol)
141public abstract SyntaxNode TypeExpression(ITypeSymbol typeSymbol, RefKind refKind);
143public abstract SyntaxNode BitwiseOrExpression(SyntaxNode left, SyntaxNode right);
145public SyntaxNode MemberAccessExpression(SyntaxNode? expression, SyntaxNode memberName)
151public abstract SyntaxNode MemberAccessExpressionWorker(SyntaxNode? expression, SyntaxNode memberName);
152public abstract SyntaxNode IdentifierName(string identifier);
154public abstract SyntaxNode ConvertExpression(SyntaxNode type, SyntaxNode expression);
155public SyntaxNode ConvertExpression(ITypeSymbol type, SyntaxNode expression)
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
229var currentNode = currentNodeOrToken.AsNode()!;
234var newRoot = root.ReplaceNode(nodeOrToken.AsNode()!, currentNode.WithAdditionalAnnotations(marker));
277using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var importDeclarations);
292var root = await model.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
294var unusedImports = new HashSet<SyntaxNode>();
303var newRoot = gen.RemoveNodes(root, unusedImports);
312protected abstract void GetUnusedNamespaceImports(SemanticModel model, HashSet<SyntaxNode> namespaceImports, CancellationToken cancellationToken);
Workspace\Solution\Solution.cs (5)
972/// document instance defined by its name and root <see cref="SyntaxNode"/>.
974public Solution AddDocument(DocumentId documentId, string name, SyntaxNode syntaxRoot, IEnumerable<string>? folders = null, string? filePath = null, bool isGenerated = false, PreservationMode preservationMode = PreservationMode.PreserveValue)
1374public Solution WithDocumentSyntaxRoot(DocumentId documentId, SyntaxNode root, PreservationMode mode = PreservationMode.PreserveValue)
1378internal Solution WithDocumentSyntaxRoots(ImmutableArray<(DocumentId documentId, SyntaxNode root)> syntaxRoots, PreservationMode mode = PreservationMode.PreserveValue)
1639=> WithCompilationState(CompilationState.WithFrozenSourceGeneratedDocuments(documents.SelectAsArray(d => (d.documentIdentity, d.generationDateTime, d.text, (SyntaxNode?)null))));
Workspace\Solution\SolutionCompilationState.cs (11)
800ImmutableArray<(SourceGeneratedDocumentIdentity, DateTime, SourceText, SyntaxNode?)>) GetOrdinaryAndSourceGeneratedDocuments()
806using var _2 = ArrayBuilder<(SourceGeneratedDocumentIdentity, DateTime, SourceText, SyntaxNode?)>.GetInstance(out var sourceGeneratedDocuments);
832ImmutableArray<(SourceGeneratedDocumentIdentity documentIdentity, DateTime generationDateTime, SourceText sourceText, SyntaxNode? syntaxNode)> sourceGeneratedDocuments,
987/// <inheritdoc cref="Solution.WithDocumentSyntaxRoots(ImmutableArray{ValueTuple{DocumentId, SyntaxNode}}, PreservationMode)"/>
991public SolutionCompilationState WithDocumentSyntaxRoots(ImmutableArray<(DocumentId documentId, SyntaxNode root)> syntaxRoots, PreservationMode mode)
995return UpdateDocumentsInMultipleProjects<DocumentState, SyntaxNode, PreservationMode>(
1004(ImmutableArray<(DocumentId, SyntaxNode)>,
1005ImmutableArray<(SourceGeneratedDocumentIdentity, DateTime, SourceText, SyntaxNode?)>) GetOrdinaryAndSourceGeneratedDocuments()
1010using var _1 = ArrayBuilder<(DocumentId, SyntaxNode)>.GetInstance(capacity: syntaxRoots.Length, out var ordinaryDocuments);
1011using var _2 = ArrayBuilder<(SourceGeneratedDocumentIdentity, DateTime, SourceText, SyntaxNode?)>.GetInstance(out var sourceGeneratedDocuments);
1389ImmutableArray<(SourceGeneratedDocumentIdentity documentIdentity, DateTime generationDateTime, SourceText sourceText, SyntaxNode? syntaxNode)> documents)