src\Analyzers\Core\Analyzers\AddAccessibilityModifiers\IAddAccessibilityModifiersService.cs (1)
19SyntaxNode member,
src\Analyzers\Core\Analyzers\RemoveUnnecessarySuppressions\AbstractRemoveUnnecessaryPragmaSuppressionsDiagnosticAnalyzer.cs (23)
49protected abstract bool ContainsPragmaDirective(SyntaxNode root);
127var root = tree.GetRoot(cancellationToken);
166using var _5 = PooledDictionary<string, List<SyntaxNode>>.GetInstance(out var idToSuppressMessageAttributesMap);
167using var _6 = PooledDictionary<SyntaxNode, bool>.GetInstance(out var suppressMessageAttributesToIsUsedMap);
210foreach (var attributeNode in attributeNodes)
226SyntaxNode root,
251foreach (var errorCodeNode in errorCodeNodes)
297SyntaxNode idNode,
391SyntaxNode root,
512PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
513PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
586PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
587PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
596var attributeNode = await attribute.ApplicationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
597foreach (var node in suppressMessageAttributesForId)
611PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
663PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
733SyntaxNode root,
736PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
737PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
749using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(discardLargeInstances: false, out var declarationNodes);
755foreach (var node in declarationNodes)
805var attributeNode = await attribute.ApplicationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
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 (27)
38where TPropertyDeclaration : SyntaxNode
39where TConstructorDeclaration : SyntaxNode
40where TFieldDeclaration : SyntaxNode
41where TVariableDeclarator : SyntaxNode
42where TExpression : SyntaxNode
49private static readonly ObjectPool<ConcurrentSet<SyntaxNode>> s_nodeSetPool = new(() => []);
51private static readonly ObjectPool<ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>>> s_fieldToUsageLocationPool = new(() => []);
58protected static void AddFieldUsage(ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites, IFieldSymbol field, SyntaxNode location)
61private static void ClearAndFree(ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> multiMap)
89protected abstract SyntaxNode GetFieldNode(TFieldDeclaration fieldDeclaration, TVariableDeclarator variableDeclarator);
94HashSet<string> fieldNames, ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> ineligibleFieldUsageIfOutsideProperty, SemanticModel semanticModel, SyntaxNode codeBlock, CancellationToken cancellationToken);
202var analysisRoot = context.GetAnalysisRoot(findInTrivia: false);
203foreach (var node in analysisRoot.DescendantNodes())
212if (!shouldAnalyze && analysisRoot.FirstAncestorOrSelf<SyntaxNode>(node => node is TPropertyDeclaration or TFieldDeclaration) == null)
222ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldReads,
223ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites,
225SyntaxNode codeBlock,
538ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> ineligibleFieldUsageIfOutsideProperty,
539ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldReads,
540ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites,
625static bool NotWithinProperty(IEnumerable<SyntaxNode> nodes, TPropertyDeclaration propertyDeclaration)
627foreach (var node in nodes)
636static IEnumerable<SyntaxNode> NonConstructorLocations(IEnumerable<SyntaxNode> nodes)
643var fieldNode = GetFieldNode(result.FieldDeclaration, variableDeclarator);
src\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 (127)
23public static SyntaxNode GetRequiredParent(this SyntaxNode node)
26public static IEnumerable<SyntaxNodeOrToken> DepthFirstTraversal(this SyntaxNode node)
29public static IEnumerable<SyntaxNode> DepthFirstTraversalNodes(this SyntaxNode node)
32public static IEnumerable<SyntaxNode> GetAncestors(this SyntaxNode node)
34var current = node.Parent;
44public static IEnumerable<TNode> GetAncestors<TNode>(this SyntaxNode node)
45where TNode : SyntaxNode
47var current = node.Parent;
59public static TNode? GetAncestor<TNode>(this SyntaxNode node)
60where TNode : SyntaxNode
62var current = node.Parent;
76public static TNode? GetAncestorOrThis<TNode>(this SyntaxNode? node)
77where TNode : SyntaxNode
82public static IEnumerable<TNode> GetAncestorsOrThis<TNode>(this SyntaxNode? node)
83where TNode : SyntaxNode
85var current = node;
97public static bool HasAncestor<TNode>(this SyntaxNode node)
98where TNode : SyntaxNode
104this SyntaxNode node, TextSpan searchSpan, Func<SyntaxNode, bool> predicate)
105where TSyntaxNode : SyntaxNode
109var nodes = new LinkedList<SyntaxNode>();
114var currentNode = nodes.First!.Value;
129public static bool CheckParent<T>([NotNullWhen(returnValue: true)] this SyntaxNode? node, Func<T, bool> valueChecker) where T : SyntaxNode
145public static bool IsChildNode<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
146where TParent : SyntaxNode
154var ancestorNode = childGetter(ancestor);
162public static bool IsFoundUnder<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
163where TParent : SyntaxNode
171var child = childGetter(ancestor);
174return node.GetAncestorsOrThis<SyntaxNode>().Contains(child);
177public static SyntaxNode GetCommonRoot(this SyntaxNode node1, SyntaxNode node2)
183using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var set);
184set.AddRange(node2.GetAncestorsOrThis<SyntaxNode>());
186foreach (var ancestor in node1.AncestorsAndSelf())
195public static int Width(this SyntaxNode node)
198public static int FullWidth(this SyntaxNode node)
201public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes, Func<SyntaxNode, bool> predicate)
204public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes)
214using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var commonAncestorsStack);
215using var _2 = PooledHashSet<SyntaxNode>.GetInstance(out var commonAncestorsSet);
218foreach (var node in nodes)
225foreach (var ancestor in node.ValueAncestorsAndSelf())
239var commonAncestor = FindCommonAncestor(node, commonAncestorsSet);
281static SyntaxNode? FindCommonAncestor(SyntaxNode node, HashSet<SyntaxNode> commonAncestorsSet)
283foreach (var ancestor in node.ValueAncestorsAndSelf())
293public static TSyntaxNode? FindInnermostCommonNode<TSyntaxNode>(this IEnumerable<SyntaxNode> nodes) where TSyntaxNode : SyntaxNode
296public static TextSpan GetContainedSpan(this IEnumerable<SyntaxNode> nodes)
302foreach (var node in nodes)
312public static bool OverlapsHiddenPosition(this SyntaxNode node, CancellationToken cancellationToken)
315public static bool OverlapsHiddenPosition(this SyntaxNode node, TextSpan span, CancellationToken cancellationToken)
318public static bool OverlapsHiddenPosition(this SyntaxNode declaration, SyntaxNode startNode, SyntaxNode endNode, CancellationToken cancellationToken)
327public static IEnumerable<T> GetAnnotatedNodes<T>(this SyntaxNode node, SyntaxAnnotation syntaxAnnotation) where T : SyntaxNode
341IEnumerable<SyntaxNode> nodes,
342Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>> computeReplacementAsync,
343CancellationToken cancellationToken) where TRootNode : SyntaxNode
365CancellationToken cancellationToken) where TRootNode : SyntaxNode
378CancellationToken cancellationToken) where TRoot : SyntaxNode
389IEnumerable<SyntaxNode>? nodes,
390Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>>? computeReplacementNodeAsync,
396where TRoot : SyntaxNode
403var nodeReplacements = new Dictionary<SyntaxNode, SyntaxNode>();
439if (nodesToReplace.TryGetValue(span, out var currentNode))
441var original = (SyntaxNode?)retryAnnotations.GetAnnotations(currentNode).SingleOrDefault() ?? currentNode;
442var newNode = await computeReplacementNodeAsync!(original, currentNode, cancellationToken).ConfigureAwait(false);
472if (rewritten != original || !nodeReplacements.TryGetValue(original, out var replaced))
598SyntaxNode root,
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)
27where TExpressionSyntax : SyntaxNode
30protected abstract bool IsSimpleNameGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
31protected abstract bool IsConstructorInitializerGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
32protected abstract bool IsImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
34protected abstract bool TryInitializeImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
35protected abstract bool TryInitializeSimpleNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
36protected abstract bool TryInitializeConstructorInitializerGeneration(SemanticDocument document, SyntaxNode constructorInitializer, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
37protected abstract bool TryInitializeSimpleAttributeNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
80public async Task<ImmutableArray<CodeAction>> GenerateConstructorAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
src\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 (14)
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)
98var classNodeToAddMembersTo = _classNode;
114var updatedClassNode = info.Service.AddMembers(
120var root = await _document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
121var newRoot = root.ReplaceNode(_classNode, updatedClassNode);
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)
33protected abstract bool TryInitializeState(Document document, SemanticModel model, SyntaxNode interfaceNode, CancellationToken cancellationToken,
34[NotNullWhen(true)] out SyntaxNode? classOrStructDecl,
39protected abstract SyntaxNode AddCommentInsideIfStatement(SyntaxNode ifDisposingStatement, SyntaxTriviaList trivia);
40protected abstract SyntaxNode CreateFinalizer(SyntaxGenerator generator, INamedTypeSymbol classType, string disposeMethodDisplayString);
43Document document, ImplementTypeOptions options, SyntaxNode node, CancellationToken cancellationToken)
62public async Task<ImplementInterfaceInfo?> AnalyzeAsync(Document document, SyntaxNode interfaceType, CancellationToken cancellationToken)
68protected TNode AddComment<TNode>(string comment, TNode node) where TNode : SyntaxNode
71protected TNode AddComments<TNode>(string comment1, string comment2, TNode node) where TNode : SyntaxNode
74protected 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 (21)
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);
180var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
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 (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 (35)
33public static SyntaxNode Negate(
36SyntaxNode expression,
43public static SyntaxNode Negate(
46SyntaxNode expressionOrPattern,
54public static SyntaxNode Negate(
57SyntaxNode expressionOrPattern,
138private static SyntaxNode GetNegationOfBinaryExpression(
139SyntaxNode expressionNode,
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,
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);
Binder\Binder.ValueChecks.cs (33)
699internal bool CheckValueKind(SyntaxNode node, BoundExpression expr, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
979bool checkArrayAccessValueKind(SyntaxNode node, BindValueKind valueKind, ImmutableArray<BoundExpression> indices, BindingDiagnosticBag diagnostics)
1001private static void ReportThisLvalueError(SyntaxNode node, BindValueKind valueKind, bool isValueType, bool isPrimaryConstructorParameter, BindingDiagnosticBag diagnostics)
1029private void CheckAddressOfInAsyncOrIteratorMethod(SyntaxNode node, BindValueKind valueKind, BindingDiagnosticBag diagnostics)
1044private bool CheckLocalValueKind(SyntaxNode node, BoundLocal local, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1089private bool CheckLocalRefEscape(SyntaxNode node, BoundLocal local, SafeContext escapeTo, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1134private bool CheckParameterValueKind(SyntaxNode node, BoundParameter parameter, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1197static void reportReadOnlyParameterError(ParameterSymbol parameterSymbol, SyntaxNode node, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1281private bool CheckParameterValEscape(SyntaxNode node, ParameterSymbol parameter, SafeContext escapeTo, BindingDiagnosticBag diagnostics)
1299private bool CheckParameterRefEscape(SyntaxNode node, BoundExpression parameter, ParameterSymbol parameterSymbol, SafeContext escapeTo, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1342private bool CheckFieldValueKind(SyntaxNode node, BoundFieldAccess fieldAccess, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1490private bool CheckSimpleAssignmentValueKind(SyntaxNode node, BoundAssignmentOperator assignment, BindValueKind valueKind, BindingDiagnosticBag diagnostics)
1528private bool CheckFieldRefEscape(SyntaxNode node, BoundFieldAccess fieldAccess, SafeContext escapeFrom, SafeContext escapeTo, BindingDiagnosticBag diagnostics)
1552private bool CheckFieldLikeEventRefEscape(SyntaxNode node, BoundEventAccess eventAccess, SafeContext escapeFrom, SafeContext escapeTo, BindingDiagnosticBag diagnostics)
1577SyntaxNode eventSyntax = GetEventName(boundEvent); //does not include receiver
1638private bool CheckIsValidReceiverForVariable(SyntaxNode node, BoundExpression receiver, BindValueKind kind, BindingDiagnosticBag diagnostics)
1666SyntaxNode callSyntaxOpt,
1667SyntaxNode node,
1709private bool CheckPropertyValueKind(SyntaxNode node, BoundExpression expr, BindValueKind valueKind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
1717SyntaxNode propertySyntax;
1932private bool IsBadBaseAccess(SyntaxNode node, BoundExpression receiverOpt, Symbol member, BindingDiagnosticBag diagnostics,
2195SyntaxNode syntax,
2223bool checkInvocationEscapeWithOldRules(SyntaxNode syntax, MethodInfo methodInfo,
2299SyntaxNode syntax,
2823SyntaxNode syntax,
2864SyntaxNode syntax,
2884bool checkInvocationArgMixingWithOldRules(SyntaxNode syntax, MethodInfo methodInfo,
2974SyntaxNode syntax,
3170private static void ReportReadonlyLocalError(SyntaxNode node, LocalSymbol local, BindValueKind kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3329private static void ReportReadOnlyFieldError(FieldSymbol field, SyntaxNode node, BindValueKind kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3365private static void ReportReadOnlyError(Symbol symbol, SyntaxNode node, BindValueKind kind, bool checkingReceiver, BindingDiagnosticBag diagnostics)
3731internal bool CheckRefEscape(SyntaxNode node, BoundExpression expr, SafeContext escapeFrom, SafeContext escapeTo, bool checkingReceiver, BindingDiagnosticBag diagnostics)
4824internal bool CheckValEscape(SyntaxNode node, BoundExpression expr, SafeContext escapeFrom, SafeContext escapeTo, bool checkingReceiver, BindingDiagnosticBag diagnostics)
Binder\Binder_Await.cs (10)
28private BoundAwaitExpression BindAwait(BoundExpression expression, SyntaxNode node, BindingDiagnosticBag diagnostics)
51internal BoundAwaitableInfo BindAwaitInfo(BoundAwaitableValuePlaceholder placeholder, SyntaxNode node, BindingDiagnosticBag diagnostics, ref bool hasErrors, BoundExpression? expressionOpt = null)
120var syntax = expression.Syntax;
245SyntaxNode node,
259SyntaxNode node,
295private static bool ValidateAwaitedExpression(BoundExpression expression, SyntaxNode node, BindingDiagnosticBag diagnostics)
323private bool GetGetAwaiterMethod(BoundExpression expression, SyntaxNode node, BindingDiagnosticBag diagnostics, [NotNullWhen(true)] out BoundExpression? getAwaiterCall)
368private bool GetIsCompletedProperty(TypeSymbol awaiterType, SyntaxNode node, TypeSymbol awaitedExpressionType, BindingDiagnosticBag diagnostics, [NotNullWhen(true)] out PropertySymbol? isCompletedProperty)
411private bool AwaiterImplementsINotifyCompletion(TypeSymbol awaiterType, SyntaxNode node, BindingDiagnosticBag diagnostics)
435private bool GetGetResultMethod(BoundExpression awaiterExpression, SyntaxNode node, TypeSymbol awaitedExpressionType, BindingDiagnosticBag diagnostics, out MethodSymbol? getResultMethod, [NotNullWhen(true)] out BoundExpression? getAwaiterGetResultCall)
Binder\Binder_Conversions.cs (43)
42SyntaxNode syntax,
54SyntaxNode syntax,
96SyntaxNode syntax,
300void reportUseSiteDiagnostics(SyntaxNode syntax, Conversion conversion, BoundExpression source, TypeSymbol destination, BindingDiagnosticBag diagnostics)
314void ensureAllUnderlyingConversionsChecked(SyntaxNode syntax, BoundExpression source, Conversion conversion, bool wasCompilerGenerated, TypeSymbol destination, BindingDiagnosticBag diagnostics)
407void checkConstraintLanguageVersionAndRuntimeSupportForConversion(SyntaxNode syntax, Conversion conversion, BoundExpression source, TypeSymbol destination, BindingDiagnosticBag diagnostics)
556static void reportUseSiteOrMissing(MethodSymbol? method, object containingType, string methodName, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
729private static void CheckInlineArrayTypeIsSupported(SyntaxNode syntax, TypeSymbol inlineArrayType, TypeSymbol elementType, BindingDiagnosticBag diagnostics)
742SyntaxNode syntax, BoundUnconvertedObjectCreationExpression node, Conversion conversion, bool isCast, TypeSymbol destination,
775SyntaxNode syntax, InitializerExpressionSyntax? initializerOpt, Binder binder,
828var syntax = node.Syntax;
992var expressionSyntax = element.Expression.Syntax;
1014private bool HasCollectionInitializerTypeInProgress(SyntaxNode syntax, TypeSymbol targetType)
1033SyntaxNode syntax,
1076internal BoundExpression BindCollectionExpressionConstructor(SyntaxNode syntax, TypeSymbol targetType, MethodSymbol? constructor, BindingDiagnosticBag diagnostics)
1106internal bool HasCollectionExpressionApplicableConstructor(SyntaxNode syntax, TypeSymbol targetType, out MethodSymbol? constructor, out bool isExpanded, BindingDiagnosticBag diagnostics, bool isParamsModifierValidation = false)
1175SyntaxNode node,
1207SyntaxNode typeNode,
1238internal bool HasCollectionExpressionApplicableAddMethod(SyntaxNode syntax, TypeSymbol targetType, out ImmutableArray<MethodSymbol> addMethods, BindingDiagnosticBag diagnostics)
1276SyntaxNode elementInitializer,
1294SyntaxNode node,
1334SyntaxNode node,
1335SyntaxNode expression,
1349SyntaxNode syntax,
1350SyntaxNode expression,
1456Binder addMethodBinder, SyntaxNode syntax, BoundMethodGroup methodGroup, AnalyzedArguments analyzedArguments, MethodGroupResolution resolution,
1561SyntaxNode node,
1562SyntaxNode expression,
1702internal bool TryGetCollectionIterationType(SyntaxNode syntax, TypeSymbol collectionType, out TypeWithAnnotations iterationType)
1729var syntax = node.Syntax;
2006SyntaxNode syntax,
2176private BoundExpression CreateFunctionTypeConversion(SyntaxNode syntax, BoundExpression source, Conversion conversion, bool isCast, ConversionGroup? conversionGroup, TypeSymbol destination, BindingDiagnosticBag diagnostics)
2224private BoundExpression CreateAnonymousFunctionConversion(SyntaxNode syntax, BoundExpression source, Conversion conversion, bool isCast, ConversionGroup? conversionGroup, TypeSymbol destination, BindingDiagnosticBag diagnostics)
2251private BoundExpression CreateMethodGroupConversion(SyntaxNode syntax, BoundExpression source, Conversion conversion, bool isCast, ConversionGroup? conversionGroup, TypeSymbol destination, BindingDiagnosticBag diagnostics)
2273private static void CheckParameterModifierMismatchMethodConversion(SyntaxNode syntax, MethodSymbol lambdaOrMethod, TypeSymbol targetType, bool invokedAsExtensionMethod, BindingDiagnosticBag diagnostics)
2409private BoundExpression CreateStackAllocConversion(SyntaxNode syntax, BoundExpression source, Conversion conversion, bool isCast, ConversionGroup? conversionGroup, TypeSymbol destination, BindingDiagnosticBag diagnostics)
2437private BoundExpression CreateTupleLiteralConversion(SyntaxNode syntax, BoundTupleLiteral sourceTuple, Conversion conversion, bool isCast, ConversionGroup? conversionGroup, TypeSymbol destination, BindingDiagnosticBag diagnostics)
2590private bool MemberGroupFinalValidation(BoundExpression? receiverOpt, MethodSymbol methodSymbol, SyntaxNode node, BindingDiagnosticBag diagnostics, bool invokedAsExtensionMethod)
2665private bool MemberGroupFinalValidationAccessibilityChecks(BoundExpression? receiverOpt, Symbol memberSymbol, SyntaxNode node, BindingDiagnosticBag diagnostics, bool invokedAsExtensionMethod)
2731SyntaxNode errorNode = node;
3005SyntaxNode syntax,
3102SyntaxNode syntax,
3204SyntaxNode syntax,
Binder\Binder_Deconstruct.cs (7)
244SyntaxNode syntax,
245SyntaxNode rightSyntax,
436internal DeconstructionVariable(BoundExpression variable, SyntaxNode syntax)
443internal DeconstructionVariable(ArrayBuilder<DeconstructionVariable> variables, SyntaxNode syntax)
614SyntaxNode rightSyntax,
715private BoundBadExpression MissingDeconstruct(BoundExpression receiver, SyntaxNode rightSyntax, int numParameters, BindingDiagnosticBag diagnostics,
853SyntaxNode syntax,
Binder\Binder_Expressions.cs (112)
111private BoundBadExpression BadExpression(SyntaxNode syntax)
119private BoundBadExpression BadExpression(SyntaxNode syntax, BoundExpression childNode)
127private BoundBadExpression BadExpression(SyntaxNode syntax, ImmutableArray<BoundExpression> childNodes)
135protected BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind lookupResultKind)
143protected BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind lookupResultKind, BoundExpression childNode)
151private BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol> symbols)
164private BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol> symbols, BoundExpression childNode)
177private BoundBadExpression BadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol> symbols, ImmutableArray<BoundExpression> childNodes, bool wasCompilerGenerated = false)
418var syntax = expr.Syntax;
460TryGetPrimaryConstructorParameterUsedAsValue(primaryConstructor, result) is (ParameterSymbol parameter, SyntaxNode syntax) &&
1206private static string InferTupleElementName(SyntaxNode syntax)
1507internal void ReportFieldContextualKeywordConflictIfAny(Symbol? symbol, SyntaxNode syntax, SyntaxToken identifier, BindingDiagnosticBag diagnostics)
2254var declarator = localSymbol.GetDeclaratorSyntax();
2290private BoundExpression SynthesizeReceiver(SyntaxNode node, Symbol member, BindingDiagnosticBag diagnostics)
2366private BoundExpression TryBindInteractiveReceiver(SyntaxNode syntax, NamedTypeSymbol memberDeclaringType)
2517private BoundThisReference ThisReference(SyntaxNode node, NamedTypeSymbol thisTypeOpt, bool hasErrors = false, bool wasCompilerGenerated = false)
2766SyntaxNode syntax,
2976private static NameSyntax GetNameSyntax(SyntaxNode syntax)
2989internal static NameSyntax GetNameSyntax(SyntaxNode syntax, out string nameString)
3292internal static void CheckRestrictedTypeInAsyncMethod(Symbol containingSymbol, TypeSymbol type, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
3307internal GlobalExpressionVariable LookupDeclaredField(SyntaxNode node, string identifier)
3423SyntaxNode node,
3571SyntaxNode node,
3833SyntaxNode placeholderSyntax;
4573private bool ReportBadStackAllocPosition(SyntaxNode node, BindingDiagnosticBag diagnostics)
4598private TypeSymbol GetStackAllocType(SyntaxNode node, TypeWithAnnotations elementTypeWithAnnotations, BindingDiagnosticBag diagnostics, out bool hasErrors)
4624static bool isStackallocTargetTyped(SyntaxNode node)
4628SyntaxNode equalsValueClause = node.Parent;
4635SyntaxNode variableDeclarator = equalsValueClause.Parent;
4642SyntaxNode variableDeclaration = variableDeclarator.Parent;
4655SyntaxNode node,
5035if (TryGetPrimaryConstructorParameterUsedAsValue(primaryConstructor, analyzedArguments.Argument(i)) is (ParameterSymbol parameter, SyntaxNode syntax))
5130private static (ParameterSymbol, SyntaxNode) TryGetPrimaryConstructorParameterUsedAsValue(SynthesizedPrimaryConstructor primaryConstructor, BoundExpression boundExpression)
5341private BoundExpression BindDelegateCreationExpression(SyntaxNode node, NamedTypeSymbol type, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax initializerOpt, bool wasTargetTyped, BindingDiagnosticBag diagnostics)
5548SyntaxNode node,
5589private BoundExpression MakeBadExpressionForObjectCreation(SyntaxNode node, TypeSymbol type, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax? initializerOpt, SyntaxNode? typeSyntax, BindingDiagnosticBag diagnostics, bool wasCompilerGenerated = false)
5610SyntaxNode typeSyntax,
5643SyntaxNode typeSyntax,
6114var memberInitializerSyntax = boundMemberInitializer.Syntax;
6147SyntaxNode creationSyntax,
6210private static void ReportMembersRequiringInitialization(SyntaxNode creationSyntax, ImmutableSegmentedDictionary<string, Symbol>.Builder requiredMembersBuilder, BindingDiagnosticBag diagnostics)
6411SyntaxNode elementInitializer,
6463SyntaxNode elementInitializer,
6665SyntaxNode node,
6667SyntaxNode typeNode,
6762SyntaxNode node,
6763SyntaxNode typeNode,
6847SyntaxNode node,
6848SyntaxNode typeNode,
6906private BoundObjectInitializerExpressionBase MakeBoundInitializerOpt(SyntaxNode typeNode, NamedTypeSymbol type, InitializerExpressionSyntax initializerSyntaxOpt, TypeSymbol initializerTypeOpt, BindingDiagnosticBag diagnostics)
6928private BoundExpression BindInterfaceCreationExpression(SyntaxNode node, NamedTypeSymbol type, BindingDiagnosticBag diagnostics, SyntaxNode typeNode, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax initializerOpt, bool wasTargetTyped)
6954private BoundExpression BindComImportCoClassCreationExpression(SyntaxNode node, NamedTypeSymbol interfaceType, NamedTypeSymbol coClassType, BindingDiagnosticBag diagnostics, SyntaxNode typeNode, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax initializerOpt, bool wasTargetTyped)
7036SyntaxNode node,
7040SyntaxNode typeNode,
7087private static bool TypeParameterHasParameterlessConstructor(SyntaxNode node, TypeParameterSymbol typeParameter, BindingDiagnosticBag diagnostics)
7099SyntaxNode node, TypeParameterSymbol typeParameter, AnalyzedArguments analyzedArguments, InitializerExpressionSyntax? initializerOpt,
7100SyntaxNode typeSyntax, bool wasTargetTyped, BindingDiagnosticBag diagnostics)
7940private void WarnOnAccessOfOffDefault(SyntaxNode node, BoundExpression boundLeft, BindingDiagnosticBag diagnostics)
8002internal BoundExpression? ResolveExtensionMemberAccessIfResultIsNonMethod(SyntaxNode syntax, BoundExpression receiver, string name,
8031private BoundExpression GetExtensionMemberAccess(SyntaxNode syntax, BoundExpression? receiver, Symbol extensionMember, BindingDiagnosticBag diagnostics)
8058SyntaxNode node,
8059SyntaxNode right,
8136ImmutableArray<TypeWithAnnotations> typeArgumentsWithAnnotations, LookupResult lookupResult, BoundMethodGroupFlags flags, SyntaxNode node,
8175var nameSyntax = node.NameSyntax;
8185SyntaxNode node,
8186SyntaxNode name,
8265var nameSyntax = node.NameSyntax;
8274SyntaxNode node,
8384SyntaxNode node,
8385SyntaxNode right,
8504SyntaxNode expression,
8586SyntaxNode expression,
8695SyntaxNode expression,
8817static MethodGroupResolution makeErrorResult(TypeSymbol receiverType, string memberName, int arity, LookupResult lookupResult, SyntaxNode expression, BindingDiagnosticBag diagnostics)
8838SyntaxNode node,
8890SyntaxNode node,
9050SyntaxNode node,
9070private void CheckReceiverAndRuntimeSupportForSymbolAccess(SyntaxNode node, BoundExpression receiverOpt, Symbol symbol, BindingDiagnosticBag diagnostics)
9130SyntaxNode node,
9176SyntaxNode node,
9226private Symbol GetSymbolOrMethodOrPropertyGroup(LookupResult result, SyntaxNode node, string plainName, int arity, ArrayBuilder<Symbol> methodOrPropertyGroup, BindingDiagnosticBag diagnostics, out bool wasError, NamespaceOrTypeSymbol qualifierOpt)
9585static void checkInlineArrayBounds(SyntaxNode location, int index, int end, bool excludeEnd, BindingDiagnosticBag diagnostics)
9595SyntaxNode location;
9605internal static int? InferConstantIndexFromSystemIndex(CSharpCompilation compilation, BoundExpression convertedIndex, int length, out SyntaxNode location)
9638private BoundExpression BadIndexerExpression(SyntaxNode node, BoundExpression expr, AnalyzedArguments analyzedArguments, DiagnosticInfo errorOpt, BindingDiagnosticBag diagnostics)
9650SyntaxNode node,
9684private BoundExpression BindArrayAccess(SyntaxNode node, BoundExpression expr, AnalyzedArguments arguments, BindingDiagnosticBag diagnostics)
9782var node = index.Syntax;
9834private BoundExpression TryImplicitConversionToArrayIndex(BoundExpression expr, WellKnownType wellKnownType, SyntaxNode node, BindingDiagnosticBag diagnostics)
9855private BoundExpression TryImplicitConversionToArrayIndex(BoundExpression expr, SpecialType specialType, SyntaxNode node, BindingDiagnosticBag diagnostics)
9872private BoundExpression TryImplicitConversionToArrayIndex(BoundExpression expr, TypeSymbol targetType, SyntaxNode node, BindingDiagnosticBag diagnostics)
9896private BoundExpression BindPointerElementAccess(SyntaxNode node, BoundExpression expr, AnalyzedArguments analyzedArguments, BindingDiagnosticBag diagnostics)
9957private BoundExpression BindIndexerAccess(SyntaxNode node, BoundExpression expr, AnalyzedArguments analyzedArguments, BindingDiagnosticBag diagnostics)
10029var syntax = propertyGroup.Syntax;
10057private BoundExpression BindIndexedPropertyAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<PropertySymbol> propertyGroup, AnalyzedArguments arguments, BindingDiagnosticBag diagnostics)
10071SyntaxNode syntax,
10115SyntaxNode syntax,
10155SyntaxNode syntax,
10262SyntaxNode syntax,
10347SyntaxNode syntax,
10380SyntaxNode syntax,
10485void makeCall(SyntaxNode syntax, BoundExpression receiver, MethodSymbol method,
10520SyntaxNode syntax,
10545SyntaxNode syntax,
10560bool tryLookupLengthOrCount(SyntaxNode syntax, string propertyName, [NotNullWhen(true)] out PropertySymbol? valid, BindingDiagnosticBag diagnostics)
10640SyntaxNode expression,
10672SyntaxNode expression,
11172SyntaxNode syntax,
11284Location location = null, SyntaxNode node = null)
Binder\Binder_InterpolatedString.cs (5)
339SyntaxNode syntax = unconvertedSource.Syntax;
370ImmutableArray<BoundExpression> makeInterpolatedStringFactoryArguments(SyntaxNode syntax, ImmutableArray<BoundExpression> parts, BindingDiagnosticBag diagnostics)
515private BoundBinaryOperator UpdateBinaryOperatorWithInterpolatedContents(BoundBinaryOperator originalOperator, ImmutableArray<ImmutableArray<BoundExpression>> appendCalls, InterpolatedStringHandlerData data, SyntaxNode rootSyntax, BindingDiagnosticBag diagnostics)
633SyntaxNode syntax,
817static void populateArguments(SyntaxNode syntax, ImmutableArray<BoundInterpolatedStringArgumentPlaceholder> additionalConstructorArguments, int baseStringLength, int numFormatHoles, NamedTypeSymbol intType, ArrayBuilder<BoundExpression> argumentsBuilder)
Binder\Binder_Invocation.cs (30)
78SyntaxNode node,
158private static void ReportMakeInvocationExpressionBadMemberKind(SyntaxNode node, string methodName, BoundExpression boundExpression, BindingDiagnosticBag diagnostics)
321SyntaxNode node,
322SyntaxNode expression,
393SyntaxNode node,
545SyntaxNode node,
623SyntaxNode node,
624SyntaxNode expression,
679private void ReportMemberNotSupportedByDynamicDispatch<TMember>(SyntaxNode syntax, MemberResolutionResult<TMember> candidate, BindingDiagnosticBag diagnostics)
692SyntaxNode syntax,
693SyntaxNode expression,
862private void ReportDynamicInvocationWarnings(SyntaxNode syntax, BoundMethodGroup methodGroup, BindingDiagnosticBag diagnostics, ImmutableArray<MemberResolutionResult<MethodSymbol>> finalApplicableCandidates)
872private bool IsAmbiguousDynamicParamsArgument<TMethodOrPropertySymbol>(ArrayBuilder<BoundExpression> arguments, MemberResolutionResult<TMethodOrPropertySymbol> candidate, out SyntaxNode argumentSyntax)
898SyntaxNode syntax,
932if (IsAmbiguousDynamicParamsArgument(resolution.AnalyzedArguments.Arguments, methodResolutionResult, out SyntaxNode argumentSyntax))
951SyntaxNode syntax,
952SyntaxNode expression,
987SyntaxNode syntax,
1116SyntaxNode node,
1117SyntaxNode expression,
1405private static SourceLocation GetCallerLocation(SyntaxNode syntax)
1420private BoundExpression GetDefaultParameterSpecialNoConversion(SyntaxNode syntax, ParameterSymbol parameter, BindingDiagnosticBag diagnostics)
1521SyntaxNode node,
1654BoundExpression bindDefaultArgument(SyntaxNode syntax, ParameterSymbol parameter, Symbol? containingMember, bool enableCallerInfo, BindingDiagnosticBag diagnostics, ArrayBuilder<BoundExpression> argumentsBuilder, int argumentsCount, ImmutableArray<int> argsToParamsOpt)
1773private BoundExpression CreateParamsCollection(SyntaxNode node, ParameterSymbol paramsParameter, ImmutableArray<BoundExpression> collectionArgs, BindingDiagnosticBag diagnostics)
1858private static Location GetLocationForOverloadResolutionDiagnostic(SyntaxNode node, SyntaxNode expression)
1969SyntaxNode node,
2248SyntaxNode node,
2437private BoundFunctionPointerInvocation BindFunctionPointerInvocation(SyntaxNode node, BoundExpression boundExpression, AnalyzedArguments analyzedArguments, BindingDiagnosticBag diagnostics)
Binder\Binder_Operators.cs (4)
2821private bool CheckConstraintLanguageVersionAndRuntimeSupportForOperator(SyntaxNode node, MethodSymbol? methodOpt, bool isUnsignedRightShift, TypeSymbol? constrainedToTypeOpt, BindingDiagnosticBag diagnostics)
4816private void ValidateRefConditionalOperator(SyntaxNode node, BoundExpression trueExpr, BoundExpression falseExpr, BindingDiagnosticBag diagnostics)
4875private void CheckNativeIntegerFeatureAvailability(BinaryOperatorKind operatorKind, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
4891private void CheckNativeIntegerFeatureAvailability(UnaryOperatorKind operatorKind, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
Binder\Binder_Patterns.cs (9)
46SyntaxNode node,
346private bool IsCountableAndIndexable(SyntaxNode node, TypeSymbol inputType, out PropertySymbol? lengthProperty)
354private bool BindLengthAndIndexerForListPattern(SyntaxNode node, TypeSymbol inputType, BindingDiagnosticBag diagnostics,
417SyntaxNode node,
722SyntaxNode typeSyntax,
896CheckRestrictedTypeInAsyncMethod(this.ContainingMemberOrLambda, declType.Type, diagnostics, typeSyntax ?? (SyntaxNode)designation);
1234SyntaxNode node,
1296private static FieldSymbol? CheckIsTupleElement(SyntaxNode node, NamedTypeSymbol tupleType, string name, int tupleIndex, BindingDiagnosticBag diagnostics)
1797TypeSymbol? leastSpecificType(SyntaxNode node, ArrayBuilder<TypeSymbol> candidates, BindingDiagnosticBag diagnostics)
Binder\Binder_Statements.cs (21)
756internal MethodSymbol TryFindDisposePatternMethod(BoundExpression expr, SyntaxNode syntaxNode, bool hasAwait, BindingDiagnosticBag diagnostics, out bool isExpanded)
1233SyntaxNode initializerSyntax = initializerOpt.Syntax;
1363SyntaxNode initializerSyntax = initializer.Syntax;
1474SyntaxNode node,
1543SyntaxNode node,
1637internal static PropertySymbol GetPropertySymbol(BoundExpression expr, out BoundExpression receiver, out SyntaxNode propertySyntax)
1690var syntax = expr.Syntax;
1736private static SyntaxNode GetEventName(BoundEventAccess expr)
1738SyntaxNode syntax = expr.Syntax;
2006private static Location GetAnonymousFunctionLocation(SyntaxNode node)
2014internal void GenerateAnonymousFunctionConversionError(BindingDiagnosticBag diagnostics, SyntaxNode syntax,
2247protected static void GenerateImplicitConversionError(BindingDiagnosticBag diagnostics, CSharpCompilation compilation, SyntaxNode syntax,
2317SyntaxNode syntax,
2462var nodeForError = syntax;
3143SyntaxNode syntax,
3390private void ReportCantConvertLambdaReturn(SyntaxNode syntax, BindingDiagnosticBag diagnostics)
3417private static Location GetLocationForDiagnostics(SyntaxNode node)
3434private static bool IsValidStatementExpression(SyntaxNode syntax, BoundExpression expression)
3553private static bool IsValidExpressionBody(SyntaxNode expressionSyntax, BoundExpression expression)
3799internal BoundExpressionStatement? BindImplicitConstructorInitializer(SyntaxNode ctorSyntax, BindingDiagnosticBag diagnostics)
4113SyntaxNode syntaxNode, BindingDiagnosticBag diagnostics, out MethodSymbol result, out bool isExpanded)
Binder\Binder_Symbols.cs (24)
192private NamespaceOrTypeOrAliasSymbolWithAnnotations BindTypeOrAliasOrKeyword(SyntaxToken identifier, SyntaxNode syntax, BindingDiagnosticBag diagnostics, out bool isKeyword)
1102private NamespaceOrTypeOrAliasSymbolWithAnnotations UnwrapAlias(in NamespaceOrTypeOrAliasSymbolWithAnnotations symbol, BindingDiagnosticBag diagnostics, SyntaxNode syntax, ConsList<TypeSymbol> basesBeingResolved = null)
1113private NamespaceOrTypeOrAliasSymbolWithAnnotations UnwrapAlias(in NamespaceOrTypeOrAliasSymbolWithAnnotations symbol, out AliasSymbol alias, BindingDiagnosticBag diagnostics, SyntaxNode syntax, ConsList<TypeSymbol> basesBeingResolved = null)
1124private Symbol UnwrapAlias(Symbol symbol, BindingDiagnosticBag diagnostics, SyntaxNode syntax, ConsList<TypeSymbol> basesBeingResolved = null)
1130private Symbol UnwrapAlias(Symbol symbol, out AliasSymbol alias, BindingDiagnosticBag diagnostics, SyntaxNode syntax, ConsList<TypeSymbol> basesBeingResolved = null)
1380private NamedTypeSymbol ConstructNamedTypeUnlessTypeArgumentOmitted(SyntaxNode typeSyntax, NamedTypeSymbol type, SeparatedSyntaxList<TypeSyntax> typeArgumentsSyntax, ImmutableArray<TypeWithAnnotations> typeArguments, BindingDiagnosticBag diagnostics)
1424SyntaxNode syntax,
1578SyntaxNode typeSyntax,
1657internal NamedTypeSymbol GetSpecialType(SpecialType typeId, BindingDiagnosticBag diagnostics, SyntaxNode node)
1662internal static NamedTypeSymbol GetSpecialType(CSharpCompilation compilation, SpecialType typeId, SyntaxNode node, BindingDiagnosticBag diagnostics)
1682internal Symbol GetSpecialTypeMember(SpecialMember member, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
1687internal static Symbol GetSpecialTypeMember(CSharpCompilation compilation, SpecialMember member, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
1695internal static bool TryGetSpecialTypeMember<TSymbol>(CSharpCompilation compilation, SpecialMember specialMember, SyntaxNode syntax, BindingDiagnosticBag diagnostics, out TSymbol symbol, bool isOptional = false)
1751internal static bool ReportUseSite(Symbol symbol, BindingDiagnosticBag diagnostics, SyntaxNode node)
1776internal NamedTypeSymbol GetWellKnownType(WellKnownType type, BindingDiagnosticBag diagnostics, SyntaxNode node)
1794internal static NamedTypeSymbol GetWellKnownType(CSharpCompilation compilation, WellKnownType type, BindingDiagnosticBag diagnostics, SyntaxNode node)
1819internal Symbol GetWellKnownTypeMember(WellKnownMember member, BindingDiagnosticBag diagnostics, Location location = null, SyntaxNode syntax = null, bool isOptional = false)
1828internal static Symbol GetWellKnownTypeMember(CSharpCompilation compilation, WellKnownMember member, BindingDiagnosticBag diagnostics, Location location = null, SyntaxNode syntax = null, bool isOptional = false)
1914SyntaxNode where,
1943SyntaxNode where,
2312SyntaxNode node = where;
2553private CSDiagnosticInfo NotFound(SyntaxNode where, string simpleName, int arity, string whereText, BindingDiagnosticBag diagnostics, string aliasOpt, NamespaceOrTypeSymbol qualifierOpt, LookupOptions options)
2746internal static bool CheckFeatureAvailability(SyntaxNode syntax, MessageID feature, BindingDiagnosticBag diagnostics, Location? location = null)
2755private static bool CheckFeatureAvailability(SyntaxNode syntax, MessageID feature, DiagnosticBag? diagnostics, Location? location = null)
Binder\DecisionDagBuilder.cs (19)
83SyntaxNode syntax,
99SyntaxNode syntax,
115SyntaxNode syntax,
128SyntaxNode syntax,
142SyntaxNode syntax,
167SyntaxNode syntax,
185SyntaxNode syntax,
324var syntax = pattern.Syntax;
432SyntaxNode syntax,
450SyntaxNode syntax,
540SyntaxNode syntax = pattern.Syntax;
561SyntaxNode syntax = pattern.Syntax;
737private BoundDecisionDag MakeBoundDecisionDag(SyntaxNode syntax, ref TemporaryArray<StateForCase> cases)
1033BoundDecisionDagNode finalState(SyntaxNode syntax, LabelSymbol label, ImmutableArray<BoundPatternBinding> bindings)
1246SyntaxNode syntax,
1410SyntaxNode syntax,
1988public readonly SyntaxNode Syntax;
1995SyntaxNode Syntax,
2146SyntaxNode syntax = test.Syntax;
Binder\ExecutableCodeBinder.cs (10)
28private readonly SyntaxNode _root;
29private readonly Action<Binder, SyntaxNode> _binderUpdatedHandler;
30private SmallDictionary<SyntaxNode, Binder> _lazyBinderMap;
32internal ExecutableCodeBinder(SyntaxNode root, Symbol memberSymbol, Binder next, Action<Binder, SyntaxNode> binderUpdatedHandler = null)
38internal ExecutableCodeBinder(SyntaxNode root, Symbol memberSymbol, Binder next, BinderFlags additionalFlags)
58internal override Binder GetBinder(SyntaxNode node)
66SmallDictionary<SyntaxNode, Binder> map;
83map = SmallDictionary<SyntaxNode, Binder>.Empty;
90private SmallDictionary<SyntaxNode, Binder> BinderMap
Binder\ExpressionVariableFinder.cs (10)
21private SyntaxNode _nodeToBind;
76SyntaxNode previousNodeToBind = _nodeToBind;
105SyntaxNode previousNodeToBind = _nodeToBind;
146SyntaxNode previousNodeToBind = _nodeToBind;
287protected abstract TFieldOrLocalSymbol MakePatternVariable(TypeSyntax type, SingleVariableDesignationSyntax designation, SyntaxNode nodeToBind);
532protected abstract TFieldOrLocalSymbol MakeDeclarationExpressionVariable(DeclarationExpressionSyntax node, SingleVariableDesignationSyntax designation, BaseArgumentListSyntax argumentListSyntax, SyntaxNode nodeToBind);
592protected override LocalSymbol MakePatternVariable(TypeSyntax type, SingleVariableDesignationSyntax designation, SyntaxNode nodeToBind)
618protected override LocalSymbol MakeDeclarationExpressionVariable(DeclarationExpressionSyntax node, SingleVariableDesignationSyntax designation, BaseArgumentListSyntax argumentListSyntaxOpt, SyntaxNode nodeToBind)
705protected override Symbol MakePatternVariable(TypeSyntax type, SingleVariableDesignationSyntax designation, SyntaxNode nodeToBind)
713protected override Symbol MakeDeclarationExpressionVariable(DeclarationExpressionSyntax node, SingleVariableDesignationSyntax designation, BaseArgumentListSyntax argumentListSyntaxOpt, SyntaxNode nodeToBind)
Binder\ForEachLoopBinder.cs (32)
47internal override ImmutableArray<LocalSymbol> GetDeclaredLocalsForScope(SyntaxNode scopeDesignator)
62internal override SyntaxNode ScopeDesignator
105SyntaxNode deconstructionStatement,
142SyntaxNode deconstructionStatement,
671SyntaxNode syntax,
672SyntaxNode collectionSyntax,
717SyntaxNode exprSyntax = collectionExpr.Syntax;
767SyntaxNode syntax,
768SyntaxNode collectionSyntax,
823private EnumeratorResult GetEnumeratorInfoCore(SyntaxNode syntax, SyntaxNode collectionSyntax, ref BoundExpression collectionExpr, bool isAsync, BindingDiagnosticBag diagnostics, out ForEachEnumeratorInfo.Builder builder)
925EnumeratorResult getEnumeratorInfo(SyntaxNode syntax, SyntaxNode collectionSyntax, ref BoundExpression collectionExpr, bool isAsync, BindingDiagnosticBag diagnostics, out ForEachEnumeratorInfo.Builder builder)
1067private EnumeratorResult SatisfiesIEnumerableInterfaces(SyntaxNode collectionSyntax, ref ForEachEnumeratorInfo.Builder builder, BoundExpression collectionExpr, bool isAsync, BindingDiagnosticBag diagnostics, TypeSymbol unwrappedCollectionExprType)
1079SyntaxNode errorLocationSyntax = collectionSyntax;
1210private void GetDisposalInfoForEnumerator(SyntaxNode syntax, ref ForEachEnumeratorInfo.Builder builder, BoundExpression expr, bool isAsync, BindingDiagnosticBag diagnostics)
1303private ForEachEnumeratorInfo.Builder GetDefaultEnumeratorInfo(SyntaxNode syntax, ForEachEnumeratorInfo.Builder builder, BindingDiagnosticBag diagnostics, TypeSymbol collectionExprType)
1348private bool SatisfiesGetEnumeratorPattern(SyntaxNode syntax, SyntaxNode collectionSyntax, ref ForEachEnumeratorInfo.Builder builder, BoundExpression collectionExpr, bool isAsync, bool viaExtensionMethod, BindingDiagnosticBag diagnostics)
1377private MethodArgumentInfo FindForEachPatternMethod(SyntaxNode syntax, SyntaxNode collectionSyntax, TypeSymbol patternType, string methodName, LookupResult lookupResult, bool warningsOnly, BindingDiagnosticBag diagnostics, bool isAsync)
1444private MethodArgumentInfo PerformForEachPatternOverloadResolution(SyntaxNode syntax, SyntaxNode collectionSyntax, TypeSymbol patternType, ArrayBuilder<MethodSymbol> candidateMethods, bool warningsOnly, BindingDiagnosticBag diagnostics, bool isAsync)
1522private MethodArgumentInfo FindForEachPatternMethodViaExtension(SyntaxNode syntax, SyntaxNode collectionSyntax, BoundExpression collectionExpr, string methodName, BindingDiagnosticBag diagnostics)
1639private bool SatisfiesForEachPattern(SyntaxNode syntax, SyntaxNode collectionSyntax, ref ForEachEnumeratorInfo.Builder builder, bool isAsync, BindingDiagnosticBag diagnostics)
1757private void ReportEnumerableWarning(SyntaxNode collectionSyntax, BindingDiagnosticBag diagnostics, TypeSymbol enumeratorType, Symbol patternMemberCandidate)
1797SyntaxNode collectionSyntax,
1905private void ReportPatternMemberLookupDiagnostics(SyntaxNode collectionSyntax, LookupResult lookupResult, TypeSymbol patternType, string memberName, bool warningsOnly, BindingDiagnosticBag diagnostics)
1943private MethodArgumentInfo GetParameterlessSpecialTypeMemberInfo(SpecialMember member, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
1953private MethodArgumentInfo BindDefaultArguments(MethodSymbol method, BoundExpression extensionReceiverOpt, bool expanded, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
BoundTree\Constructors.cs (46)
15SyntaxNode syntax,
25SyntaxNode syntax,
37SyntaxNode syntax,
87SyntaxNode syntax,
122SyntaxNode node,
168public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method)
173public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, BoundExpression arg0)
178public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, BoundExpression arg0, BoundExpression arg1)
183public static BoundCall Synthesized(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKindsOpt = default)
253public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, params BoundExpression[] arguments)
257public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<BoundExpression> arguments)
266SyntaxNode node,
291SyntaxNode syntax,
328public static BoundConversion SynthesizedNonUserDefined(SyntaxNode syntax, BoundExpression operand, Conversion conversion, TypeSymbol type, ConstantValue? constantValueOpt = null)
349SyntaxNode syntax,
375SyntaxNode syntax,
401SyntaxNode syntax,
424SyntaxNode syntax,
459public BoundParameter(SyntaxNode syntax, ParameterSymbol parameterSymbol, bool hasErrors = false)
464public BoundParameter(SyntaxNode syntax, ParameterSymbol parameterSymbol)
472public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, BoundTypeExpression? boundContainingTypeOpt, ImmutableArray<BoundExpression> boundDimensionsOpt, TypeWithAnnotations typeWithAnnotations, bool hasErrors = false)
478public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, BoundTypeExpression? boundContainingTypeOpt, TypeWithAnnotations typeWithAnnotations, bool hasErrors = false)
483public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, TypeWithAnnotations typeWithAnnotations, bool hasErrors = false)
488public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, TypeSymbol type, bool hasErrors = false)
493public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, ImmutableArray<BoundExpression> dimensionsOpt, TypeWithAnnotations typeWithAnnotations, bool hasErrors = false)
501public BoundNamespaceExpression(SyntaxNode syntax, NamespaceSymbol namespaceSymbol, bool hasErrors = false)
506public BoundNamespaceExpression(SyntaxNode syntax, NamespaceSymbol namespaceSymbol)
519public BoundAssignmentOperator(SyntaxNode syntax, BoundExpression left, BoundExpression right,
528public BoundBadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol?> symbols, ImmutableArray<BoundExpression> childBoundNodes, TypeSymbol type)
537public static BoundStatementList Synthesized(SyntaxNode syntax, params BoundStatement[] statements)
542public static BoundStatementList Synthesized(SyntaxNode syntax, bool hasErrors, params BoundStatement[] statements)
547public static BoundStatementList Synthesized(SyntaxNode syntax, ImmutableArray<BoundStatement> statements)
552public static BoundStatementList Synthesized(SyntaxNode syntax, bool hasErrors, ImmutableArray<BoundStatement> statements)
560public static BoundReturnStatement Synthesized(SyntaxNode syntax, RefKind refKind, BoundExpression expression, bool hasErrors = false)
568public static BoundYieldBreakStatement Synthesized(SyntaxNode syntax, bool hasErrors = false)
576public BoundGotoStatement(SyntaxNode syntax, LabelSymbol label, bool hasErrors = false)
584public BoundBlock(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
589public static BoundBlock SynthesizedNoLocals(SyntaxNode syntax, BoundStatement statement)
595public static BoundBlock SynthesizedNoLocals(SyntaxNode syntax, ImmutableArray<BoundStatement> statements)
600public static BoundBlock SynthesizedNoLocals(SyntaxNode syntax, params BoundStatement[] statements)
608public BoundDefaultExpression(SyntaxNode syntax, TypeSymbol type, bool hasErrors = false)
616public BoundTryStatement(SyntaxNode syntax, BoundBlock tryBlock, ImmutableArray<BoundCatchBlock> catchBlocks, BoundBlock? finallyBlockOpt, LabelSymbol? finallyLabelOpt = null)
624public BoundAddressOfOperator(SyntaxNode syntax, BoundExpression operand, TypeSymbol type, bool hasErrors = false)
632public BoundDagTemp(SyntaxNode syntax, TypeSymbol type, BoundDagEvaluation? source)
642public BoundCompoundAssignmentOperator(SyntaxNode syntax,
672SyntaxNode syntax,
BoundTree\UnboundLambda.cs (6)
24SyntaxNode Syntax { get; }
33SyntaxNode IBoundLambdaOrFunction.Syntax { get { return Syntax; } }
80SyntaxNode IBoundLambdaOrFunction.Syntax { get { return Syntax; } }
82public BoundLambda(SyntaxNode syntax, UnboundLambda unboundLambda, BoundBlock body, ReadOnlyBindingDiagnostic<AssemblySymbol> diagnostics, Binder binder, TypeSymbol? delegateType, InferredLambdaReturnType inferredReturnType)
420private UnboundLambda(SyntaxNode syntax, UnboundLambdaState state, FunctionTypeSymbol? functionType, bool withDependencies, NullableWalker.VariableState? nullableState, bool hasErrors) :
1523var syntax = UnboundLambda.Syntax;
CodeGen\EmitExpression.cs (14)
834var syntax = node.Syntax;
1431private void EmitLoadIndirect(TypeSymbol type, SyntaxNode syntaxNode)
3195private void EmitArrayElementStore(ArrayTypeSymbol arrayType, SyntaxNode syntaxNode)
3210private void EmitVectorElementStore(ArrayTypeSymbol arrayType, SyntaxNode syntaxNode)
3310private void EmitIndirectStore(TypeSymbol type, SyntaxNode syntaxNode)
3431private void EmitDefaultValue(TypeSymbol type, bool used, SyntaxNode syntaxNode)
3475private void EmitConstantExpression(TypeSymbol type, ConstantValue constantValue, bool used, SyntaxNode syntaxNode)
3494private void EmitInitObj(TypeSymbol type, bool used, SyntaxNode syntaxNode)
3576private void EmitHoistedVariableId(FieldSymbol field, SyntaxNode syntax)
3611private void EmitThrowIfModuleCancellationRequested(SyntaxNode syntax)
3631private void EmitModuleCancellationTokenLoad(SyntaxNode syntax)
3985private void EmitStaticCast(TypeSymbol to, SyntaxNode syntax)
4005private void EmitBox(TypeSymbol type, SyntaxNode syntaxNode)
4043private void EmitCallCleanup(SyntaxNode syntax, UseKind useKind, MethodSymbol method)
CodeGen\EmitStatement.cs (13)
1117var localSyntax = !declaringReferences.IsEmpty ? (CSharpSyntaxNode)declaringReferences[0].GetSyntax() : catchBlock.Syntax;
1344SyntaxNode syntaxNode,
1382void emitLengthDispatch(LengthBasedStringSwitchData lengthBasedSwitchInfo, LocalOrParameter keyTemp, LabelSymbol fallThroughLabel, SyntaxNode syntaxNode)
1419void emitCharDispatches(LengthBasedStringSwitchData lengthBasedSwitchInfo, LocalOrParameter keyTemp, LabelSymbol fallThroughLabel, SyntaxNode syntaxNode)
1460void emitFinalDispatches(LengthBasedStringSwitchData lengthBasedSwitchInfo, LocalOrParameter keyTemp, TypeSymbol keyType, LabelSymbol fallThroughLabel, SyntaxNode syntaxNode)
1489SyntaxNode syntaxNode,
1631private Cci.IMethodReference? GetLengthMethodRef(SyntaxNode syntaxNode, TypeSymbol keyType, bool isReadOnlySpan, bool isSpanOrReadOnlySpan)
1655private Microsoft.Cci.IMethodReference? GetIndexerRef(SyntaxNode syntaxNode, TypeSymbol keyType, bool isReadOnlySpan, bool isSpanOrReadOnlySpan)
1690private void EmitStringCompareAndBranch(LocalOrParameter key, SyntaxNode syntaxNode, ConstantValue stringConstant, object targetLabel, Microsoft.Cci.IReference stringEqualityMethodRef)
1728private void EmitCharCompareAndBranch(LocalOrParameter key, SyntaxNode syntaxNode, ConstantValue stringConstant, object targetLabel, Cci.IReference sequenceEqualsRef, Cci.IReference asSpanRef)
1763private LocalDefinition DefineLocal(LocalSymbol local, SyntaxNode syntaxNode)
1874var syntax = local.GetDeclaratorSyntax();
1907private LocalDefinition AllocateTemp(TypeSymbol type, SyntaxNode syntaxNode, LocalSlotConstraints slotConstraints = LocalSlotConstraints.None)
Compilation\CSharpSemanticModel.cs (35)
474protected override IOperation GetOperationCore(SyntaxNode node, CancellationToken cancellationToken)
1008public Conversion GetConversion(SyntaxNode expression, CancellationToken cancellationToken = default(CancellationToken))
1229internal abstract MemberSemanticModel GetMemberModel(SyntaxNode node);
1231internal bool IsInTree(SyntaxNode node)
1310protected int GetAdjustedNodePosition(SyntaxNode node)
1852var curr = token.Parent;
3982SyntaxNode parentSyntax = boundNodeForSyntacticParent.Syntax;
4949protected sealed override SyntaxNode RootCore => this.Root;
4951private SymbolInfo GetSymbolInfoFromNode(SyntaxNode node, CancellationToken cancellationToken)
4978private TypeInfo GetTypeInfoFromNode(SyntaxNode node, CancellationToken cancellationToken)
4999private ImmutableArray<ISymbol> GetMemberGroupFromNode(SyntaxNode node, CancellationToken cancellationToken)
5016protected sealed override ImmutableArray<ISymbol> GetMemberGroupCore(SyntaxNode node, CancellationToken cancellationToken)
5022protected sealed override SymbolInfo GetSpeculativeSymbolInfoCore(int position, SyntaxNode node, SpeculativeBindingOption bindingOption)
5041protected sealed override TypeInfo GetSpeculativeTypeInfoCore(int position, SyntaxNode node, SpeculativeBindingOption bindingOption)
5048protected sealed override IAliasSymbol GetSpeculativeAliasInfoCore(int position, SyntaxNode nameSyntax, SpeculativeBindingOption bindingOption)
5055protected sealed override SymbolInfo GetSymbolInfoCore(SyntaxNode node, CancellationToken cancellationToken)
5060protected sealed override TypeInfo GetTypeInfoCore(SyntaxNode node, CancellationToken cancellationToken)
5065protected sealed override IAliasSymbol GetAliasInfoCore(SyntaxNode node, CancellationToken cancellationToken)
5070protected sealed override PreprocessingSymbolInfo GetPreprocessingSymbolInfoCore(SyntaxNode node)
5077protected sealed override ISymbol GetDeclaredSymbolCore(SyntaxNode node, CancellationToken cancellationToken)
5165protected sealed override ImmutableArray<ISymbol> GetDeclaredSymbolsCore(SyntaxNode declaration, CancellationToken cancellationToken = default(CancellationToken))
5222internal InterceptableLocation GetInterceptableLocationInternal(SyntaxNode nameSyntax, CancellationToken cancellationToken)
5254internal override void ComputeDeclarationsInNode(SyntaxNode node, ISymbol associatedSymbol, bool getSymbol, ArrayBuilder<DeclarationInfo> builder, CancellationToken cancellationToken, int? levelsToCompute = null)
5259internal abstract override Func<SyntaxNode, bool> GetSyntaxNodesToAnalyzeFilter(SyntaxNode declaredNode, ISymbol declaredSymbol);
5260internal abstract override bool ShouldSkipSyntaxNodeAnalysis(SyntaxNode node, ISymbol containingSymbol);
5262protected internal override SyntaxNode GetTopmostNodeForDiagnosticAnalysis(ISymbol symbol, SyntaxNode declaringSyntax)
5305protected sealed override ControlFlowAnalysis AnalyzeControlFlowCore(SyntaxNode firstStatement, SyntaxNode lastStatement)
5330protected sealed override ControlFlowAnalysis AnalyzeControlFlowCore(SyntaxNode statement)
5345protected sealed override DataFlowAnalysis AnalyzeDataFlowCore(SyntaxNode firstStatement, SyntaxNode lastStatement)
5370protected sealed override DataFlowAnalysis AnalyzeDataFlowCore(SyntaxNode statementOrExpression)
5389protected sealed override Optional<object> GetConstantValueCore(SyntaxNode node, CancellationToken cancellationToken)
Compilation\MemberSemanticModel.cs (21)
32private readonly Dictionary<SyntaxNode, OneOrMany<BoundNode>> _guardedBoundNodeMap = new Dictionary<SyntaxNode, OneOrMany<BoundNode>>();
33private readonly Dictionary<SyntaxNode, IOperation> _guardedIOperationNodeMap = new Dictionary<SyntaxNode, IOperation>();
34private Dictionary<SyntaxNode, BoundStatement> _lazyGuardedSynthesizedStatementsMap;
145internal override MemberSemanticModel GetMemberModel(SyntaxNode node)
214private Binder GetEnclosingBinderInternalWithinRoot(SyntaxNode node, int position)
220private static Binder GetEnclosingBinderInternalWithinRoot(SyntaxNode node, int position, Binder rootBinder, SyntaxNode root)
234for (var current = node; binder == null; current = current.ParentOrStructuredTriviaParent)
1415_lazyGuardedSynthesizedStatementsMap = new Dictionary<SyntaxNode, BoundStatement>();
1473protected void UnguardedAddBoundTreeForStandaloneSyntax(SyntaxNode syntax, BoundNode bound, NullableWalker.SnapshotManager manager = null, ImmutableDictionary<Symbol, Symbol> remappedSymbols = null)
1481protected void GuardedAddBoundTreeForStandaloneSyntax(SyntaxNode syntax, BoundNode bound, NullableWalker.SnapshotManager manager = null, ImmutableDictionary<Symbol, Symbol> remappedSymbols = null)
1876private static SyntaxNode AdjustStartingNodeAccordingToNewRoot(SyntaxNode startingNode, SyntaxNode root)
1878SyntaxNode result = startingNode.Contains(root) ? root : startingNode;
2361internal sealed override Func<SyntaxNode, bool> GetSyntaxNodesToAnalyzeFilter(SyntaxNode declaredNode, ISymbol declaredSymbol)
2366internal sealed override bool ShouldSkipSyntaxNodeAnalysis(SyntaxNode node, ISymbol containingSymbol)
2405internal override Binder GetBinder(SyntaxNode node)
CSharpExtensions.cs (19)
42/// Determines if <see cref="SyntaxNode"/> is of a specified kind.
47public static bool IsKind([NotNullWhen(true)] this SyntaxNode? node, SyntaxKind kind)
63/// <inheritdoc cref="SyntaxNode.ContainsDirective"/>
64public static bool ContainsDirective(this SyntaxNode node, SyntaxKind kind)
84where TNode : SyntaxNode
93where TNode : SyntaxNode
105where TNode : SyntaxNode
114where TNode : SyntaxNode
205/// Returns <see cref="SyntaxKind"/> for <see cref="SyntaxNode"/> from <see cref="SyntaxNode.RawKind"/> property.
207public static SyntaxKind Kind(this SyntaxNode node)
214/// Returns <see cref="SyntaxKind"/> for <see cref="SyntaxNode"/> from <see cref="SyntaxNodeOrToken.RawKind"/> property.
322internal static Syntax.InternalSyntax.DirectiveStack ApplyDirectives(this SyntaxNode node, Syntax.InternalSyntax.DirectiveStack stack)
352internal static SeparatedSyntaxList<TOther> AsSeparatedList<TOther>(this SyntaxNodeOrTokenList list) where TOther : SyntaxNode
357var node = i.AsNode();
372internal static IList<DirectiveTriviaSyntax> GetDirectives(this SyntaxNode node, Func<DirectiveTriviaSyntax, bool>? filter = null)
380public static DirectiveTriviaSyntax? GetFirstDirective(this SyntaxNode node, Func<DirectiveTriviaSyntax, bool>? predicate = null)
388public static DirectiveTriviaSyntax? GetLastDirective(this SyntaxNode node, Func<DirectiveTriviaSyntax, bool>? predicate = null)
764public static Conversion GetConversion(this SemanticModel? semanticModel, SyntaxNode expression, CancellationToken cancellationToken = default(CancellationToken))
Emitter\Model\PEModuleBuilder.cs (24)
26internal abstract class PEModuleBuilder : PEModuleBuilder<CSharpCompilation, SourceModuleSymbol, AssemblySymbol, TypeSymbol, NamedTypeSymbol, MethodSymbol, SyntaxNode, NoPia.EmbeddedTypesManager, ModuleCompilationState>
814private NamedTypeSymbol GetUntranslatedSpecialType(SpecialType specialType, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
831internal sealed override Cci.INamedTypeReference GetSpecialType(SpecialType specialType, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
956SyntaxNode syntaxNodeOpt,
1077private void CheckTupleUnderlyingType(NamedTypeSymbol namedTypeSymbol, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
1137SyntaxNode syntaxNodeOpt,
1169SyntaxNode syntaxNodeOpt,
1210SyntaxNode syntaxNodeOpt,
1244SyntaxNode syntaxNodeOpt,
1436SyntaxNode syntaxNodeOpt,
1485protected override Cci.IMethodDefinition CreatePrivateImplementationDetailsStaticConstructor(SyntaxNode syntaxOpt, DiagnosticBag diagnostics)
1820internal MethodSymbol EnsureThrowSwitchExpressionExceptionExists(SyntaxNode syntaxNode, SyntheticBoundNodeFactory factory, DiagnosticBag diagnostics)
1833private MethodSymbol EnsurePrivateImplClassMethodExists<TArg>(SyntaxNode syntaxNode, string methodName, Func<SynthesizedPrivateImplementationDetailsType, TArg, MethodSymbol> createMethodSymbol, TArg arg, DiagnosticBag diagnostics)
1851internal new SynthesizedPrivateImplementationDetailsType GetPrivateImplClass(SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
1867internal MethodSymbol EnsureThrowSwitchExpressionExceptionParameterlessExists(SyntaxNode syntaxNode, SyntheticBoundNodeFactory factory, DiagnosticBag diagnostics)
1887internal MethodSymbol EnsureThrowInvalidOperationExceptionExists(SyntaxNode syntaxNode, SyntheticBoundNodeFactory factory, DiagnosticBag diagnostics)
1904internal MethodSymbol EnsureInlineArrayAsSpanExists(SyntaxNode syntaxNode, NamedTypeSymbol spanType, NamedTypeSymbol intType, DiagnosticBag diagnostics)
1921internal NamedTypeSymbol EnsureInlineArrayTypeExists(SyntaxNode syntaxNode, SyntheticBoundNodeFactory factory, int arrayLength, DiagnosticBag diagnostics)
1944internal NamedTypeSymbol EnsureReadOnlyListTypeExists(SyntaxNode syntaxNode, SynthesizedReadOnlyListKind kind, DiagnosticBag diagnostics)
1973internal MethodSymbol EnsureInlineArrayAsReadOnlySpanExists(SyntaxNode syntaxNode, NamedTypeSymbol spanType, NamedTypeSymbol intType, DiagnosticBag diagnostics)
1990internal MethodSymbol EnsureInlineArrayElementRefExists(SyntaxNode syntaxNode, NamedTypeSymbol intType, DiagnosticBag diagnostics)
2006internal MethodSymbol EnsureInlineArrayElementRefReadOnlyExists(SyntaxNode syntaxNode, NamedTypeSymbol intType, DiagnosticBag diagnostics)
2022internal MethodSymbol EnsureInlineArrayFirstElementRefExists(SyntaxNode syntaxNode, DiagnosticBag diagnostics)
2035internal MethodSymbol EnsureInlineArrayFirstElementRefReadOnlyExists(SyntaxNode syntaxNode, DiagnosticBag diagnostics)
Emitter\NoPia\EmbeddedTypesManager.cs (17)
32EmbeddedTypesManager<PEModuleBuilder, ModuleCompilationState, EmbeddedTypesManager, SyntaxNode, CSharpAttributeData,
54public NamedTypeSymbol GetSystemStringType(SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
81public MethodSymbol GetWellKnownMethod(WellKnownMember method, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
89private MethodSymbol LazyGetWellKnownTypeMethod(ref MethodSymbol lazyMethod, WellKnownMember member, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
123internal override CSharpAttributeData CreateSynthesizedAttribute(WellKnownMember constructor, ImmutableArray<TypedConstant> constructorArguments, ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
155internal override bool TryGetAttributeArguments(CSharpAttributeData attrData, out ImmutableArray<TypedConstant> constructorArguments, out ImmutableArray<KeyValuePair<string, TypedConstant>> namedArguments, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
252SyntaxNode syntaxNodeOpt,
328private static void ReportNotEmbeddableSymbol(ErrorCode error, Symbol symbol, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics, EmbeddedTypesManager optTypeManager)
337internal static void Error(DiagnosticBag diagnostics, ErrorCode code, SyntaxNode syntaxOpt, params object[] args)
342private static void Error(DiagnosticBag diagnostics, SyntaxNode syntaxOpt, DiagnosticInfo info)
350SyntaxNode syntaxNodeOpt,
367SyntaxNode syntaxNodeOpt,
433SyntaxNode syntaxNodeOpt,
469SyntaxNode syntaxNodeOpt,
530SyntaxNode syntaxNodeOpt,
564SyntaxNode syntaxNodeOpt,
603protected override EmbeddedType GetEmbeddedTypeForMember(SymbolAdapter member, SyntaxNode syntaxNodeOpt, DiagnosticBag diagnostics)
Errors\MessageProvider.cs (7)
260protected override void ReportInvalidAttributeArgument(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, int parameterIndex, AttributeData attribute)
266protected override void ReportInvalidNamedArgument(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, int namedArgumentIndex, ITypeSymbol attributeClass, string parameterName)
272protected override void ReportParameterNotValidForType(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, int namedArgumentIndex)
278protected override void ReportMarshalUnmanagedTypeNotValidForFields(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, int parameterIndex, string unmanagedTypeName, AttributeData attribute)
283protected override void ReportMarshalUnmanagedTypeOnlyValidForFields(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, int parameterIndex, string unmanagedTypeName, AttributeData attribute)
288protected override void ReportAttributeParameterRequired(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, string parameterName)
294protected override void ReportAttributeParameterRequired(DiagnosticBag diagnostics, SyntaxNode attributeSyntax, string parameterName1, string parameterName2)
FlowAnalysis\DefiniteAssignment.cs (8)
457protected virtual void ReportUnassignedOutParameter(ParameterSymbol parameter, SyntaxNode node, Location location)
1151protected void CheckAssigned(Symbol symbol, SyntaxNode node)
1170private void ReportUnassignedIfNotCapturedInLocalFunction(Symbol symbol, SyntaxNode node, int slot, bool skipIfUseBeforeDeclaration = true)
1187protected virtual void ReportUnassigned(Symbol symbol, SyntaxNode node, int slot, bool skipIfUseBeforeDeclaration)
1368protected virtual void CheckAssigned(BoundExpression expr, FieldSymbol fieldSymbol, SyntaxNode node)
1944protected override void LeaveParameters(ImmutableArray<ParameterSymbol> parameters, SyntaxNode syntax, Location location)
1955protected override void LeaveParameter(ParameterSymbol parameter, SyntaxNode syntax, Location location)
2602protected void CheckAssigned(BoundExpression expr, SyntaxNode node)
FlowAnalysis\NullableWalker.cs (24)
636void enforceMemberNotNull(SyntaxNode? syntaxOpt, LocalState state)
1054private void EnforceMemberNotNullOnMember(SyntaxNode? syntaxOpt, LocalState state, MethodSymbol method, string memberName)
1104void enforceMemberNotNullWhenIfAffected(SyntaxNode? syntaxOpt, bool sense, ImmutableArray<Symbol> members, LocalState state, LocalState otherState)
1116void enforceMemberNotNullWhen(SyntaxNode? syntaxOpt, bool sense, LocalState state)
1132private void ReportFailedMemberNotNullIfNeeded(SyntaxNode? syntaxOpt, bool sense, Symbol member, LocalState state)
1272private void EnforceParameterNotNullOnExit(SyntaxNode? syntaxOpt, LocalState state)
1318private void EnforceParameterNotNullWhenOnExit(SyntaxNode syntax, ImmutableArray<ParameterSymbol> parameters, bool sense, LocalState stateWhen)
1331private void ReportParameterIfBadConditionalState(SyntaxNode syntax, ParameterSymbol parameter, bool sense, LocalState stateWhen)
1378private void EnforceNotNullIfNotNull(SyntaxNode? syntaxOpt, LocalState state, ImmutableArray<ParameterSymbol> parameters, ImmutableHashSet<string> inputParamNames, NullableFlowState outputState, ParameterSymbol? outputParam)
1407private void EnforceDoesNotReturn(SyntaxNode? syntaxOpt)
1722internal static bool NeedsAnalysis(CSharpCompilation compilation, SyntaxNode syntaxNode)
1733SyntaxNode syntax,
2603private void ReportNullabilityMismatchInAssignment(SyntaxNode syntaxNode, object sourceType, object destinationType)
2670private void ReportDiagnostic(ErrorCode errorCode, SyntaxNode syntaxNode, params object[] arguments)
3492void enforceMemberNotNull(SyntaxNode? syntax, LocalState state)
3508SyntaxNode syntax,
6963var syntax = node.Syntax;
6972private static bool HasImplicitTypeArguments(SyntaxNode syntax)
7738private bool CheckDisallowedNullAssignment(TypeWithState state, FlowAnalysisAnnotations annotations, SyntaxNode node, BoundExpression? boundValueOpt = null)
8315private void CheckMethodConstraints(SyntaxNode syntax, MethodSymbol method)
8346private void CheckExtensionConstraints(SyntaxNode syntax, NamedTypeSymbol extension)
10158var syntax = group.Syntax;
11028private void ReportNullabilityMismatchInArgument(SyntaxNode argument, TypeSymbol argumentType, ParameterSymbol parameter, TypeSymbol parameterType, bool forOutput)
12254private bool ReportPossibleNullReceiverIfNeeded(TypeSymbol type, NullableFlowState state, bool checkNullableValueType, SyntaxNode syntax, out bool reportedDiagnostic)
Generated\BoundNodes.xml.Generated.cs (333)
278protected BoundInitializer(BoundKind kind, SyntaxNode syntax, bool hasErrors)
283protected BoundInitializer(BoundKind kind, SyntaxNode syntax)
292protected BoundEqualsValue(BoundKind kind, SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
309public BoundFieldEqualsValue(SyntaxNode syntax, FieldSymbol field, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
339public BoundPropertyEqualsValue(SyntaxNode syntax, PropertySymbol property, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
369public BoundParameterEqualsValue(SyntaxNode syntax, ParameterSymbol parameter, ImmutableArray<LocalSymbol> locals, BoundExpression value, bool hasErrors = false)
399public BoundGlobalStatementInitializer(SyntaxNode syntax, BoundStatement statement, bool hasErrors = false)
427protected BoundExpression(BoundKind kind, SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
433protected BoundExpression(BoundKind kind, SyntaxNode syntax, TypeSymbol? type)
444protected BoundValuePlaceholderBase(BoundKind kind, SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
449protected BoundValuePlaceholderBase(BoundKind kind, SyntaxNode syntax, TypeSymbol? type)
458protected BoundEarlyValuePlaceholderBase(BoundKind kind, SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
463protected BoundEarlyValuePlaceholderBase(BoundKind kind, SyntaxNode syntax, TypeSymbol? type)
472public BoundValuePlaceholder(SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
477public BoundValuePlaceholder(SyntaxNode syntax, TypeSymbol? type)
500public BoundCapturedReceiverPlaceholder(SyntaxNode syntax, BoundExpression receiver, SafeContext localScopeDepth, TypeSymbol? type, bool hasErrors = false)
530public BoundDeconstructValuePlaceholder(SyntaxNode syntax, Symbol? variableSymbol, bool isDiscardExpression, TypeSymbol type, bool hasErrors)
540public BoundDeconstructValuePlaceholder(SyntaxNode syntax, Symbol? variableSymbol, bool isDiscardExpression, TypeSymbol type)
571public BoundTupleOperandPlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
579public BoundTupleOperandPlaceholder(SyntaxNode syntax, TypeSymbol type)
606public BoundAwaitableValuePlaceholder(SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
611public BoundAwaitableValuePlaceholder(SyntaxNode syntax, TypeSymbol? type)
635public BoundDisposableValuePlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
643public BoundDisposableValuePlaceholder(SyntaxNode syntax, TypeSymbol type)
670public BoundObjectOrCollectionValuePlaceholder(SyntaxNode syntax, bool isNewInstance, TypeSymbol type, bool hasErrors)
679public BoundObjectOrCollectionValuePlaceholder(SyntaxNode syntax, bool isNewInstance, TypeSymbol type)
708public BoundImplicitIndexerValuePlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
716public BoundImplicitIndexerValuePlaceholder(SyntaxNode syntax, TypeSymbol type)
743public BoundImplicitIndexerReceiverPlaceholder(SyntaxNode syntax, bool isEquivalentToThisReference, TypeSymbol type, bool hasErrors)
752public BoundImplicitIndexerReceiverPlaceholder(SyntaxNode syntax, bool isEquivalentToThisReference, TypeSymbol type)
781public BoundListPatternReceiverPlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
789public BoundListPatternReceiverPlaceholder(SyntaxNode syntax, TypeSymbol type)
816public BoundListPatternIndexPlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
824public BoundListPatternIndexPlaceholder(SyntaxNode syntax, TypeSymbol type)
851public BoundSlicePatternReceiverPlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
859public BoundSlicePatternReceiverPlaceholder(SyntaxNode syntax, TypeSymbol type)
886public BoundSlicePatternRangePlaceholder(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
894public BoundSlicePatternRangePlaceholder(SyntaxNode syntax, TypeSymbol type)
921public BoundDup(SyntaxNode syntax, RefKind refKind, TypeSymbol? type, bool hasErrors)
927public BoundDup(SyntaxNode syntax, RefKind refKind, TypeSymbol? type)
952public BoundPassByCopy(SyntaxNode syntax, BoundExpression expression, TypeSymbol? type, bool hasErrors = false)
980public BoundBadExpression(SyntaxNode syntax, LookupResultKind resultKind, ImmutableArray<Symbol?> symbols, ImmutableArray<BoundExpression> childBoundNodes, TypeSymbol? type, bool hasErrors = false)
1013public BoundBadStatement(SyntaxNode syntax, ImmutableArray<BoundNode> childBoundNodes, bool hasErrors = false)
1041public BoundExtractedFinallyBlock(SyntaxNode syntax, BoundBlock finallyBlock, bool hasErrors = false)
1069public BoundTypeExpression(SyntaxNode syntax, AliasSymbol? aliasOpt, BoundTypeExpression? boundContainingTypeOpt, ImmutableArray<BoundExpression> boundDimensionsOpt, TypeWithAnnotations typeWithAnnotations, TypeSymbol type, bool hasErrors = false)
1104public BoundTypeOrValueExpression(SyntaxNode syntax, BoundTypeOrValueData data, TypeSymbol type, bool hasErrors)
1113public BoundTypeOrValueExpression(SyntaxNode syntax, BoundTypeOrValueData data, TypeSymbol type)
1142public BoundNamespaceExpression(SyntaxNode syntax, NamespaceSymbol namespaceSymbol, AliasSymbol? aliasOpt, bool hasErrors)
1152public BoundNamespaceExpression(SyntaxNode syntax, NamespaceSymbol namespaceSymbol, AliasSymbol? aliasOpt)
1183public BoundUnaryOperator(SyntaxNode syntax, UnaryOperatorKind operatorKind, BoundExpression operand, ConstantValue? constantValueOpt, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false)
1225public BoundIncrementOperator(SyntaxNode syntax, UnaryOperatorKind operatorKind, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol? constrainedToTypeOpt, BoundValuePlaceholder? operandPlaceholder, BoundExpression? operandConversion, BoundValuePlaceholder? resultPlaceholder, BoundExpression? resultConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false)
1273public BoundAddressOfOperator(SyntaxNode syntax, BoundExpression operand, bool isManaged, TypeSymbol type, bool hasErrors = false)
1305public BoundUnconvertedAddressOfOperator(SyntaxNode syntax, BoundMethodGroup operand, bool hasErrors = false)
1334public BoundFunctionPointerLoad(SyntaxNode syntax, MethodSymbol targetMethod, TypeSymbol? constrainedToTypeOpt, TypeSymbol type, bool hasErrors)
1345public BoundFunctionPointerLoad(SyntaxNode syntax, MethodSymbol targetMethod, TypeSymbol? constrainedToTypeOpt, TypeSymbol type)
1377public BoundPointerIndirectionOperator(SyntaxNode syntax, BoundExpression operand, bool refersToLocation, TypeSymbol type, bool hasErrors = false)
1409public BoundPointerElementAccess(SyntaxNode syntax, BoundExpression expression, BoundExpression index, bool @checked, bool refersToLocation, TypeSymbol type, bool hasErrors = false)
1446public BoundFunctionPointerInvocation(SyntaxNode syntax, BoundExpression invokedExpression, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKindsOpt, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
1483public BoundRefTypeOperator(SyntaxNode syntax, BoundExpression operand, MethodSymbol? getTypeFromHandle, TypeSymbol type, bool hasErrors = false)
1515public BoundMakeRefOperator(SyntaxNode syntax, BoundExpression operand, TypeSymbol type, bool hasErrors = false)
1545public BoundRefValueOperator(SyntaxNode syntax, NullableAnnotation nullableAnnotation, BoundExpression operand, TypeSymbol type, bool hasErrors = false)
1577public BoundFromEndIndexExpression(SyntaxNode syntax, BoundExpression operand, MethodSymbol? methodOpt, TypeSymbol type, bool hasErrors = false)
1609public BoundRangeExpression(SyntaxNode syntax, BoundExpression? leftOperandOpt, BoundExpression? rightOperandOpt, MethodSymbol? methodOpt, TypeSymbol type, bool hasErrors = false)
1642protected BoundBinaryOperatorBase(BoundKind kind, SyntaxNode syntax, BoundExpression left, BoundExpression right, TypeSymbol type, bool hasErrors = false)
1661public BoundBinaryOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundBinaryOperator.UncommonData? data, LookupResultKind resultKind, BoundExpression left, BoundExpression right, TypeSymbol type, bool hasErrors = false)
1695public BoundTupleBinaryOperator(SyntaxNode syntax, BoundExpression left, BoundExpression right, BinaryOperatorKind operatorKind, TupleBinaryOperatorInfo.Multiple operators, TypeSymbol type, bool hasErrors = false)
1733public BoundUserDefinedConditionalLogicalOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, MethodSymbol logicalOperator, MethodSymbol trueOperator, MethodSymbol falseOperator, BoundValuePlaceholder? trueFalseOperandPlaceholder, BoundExpression? trueFalseOperandConversion, TypeSymbol? constrainedToTypeOpt, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, BoundExpression left, BoundExpression right, TypeSymbol type, bool hasErrors = false)
1782public BoundCompoundAssignmentOperator(SyntaxNode syntax, BinaryOperatorSignature @operator, BoundExpression left, BoundExpression right, BoundValuePlaceholder? leftPlaceholder, BoundExpression? leftConversion, BoundValuePlaceholder? finalPlaceholder, BoundExpression? finalConversion, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalUserDefinedOperatorsOpt, TypeSymbol type, bool hasErrors = false)
1829public BoundAssignmentOperator(SyntaxNode syntax, BoundExpression left, BoundExpression right, bool isRef, TypeSymbol type, bool hasErrors = false)
1863public BoundDeconstructionAssignmentOperator(SyntaxNode syntax, BoundTupleExpression left, BoundConversion right, bool isUsed, TypeSymbol type, bool hasErrors = false)
1898public BoundNullCoalescingOperator(SyntaxNode syntax, BoundExpression leftOperand, BoundExpression rightOperand, BoundValuePlaceholder? leftPlaceholder, BoundExpression? leftConversion, BoundNullCoalescingOperatorResultKind operatorResultKind, bool @checked, TypeSymbol type, bool hasErrors = false)
1939public BoundNullCoalescingAssignmentOperator(SyntaxNode syntax, BoundExpression leftOperand, BoundExpression rightOperand, TypeSymbol? type, bool hasErrors = false)
1970public BoundUnconvertedConditionalOperator(SyntaxNode syntax, BoundExpression condition, BoundExpression consequence, BoundExpression alternative, ConstantValue? constantValueOpt, ErrorCode noCommonTypeError, bool hasErrors = false)
2009public BoundConditionalOperator(SyntaxNode syntax, bool isRef, BoundExpression condition, BoundExpression consequence, BoundExpression alternative, ConstantValue? constantValueOpt, TypeSymbol? naturalTypeOpt, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
2053public BoundArrayAccess(SyntaxNode syntax, BoundExpression expression, ImmutableArray<BoundExpression> indices, TypeSymbol type, bool hasErrors = false)
2086public BoundRefArrayAccess(SyntaxNode syntax, BoundArrayAccess arrayAccess, bool hasErrors = false)
2115public BoundArrayLength(SyntaxNode syntax, BoundExpression expression, TypeSymbol type, bool hasErrors = false)
2145public BoundAwaitableInfo(SyntaxNode syntax, BoundAwaitableValuePlaceholder? awaitableInstancePlaceholder, bool isDynamic, BoundExpression? getAwaiter, PropertySymbol? isCompleted, MethodSymbol? getResult, bool hasErrors = false)
2178public BoundAwaitExpression(SyntaxNode syntax, BoundExpression expression, BoundAwaitableInfo awaitableInfo, BoundAwaitExpressionDebugInfo debugInfo, TypeSymbol type, bool hasErrors = false)
2213protected BoundTypeOf(BoundKind kind, SyntaxNode syntax, MethodSymbol? getTypeFromHandle, TypeSymbol type, bool hasErrors)
2222protected BoundTypeOf(BoundKind kind, SyntaxNode syntax, MethodSymbol? getTypeFromHandle, TypeSymbol type)
2237public BoundTypeOfOperator(SyntaxNode syntax, BoundTypeExpression sourceType, MethodSymbol? getTypeFromHandle, TypeSymbol type, bool hasErrors = false)
2266public BoundBlockInstrumentation(SyntaxNode syntax, OneOrMany<LocalSymbol> locals, BoundStatement? prologue, BoundStatement? epilogue, bool hasErrors = false)
2298public BoundMethodDefIndex(SyntaxNode syntax, MethodSymbol method, TypeSymbol type, bool hasErrors)
2308public BoundMethodDefIndex(SyntaxNode syntax, MethodSymbol method, TypeSymbol type)
2338public BoundLocalId(SyntaxNode syntax, LocalSymbol local, FieldSymbol? hoistedField, TypeSymbol type, bool hasErrors)
2349public BoundLocalId(SyntaxNode syntax, LocalSymbol local, FieldSymbol? hoistedField, TypeSymbol type)
2381public BoundParameterId(SyntaxNode syntax, ParameterSymbol parameter, FieldSymbol? hoistedField, TypeSymbol type, bool hasErrors)
2392public BoundParameterId(SyntaxNode syntax, ParameterSymbol parameter, FieldSymbol? hoistedField, TypeSymbol type)
2424public BoundStateMachineInstanceId(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
2432public BoundStateMachineInstanceId(SyntaxNode syntax, TypeSymbol type)
2459public BoundMaximumMethodDefIndex(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
2467public BoundMaximumMethodDefIndex(SyntaxNode syntax, TypeSymbol type)
2494public BoundInstrumentationPayloadRoot(SyntaxNode syntax, int analysisKind, TypeSymbol type, bool hasErrors)
2503public BoundInstrumentationPayloadRoot(SyntaxNode syntax, int analysisKind, TypeSymbol type)
2532public BoundThrowIfModuleCancellationRequested(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
2540public BoundThrowIfModuleCancellationRequested(SyntaxNode syntax, TypeSymbol type)
2567public ModuleCancellationTokenExpression(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
2575public ModuleCancellationTokenExpression(SyntaxNode syntax, TypeSymbol type)
2602public BoundModuleVersionId(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
2610public BoundModuleVersionId(SyntaxNode syntax, TypeSymbol type)
2637public BoundModuleVersionIdString(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
2645public BoundModuleVersionIdString(SyntaxNode syntax, TypeSymbol type)
2672public BoundSourceDocumentIndex(SyntaxNode syntax, Cci.DebugSourceDocument document, TypeSymbol type, bool hasErrors)
2682public BoundSourceDocumentIndex(SyntaxNode syntax, Cci.DebugSourceDocument document, TypeSymbol type)
2712public BoundMethodInfo(SyntaxNode syntax, MethodSymbol method, MethodSymbol? getMethodFromHandle, TypeSymbol type, bool hasErrors)
2723public BoundMethodInfo(SyntaxNode syntax, MethodSymbol method, MethodSymbol? getMethodFromHandle, TypeSymbol type)
2755public BoundFieldInfo(SyntaxNode syntax, FieldSymbol field, MethodSymbol? getFieldFromHandle, TypeSymbol type, bool hasErrors)
2766public BoundFieldInfo(SyntaxNode syntax, FieldSymbol field, MethodSymbol? getFieldFromHandle, TypeSymbol type)
2798public BoundDefaultLiteral(SyntaxNode syntax, bool hasErrors)
2803public BoundDefaultLiteral(SyntaxNode syntax)
2821public BoundDefaultExpression(SyntaxNode syntax, BoundTypeExpression? targetType, ConstantValue? constantValueOpt, TypeSymbol type, bool hasErrors = false)
2852public BoundIsOperator(SyntaxNode syntax, BoundExpression operand, BoundTypeExpression targetType, ConversionKind conversionKind, TypeSymbol type, bool hasErrors = false)
2887public BoundAsOperator(SyntaxNode syntax, BoundExpression operand, BoundTypeExpression targetType, BoundValuePlaceholder? operandPlaceholder, BoundExpression? operandConversion, TypeSymbol type, bool hasErrors = false)
2924public BoundSizeOfOperator(SyntaxNode syntax, BoundTypeExpression sourceType, ConstantValue? constantValueOpt, TypeSymbol type, bool hasErrors = false)
2956public BoundConversion(SyntaxNode syntax, BoundExpression operand, Conversion conversion, bool isBaseConversion, bool @checked, bool explicitCastInCode, ConstantValue? constantValueOpt, ConversionGroup? conversionGroupOpt, TypeSymbol type, bool hasErrors = false)
2998public BoundReadOnlySpanFromArray(SyntaxNode syntax, BoundExpression operand, MethodSymbol conversionMethod, TypeSymbol type, bool hasErrors = false)
3031public BoundArgList(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
3039public BoundArgList(SyntaxNode syntax, TypeSymbol type)
3066public BoundArgListOperator(SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<RefKind> argumentRefKindsOpt, TypeSymbol? type, bool hasErrors = false)
3097public BoundFixedLocalCollectionInitializer(SyntaxNode syntax, TypeSymbol elementPointerType, BoundValuePlaceholder? elementPointerPlaceholder, BoundExpression? elementPointerConversion, BoundExpression expression, MethodSymbol? getPinnableOpt, TypeSymbol type, bool hasErrors = false)
3136protected BoundStatement(BoundKind kind, SyntaxNode syntax, bool hasErrors)
3141protected BoundStatement(BoundKind kind, SyntaxNode syntax)
3150public BoundSequencePoint(SyntaxNode syntax, BoundStatement? statementOpt, bool hasErrors = false)
3175public BoundSequencePointWithSpan(SyntaxNode syntax, BoundStatement? statementOpt, TextSpan span, bool hasErrors = false)
3202public BoundSavePreviousSequencePoint(SyntaxNode syntax, object identifier, bool hasErrors)
3211public BoundSavePreviousSequencePoint(SyntaxNode syntax, object identifier)
3239public BoundRestorePreviousSequencePoint(SyntaxNode syntax, object identifier, bool hasErrors)
3248public BoundRestorePreviousSequencePoint(SyntaxNode syntax, object identifier)
3276public BoundStepThroughSequencePoint(SyntaxNode syntax, TextSpan span, bool hasErrors)
3282public BoundStepThroughSequencePoint(SyntaxNode syntax, TextSpan span)
3307public BoundBlock(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<MethodSymbol> localFunctions, bool hasUnsafeModifier, BoundBlockInstrumentation? instrumentation, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
3343public BoundScope(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
3372public BoundStateMachineScope(SyntaxNode syntax, ImmutableArray<StateMachineFieldSymbol> fields, BoundStatement statement, bool hasErrors = false)
3403public BoundLocalDeclaration(SyntaxNode syntax, LocalSymbol localSymbol, BoundTypeExpression? declaredTypeOpt, BoundExpression? initializerOpt, ImmutableArray<BoundExpression> argumentsOpt, bool inferredType, bool hasErrors = false)
3439protected BoundMultipleLocalDeclarationsBase(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundLocalDeclaration> localDeclarations, bool hasErrors = false)
3453public BoundMultipleLocalDeclarations(SyntaxNode syntax, ImmutableArray<BoundLocalDeclaration> localDeclarations, bool hasErrors = false)
3479public BoundUsingLocalDeclarations(SyntaxNode syntax, MethodArgumentInfo? patternDisposeInfoOpt, BoundAwaitableInfo? awaitOpt, ImmutableArray<BoundLocalDeclaration> localDeclarations, bool hasErrors = false)
3509public BoundLocalFunctionStatement(SyntaxNode syntax, MethodSymbol symbol, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
3541public BoundNoOpStatement(SyntaxNode syntax, NoOpStatementFlavor flavor, bool hasErrors)
3547public BoundNoOpStatement(SyntaxNode syntax, NoOpStatementFlavor flavor)
3572public BoundReturnStatement(SyntaxNode syntax, RefKind refKind, BoundExpression? expressionOpt, bool @checked, bool hasErrors = false)
3601public BoundYieldReturnStatement(SyntaxNode syntax, BoundExpression expression, bool hasErrors = false)
3629public BoundYieldBreakStatement(SyntaxNode syntax, bool hasErrors)
3634public BoundYieldBreakStatement(SyntaxNode syntax)
3646public BoundThrowStatement(SyntaxNode syntax, BoundExpression? expressionOpt, bool hasErrors = false)
3671public BoundExpressionStatement(SyntaxNode syntax, BoundExpression expression, bool hasErrors = false)
3699public BoundBreakStatement(SyntaxNode syntax, LabelSymbol label, bool hasErrors)
3708public BoundBreakStatement(SyntaxNode syntax, LabelSymbol label)
3736public BoundContinueStatement(SyntaxNode syntax, LabelSymbol label, bool hasErrors)
3745public BoundContinueStatement(SyntaxNode syntax, LabelSymbol label)
3773public BoundSwitchStatement(SyntaxNode syntax, BoundExpression expression, ImmutableArray<LocalSymbol> innerLocals, ImmutableArray<MethodSymbol> innerLocalFunctions, ImmutableArray<BoundSwitchSection> switchSections, BoundDecisionDag reachabilityDecisionDag, BoundSwitchLabel? defaultLabel, LabelSymbol breakLabel, bool hasErrors = false)
3818public BoundSwitchDispatch(SyntaxNode syntax, BoundExpression expression, ImmutableArray<(ConstantValue value, LabelSymbol label)> cases, LabelSymbol defaultLabel, LengthBasedStringSwitchData? lengthBasedStringSwitchDataOpt, bool hasErrors = false)
3854public BoundIfStatement(SyntaxNode syntax, BoundExpression condition, BoundStatement consequence, BoundStatement? alternativeOpt, bool hasErrors = false)
3887protected BoundLoopStatement(BoundKind kind, SyntaxNode syntax, LabelSymbol breakLabel, LabelSymbol continueLabel, bool hasErrors)
3898protected BoundLoopStatement(BoundKind kind, SyntaxNode syntax, LabelSymbol breakLabel, LabelSymbol continueLabel)
3915protected BoundConditionalLoopStatement(BoundKind kind, SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression condition, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel, bool hasErrors = false)
3937public BoundDoStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression condition, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel, bool hasErrors = false)
3967public BoundWhileStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression condition, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel, bool hasErrors = false)
3997public BoundForStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> outerLocals, BoundStatement? initializer, ImmutableArray<LocalSymbol> innerLocals, BoundExpression? condition, BoundStatement? increment, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel, bool hasErrors = false)
4039public BoundForEachStatement(SyntaxNode syntax, ForEachEnumeratorInfo? enumeratorInfoOpt, BoundValuePlaceholder? elementPlaceholder, BoundExpression? elementConversion, BoundTypeExpression iterationVariableType, ImmutableArray<LocalSymbol> iterationVariables, BoundExpression? iterationErrorExpressionOpt, BoundExpression expression, BoundForEachDeconstructStep? deconstructionOpt, BoundAwaitableInfo? awaitOpt, BoundStatement body, LabelSymbol breakLabel, LabelSymbol continueLabel, bool hasErrors = false)
4090public BoundForEachDeconstructStep(SyntaxNode syntax, BoundDeconstructionAssignmentOperator deconstructionAssignment, BoundDeconstructValuePlaceholder targetPlaceholder, bool hasErrors = false)
4121public BoundUsingStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundMultipleLocalDeclarations? declarationsOpt, BoundExpression? expressionOpt, BoundStatement body, BoundAwaitableInfo? awaitOpt, MethodArgumentInfo? patternDisposeInfoOpt, bool hasErrors = false)
4160public BoundFixedStatement(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundMultipleLocalDeclarations declarations, BoundStatement body, bool hasErrors = false)
4194public BoundLockStatement(SyntaxNode syntax, BoundExpression argument, BoundStatement body, bool hasErrors = false)
4225public BoundTryStatement(SyntaxNode syntax, BoundBlock tryBlock, ImmutableArray<BoundCatchBlock> catchBlocks, BoundBlock? finallyBlockOpt, LabelSymbol? finallyLabelOpt, bool preferFaultHandler, bool hasErrors = false)
4262public BoundCatchBlock(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundExpression? exceptionSourceOpt, TypeSymbol? exceptionTypeOpt, BoundStatementList? exceptionFilterPrologueOpt, BoundExpression? exceptionFilterOpt, BoundBlock body, bool isSynthesizedAsyncCatchAll, bool hasErrors = false)
4303public BoundLiteral(SyntaxNode syntax, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors)
4309public BoundLiteral(SyntaxNode syntax, ConstantValue? constantValueOpt, TypeSymbol? type)
4334public BoundUtf8String(SyntaxNode syntax, string value, TypeSymbol type, bool hasErrors)
4344public BoundUtf8String(SyntaxNode syntax, string value, TypeSymbol type)
4374public BoundThisReference(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
4382public BoundThisReference(SyntaxNode syntax, TypeSymbol type)
4409public BoundPreviousSubmissionReference(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
4417public BoundPreviousSubmissionReference(SyntaxNode syntax, TypeSymbol type)
4444public BoundHostObjectMemberReference(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
4452public BoundHostObjectMemberReference(SyntaxNode syntax, TypeSymbol type)
4479public BoundBaseReference(SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
4484public BoundBaseReference(SyntaxNode syntax, TypeSymbol? type)
4508public BoundLocal(SyntaxNode syntax, LocalSymbol localSymbol, BoundLocalDeclarationKind declarationKind, ConstantValue? constantValueOpt, bool isNullableUnknown, TypeSymbol type, bool hasErrors)
4521public BoundLocal(SyntaxNode syntax, LocalSymbol localSymbol, BoundLocalDeclarationKind declarationKind, ConstantValue? constantValueOpt, bool isNullableUnknown, TypeSymbol type)
4557public BoundPseudoVariable(SyntaxNode syntax, LocalSymbol localSymbol, PseudoVariableExpressions emitExpressions, TypeSymbol type, bool hasErrors)
4569public BoundPseudoVariable(SyntaxNode syntax, LocalSymbol localSymbol, PseudoVariableExpressions emitExpressions, TypeSymbol type)
4602public BoundRangeVariable(SyntaxNode syntax, RangeVariableSymbol rangeVariableSymbol, BoundExpression value, TypeSymbol type, bool hasErrors = false)
4635public BoundParameter(SyntaxNode syntax, ParameterSymbol parameterSymbol, TypeSymbol type, bool hasErrors)
4645public BoundParameter(SyntaxNode syntax, ParameterSymbol parameterSymbol, TypeSymbol type)
4675public BoundLabelStatement(SyntaxNode syntax, LabelSymbol label, bool hasErrors)
4684public BoundLabelStatement(SyntaxNode syntax, LabelSymbol label)
4712public BoundGotoStatement(SyntaxNode syntax, LabelSymbol label, BoundExpression? caseExpressionOpt, BoundLabel? labelExpressionOpt, bool hasErrors = false)
4744public BoundLabeledStatement(SyntaxNode syntax, LabelSymbol label, BoundStatement body, bool hasErrors = false)
4775public BoundLabel(SyntaxNode syntax, LabelSymbol label, TypeSymbol? type, bool hasErrors)
4784public BoundLabel(SyntaxNode syntax, LabelSymbol label, TypeSymbol? type)
4812protected BoundStatementList(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
4821public BoundStatementList(SyntaxNode syntax, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
4849public BoundConditionalGoto(SyntaxNode syntax, BoundExpression condition, bool jumpIfTrue, LabelSymbol label, bool hasErrors = false)
4882protected BoundSwitchExpression(BoundKind kind, SyntaxNode syntax, BoundExpression expression, ImmutableArray<BoundSwitchExpressionArm> switchArms, BoundDecisionDag reachabilityDecisionDag, LabelSymbol? defaultLabel, bool reportedNotExhaustive, TypeSymbol? type, bool hasErrors = false)
4906public BoundSwitchExpressionArm(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundPattern pattern, BoundExpression? whenClause, BoundExpression value, LabelSymbol label, bool hasErrors = false)
4945public BoundUnconvertedSwitchExpression(SyntaxNode syntax, BoundExpression expression, ImmutableArray<BoundSwitchExpressionArm> switchArms, BoundDecisionDag reachabilityDecisionDag, LabelSymbol? defaultLabel, bool reportedNotExhaustive, TypeSymbol? type, bool hasErrors = false)
4973public BoundConvertedSwitchExpression(SyntaxNode syntax, TypeSymbol? naturalTypeOpt, bool wasTargetTyped, BoundExpression expression, ImmutableArray<BoundSwitchExpressionArm> switchArms, BoundDecisionDag reachabilityDecisionDag, LabelSymbol? defaultLabel, bool reportedNotExhaustive, TypeSymbol type, bool hasErrors = false)
5007public BoundDecisionDag(SyntaxNode syntax, BoundDecisionDagNode rootNode, bool hasErrors = false)
5035protected BoundDecisionDagNode(BoundKind kind, SyntaxNode syntax, bool hasErrors)
5040protected BoundDecisionDagNode(BoundKind kind, SyntaxNode syntax)
5049public BoundEvaluationDecisionDagNode(SyntaxNode syntax, BoundDagEvaluation evaluation, BoundDecisionDagNode next, bool hasErrors = false)
5080public BoundTestDecisionDagNode(SyntaxNode syntax, BoundDagTest test, BoundDecisionDagNode whenTrue, BoundDecisionDagNode whenFalse, bool hasErrors = false)
5114public BoundWhenDecisionDagNode(SyntaxNode syntax, ImmutableArray<BoundPatternBinding> bindings, BoundExpression? whenExpression, BoundDecisionDagNode whenTrue, BoundDecisionDagNode? whenFalse, bool hasErrors = false)
5149public BoundLeafDecisionDagNode(SyntaxNode syntax, LabelSymbol label, bool hasErrors)
5158public BoundLeafDecisionDagNode(SyntaxNode syntax, LabelSymbol label)
5186protected BoundDagTest(BoundKind kind, SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false)
5200public BoundDagTemp(SyntaxNode syntax, TypeSymbol type, BoundDagEvaluation? source, int index, bool hasErrors = false)
5232public BoundDagTypeTest(SyntaxNode syntax, TypeSymbol type, BoundDagTemp input, bool hasErrors = false)
5261public BoundDagNonNullTest(SyntaxNode syntax, bool isExplicitTest, BoundDagTemp input, bool hasErrors = false)
5289public BoundDagExplicitNullTest(SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false)
5315public BoundDagValueTest(SyntaxNode syntax, ConstantValue value, BoundDagTemp input, bool hasErrors = false)
5344public BoundDagRelationalTest(SyntaxNode syntax, BinaryOperatorKind operatorKind, ConstantValue value, BoundDagTemp input, bool hasErrors = false)
5375protected BoundDagEvaluation(BoundKind kind, SyntaxNode syntax, BoundDagTemp input, bool hasErrors = false)
5387public BoundDagDeconstructEvaluation(SyntaxNode syntax, MethodSymbol deconstructMethod, BoundDagTemp input, bool hasErrors = false)
5416public BoundDagTypeEvaluation(SyntaxNode syntax, TypeSymbol type, BoundDagTemp input, bool hasErrors = false)
5445public BoundDagFieldEvaluation(SyntaxNode syntax, FieldSymbol field, BoundDagTemp input, bool hasErrors = false)
5474public BoundDagPropertyEvaluation(SyntaxNode syntax, PropertySymbol property, bool isLengthOrCount, BoundDagTemp input, bool hasErrors = false)
5505public BoundDagIndexEvaluation(SyntaxNode syntax, PropertySymbol property, int index, BoundDagTemp input, bool hasErrors = false)
5536public BoundDagIndexerEvaluation(SyntaxNode syntax, TypeSymbol indexerType, BoundDagTemp lengthTemp, int index, BoundExpression indexerAccess, BoundListPatternReceiverPlaceholder receiverPlaceholder, BoundListPatternIndexPlaceholder argumentPlaceholder, BoundDagTemp input, bool hasErrors = false)
5583public BoundDagSliceEvaluation(SyntaxNode syntax, TypeSymbol sliceType, BoundDagTemp lengthTemp, int startIndex, int endIndex, BoundExpression indexerAccess, BoundSlicePatternReceiverPlaceholder receiverPlaceholder, BoundSlicePatternRangePlaceholder argumentPlaceholder, BoundDagTemp input, bool hasErrors = false)
5632public BoundDagAssignmentEvaluation(SyntaxNode syntax, BoundDagTemp target, BoundDagTemp input, bool hasErrors = false)
5661public BoundSwitchSection(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundSwitchLabel> switchLabels, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
5693public BoundSwitchLabel(SyntaxNode syntax, LabelSymbol label, BoundPattern pattern, BoundExpression? whenClause, bool hasErrors = false)
5726protected BoundMethodOrPropertyGroup(BoundKind kind, SyntaxNode syntax, BoundExpression? receiverOpt, LookupResultKind resultKind, bool hasErrors = false)
5740public BoundSequencePointExpression(SyntaxNode syntax, BoundExpression expression, TypeSymbol? type, bool hasErrors = false)
5768public BoundSequence(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundExpression> sideEffects, BoundExpression value, TypeSymbol type, bool hasErrors = false)
5804public BoundSpillSequence(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, ImmutableArray<BoundStatement> sideEffects, BoundExpression value, TypeSymbol type, bool hasErrors = false)
5840public BoundDynamicMemberAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<TypeWithAnnotations> typeArgumentsOpt, string name, bool invoked, bool indexed, TypeSymbol type, bool hasErrors = false)
5879protected BoundDynamicInvocableBase(BoundKind kind, SyntaxNode syntax, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol? type, bool hasErrors = false)
5896public BoundDynamicInvocation(SyntaxNode syntax, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<MethodSymbol> applicableMethods, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol type, bool hasErrors = false)
5932public BoundConditionalAccess(SyntaxNode syntax, BoundExpression receiver, BoundExpression accessExpression, TypeSymbol type, bool hasErrors = false)
5965public BoundLoweredConditionalAccess(SyntaxNode syntax, BoundExpression receiver, MethodSymbol? hasValueMethodOpt, BoundExpression whenNotNull, BoundExpression? whenNullOpt, int id, bool forceCopyOfNullableValueType, TypeSymbol type, bool hasErrors = false)
6006public BoundConditionalReceiver(SyntaxNode syntax, int id, TypeSymbol type, bool hasErrors)
6015public BoundConditionalReceiver(SyntaxNode syntax, int id, TypeSymbol type)
6044public BoundComplexConditionalReceiver(SyntaxNode syntax, BoundExpression valueTypeReceiver, BoundExpression referenceTypeReceiver, TypeSymbol type, bool hasErrors = false)
6077public BoundMethodGroup(SyntaxNode syntax, ImmutableArray<TypeWithAnnotations> typeArgumentsOpt, string name, ImmutableArray<MethodSymbol> methods, Symbol? lookupSymbolOpt, DiagnosticInfo? lookupError, BoundMethodGroupFlags? flags, FunctionTypeSymbol? functionType, BoundExpression? receiverOpt, LookupResultKind resultKind, bool hasErrors = false)
6118public BoundPropertyGroup(SyntaxNode syntax, ImmutableArray<PropertySymbol> properties, BoundExpression? receiverOpt, LookupResultKind resultKind, bool hasErrors = false)
6146public BoundCall(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, MethodSymbol method, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool isDelegateCall, bool expanded, bool invokedAsExtensionMethod, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, LookupResultKind resultKind, ImmutableArray<MethodSymbol> originalMethodsOpt, TypeSymbol type, bool hasErrors = false)
6201public BoundEventAssignmentOperator(SyntaxNode syntax, EventSymbol @event, bool isAddition, bool isDynamic, BoundExpression? receiverOpt, BoundExpression argument, TypeSymbol type, bool hasErrors = false)
6240public BoundAttribute(SyntaxNode syntax, MethodSymbol? constructor, ImmutableArray<BoundExpression> constructorArguments, ImmutableArray<string?> constructorArgumentNamesOpt, ImmutableArray<int> constructorArgumentsToParamsOpt, bool constructorExpanded, BitVector constructorDefaultArguments, ImmutableArray<BoundAssignmentOperator> namedArguments, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
6285public BoundUnconvertedObjectCreationExpression(SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<(string Name, Location Location)?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, InitializerExpressionSyntax? initializerOpt, Binder binder, bool hasErrors = false)
6323protected BoundObjectCreationExpressionBase(BoundKind kind, SyntaxNode syntax, TypeSymbol type, bool hasErrors)
6331protected BoundObjectCreationExpressionBase(BoundKind kind, SyntaxNode syntax, TypeSymbol type)
6344public BoundObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<MethodSymbol> constructorsGroup, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ConstantValue? constantValueOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
6395protected BoundCollectionExpressionBase(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundNode> elements, TypeSymbol? type, bool hasErrors = false)
6409public BoundUnconvertedCollectionExpression(SyntaxNode syntax, ImmutableArray<BoundNode> elements, bool hasErrors = false)
6436public BoundCollectionExpression(SyntaxNode syntax, CollectionExpressionTypeKind collectionTypeKind, BoundObjectOrCollectionValuePlaceholder? placeholder, BoundExpression? collectionCreation, MethodSymbol? collectionBuilderMethod, BoundValuePlaceholder? collectionBuilderInvocationPlaceholder, BoundExpression? collectionBuilderInvocationConversion, bool wasTargetTyped, BoundUnconvertedCollectionExpression unconvertedCollectionExpression, ImmutableArray<BoundNode> elements, TypeSymbol type, bool hasErrors = false)
6481public BoundCollectionExpressionSpreadExpressionPlaceholder(SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
6486public BoundCollectionExpressionSpreadExpressionPlaceholder(SyntaxNode syntax, TypeSymbol? type)
6509public BoundCollectionExpressionSpreadElement(SyntaxNode syntax, BoundExpression expression, BoundCollectionExpressionSpreadExpressionPlaceholder? expressionPlaceholder, BoundExpression? conversion, ForEachEnumeratorInfo? enumeratorInfoOpt, BoundExpression? lengthOrCount, BoundValuePlaceholder? elementPlaceholder, BoundStatement? iteratorBody, bool hasErrors = false)
6549protected BoundTupleExpression(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<bool> inferredNamesOpt, TypeSymbol? type, bool hasErrors = false)
6567public BoundTupleLiteral(SyntaxNode syntax, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<bool> inferredNamesOpt, TypeSymbol? type, bool hasErrors = false)
6594public BoundConvertedTupleLiteral(SyntaxNode syntax, BoundTupleLiteral? sourceTuple, bool wasTargetTyped, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<bool> inferredNamesOpt, TypeSymbol? type, bool hasErrors = false)
6624public BoundDynamicObjectCreationExpression(SyntaxNode syntax, string name, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, BoundObjectInitializerExpressionBase? initializerExpressionOpt, ImmutableArray<MethodSymbol> applicableMethods, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
6667public BoundNoPiaObjectCreationExpression(SyntaxNode syntax, string? guidString, BoundObjectInitializerExpressionBase? initializerExpressionOpt, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
6699protected BoundObjectInitializerExpressionBase(BoundKind kind, SyntaxNode syntax, BoundObjectOrCollectionValuePlaceholder placeholder, ImmutableArray<BoundExpression> initializers, TypeSymbol type, bool hasErrors = false)
6718public BoundObjectInitializerExpression(SyntaxNode syntax, BoundObjectOrCollectionValuePlaceholder placeholder, ImmutableArray<BoundExpression> initializers, TypeSymbol type, bool hasErrors = false)
6746public BoundObjectInitializerMember(SyntaxNode syntax, Symbol? memberSymbol, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, LookupResultKind resultKind, AccessorKind accessorKind, TypeSymbol receiverType, TypeSymbol type, bool hasErrors = false)
6795public BoundDynamicObjectInitializerMember(SyntaxNode syntax, string memberName, TypeSymbol receiverType, TypeSymbol type, bool hasErrors)
6807public BoundDynamicObjectInitializerMember(SyntaxNode syntax, string memberName, TypeSymbol receiverType, TypeSymbol type)
6840public BoundCollectionInitializerExpression(SyntaxNode syntax, BoundObjectOrCollectionValuePlaceholder placeholder, ImmutableArray<BoundExpression> initializers, TypeSymbol type, bool hasErrors = false)
6868public BoundCollectionElementInitializer(SyntaxNode syntax, MethodSymbol addMethod, ImmutableArray<BoundExpression> arguments, BoundExpression? implicitReceiverOpt, bool expanded, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, bool invokedAsExtensionMethod, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
6913public BoundDynamicCollectionElementInitializer(SyntaxNode syntax, ImmutableArray<MethodSymbol> applicableMethods, BoundExpression expression, ImmutableArray<BoundExpression> arguments, TypeSymbol type, bool hasErrors = false)
6945public BoundImplicitReceiver(SyntaxNode syntax, TypeSymbol type, bool hasErrors)
6953public BoundImplicitReceiver(SyntaxNode syntax, TypeSymbol type)
6980public BoundAnonymousObjectCreationExpression(SyntaxNode syntax, MethodSymbol constructor, ImmutableArray<BoundExpression> arguments, ImmutableArray<BoundAnonymousPropertyDeclaration> declarations, TypeSymbol type, bool hasErrors = false)
7016public BoundAnonymousPropertyDeclaration(SyntaxNode syntax, PropertySymbol property, TypeSymbol type, bool hasErrors)
7026public BoundAnonymousPropertyDeclaration(SyntaxNode syntax, PropertySymbol property, TypeSymbol type)
7056public BoundNewT(SyntaxNode syntax, BoundObjectInitializerExpressionBase? initializerExpressionOpt, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
7086public BoundDelegateCreationExpression(SyntaxNode syntax, BoundExpression argument, MethodSymbol? methodOpt, bool isExtensionMethod, bool wasTargetTyped, TypeSymbol type, bool hasErrors = false)
7122public BoundArrayCreation(SyntaxNode syntax, ImmutableArray<BoundExpression> bounds, BoundArrayInitialization? initializerOpt, TypeSymbol type, bool hasErrors = false)
7154public BoundArrayInitialization(SyntaxNode syntax, bool isInferred, ImmutableArray<BoundExpression> initializers, bool hasErrors = false)
7185protected BoundStackAllocArrayCreationBase(BoundKind kind, SyntaxNode syntax, TypeSymbol elementType, BoundExpression count, BoundArrayInitialization? initializerOpt, TypeSymbol? type, bool hasErrors = false)
7204public BoundStackAllocArrayCreation(SyntaxNode syntax, TypeSymbol elementType, BoundExpression count, BoundArrayInitialization? initializerOpt, TypeSymbol? type, bool hasErrors = false)
7231public BoundConvertedStackAllocExpression(SyntaxNode syntax, TypeSymbol elementType, BoundExpression count, BoundArrayInitialization? initializerOpt, TypeSymbol type, bool hasErrors = false)
7260public BoundFieldAccess(SyntaxNode syntax, BoundExpression? receiverOpt, FieldSymbol fieldSymbol, ConstantValue? constantValueOpt, LookupResultKind resultKind, bool isByValue, bool isDeclaration, TypeSymbol type, bool hasErrors = false)
7300public BoundHoistedFieldAccess(SyntaxNode syntax, FieldSymbol fieldSymbol, TypeSymbol type, bool hasErrors)
7310public BoundHoistedFieldAccess(SyntaxNode syntax, FieldSymbol fieldSymbol, TypeSymbol type)
7340public BoundPropertyAccess(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, PropertySymbol propertySymbol, AccessorKind autoPropertyAccessorKind, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
7378public BoundEventAccess(SyntaxNode syntax, BoundExpression? receiverOpt, EventSymbol eventSymbol, bool isUsableAsField, LookupResultKind resultKind, TypeSymbol type, bool hasErrors = false)
7414public BoundIndexerAccess(SyntaxNode syntax, BoundExpression? receiverOpt, ThreeState initialBindingReceiverIsSubjectToCloning, PropertySymbol indexer, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, bool expanded, AccessorKind accessorKind, ImmutableArray<int> argsToParamsOpt, BitVector defaultArguments, ImmutableArray<PropertySymbol> originalIndexersOpt, TypeSymbol type, bool hasErrors = false)
7465public BoundImplicitIndexerAccess(SyntaxNode syntax, BoundExpression receiver, BoundExpression argument, BoundExpression lengthOrCountAccess, BoundImplicitIndexerReceiverPlaceholder receiverPlaceholder, BoundExpression indexerOrSliceAccess, ImmutableArray<BoundImplicitIndexerValuePlaceholder> argumentPlaceholders, TypeSymbol type, bool hasErrors = false)
7514public BoundInlineArrayAccess(SyntaxNode syntax, BoundExpression expression, BoundExpression argument, bool isValue, WellKnownMember getItemOrSliceHelper, TypeSymbol type, bool hasErrors = false)
7555public BoundDynamicIndexerAccess(SyntaxNode syntax, BoundExpression receiver, ImmutableArray<BoundExpression> arguments, ImmutableArray<string?> argumentNamesOpt, ImmutableArray<RefKind> argumentRefKindsOpt, ImmutableArray<PropertySymbol> applicableIndexers, TypeSymbol type, bool hasErrors = false)
7595public BoundLambda(SyntaxNode syntax, UnboundLambda unboundLambda, MethodSymbol symbol, BoundBlock body, ReadOnlyBindingDiagnostic<AssemblySymbol> diagnostics, Binder binder, TypeSymbol? type, bool hasErrors = false)
7635public UnboundLambda(SyntaxNode syntax, UnboundLambdaState data, FunctionTypeSymbol? functionType, Boolean withDependencies, bool hasErrors)
7646public UnboundLambda(SyntaxNode syntax, UnboundLambdaState data, FunctionTypeSymbol? functionType, Boolean withDependencies)
7679public BoundQueryClause(SyntaxNode syntax, BoundExpression value, RangeVariableSymbol? definedSymbol, BoundExpression? operation, BoundExpression? cast, Binder binder, BoundExpression? unoptimizedForm, TypeSymbol type, bool hasErrors = false)
7720public BoundTypeOrInstanceInitializers(SyntaxNode syntax, ImmutableArray<BoundStatement> statements, bool hasErrors = false)
7746public BoundNameOfOperator(SyntaxNode syntax, BoundExpression argument, ConstantValue constantValueOpt, TypeSymbol type, bool hasErrors = false)
7779protected BoundInterpolatedStringBase(BoundKind kind, SyntaxNode syntax, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors = false)
7795public BoundUnconvertedInterpolatedString(SyntaxNode syntax, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors = false)
7821public BoundInterpolatedString(SyntaxNode syntax, InterpolatedStringHandlerData? interpolationData, ImmutableArray<BoundExpression> parts, ConstantValue? constantValueOpt, TypeSymbol? type, bool hasErrors = false)
7849public BoundInterpolatedStringHandlerPlaceholder(SyntaxNode syntax, TypeSymbol? type, bool hasErrors)
7854public BoundInterpolatedStringHandlerPlaceholder(SyntaxNode syntax, TypeSymbol? type)
7877public BoundInterpolatedStringArgumentPlaceholder(SyntaxNode syntax, int argumentIndex, TypeSymbol type, bool hasErrors)
7886public BoundInterpolatedStringArgumentPlaceholder(SyntaxNode syntax, int argumentIndex, TypeSymbol type)
7915public BoundStringInsert(SyntaxNode syntax, BoundExpression value, BoundExpression? alignment, BoundLiteral? format, bool isInterpolatedStringHandlerAppendCall, bool hasErrors = false)
7950public BoundIsPatternExpression(SyntaxNode syntax, BoundExpression expression, BoundPattern pattern, bool isNegated, BoundDecisionDag reachabilityDecisionDag, LabelSymbol whenTrueLabel, LabelSymbol whenFalseLabel, TypeSymbol? type, bool hasErrors = false)
7992protected BoundPattern(BoundKind kind, SyntaxNode syntax, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors)
8003protected BoundPattern(BoundKind kind, SyntaxNode syntax, TypeSymbol inputType, TypeSymbol narrowedType)
8020public BoundConstantPattern(SyntaxNode syntax, BoundExpression value, ConstantValue constantValue, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8057public BoundDiscardPattern(SyntaxNode syntax, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors)
8070public BoundDiscardPattern(SyntaxNode syntax, TypeSymbol inputType, TypeSymbol narrowedType)
8097protected BoundObjectPattern(BoundKind kind, SyntaxNode syntax, Symbol? variable, BoundExpression? variableAccess, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8114public BoundDeclarationPattern(SyntaxNode syntax, BoundTypeExpression declaredType, bool isVar, Symbol? variable, BoundExpression? variableAccess, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8150public BoundRecursivePattern(SyntaxNode syntax, BoundTypeExpression? declaredType, MethodSymbol? deconstructMethod, ImmutableArray<BoundPositionalSubpattern> deconstruction, ImmutableArray<BoundPropertySubpattern> properties, bool isExplicitNotNullTest, Symbol? variable, BoundExpression? variableAccess, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8191public BoundListPattern(SyntaxNode syntax, ImmutableArray<BoundPattern> subpatterns, bool hasSlice, BoundExpression? lengthAccess, BoundExpression? indexerAccess, BoundListPatternReceiverPlaceholder? receiverPlaceholder, BoundListPatternIndexPlaceholder? argumentPlaceholder, Symbol? variable, BoundExpression? variableAccess, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8235public BoundSlicePattern(SyntaxNode syntax, BoundPattern? pattern, BoundExpression? indexerAccess, BoundSlicePatternReceiverPlaceholder? receiverPlaceholder, BoundSlicePatternRangePlaceholder? argumentPlaceholder, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8274public BoundITuplePattern(SyntaxNode syntax, MethodSymbol getLengthMethod, MethodSymbol getItemMethod, ImmutableArray<BoundPositionalSubpattern> subpatterns, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8314protected BoundSubpattern(BoundKind kind, SyntaxNode syntax, BoundPattern pattern, bool hasErrors = false)
8328public BoundPositionalSubpattern(SyntaxNode syntax, Symbol? symbol, BoundPattern pattern, bool hasErrors = false)
8356public BoundPropertySubpattern(SyntaxNode syntax, BoundPropertySubpatternMember? member, bool isLengthOrCount, BoundPattern pattern, bool hasErrors = false)
8386public BoundPropertySubpatternMember(SyntaxNode syntax, BoundPropertySubpatternMember? receiver, Symbol? symbol, TypeSymbol type, bool hasErrors = false)
8418public BoundTypePattern(SyntaxNode syntax, BoundTypeExpression declaredType, bool isExplicitNotNullTest, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8454public BoundBinaryPattern(SyntaxNode syntax, bool disjunction, BoundPattern left, BoundPattern right, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8493public BoundNegatedPattern(SyntaxNode syntax, BoundPattern negated, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8527public BoundRelationalPattern(SyntaxNode syntax, BinaryOperatorKind relation, BoundExpression value, ConstantValue constantValue, TypeSymbol inputType, TypeSymbol narrowedType, bool hasErrors = false)
8566public BoundDiscardExpression(SyntaxNode syntax, NullableAnnotation nullableAnnotation, bool isInferred, TypeSymbol? type, bool hasErrors)
8573public BoundDiscardExpression(SyntaxNode syntax, NullableAnnotation nullableAnnotation, bool isInferred, TypeSymbol? type)
8601public BoundThrowExpression(SyntaxNode syntax, BoundExpression expression, TypeSymbol? type, bool hasErrors = false)
8629protected VariablePendingInference(BoundKind kind, SyntaxNode syntax, Symbol variableSymbol, BoundExpression? receiverOpt, bool hasErrors = false)
8646public OutVariablePendingInference(SyntaxNode syntax, Symbol variableSymbol, BoundExpression? receiverOpt, bool hasErrors = false)
8672public DeconstructionVariablePendingInference(SyntaxNode syntax, Symbol variableSymbol, BoundExpression? receiverOpt, bool hasErrors = false)
8698public OutDeconstructVarPendingInference(SyntaxNode syntax, Symbol? variableSymbol, bool isDiscardExpression, bool hasErrors)
8705public OutDeconstructVarPendingInference(SyntaxNode syntax, Symbol? variableSymbol, bool isDiscardExpression)
8733protected BoundMethodBodyBase(BoundKind kind, SyntaxNode syntax, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
8746public BoundNonConstructorMethodBody(SyntaxNode syntax, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
8769public BoundConstructorMethodBody(SyntaxNode syntax, ImmutableArray<LocalSymbol> locals, BoundStatement? initializer, BoundBlock? blockBody, BoundBlock? expressionBody, bool hasErrors = false)
8799public BoundExpressionWithNullability(SyntaxNode syntax, BoundExpression expression, NullableAnnotation nullableAnnotation, TypeSymbol? type, bool hasErrors = false)
8830public BoundWithExpression(SyntaxNode syntax, BoundExpression receiver, MethodSymbol? cloneMethod, BoundObjectInitializerExpressionBase initializerExpression, TypeSymbol type, bool hasErrors = false)
Lowering\ClosureConversion\ClosureConversion.cs (15)
372var syntax = scopeBoundNode.Syntax;
415var syntax = originalMethod.DeclaringSyntaxReferences[0].GetSyntax();
509private SynthesizedClosureEnvironment GetStaticFrame(BindingDiagnosticBag diagnostics, SyntaxNode syntax)
582private BoundExpression FrameOfType(SyntaxNode syntax, NamedTypeSymbol frameType)
597protected override BoundExpression FramePointer(SyntaxNode syntax, NamedTypeSymbol frameClass)
673SyntaxNode syntax = node.Syntax;
749private void InitVariableProxy(SyntaxNode syntax, Symbol symbol, LocalSymbol framePointer, ArrayBuilder<BoundExpression> prologue)
874SyntaxNode syntax,
1016SyntaxNode syntax,
1442private DebugId GetLambdaId(SyntaxNode syntax, ClosureKind closureKind, int closureOrdinal, ImmutableArray<DebugId> structClosureIds, RuntimeRudeEdit? closureRudeEdit)
1448SyntaxNode? lambdaOrLambdaBodySyntax;
1458lambdaOrLambdaBodySyntax = (SyntaxNode?)localFunction.Body ?? localFunction.ExpressionBody?.Expression;
1768private static bool InLoopOrLambda(SyntaxNode lambdaSyntax, SyntaxNode scopeSyntax)
1770var curSyntax = lambdaSyntax.Parent;
Lowering\Instrumentation\CodeCoverageInstrumenter.cs (15)
128SyntaxNode syntax = MethodDeclarationIfAvailable(methodBody.Syntax);
167SyntaxNode methodBodySyntax,
476private static Cci.DebugSourceDocument GetSourceDocument(DebugDocumentProvider debugDocumentProvider, SyntaxNode syntax)
481private static Cci.DebugSourceDocument GetSourceDocument(DebugDocumentProvider debugDocumentProvider, SyntaxNode syntax, FileLinePositionSpan span)
493private BoundStatement AddAnalysisPoint(SyntaxNode syntaxForSpan, Text.TextSpan alternateSpan, SyntheticBoundNodeFactory statementFactory)
498private BoundStatement AddAnalysisPoint(SyntaxNode syntaxForSpan, SyntheticBoundNodeFactory statementFactory)
503private BoundStatement AddAnalysisPoint(SyntaxNode syntaxForSpan, FileLinePositionSpan span, SyntheticBoundNodeFactory statementFactory)
523private static SyntaxNode SyntaxForSpan(BoundStatement statement)
525SyntaxNode syntaxForSpan;
564private static MethodSymbol GetCreatePayloadOverload(CSharpCompilation compilation, WellKnownMember overload, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
569private static SyntaxNode MethodDeclarationIfAvailable(SyntaxNode body)
571SyntaxNode? parent = body.Parent;
593private static TextSpan SkipAttributes(SyntaxNode syntax)
623private static TextSpan SkipAttributes(SyntaxNode syntax, SyntaxList<AttributeListSyntax> attributes, SyntaxTokenList modifiers, SyntaxToken keyword, TypeSyntax? type)
Lowering\LocalRewriter\LocalRewriter.cs (11)
581private static BoundExpression BadExpression(SyntaxNode syntax, TypeSymbol resultType, BoundExpression child)
586private static BoundExpression BadExpression(SyntaxNode syntax, TypeSymbol resultType, BoundExpression child1, BoundExpression child2)
591private static BoundExpression BadExpression(SyntaxNode syntax, TypeSymbol resultType, ImmutableArray<BoundExpression> children)
596private bool TryGetWellKnownTypeMember<TSymbol>(SyntaxNode? syntax, WellKnownMember member, [NotNullWhen(true)] out TSymbol? symbol, bool isOptional = false, Location? location = null) where TSymbol : Symbol
606/// Recommendation: Do not use, use <see cref="TryGetSpecialTypeMethod(SyntaxNode, SpecialMember, out MethodSymbol, bool)"/> instead!
609private MethodSymbol UnsafeGetSpecialTypeMethod(SyntaxNode syntax, SpecialMember specialMember)
616/// Recommendation: Do not use, use <see cref="TryGetSpecialTypeMethod(SyntaxNode, SpecialMember, CSharpCompilation, BindingDiagnosticBag, out MethodSymbol, bool)"/> instead!
619private static MethodSymbol UnsafeGetSpecialTypeMethod(SyntaxNode syntax, SpecialMember specialMember, CSharpCompilation compilation, BindingDiagnosticBag diagnostics)
636private bool TryGetSpecialTypeMethod(SyntaxNode syntax, SpecialMember specialMember, out MethodSymbol method, bool isOptional = false)
641private static bool TryGetSpecialTypeMethod(SyntaxNode syntax, SpecialMember specialMember, CSharpCompilation compilation, BindingDiagnosticBag diagnostics, out MethodSymbol method, bool isOptional = false)
863var syntax = initializer.Syntax;
Lowering\LocalRewriter\LocalRewriter.DecisionDagRewriter.ValueDispatchNode.cs (7)
28public readonly SyntaxNode Syntax;
30public ValueDispatchNode(SyntaxNode syntax) => Syntax = syntax;
40public SwitchDispatch(SyntaxNode syntax, ImmutableArray<(ConstantValue value, LabelSymbol label)> dispatches, LabelSymbol otherwise) : base(syntax)
54public LeafDispatchNode(SyntaxNode syntax, LabelSymbol Label) : base(syntax) => this.Label = Label;
86private RelationalDispatch(SyntaxNode syntax, ConstantValue value, BinaryOperatorKind op, ValueDispatchNode left, ValueDispatchNode right) : base(syntax)
133public static ValueDispatchNode CreateBalanced(SyntaxNode syntax, ConstantValue value, BinaryOperatorKind op, ValueDispatchNode whenTrue, ValueDispatchNode whenFalse)
140private static ValueDispatchNode CreateBalancedCore(SyntaxNode syntax, ConstantValue value, BinaryOperatorKind op, ValueDispatchNode left, ValueDispatchNode right)
Lowering\LocalRewriter\LocalRewriter.PatternLocalRewriter.cs (6)
30public PatternLocalRewriter(SyntaxNode node, LocalRewriter localRewriter, bool generateInstrumentation)
58private readonly SyntaxNode _node;
62public DagTempAllocator(SyntheticBoundNodeFactory factory, SyntaxNode node, bool generateSequencePoints)
369private BoundExpression MakeNullCheck(SyntaxNode syntax, BoundExpression rewrittenExpr, BinaryOperatorKind operatorKind)
389protected BoundExpression MakeValueTest(SyntaxNode syntax, BoundExpression input, ConstantValue value)
403protected BoundExpression MakeRelationalTest(SyntaxNode syntax, BoundExpression input, BinaryOperatorKind operatorKind, ConstantValue value)
Lowering\LocalRewriter\LocalRewriter_BinaryOperator.cs (36)
71var syntax = node.Syntax;
182SyntaxNode syntax,
198SyntaxNode syntax,
544private BoundExpression RewriteLiftedBinaryOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundExpression loweredLeft, BoundExpression loweredRight, TypeSymbol type, MethodSymbol? method, TypeSymbol? constrainedToTypeOpt)
603SyntaxNode syntax,
732private BoundExpression MakeTruthTestForDynamicLogicalOperator(SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundExpression loweredLeft, TypeSymbol boolean, MethodSymbol? leftTruthOperator, TypeSymbol? constrainedToTypeOpt, bool negative)
786SyntaxNode syntax,
814SyntaxNode syntax,
906private BoundExpression MakeOptimizedGetValueOrDefault(SyntaxNode syntax, BoundExpression expression)
924private BoundExpression MakeBooleanConstant(SyntaxNode syntax, bool value)
929private BoundExpression MakeOptimizedHasValue(SyntaxNode syntax, BoundExpression expression)
943private BoundExpression MakeNullableHasValue(SyntaxNode syntax, BoundExpression expression)
954SyntaxNode syntax,
1144SyntaxNode syntax,
1312SyntaxNode syntax,
1352SyntaxNode syntax,
1378SyntaxNode syntax,
1421SyntaxNode syntax,
1523SyntaxNode syntax,
1658private BoundExpression MakeNewNullableBoolean(SyntaxNode syntax, bool? value)
1674SyntaxNode syntax,
1759SyntaxNode syntax,
1820SyntaxNode syntax,
1912private MethodSymbol UnsafeGetNullableMethod(SyntaxNode syntax, TypeSymbol nullableType, SpecialMember member)
1922internal static MethodSymbol UnsafeGetNullableMethod(SyntaxNode syntax, TypeSymbol nullableType, SpecialMember member, CSharpCompilation compilation, BindingDiagnosticBag diagnostics)
1929private bool TryGetNullableMethod(SyntaxNode syntax, TypeSymbol nullableType, SpecialMember member, out MethodSymbol result, bool isOptional = false)
1942SyntaxNode syntax,
2013private BoundExpression RewriteStringEquality(BoundBinaryOperator? oldNode, SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundExpression loweredLeft, BoundExpression loweredRight, TypeSymbol type, SpecialMember member)
2026private BoundExpression RewriteDelegateOperation(SyntaxNode syntax, BinaryOperatorKind operatorKind, BoundExpression loweredLeft, BoundExpression loweredRight, TypeSymbol type, SpecialMember member)
2056private BoundExpression RewriteDecimalBinaryOperation(SyntaxNode syntax, BoundExpression loweredLeft, BoundExpression loweredRight, BinaryOperatorKind operatorKind)
2087private BoundExpression MakeNullCheck(SyntaxNode syntax, BoundExpression rewrittenExpr, BinaryOperatorKind operatorKind)
2146SyntaxNode syntax,
2153SyntaxNode rightSyntax = loweredRight.Syntax;
2208SyntaxNode syntax,
2231var oldSyntax = _factory.Syntax;
2268SyntaxNode syntax,
Lowering\LocalRewriter\LocalRewriter_Call.cs (6)
97private void EmbedIfNeedTo(BoundExpression receiver, ImmutableArray<MethodSymbol> methods, SyntaxNode syntaxNode)
116private void EmbedIfNeedTo(BoundExpression receiver, ImmutableArray<PropertySymbol> properties, SyntaxNode syntaxNode)
441SyntaxNode syntax,
524private BoundExpression MakeCall(SyntaxNode syntax, BoundExpression? rewrittenReceiver, MethodSymbol method, ImmutableArray<BoundExpression> rewrittenArguments)
1414private BoundExpression CreateEmptyArray(SyntaxNode syntax, ArrayTypeSymbol arrayType)
1434private BoundExpression? CreateArrayEmptyCallIfAvailable(SyntaxNode syntax, TypeSymbol elementType)
Lowering\LocalRewriter\LocalRewriter_Conversion.cs (22)
99var save_Syntax = _factory.Syntax;
140private BoundArrayCreation MakeUnderlyingArrayForUtf8Span(SyntaxNode syntax, ArrayTypeSymbol byteArray, IReadOnlyList<byte> bytes, out int length)
262SyntaxNode syntax,
297SyntaxNode syntax,
566var oldSyntax = _factory.Syntax;
738private void EnsureParamCollectionAttributeExists(SyntaxNode node, TypeSymbol delegateType)
835SyntaxNode syntax,
945SyntaxNode syntax,
1032SyntaxNode syntax,
1088SyntaxNode syntax,
1140SyntaxNode syntax,
1202SyntaxNode syntax,
1234SyntaxNode syntax,
1274SyntaxNode syntax,
1336SyntaxNode syntax,
1390SyntaxNode syntax,
1478SyntaxNode syntax,
1693private BoundExpression RewriteDecimalConversion(SyntaxNode syntax, BoundExpression operand, TypeSymbol fromType, TypeSymbol toType, bool @checked, bool isImplicit, ConstantValue? constantValueOpt)
1724private BoundExpression RewriteDecimalConversionCore(SyntaxNode syntax, BoundExpression operand, TypeSymbol fromType, TypeSymbol toType, bool isImplicit, ConstantValue? constantValueOpt)
1750private Conversion TryMakeConversion(SyntaxNode syntax, Conversion conversion, TypeSymbol fromType, TypeSymbol toType, bool @checked)
1851private Conversion TryMakeConversion(SyntaxNode syntax, TypeSymbol fromType, TypeSymbol toType, bool @checked)
1862private Conversion TryMakeUserDefinedConversion(SyntaxNode syntax, MethodSymbol meth, TypeSymbol fromType, TypeSymbol toType, bool @checked, bool isImplicit)
Lowering\LocalRewriter\LocalRewriter_ForEachStatement.cs (12)
70private bool CanRewriteForEachAsFor(SyntaxNode forEachSyntax, TypeSymbol nodeExpressionType, [NotNullWhen(true)] out MethodSymbol? indexerGet, [NotNullWhen(true)] out MethodSymbol? lengthGet)
289private bool TryGetDisposeMethod(SyntaxNode forEachSyntax, ForEachEnumeratorInfo enumeratorInfo, out MethodSymbol disposeMethod)
474private BoundStatement WrapWithAwait(SyntaxNode forEachSyntax, BoundExpression disposeCall, BoundAwaitableInfo disposeAwaitableInfoOpt)
693private delegate BoundStatement? GetForEachStatementAsForPreamble(LocalRewriter rewriter, SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfo, ref BoundExpression rewrittenExpression, out LocalSymbol? preambleLocal, out RefKind collectionTempRefKind);
694private delegate BoundExpression GetForEachStatementAsForItem<TArg>(LocalRewriter rewriter, SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfo, BoundLocal boundArrayVar, BoundLocal boundPositionVar, TArg arg);
695private delegate BoundExpression GetForEachStatementAsForLength<TArg>(LocalRewriter rewriter, SyntaxNode syntax, BoundLocal boundArrayVar, TArg arg);
701getItem: static (LocalRewriter rewriter, SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfo, BoundLocal boundArrayVar, BoundLocal boundPositionVar, (MethodSymbol indexerGet, MethodSymbol lengthGet) arg) =>
710getLength: static (LocalRewriter rewriter, SyntaxNode syntax, BoundLocal boundArrayVar, (MethodSymbol indexerGet, MethodSymbol lengthGet) arg) =>
732return static (LocalRewriter rewriter, SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfo, ref BoundExpression rewrittenExpression, out LocalSymbol? preambleLocal, out RefKind collectionTempRefKind) =>
753return static (LocalRewriter rewriter, SyntaxNode syntax, ForEachEnumeratorInfo enumeratorInfo, BoundLocal boundArrayVar, BoundLocal boundPositionVar, object? _) =>
779return static (LocalRewriter rewriter, SyntaxNode syntax, BoundLocal boundArrayVar, object? _) =>
827SyntaxNode forEachSyntax)
Lowering\LocalRewriter\LocalRewriter_UnaryOperator.cs (15)
64SyntaxNode syntax,
76SyntaxNode syntax,
180SyntaxNode syntax,
244SyntaxNode syntax,
353private BoundExpression GetLiftedUnaryOperatorConsequence(UnaryOperatorKind kind, SyntaxNode syntax, MethodSymbol? method, TypeSymbol? constrainedToTypeOpt, TypeSymbol type, BoundExpression nonNullOperand)
408SyntaxNode syntax = node.Syntax;
442private BoundExpression MakeInstanceCompoundAssignmentOperatorResult(SyntaxNode syntax, BoundExpression left, BoundExpression? rightOpt, MethodSymbol operatorMethod, bool isChecked)
509static BoundCall makeIncrementCall(SyntaxNode syntax, BoundLocal boundTemp, BoundExpression? rightOpt, MethodSymbol operatorMethod)
514BoundExpression makeAssignmentBack(SyntaxNode syntax, BoundExpression transformedLHS, BoundLocal boundTemp, bool isChecked)
567SyntaxNode syntax = node.Syntax;
640SyntaxNode syntax,
668SyntaxNode syntax,
771SyntaxNode syntax = node.Syntax;
957private BoundExpression MakeDecimalIncDecOperator(SyntaxNode syntax, BinaryOperatorKind oper, BoundExpression operand)
964private BoundExpression MakeLiftedDecimalIncDecOperator(SyntaxNode syntax, BinaryOperatorKind oper, BoundExpression operand)
Lowering\StateMachineRewriter\CapturedSymbol.cs (4)
26public abstract BoundExpression Replacement<TArg>(SyntaxNode node, Func<NamedTypeSymbol, TArg, BoundExpression> makeFrame, TArg arg);
39public override BoundExpression Replacement<TArg>(SyntaxNode node, Func<NamedTypeSymbol, TArg, BoundExpression> makeFrame, TArg arg)
57public override BoundExpression Replacement<TArg>(SyntaxNode node, Func<NamedTypeSymbol, TArg, BoundExpression> makeFrame, TArg arg)
77public override BoundExpression Replacement<TArg>(SyntaxNode node, Func<NamedTypeSymbol, TArg, BoundExpression> makeFrame, TArg arg)
Lowering\StateMachineRewriter\MethodToStateMachineRewriter.cs (8)
204protected override BoundExpression FramePointer(SyntaxNode syntax, NamedTypeSymbol frameClass)
206var oldSyntax = F.Syntax;
214protected void AddResumableState(SyntaxNode awaitOrYieldReturnSyntax, AwaitDebugId awaitId, out StateMachineState state, out GeneratedLabelSymbol resumeLabel)
217protected void AddResumableState(ResumableStateMachineStateAllocator allocator, SyntaxNode awaitOrYieldReturnSyntax, AwaitDebugId awaitId, out StateMachineState stateNumber, out GeneratedLabelSymbol resumeLabel)
224protected void AddStateDebugInfo(SyntaxNode node, AwaitDebugId awaitId, StateMachineState state)
535SyntaxNode awaitSyntaxOpt;
583SyntaxNode awaitSyntaxOpt,
733var oldSyntax = F.Syntax;
Lowering\SyntheticBoundNodeFactory.cs (15)
45public SyntaxNode Syntax { get; set; }
103public SyntheticBoundNodeFactory(MethodSymbol topLevelMethod, SyntaxNode node, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics, InstrumentationState? instrumentationState = null)
114public SyntheticBoundNodeFactory(MethodSymbol? topLevelMethodOpt, NamedTypeSymbol? currentClassOpt, SyntaxNode node, TypeCompilationState compilationState, BindingDiagnosticBag diagnostics, InstrumentationState? instrumentationState = null)
455public BoundExpression AssignmentExpression(SyntaxNode syntax, BoundExpression left, BoundExpression right, bool isRef = false, bool hasErrors = false, bool wasCompilerGenerated = false)
614SyntaxNode? syntax = null,
636SyntaxNode syntax
1228public BoundStatement SequencePoint(SyntaxNode syntax, BoundStatement statement)
1265public static BoundExpression Null(TypeSymbol type, SyntaxNode syntax)
1606internal static BoundExpression Default(TypeSymbol type, SyntaxNode syntax)
1651internal static BoundExpression NullOrDefault(TypeSymbol typeSymbol, SyntaxNode syntax)
1672SyntaxNode? syntaxOpt = null
1711var syntax = argument.Syntax;
1777internal BoundExpression MakeNullCheck(SyntaxNode syntax, BoundExpression rewrittenExpr, BinaryOperatorKind operatorKind)
1829internal BoundExpression MakeNullableHasValue(SyntaxNode syntax, BoundExpression expression)
1840SyntaxNode syntax,
Symbols\Source\ParameterHelpers.cs (5)
1119internal static ImmutableArray<CustomModifier> ConditionallyCreateInModifiers(RefKind refKind, bool addRefReadOnlyModifier, Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
1131internal static ImmutableArray<CustomModifier> CreateInModifiers(Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
1137private static ImmutableArray<CustomModifier> CreateRefReadonlyParameterModifiers(Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
1143internal static ImmutableArray<CustomModifier> CreateOutModifiers(Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
1148private static ImmutableArray<CustomModifier> CreateModifiers(WellKnownType modifier, Binder binder, BindingDiagnosticBag diagnostics, SyntaxNode syntax)
Symbols\TypeWithAnnotations.cs (6)
539public void ReportDiagnosticsIfObsolete(Binder binder, SyntaxNode syntax, BindingDiagnosticBag diagnostics) =>
547private void ReportDiagnosticsIfObsoleteCore(Binder binder, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
877internal abstract void ReportDiagnosticsIfObsolete(TypeWithAnnotations type, Binder binder, SyntaxNode syntax, BindingDiagnosticBag diagnostics);
940internal override void ReportDiagnosticsIfObsolete(TypeWithAnnotations type, Binder binder, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
1033internal override void ReportDiagnosticsIfObsolete(TypeWithAnnotations type, Binder binder, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
1176internal override void ReportDiagnosticsIfObsolete(TypeWithAnnotations type, Binder binder, SyntaxNode syntax, BindingDiagnosticBag diagnostics)
Syntax\CSharpSyntaxNode.cs (19)
28internal CSharpSyntaxNode(GreenNode green, SyntaxNode? parent, int position)
187public static SyntaxNode DeserializeFrom(Stream stream, CancellationToken cancellationToken = default)
451protected override bool EquivalentToCore(SyntaxNode other)
464protected internal override SyntaxNode ReplaceCore<TNode>(
466Func<TNode, TNode, SyntaxNode>? computeReplacementNode = null,
475protected internal override SyntaxNode ReplaceNodeInListCore(SyntaxNode originalNode, IEnumerable<SyntaxNode> replacementNodes)
480protected internal override SyntaxNode InsertNodesInListCore(SyntaxNode nodeInList, IEnumerable<SyntaxNode> nodesToInsert, bool insertBefore)
485protected internal override SyntaxNode ReplaceTokenInListCore(SyntaxToken originalToken, IEnumerable<SyntaxToken> newTokens)
490protected internal override SyntaxNode InsertTokensInListCore(SyntaxToken originalToken, IEnumerable<SyntaxToken> newTokens, bool insertBefore)
495protected internal override SyntaxNode ReplaceTriviaInListCore(SyntaxTrivia originalTrivia, IEnumerable<SyntaxTrivia> newTrivia)
500protected internal override SyntaxNode InsertTriviaInListCore(SyntaxTrivia originalTrivia, IEnumerable<SyntaxTrivia> newTrivia, bool insertBefore)
505protected internal override SyntaxNode? RemoveNodesCore(IEnumerable<SyntaxNode> nodes, SyntaxRemoveOptions options)
510protected internal override SyntaxNode NormalizeWhitespaceCore(string indentation, string eol, bool elasticTrivia)
515protected override bool IsEquivalentToCore(SyntaxNode node, bool topLevel = false)
Syntax\SyntaxFactory.cs (19)
1228public static SyntaxList<TNode> List<TNode>() where TNode : SyntaxNode
1239public static SyntaxList<TNode> SingletonList<TNode>(TNode node) where TNode : SyntaxNode
1249public static SyntaxList<TNode> List<TNode>(IEnumerable<TNode> nodes) where TNode : SyntaxNode
1333public static SeparatedSyntaxList<TNode> SeparatedList<TNode>() where TNode : SyntaxNode
1343public static SeparatedSyntaxList<TNode> SingletonSeparatedList<TNode>(TNode node) where TNode : SyntaxNode
1353public static SeparatedSyntaxList<TNode> SeparatedList<TNode>(IEnumerable<TNode>? nodes) where TNode : SyntaxNode
1405public static SeparatedSyntaxList<TNode> SeparatedList<TNode>(IEnumerable<TNode>? nodes, IEnumerable<SyntaxToken>? separators) where TNode : SyntaxNode
1453public static SeparatedSyntaxList<TNode> SeparatedList<TNode>(IEnumerable<SyntaxNodeOrToken> nodesAndTokens) where TNode : SyntaxNode
1464public static SeparatedSyntaxList<TNode> SeparatedList<TNode>(SyntaxNodeOrTokenList nodesAndTokens) where TNode : SyntaxNode
1547public static SyntaxTree SyntaxTree(SyntaxNode root, ParseOptions? options = null, string path = "", Encoding? encoding = null)
1648/// Since this API does not create a <see cref="SyntaxNode"/> that owns all produced tokens,
1963public static bool AreEquivalent(SyntaxNode? oldNode, SyntaxNode? newNode, bool topLevel)
1977public static bool AreEquivalent(SyntaxNode? oldNode, SyntaxNode? newNode, Func<SyntaxKind, bool>? ignoreChildNode = null)
2028where TNode : SyntaxNode
2044where TNode : SyntaxNode
2059where TNode : SyntaxNode
2348var lastNode = compilation.ChildNodes().LastOrDefault();
Syntax\SyntaxReplacer.cs (45)
15internal static SyntaxNode Replace<TNode>(
16SyntaxNode root,
18Func<TNode, TNode, SyntaxNode>? computeReplacementNode = null,
23where TNode : SyntaxNode
42IEnumerable<SyntaxNode>? nodes = null,
43Func<SyntaxNode, SyntaxNode, SyntaxNode>? computeReplacementNode = null,
49var replacer = new Replacer<SyntaxNode>(
64private class Replacer<TNode> : CSharpSyntaxRewriter where TNode : SyntaxNode
66private readonly Func<TNode, TNode, SyntaxNode>? _computeReplacementNode;
70private readonly HashSet<SyntaxNode> _nodeSet;
81Func<TNode, TNode, SyntaxNode>? computeReplacementNode,
91_nodeSet = nodes != null ? new HashSet<SyntaxNode>(nodes) : s_noNodes;
100private static readonly HashSet<SyntaxNode> s_noNodes = new HashSet<SyntaxNode>();
123foreach (var node in _nodeSet)
191public override SyntaxNode? Visit(SyntaxNode? node)
193var rewritten = node;
280internal static SyntaxNode ReplaceNodeInList(SyntaxNode root, SyntaxNode originalNode, IEnumerable<SyntaxNode> newNodes)
285internal static SyntaxNode InsertNodeInList(SyntaxNode root, SyntaxNode nodeInList, IEnumerable<SyntaxNode> nodesToInsert, bool insertBefore)
290public static SyntaxNode ReplaceTokenInList(SyntaxNode root, SyntaxToken tokenInList, IEnumerable<SyntaxToken> newTokens)
295public static SyntaxNode InsertTokenInList(SyntaxNode root, SyntaxToken tokenInList, IEnumerable<SyntaxToken> newTokens, bool insertBefore)
300public static SyntaxNode ReplaceTriviaInList(SyntaxNode root, SyntaxTrivia triviaInList, IEnumerable<SyntaxTrivia> newTrivia)
305public static SyntaxNode InsertTriviaInList(SyntaxNode root, SyntaxTrivia triviaInList, IEnumerable<SyntaxTrivia> newTrivia, bool insertBefore)
373public override SyntaxNode? Visit(SyntaxNode? node)
375SyntaxNode? rewritten = node;
415private readonly SyntaxNode _originalNode;
416private readonly IEnumerable<SyntaxNode> _newNodes;
419SyntaxNode originalNode,
420IEnumerable<SyntaxNode> replacementNodes,
429public override SyntaxNode? Visit(SyntaxNode? node)
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\UsePrimaryConstructor\CSharpUsePrimaryConstructorDiagnosticAnalyzer.cs (6)
88[NotNullWhen(true)] out SyntaxNode? nodeToRemove,
391var body = primaryConstructorDeclaration.ExpressionBody ?? (SyntaxNode?)primaryConstructorDeclaration.Body;
416using var _2 = ArrayBuilder<(IParameterSymbol parameter, SyntaxNode assignedMemberDeclaration, bool parameterIsWrittenTo)>.GetInstance(out var orderedParameterAssignments);
467ArrayBuilder<(IParameterSymbol parameter, SyntaxNode assignedMemberDeclaration, bool parameterIsWrittenTo)>? orderedParameterAssignments,
495if (!IsViableMemberToAssignTo(namedType, member, out _, out var assignedMemberDeclaration, 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 (13)
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,
341var topmostContainer = GetTopmostContainer(nodeToReplace);
350var updatedTopmostContainer = topmostContainer.ReplaceNode(
361var updatedInvocationOrCreation = updatedTopmostContainer.GetAnnotatedNodes(annotation).Single();
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 (27)
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)
609var leftExpression = syntaxFacts.IsMemberAccessExpression(expression)
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)
182internal static SyntaxNode FindStatementAndPartner(
184SyntaxNode body,
185SyntaxNode? partnerBody,
186out SyntaxNode? partnerStatement,
197SyntaxNode node;
352private static bool AreEquivalentIgnoringLambdaBodies(SyntaxNode left, SyntaxNode right)
363internal override bool IsClosureScope(SyntaxNode node)
366internal override SyntaxNode GetCapturedParameterScope(SyntaxNode methodOrLambda)
374BaseMethodDeclarationSyntax method => method.Body ?? (SyntaxNode?)method.ExpressionBody!,
382protected override LambdaBody? FindEnclosingLambdaBody(SyntaxNode encompassingAncestor, SyntaxNode node)
384var current = node;
387if (LambdaUtilities.IsLambdaBodyStatementOrExpression(current, out var body))
398protected override Match<SyntaxNode> ComputeTopLevelMatch(SyntaxNode oldCompilationUnit, SyntaxNode newCompilationUnit)
401protected override BidirectionalMap<SyntaxNode>? ComputeParameterMap(SyntaxNode oldDeclaration, SyntaxNode newDeclaration)
403BidirectionalMap<SyntaxNode>.FromMatch(SyntaxComparer.TopLevel.ComputeMatch(oldParameterList, newParameterList)) : null;
405private static SyntaxNode? GetDeclarationParameterList(SyntaxNode declaration)
414internal static Match<SyntaxNode> ComputeBodyMatch(SyntaxNode oldBody, SyntaxNode newBody, IEnumerable<KeyValuePair<SyntaxNode, SyntaxNode>>? knownMatches)
440static SyntaxNode GetMatchingRoot(SyntaxNode body)
442var parent = body.Parent!;
448var oldRoot = GetMatchingRoot(oldBody);
449var newRoot = GetMatchingRoot(newBody);
458private static IEnumerable<SyntaxNode> GetChildNodes(SyntaxNode root, SyntaxNode body)
496SyntaxNode oldBody,
497SyntaxNode newBody,
498SyntaxNode oldStatement,
499[NotNullWhen(true)] out SyntaxNode? newStatement)
520protected override bool IsNamespaceDeclaration(SyntaxNode node)
523private static bool IsTypeDeclaration(SyntaxNode node)
526protected override bool IsCompilationUnitWithGlobalStatements(SyntaxNode node)
529protected override bool IsGlobalStatement(SyntaxNode node)
532protected override IEnumerable<SyntaxNode> GetTopLevelTypeDeclarations(SyntaxNode compilationUnit)
564protected override IEnumerable<SequenceEdit> GetSyntaxSequenceEdits(ImmutableArray<SyntaxNode> oldNodes, ImmutableArray<SyntaxNode> newNodes)
567internal override SyntaxNode EmptyCompilationUnit
574protected override bool StatementLabelEquals(SyntaxNode node1, SyntaxNode node2)
580protected override bool TryGetActiveSpan(SyntaxNode node, int statementPart, int minLength, out TextSpan span)
664public static (SyntaxNode node, int part) GetFirstBodyActiveStatement(SyntaxNode memberBody)
667protected override IEnumerable<(SyntaxNode statement, int statementPart)> EnumerateNearStatements(SyntaxNode statement)
679var parent = statement.Parent;
724var node = nodeOrToken.AsNode();
758protected override bool AreEquivalentActiveStatements(SyntaxNode oldStatement, SyntaxNode newStatement, int statementPart)
870(SyntaxNode?)oldNode.Declaration ?? oldNode.Expression!,
871(SyntaxNode?)newNode.Declaration ?? newNode.Expression!);
907internal override bool IsInterfaceDeclaration(SyntaxNode node)
910internal override bool IsRecordDeclaration(SyntaxNode node)
913internal override SyntaxNode? TryGetContainingTypeDeclaration(SyntaxNode node)
916internal override bool IsDeclarationWithInitializer(SyntaxNode declaration)
932internal override bool IsPrimaryConstructorDeclaration(SyntaxNode declaration)
987protected override SyntaxNode? GetSymbolDeclarationSyntax(ISymbol symbol, Func<ImmutableArray<SyntaxReference>, SyntaxReference?> selector, CancellationToken cancellationToken)
992var syntax = symbol switch
1012protected override ISymbol? GetDeclaredSymbol(SemanticModel model, SyntaxNode declaration, CancellationToken cancellationToken)
1027SyntaxNode? oldNode,
1028SyntaxNode? newNode,
1069SyntaxNode? oldNode,
1071SyntaxNode? newNode,
1075Match<SyntaxNode> topMatch,
1076IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
1302var node = oldNode ?? newNode;
1379SyntaxNode node,
1415private ISymbol? GetParameterContainingMemberOrType(SyntaxNode? node, SyntaxNode? otherNode, DocumentSemanticModel model, IReadOnlyDictionary<SyntaxNode, SyntaxNode> fromOtherMap, CancellationToken cancellationToken)
1420SyntaxNode? declaration;
1442static SyntaxNode GetContainingDeclaration(SyntaxNode node)
1446private static bool SupportsMove(SyntaxNode node)
1451internal override Func<SyntaxNode, bool> IsLambda
1454internal override Func<SyntaxNode, bool> IsNotLambda
1457internal override Func<SyntaxNode, IEnumerable<SyntaxToken>> DescendantTokensIgnoringLambdaBodies
1463internal override bool IsLocalFunction(SyntaxNode node)
1466internal override bool IsGenericLocalFunction(SyntaxNode node)
1469internal override bool IsNestedFunction(SyntaxNode node)
1472internal override bool TryGetLambdaBodies(SyntaxNode node, [NotNullWhen(true)] out LambdaBody? body1, out LambdaBody? body2)
1474if (LambdaUtilities.TryGetLambdaBodies(node, out var bodyNode1, out var bodyNode2))
1486internal override IMethodSymbol GetLambdaExpressionSymbol(SemanticModel model, SyntaxNode lambdaExpression, CancellationToken cancellationToken)
1488var bodyExpression = LambdaUtilities.GetNestedFunctionBody(lambdaExpression);
1492internal override SyntaxNode? GetContainingQueryExpression(SyntaxNode node)
1495internal override bool QueryClauseLambdasTypeEquivalent(SemanticModel oldModel, SyntaxNode oldNode, SemanticModel newModel, SyntaxNode newNode, CancellationToken cancellationToken)
1596protected override TextSpan? TryGetDiagnosticSpan(SyntaxNode node, EditKind editKind)
1599internal static new TextSpan GetDiagnosticSpan(SyntaxNode node, EditKind editKind)
1602private static TextSpan? TryGetDiagnosticSpanImpl(SyntaxNode node, EditKind editKind)
1606internal static TextSpan? TryGetDiagnosticSpanImpl(SyntaxKind kind, SyntaxNode node, EditKind editKind)
1615var globalNode =
1741var startNode = parameter.Type ?? (SyntaxNode)parameter;
1937internal override TextSpan GetLambdaParameterDiagnosticSpan(SyntaxNode lambda, int ordinal)
1987protected override string? TryGetDisplayName(SyntaxNode node, EditKind editKind)
1990internal static new string? GetDisplayName(SyntaxNode node, EditKind editKind)
1993internal static string? TryGetDisplayNameImpl(SyntaxNode node, EditKind editKind)
2257protected override string GetSuspensionPointDisplayName(SyntaxNode node, EditKind editKind)
2282private readonly Match<SyntaxNode>? _match;
2283private readonly SyntaxNode? _oldNode;
2284private readonly SyntaxNode? _newNode;
2291SyntaxNode? oldNode,
2292SyntaxNode? newNode,
2294Match<SyntaxNode>? match = null,
2311private void ReportError(RudeEditKind kind, SyntaxNode? spanNode = null, SyntaxNode? displayNode = null)
2314var node = displayNode ?? _newNode ?? _oldNode;
2364private void ClassifyMove(SyntaxNode newNode)
2374private void ClassifyReorder(SyntaxNode newNode)
2395private void ClassifyInsert(SyntaxNode node)
2419private void ClassifyDelete(SyntaxNode oldNode)
2445private void ClassifyUpdate(SyntaxNode newNode)
2471Match<SyntaxNode> match,
2472Edit<SyntaxNode> edit,
2473Dictionary<SyntaxNode, EditKind> editMap)
2484internal override bool HasUnsupportedOperation(IEnumerable<SyntaxNode> nodes, [NotNullWhen(true)] out SyntaxNode? unsupportedNode, out RudeEditKind rudeEdit)
2489foreach (var node in nodes)
2508internal override void ReportInsertedMemberSymbolRudeEdits(RudeEditDiagnosticsBuilder diagnostics, ISymbol newSymbol, SyntaxNode newNode, bool insertingIntoExistingContainingType)
2570protected override List<SyntaxNode> GetExceptionHandlingAncestors(SyntaxNode node, SyntaxNode root, bool isNonLeaf)
2572var result = new List<SyntaxNode>();
2574var current = node;
2623IEnumerable<Edit<SyntaxNode>> exceptionHandlingEdits,
2624SyntaxNode oldStatement,
2639private static bool AreExceptionClausesEquivalent(SyntaxNode oldNode, SyntaxNode newNode)
2672protected override TextSpan GetExceptionHandlingRegion(SyntaxNode node, out bool coversAllChildren)
2711internal override bool IsStateMachineMethod(SyntaxNode declaration)
2714internal override void ReportStateMachineSuspensionPointRudeEdits(DiagnosticContext diagnosticContext, SyntaxNode oldNode, SyntaxNode newNode)
2718var oldContainingStatementPart = FindContainingStatementPart(oldNode);
2719var newContainingStatementPart = FindContainingStatementPart(newNode);
2730private static SyntaxNode FindContainingStatementPart(SyntaxNode node)
2764private static bool HasNoSpilledState(SyntaxNode awaitExpression, SyntaxNode containingStatementPart)
2805private static ExpressionSyntax GetExpressionFromStatementPart(SyntaxNode statement)
2821private static bool IsSimpleAwaitAssignment(SyntaxNode node, SyntaxNode awaitExpression)
2837IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap,
2838SyntaxNode oldActiveStatement,
2841SyntaxNode newActiveStatement,
2859private void ReportRudeEditsForSwitchWhenClauses(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode oldActiveStatement, SyntaxNode newActiveStatement)
2916SyntaxNode oldActiveStatement,
2917SyntaxNode newActiveStatement,
2950private static CheckedStatementSyntax? TryGetCheckedStatementAncestor(SyntaxNode? node)
2971IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap,
2972SyntaxNode oldActiveStatement,
2973SyntaxNode oldEncompassingAncestor,
2975SyntaxNode newActiveStatement,
2976SyntaxNode newEncompassingAncestor,
2999getTypedNodes: static n => OneOrMany.OneOrNone<SyntaxNode>(n.Expression),
3030getTypedNodes: static n => OneOrMany.Create<SyntaxNode>(n.Expression!),
3045getTypedNodes: static n => OneOrMany.OneOrNone<SyntaxNode>(n.Expression),
3050static OneOrMany<SyntaxNode> GetTypedNodes(VariableDeclarationSyntax declaration)
3052? OneOrMany.Create<SyntaxNode>(initializer.Value)
3053: 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 (54)
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)
725var leftBody = GetBody(left);
726var rightBody = GetBody(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)
940GetNestedFunctionsParts(leftNode, out var leftParameters, out var leftAsync, out var leftBody, out var leftModifiers, out var leftReturnType, out var leftIdentifier, out var leftTypeParameters);
941GetNestedFunctionsParts(rightNode, out var rightParameters, out var rightAsync, out var rightBody, out var rightModifiers, out var rightReturnType, out var rightIdentifier, out var rightTypeParameters);
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 (37)
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,
135private async Task<ImmutableArray<SyntaxNode>> CreateStatementsOrInitializerToInsertAtCallSiteAsync(
136SyntaxNode insertionPointNode, CancellationToken cancellationToken)
160return statements.CastArray<SyntaxNode>();
299protected override bool ShouldLocalFunctionCaptureParameter(SyntaxNode node)
302private static bool IsExpressionBodiedMember(SyntaxNode node)
305private static bool IsExpressionBodiedAccessor(SyntaxNode node)
323protected override SyntaxNode GetCallSiteContainerFromOutermostMoveInVariable()
340var ancestors = token.GetAncestors<SyntaxNode>();
408SyntaxNode insertionPoint, CancellationToken cancellationToken)
438SyntaxNode ConvertExitPoint(SyntaxNode current)
528protected SyntaxKind UnderCheckedContext<T>() where T : SyntaxNode
697var replacements = new Dictionary<SyntaxNode, SyntaxNode>();
702foreach (var node in declarations)
781SyntaxNode insertionPointNode,
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)
38private SignatureHelpState? GetCurrentArgumentState(SyntaxNode root, int position, ISyntaxFactsService syntaxFacts, TextSpan currentSpan, CancellationToken cancellationToken)
64private bool GetOuterMostTupleExpressionInSpan(SyntaxNode root, int position,
83private bool GetOuterMostParenthesizedExpressionInSpan(SyntaxNode root, int position,
124private IEnumerable<INamedTypeSymbol>? FindNearestTupleConstructionWithInferrableType(SyntaxNode root, SemanticModel semanticModel, int position, SignatureHelpTriggerInfo triggerInfo,
149private SignatureHelpItems? CreateItems(int position, SyntaxNode root, ISyntaxFactsService syntaxFacts,
150SyntaxNode targetExpression, SemanticModel semanticModel, IEnumerable<INamedTypeSymbol> tupleTypes, CancellationToken cancellationToken)
201private bool TryGetTupleExpression(SignatureHelpTriggerReason triggerReason, SyntaxNode root, int position,
218private bool TryGetParenthesizedExpression(SignatureHelpTriggerReason triggerReason, SyntaxNode root, int position,
SplitOrMergeIfStatements\CSharpIfLikeStatementGenerator.cs (33)
29public bool IsIfOrElseIf(SyntaxNode node) => node is IfStatementSyntax;
31public bool IsCondition(SyntaxNode expression, out SyntaxNode ifOrElseIf)
43public bool IsElseIfClause(SyntaxNode node, out SyntaxNode parentIfOrElseIf)
55public bool HasElseIfClause(SyntaxNode ifOrElseIf, out SyntaxNode elseIfClause)
68public SyntaxNode GetCondition(SyntaxNode ifOrElseIf)
74public SyntaxNode GetRootIfStatement(SyntaxNode ifOrElseIf)
86public ImmutableArray<SyntaxNode> GetElseIfAndElseClauses(SyntaxNode ifOrElseIf)
90var builder = ImmutableArray.CreateBuilder<SyntaxNode>();
106public SyntaxNode WithCondition(SyntaxNode ifOrElseIf, SyntaxNode condition)
112public SyntaxNode WithStatementInBlock(SyntaxNode ifOrElseIf, SyntaxNode statement)
118public SyntaxNode WithStatementsOf(SyntaxNode ifOrElseIf, SyntaxNode otherIfOrElseIf)
125public SyntaxNode WithElseIfAndElseClausesOf(SyntaxNode ifStatement, SyntaxNode otherIfStatement)
128public SyntaxNode ToIfStatement(SyntaxNode ifOrElseIf)
131public SyntaxNode ToElseIfClause(SyntaxNode ifOrElseIf)
134public void InsertElseIfClause(SyntaxEditor editor, SyntaxNode afterIfOrElseIf, SyntaxNode elseIfClause)
156public void RemoveElseIfClause(SyntaxEditor editor, SyntaxNode elseIfClause)
src\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\UsePrimaryConstructor\CSharpUsePrimaryConstructorDiagnosticAnalyzer.cs (6)
88[NotNullWhen(true)] out SyntaxNode? nodeToRemove,
391var body = primaryConstructorDeclaration.ExpressionBody ?? (SyntaxNode?)primaryConstructorDeclaration.Body;
416using var _2 = ArrayBuilder<(IParameterSymbol parameter, SyntaxNode assignedMemberDeclaration, bool parameterIsWrittenTo)>.GetInstance(out var orderedParameterAssignments);
467ArrayBuilder<(IParameterSymbol parameter, SyntaxNode assignedMemberDeclaration, bool parameterIsWrittenTo)>? orderedParameterAssignments,
495if (!IsViableMemberToAssignTo(namedType, member, out _, out var assignedMemberDeclaration, 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 (14)
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,
341var topmostContainer = GetTopmostContainer(nodeToReplace);
350var updatedTopmostContainer = topmostContainer.ReplaceNode(
361var updatedInvocationOrCreation = updatedTopmostContainer.GetAnnotatedNodes(annotation).Single();
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\UsePrimaryConstructor\CSharpUsePrimaryConstructorCodeFixProvider.cs (12)
313SyntaxNode TryQualify(
328SyntaxNode CreateDottedName(
344Func<TListSyntax, IEnumerable<SyntaxNode>> getElements)
345where TListSyntax : SyntaxNode
375static string GetLeadingWhitespace(SyntaxNode node)
485SyntaxNode UpdateDeclaration(SyntaxNode declaration, AssignmentExpressionSyntax assignmentExpression, ExpressionStatementSyntax? expressionStatement)
512async ValueTask<ImmutableDictionary<ISymbol, (MemberDeclarationSyntax memberNode, SyntaxNode nodeToRemove)>> RemoveMembersAsync()
514var removedMembers = ImmutableDictionary<ISymbol, (MemberDeclarationSyntax memberNode, SyntaxNode nodeToRemove)>.Empty;
556(ISymbol? member, MemberDeclarationSyntax memberNode, SyntaxNode nodeToRemove) GetMemberToRemove(string memberName)
560if (IsViableMemberToAssignTo(namedType, member, out var memberNode, out var nodeToRemove, cancellationToken))
576using var _1 = PooledHashSet<SyntaxNode>.GetInstance(out var nodesToReplace);
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 (27)
81var declaration = TryGetDeclaration(helper, text, node, position);
91private static SyntaxNode? TryGetDeclaration(
92UseExpressionBodyHelper helper, SourceText text, SyntaxNode node, int position)
94var declaration = GetDeclaration(node, helper);
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,
165var newRoot = GetUpdatedRoot(semanticModel, root, declaration, helper, useExpressionBody, cancellationToken);
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 (614)
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)
358private static ParameterListSyntax AsParameterList(IEnumerable<SyntaxNode>? parameters)
365public override SyntaxNode ConstructorDeclaration(
367IEnumerable<SyntaxNode>? parameters,
370IEnumerable<SyntaxNode>? baseConstructorArguments,
371IEnumerable<SyntaxNode>? statements)
382private protected override SyntaxNode DestructorDeclaration(IMethodSymbol destructorMethod)
385public override SyntaxNode PropertyDeclaration(
387SyntaxNode type,
390IEnumerable<SyntaxNode>? getAccessorStatements,
391IEnumerable<SyntaxNode>? setAccessorStatements)
393SyntaxNode? getAccessor = null;
394SyntaxNode? setAccessor = null;
405private protected override SyntaxNode PropertyDeclaration(
407SyntaxNode type,
408SyntaxNode? getAccessor,
409SyntaxNode? setAccessor,
431public override SyntaxNode GetAccessorDeclaration(Accessibility accessibility, IEnumerable<SyntaxNode>? statements)
434private protected override SyntaxNode SetAccessorDeclaration(Accessibility accessibility, bool isInitOnly, IEnumerable<SyntaxNode>? statements)
437private static SyntaxNode AccessorDeclaration(
438SyntaxKind kind, Accessibility accessibility, IEnumerable<SyntaxNode>? statements)
451public override SyntaxNode WithAccessorDeclarations(SyntaxNode declaration, IEnumerable<SyntaxNode> accessorDeclarations)
467private static AccessorListSyntax CreateAccessorList(AccessorListSyntax? accessorList, IEnumerable<SyntaxNode> accessorDeclarations)
475public override SyntaxNode IndexerDeclaration(
476IEnumerable<SyntaxNode> parameters,
477SyntaxNode type,
480IEnumerable<SyntaxNode>? getAccessorStatements,
481IEnumerable<SyntaxNode>? setAccessorStatements)
522private static BracketedParameterListSyntax AsBracketedParameterList(IEnumerable<SyntaxNode> parameters)
529private static AccessorDeclarationSyntax AccessorDeclaration(SyntaxKind kind, IEnumerable<SyntaxNode>? statements)
543public override SyntaxNode EventDeclaration(
545SyntaxNode type,
557public override SyntaxNode CustomEventDeclaration(
559SyntaxNode type,
562IEnumerable<SyntaxNode>? parameters,
563IEnumerable<SyntaxNode>? addAccessorStatements,
564IEnumerable<SyntaxNode>? removeAccessorStatements)
590public override SyntaxNode? AsPublicInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceTypeName, string? interfaceMemberName)
607public override SyntaxNode? AsPrivateInterfaceImplementation(SyntaxNode declaration, SyntaxNode interfaceTypeName, string? interfaceMemberName)
623private SyntaxNode WithoutConstraints(SyntaxNode declaration)
636private static SyntaxNode WithInterfaceSpecifier(SyntaxNode declaration, ExplicitInterfaceSpecifierSyntax? specifier)
648private SyntaxNode AsImplementation(SyntaxNode declaration, Accessibility requiredAccess)
656private static SyntaxNode WithBodies(SyntaxNode declaration)
705private protected override SyntaxNode ClassDeclaration(
708IEnumerable<SyntaxNode>? typeParameters,
711SyntaxNode? baseType,
712IEnumerable<SyntaxNode>? interfaceTypes,
713IEnumerable<SyntaxNode>? members)
737private SyntaxList<MemberDeclarationSyntax> AsClassMembers(string className, IEnumerable<SyntaxNode>? members)
744private MemberDeclarationSyntax? AsClassMember(SyntaxNode node, string className)
761private protected override SyntaxNode StructDeclaration(
764IEnumerable<SyntaxNode>? typeParameters,
767IEnumerable<SyntaxNode>? interfaceTypes,
768IEnumerable<SyntaxNode>? members)
784private protected override SyntaxNode InterfaceDeclaration(
786IEnumerable<SyntaxNode>? typeParameters,
788IEnumerable<SyntaxNode>? interfaceTypes = null,
789IEnumerable<SyntaxNode>? members = null)
807private SyntaxList<MemberDeclarationSyntax> AsInterfaceMembers(IEnumerable<SyntaxNode>? members)
814internal override SyntaxNode AsInterfaceMember(SyntaxNode m)
877var type = GetType(f);
889public override SyntaxNode EnumDeclaration(
893IEnumerable<SyntaxNode>? members)
898internal override SyntaxNode EnumDeclaration(string name, SyntaxNode? underlyingType, Accessibility accessibility = Accessibility.NotApplicable, DeclarationModifiers modifiers = default, IEnumerable<SyntaxNode>? members = null)
908public override SyntaxNode EnumMember(string name, SyntaxNode? expression)
916private EnumMemberDeclarationSyntax AsEnumMember(SyntaxNode node)
938private SeparatedSyntaxList<EnumMemberDeclarationSyntax> AsEnumMembers(IEnumerable<SyntaxNode>? members)
941private protected override SyntaxNode DelegateDeclaration(
943IEnumerable<SyntaxNode>? parameters,
944IEnumerable<SyntaxNode>? typeParameters,
945SyntaxNode? returnType,
959public override SyntaxNode Attribute(SyntaxNode name, IEnumerable<SyntaxNode>? attributeArguments)
962public override SyntaxNode AttributeArgument(string? name, SyntaxNode expression)
969private static AttributeArgumentListSyntax? AsAttributeArgumentList(IEnumerable<SyntaxNode>? arguments)
972private static AttributeArgumentSyntax AsAttributeArgument(SyntaxNode node)
1001private static SyntaxList<AttributeListSyntax> AsAttributeLists(IEnumerable<SyntaxNode> attributes)
1006private static AttributeListSyntax AsAttributeList(SyntaxNode node)
1011private static readonly ConditionalWeakTable<SyntaxNode, IReadOnlyList<SyntaxNode>> s_declAttributes = new();
1013public override IReadOnlyList<SyntaxNode> GetAttributes(SyntaxNode declaration)
1024private static readonly ConditionalWeakTable<SyntaxNode, IReadOnlyList<SyntaxNode>> s_declReturnAttributes = new();
1026public override IReadOnlyList<SyntaxNode> GetReturnAttributes(SyntaxNode declaration)
1040public override SyntaxNode InsertAttributes(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes)
1043private SyntaxNode InsertAttributesInternal(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes)
1064public override SyntaxNode InsertReturnAttributes(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributes)
1078private SyntaxNode InsertReturnAttributesInternal(SyntaxNode d, int index, IEnumerable<SyntaxNode> attributes)
1099private static IEnumerable<AttributeListSyntax> AsReturnAttributes(IEnumerable<SyntaxNode> attributes)
1110private static SyntaxList<AttributeListSyntax> WithRequiredTargetSpecifier(SyntaxList<AttributeListSyntax> attributes, SyntaxNode declaration)
1120public override IReadOnlyList<SyntaxNode> GetAttributeArguments(SyntaxNode attributeDeclaration)
1145public override SyntaxNode InsertAttributeArguments(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributeArguments)
1148private static SyntaxNode InsertAttributeArgumentsInternal(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> attributeArguments)
1168private static AttributeArgumentListSyntax? GetAttributeArgumentList(SyntaxNode declaration)
1188private static SyntaxNode WithAttributeArgumentList(SyntaxNode declaration, AttributeArgumentListSyntax? argList)
1208internal static SyntaxList<AttributeListSyntax> GetAttributeLists(SyntaxNode declaration)
1219private static SyntaxNode WithAttributeLists(SyntaxNode declaration, SyntaxList<AttributeListSyntax> attributeLists)
1232internal override SyntaxNode? GetPrimaryConstructorParameterList(SyntaxNode declaration)
1235internal override ImmutableArray<SyntaxNode> GetTypeInheritance(SyntaxNode declaration)
1238: ImmutableArray<SyntaxNode>.Empty;
1240public override IReadOnlyList<SyntaxNode> GetNamespaceImports(SyntaxNode declaration)
1248public override SyntaxNode InsertNamespaceImports(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> imports)
1250var result = PreserveTrivia(declaration, d => InsertNamespaceImportsInternal(d, index, imports));
1255private SyntaxNode InsertNamespaceImportsInternal(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> imports)
1267public override IReadOnlyList<SyntaxNode> GetMembers(SyntaxNode declaration)
1277private static ImmutableArray<SyntaxNode> Flatten(IEnumerable<SyntaxNode> declarations)
1279var builder = ArrayBuilder<SyntaxNode>.GetInstance();
1281foreach (var declaration in declarations)
1322static void FlattenDeclaration(ArrayBuilder<SyntaxNode> builder, SyntaxNode declaration, VariableDeclarationSyntax variableDeclaration)
1335private static int GetDeclarationCount(SyntaxNode declaration)
1346private static SyntaxNode EnsureTypeDeclarationHasBody(SyntaxNode declaration)
1359public override SyntaxNode InsertMembers(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> members)
1387private IEnumerable<MemberDeclarationSyntax>? AsMembersOf(SyntaxNode declaration, IEnumerable<SyntaxNode>? members)
1390private SyntaxNode? AsMemberOf(SyntaxNode declaration, SyntaxNode member)
1401private static bool CanHaveAccessibility(SyntaxNode declaration)
1409public override Accessibility GetAccessibility(SyntaxNode declaration)
1415public override SyntaxNode WithAccessibility(SyntaxNode declaration, Accessibility accessibility)
1617public override DeclarationModifiers GetModifiers(SyntaxNode declaration)
1624private static SyntaxTokenList GetModifierTokens(SyntaxNode declaration)
1630private SyntaxNode WithModifiersInternal(SyntaxNode declaration, DeclarationModifiers modifiers)
1662private static SyntaxNode SetModifierTokens(SyntaxNode declaration, SyntaxTokenList modifiers)
1739private protected override SyntaxNode TypeParameter(string name)
1742private protected override SyntaxNode TypeParameter(ITypeParameterSymbol typeParameter)
1755private static TypeParameterListSyntax? AsTypeParameterList(IEnumerable<SyntaxNode>? typeParameterNodes)
1764private protected override SyntaxNode WithTypeParameters(SyntaxNode declaration, IEnumerable<SyntaxNode> typeParameters)
1777internal override SyntaxNode WithExplicitInterfaceImplementations(
1778SyntaxNode declaration,
1802private static SyntaxNode RemoveDefaultValue(ParameterSyntax parameter, bool removeDefaults)
1820private protected override SyntaxNode WithTypeConstraint(
1821SyntaxNode declaration, string typeParameterName, SpecialTypeConstraintKind kinds, bool isUnmanagedType, IEnumerable<SyntaxNode>? types)
1830private protected override SyntaxNode WithDefaultConstraint(SyntaxNode declaration, string typeParameterName)
1842IEnumerable<SyntaxNode>? types)
1888public override DeclarationKind GetDeclarationKind(SyntaxNode declaration)
1891public override string GetName(SyntaxNode declaration)
1913public override SyntaxNode WithName(SyntaxNode declaration, string name)
1916private SyntaxNode WithNameInternal(SyntaxNode declaration, string name)
1953public override SyntaxNode? GetType(SyntaxNode declaration)
1992public override SyntaxNode WithType(SyntaxNode declaration, SyntaxNode type)
1995private static SyntaxNode WithTypeInternal(SyntaxNode declaration, SyntaxNode type)
2011private SyntaxNode Isolate(SyntaxNode declaration, Func<SyntaxNode, SyntaxNode> editor)
2014private SyntaxNode AsIsolatedDeclaration(SyntaxNode declaration)
2050private static SyntaxNode WithVariable(SyntaxNode declaration, VariableDeclaratorSyntax variable)
2061private static VariableDeclarationSyntax? GetVariableDeclaration(SyntaxNode declaration)
2070private static SyntaxNode WithVariableDeclaration(SyntaxNode declaration, VariableDeclarationSyntax variables)
2079private static SyntaxNode GetFullDeclaration(SyntaxNode declaration)
2110private SyntaxNode? AsNodeLike(SyntaxNode existingNode, SyntaxNode newNode)
2120var container = GetDeclaration(existingNode.Parent);
2135public override IReadOnlyList<SyntaxNode> GetParameters(SyntaxNode declaration)
2145public override SyntaxNode InsertParameters(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> parameters)
2158public override IReadOnlyList<SyntaxNode> GetSwitchSections(SyntaxNode switchStatement)
2164public override SyntaxNode InsertSwitchSections(SyntaxNode switchStatement, int index, IEnumerable<SyntaxNode> switchSections)
2191public override SyntaxNode? Visit(SyntaxNode? node)
2214internal override SyntaxNode? GetParameterListNode(SyntaxNode declaration)
2217private static SyntaxNode WithParameterList(SyntaxNode declaration, BaseParameterListSyntax list)
2263public override SyntaxNode? GetExpression(SyntaxNode declaration)
2313public override SyntaxNode WithExpression(SyntaxNode declaration, SyntaxNode expression)
2316private static SyntaxNode WithExpressionInternal(SyntaxNode declaration, SyntaxNode expression)
2389private static EqualsValueClauseSyntax? GetEqualsValue(SyntaxNode declaration)
2429private static SyntaxNode WithEqualsValue(SyntaxNode declaration, EqualsValueClauseSyntax? initializer)
2469public override IReadOnlyList<SyntaxNode> GetStatements(SyntaxNode declaration)
2491public override SyntaxNode WithStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
2516public override IReadOnlyList<SyntaxNode> GetAccessors(SyntaxNode declaration)
2522public override SyntaxNode InsertAccessors(SyntaxNode declaration, int index, IEnumerable<SyntaxNode> accessors)
2543internal static AccessorListSyntax? GetAccessorList(SyntaxNode declaration)
2546private static bool CanHaveAccessors(SyntaxNode declaration)
2555private static SyntaxNode WithAccessorList(SyntaxNode declaration, AccessorListSyntax accessorList)
2562private static AccessorListSyntax AsAccessorList(IEnumerable<SyntaxNode> nodes, SyntaxKind parentKind)
2565private static AccessorDeclarationSyntax? AsAccessor(SyntaxNode node, SyntaxKind parentKind)
2593private static AccessorDeclarationSyntax? GetAccessor(SyntaxNode declaration, SyntaxKind kind)
2599private SyntaxNode WithAccessor(SyntaxNode declaration, SyntaxKind kind, AccessorDeclarationSyntax accessor)
2602private SyntaxNode WithAccessor(SyntaxNode declaration, AccessorListSyntax? accessorList, SyntaxKind kind, AccessorDeclarationSyntax? accessor)
2620public override IReadOnlyList<SyntaxNode> GetGetAccessorStatements(SyntaxNode declaration)
2626public override IReadOnlyList<SyntaxNode> GetSetAccessorStatements(SyntaxNode declaration)
2632public override SyntaxNode WithGetAccessorStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
2635public override SyntaxNode WithSetAccessorStatements(SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
2638private SyntaxNode WithAccessorStatements(SyntaxNode declaration, SyntaxKind kind, IEnumerable<SyntaxNode> statements)
2652public override IReadOnlyList<SyntaxNode> GetBaseAndInterfaceTypes(SyntaxNode declaration)
2665public override SyntaxNode AddBaseType(SyntaxNode declaration, SyntaxNode baseType)
2679public override SyntaxNode AddInterfaceType(SyntaxNode declaration, SyntaxNode interfaceType)
2693private static SyntaxNode AddBaseList(SyntaxNode declaration, BaseListSyntax baseList)
2695var newDecl = WithBaseList(declaration, baseList);
2701private static BaseListSyntax? GetBaseList(SyntaxNode declaration)
2706private static SyntaxNode WithBaseList(SyntaxNode declaration, BaseListSyntax baseList)
2715public override SyntaxNode ReplaceNode(SyntaxNode root, SyntaxNode declaration, SyntaxNode? newDeclaration)
2730var newFullDecl = AsIsolatedDeclaration(newDeclaration);
2731var fullDecl = GetFullDeclaration(declaration);
2739var newSubDecl = GetSubDeclarations(newFullDecl)[0];
2763private static bool AreInlineReplaceableSubDeclarations(SyntaxNode decl1, SyntaxNode decl2)
2779private static bool AreSimilarExceptForSubDeclarations(SyntaxNode? decl1, SyntaxNode? decl2)
2828private IEnumerable<SyntaxNode> SplitAndReplace(SyntaxNode multiPartDeclaration, int index, IEnumerable<SyntaxNode> newDeclarations)
2834var newNodes = new List<SyntaxNode>();
2858public override SyntaxNode InsertNodesBefore(SyntaxNode root, SyntaxNode declaration, IEnumerable<SyntaxNode> newDeclarations)
2877private SyntaxNode InsertNodesBeforeInternal(SyntaxNode root, SyntaxNode declaration, IEnumerable<SyntaxNode> newDeclarations)
2879var fullDecl = GetFullDeclaration(declaration);
2897public override SyntaxNode InsertNodesAfter(SyntaxNode root, SyntaxNode declaration, IEnumerable<SyntaxNode> newDeclarations)
2916private SyntaxNode InsertNodesAfterInternal(SyntaxNode root, SyntaxNode declaration, IEnumerable<SyntaxNode> newDeclarations)
2918var fullDecl = GetFullDeclaration(declaration);
2937private IEnumerable<SyntaxNode> SplitAndInsert(SyntaxNode multiPartDeclaration, int index, IEnumerable<SyntaxNode> newDeclarations)
2940var newNodes = new List<SyntaxNode>
2949private SyntaxNode WithSubDeclarationsRemoved(SyntaxNode declaration, int index, int count)
2952private static IReadOnlyList<SyntaxNode> GetSubDeclarations(SyntaxNode declaration)
2963public override SyntaxNode RemoveNode(SyntaxNode root, SyntaxNode node)
2966public override SyntaxNode RemoveNode(SyntaxNode root, SyntaxNode node, SyntaxRemoveOptions options)
2987private SyntaxNode RemoveNodeInternal(SyntaxNode root, SyntaxNode declaration, SyntaxRemoveOptions options)
3013var full = GetFullDeclaration(declaration);
3032var parent = declaration.Parent;
3051private static SyntaxNode ShiftTrivia(SyntaxNode root, SyntaxNode node)
3057var newNode = node.WithTrailingTrivia(node.GetTrailingTrivia().AddRange(previousToken.TrailingTrivia));
3075public override SyntaxNode AddEventHandler(SyntaxNode @event, SyntaxNode handler)
3078public override SyntaxNode RemoveEventHandler(SyntaxNode @event, SyntaxNode handler)
3081public override SyntaxNode AwaitExpression(SyntaxNode expression)
3084public override SyntaxNode NameOfExpression(SyntaxNode expression)
3087public override SyntaxNode ReturnStatement(SyntaxNode? expression = null)
3090public override SyntaxNode ThrowStatement(SyntaxNode? expression = null)
3093public override SyntaxNode ThrowExpression(SyntaxNode expression)
3096public override SyntaxNode IfStatement(SyntaxNode condition, IEnumerable<SyntaxNode> trueStatements, IEnumerable<SyntaxNode>? falseStatements = null)
3118IEnumerable<SyntaxNode>? statements = null,
3135private static SyntaxList<StatementSyntax> AsStatementList(IEnumerable<SyntaxNode>? nodes)
3138private static StatementSyntax AsStatement(SyntaxNode node)
3148public override SyntaxNode ExpressionStatement(SyntaxNode expression)
3151public override SyntaxNode ConditionalAccessExpression(SyntaxNode expression, SyntaxNode whenNotNull)
3154public override SyntaxNode MemberBindingExpression(SyntaxNode name)
3157public override SyntaxNode ElementBindingExpression(IEnumerable<SyntaxNode> arguments)
3161private static SeparatedSyntaxList<ExpressionSyntax> AsExpressionList(IEnumerable<SyntaxNode> expressions)
3164public override SyntaxNode ArrayCreationExpression(SyntaxNode elementType, SyntaxNode size)
3170public override SyntaxNode ArrayCreationExpression(SyntaxNode elementType, IEnumerable<SyntaxNode> elements)
3178public override SyntaxNode ObjectCreationExpression(SyntaxNode type, IEnumerable<SyntaxNode> arguments)
3181internal override SyntaxNode ObjectCreationExpression(SyntaxNode type, SyntaxToken openParen, SeparatedSyntaxList<SyntaxNode> arguments, SyntaxToken closeParen)
3187private static ArgumentListSyntax CreateArgumentList(IEnumerable<SyntaxNode> arguments)
3190private static SeparatedSyntaxList<ArgumentSyntax> CreateArguments(IEnumerable<SyntaxNode> arguments)
3193private static ArgumentSyntax AsArgument(SyntaxNode argOrExpression)
3196public override SyntaxNode InvocationExpression(SyntaxNode expression, IEnumerable<SyntaxNode> arguments)
3199public override SyntaxNode ElementAccessExpression(SyntaxNode expression, IEnumerable<SyntaxNode> arguments)
3205private static SyntaxNode Parenthesize(SyntaxNode expression, bool includeElasticTrivia = true, bool addSimplifierAnnotation = true)
3208public override SyntaxNode IsTypeExpression(SyntaxNode expression, SyntaxNode type)
3211public override SyntaxNode TypeOfExpression(SyntaxNode type)
3214public override SyntaxNode TryCastExpression(SyntaxNode expression, SyntaxNode type)
3217public override SyntaxNode AssignmentStatement(SyntaxNode left, SyntaxNode right)
3220private static SyntaxNode CreateBinaryExpression(SyntaxKind syntaxKind, SyntaxNode left, SyntaxNode right)
3223public override SyntaxNode ValueEqualsExpression(SyntaxNode left, SyntaxNode right)
3226public override SyntaxNode ReferenceEqualsExpression(SyntaxNode left, SyntaxNode right)
3229public override SyntaxNode ValueNotEqualsExpression(SyntaxNode left, SyntaxNode right)
3232public override SyntaxNode ReferenceNotEqualsExpression(SyntaxNode left, SyntaxNode right)
3235public override SyntaxNode LessThanExpression(SyntaxNode left, SyntaxNode right)
3238public override SyntaxNode LessThanOrEqualExpression(SyntaxNode left, SyntaxNode right)
3241public override SyntaxNode GreaterThanExpression(SyntaxNode left, SyntaxNode right)
3244public override SyntaxNode GreaterThanOrEqualExpression(SyntaxNode left, SyntaxNode right)
3247public override SyntaxNode NegateExpression(SyntaxNode expression)
3250public override SyntaxNode AddExpression(SyntaxNode left, SyntaxNode right)
3253public override SyntaxNode SubtractExpression(SyntaxNode left, SyntaxNode right)
3256public override SyntaxNode MultiplyExpression(SyntaxNode left, SyntaxNode right)
3259public override SyntaxNode DivideExpression(SyntaxNode left, SyntaxNode right)
3262public override SyntaxNode ModuloExpression(SyntaxNode left, SyntaxNode right)
3265public override SyntaxNode BitwiseAndExpression(SyntaxNode left, SyntaxNode right)
3268public override SyntaxNode BitwiseNotExpression(SyntaxNode operand)
3271public override SyntaxNode LogicalAndExpression(SyntaxNode left, SyntaxNode right)
3274public override SyntaxNode LogicalOrExpression(SyntaxNode left, SyntaxNode right)
3277public override SyntaxNode LogicalNotExpression(SyntaxNode expression)
3280public override SyntaxNode ConditionalExpression(SyntaxNode condition, SyntaxNode whenTrue, SyntaxNode whenFalse)
3283public override SyntaxNode CoalesceExpression(SyntaxNode left, SyntaxNode right)
3286public override SyntaxNode ThisExpression()
3289public override SyntaxNode BaseExpression()
3292public override SyntaxNode TypedConstantExpression(TypedConstant value)
3295private protected override SyntaxNode GenerateExpression(ITypeSymbol? type, object? value, bool canUseFieldReference)
3298public override SyntaxNode GenericName(string identifier, IEnumerable<SyntaxNode> typeArguments)
3301internal override SyntaxNode GenericName(SyntaxToken identifier, IEnumerable<SyntaxNode> typeArguments)
3305public override SyntaxNode WithTypeArguments(SyntaxNode expression, IEnumerable<SyntaxNode> typeArguments)
3335public override SyntaxNode QualifiedName(SyntaxNode left, SyntaxNode right)
3338internal override SyntaxNode GlobalAliasedName(SyntaxNode name)
3343public override SyntaxNode NameExpression(INamespaceOrTypeSymbol namespaceOrTypeSymbol)
3346public override SyntaxNode TypeExpression(SpecialType specialType)
3368public override SyntaxNode ArrayTypeExpression(SyntaxNode type)
3371public override SyntaxNode NullableTypeExpression(SyntaxNode type)
3383internal override SyntaxNode CreateTupleType(IEnumerable<SyntaxNode> elements)
3386public override SyntaxNode TupleElementExpression(SyntaxNode type, string? name = null)
3389public override SyntaxNode Argument(string? name, RefKind refKind, SyntaxNode expression)
3397public override SyntaxNode LocalDeclarationStatement(SyntaxNode? type, string name, SyntaxNode? initializer, bool isConst)
3400public override SyntaxNode UsingStatement(SyntaxNode? type, string name, SyntaxNode expression, IEnumerable<SyntaxNode> statements)
3408public override SyntaxNode UsingStatement(SyntaxNode expression, IEnumerable<SyntaxNode> statements)
3416public override SyntaxNode LockStatement(SyntaxNode expression, IEnumerable<SyntaxNode> statements)
3423public override SyntaxNode TryCatchStatement(IEnumerable<SyntaxNode>? tryStatements, IEnumerable<SyntaxNode>? catchClauses, IEnumerable<SyntaxNode>? finallyStatements = null)
3431public override SyntaxNode CatchClause(SyntaxNode type, string name, IEnumerable<SyntaxNode> statements)
3439public override SyntaxNode WhileStatement(SyntaxNode condition, IEnumerable<SyntaxNode> statements)
3442public override SyntaxNode SwitchStatement(SyntaxNode expression, IEnumerable<SyntaxNode> caseClauses)
3463public override SyntaxNode SwitchSection(IEnumerable<SyntaxNode> expressions, IEnumerable<SyntaxNode> statements)
3466internal override SyntaxNode SwitchSectionFromLabels(IEnumerable<SyntaxNode> labels, IEnumerable<SyntaxNode> statements)
3473public override SyntaxNode DefaultSwitchSection(IEnumerable<SyntaxNode> statements)
3476private static SyntaxList<SwitchLabelSyntax> AsSwitchLabels(IEnumerable<SyntaxNode> expressions)
3488public override SyntaxNode ExitSwitchStatement()
3491internal override SyntaxNode ScopeBlock(IEnumerable<SyntaxNode> statements)
3494internal override SyntaxNode GlobalStatement(SyntaxNode statement)
3497public override SyntaxNode ValueReturningLambdaExpression(IEnumerable<SyntaxNode>? parameterDeclarations, SyntaxNode expression)
3506private static bool IsSimpleLambdaParameter(SyntaxNode node)
3509public override SyntaxNode VoidReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, SyntaxNode expression)
3512public override SyntaxNode ValueReturningLambdaExpression(IEnumerable<SyntaxNode>? parameterDeclarations, IEnumerable<SyntaxNode> statements)
3515public override SyntaxNode VoidReturningLambdaExpression(IEnumerable<SyntaxNode>? lambdaParameters, IEnumerable<SyntaxNode> statements)
3518public override SyntaxNode LambdaParameter(string identifier, SyntaxNode? type = null)
3521internal override SyntaxNode IdentifierName(SyntaxToken identifier)
3524internal override SyntaxNode NamedAnonymousObjectMemberDeclarator(SyntaxNode identifier, SyntaxNode expression)
3531public override SyntaxNode TupleExpression(IEnumerable<SyntaxNode> arguments)
3534internal override SyntaxNode RemoveAllComments(SyntaxNode node)
3574internal override SyntaxNode ParseExpression(string stringToParse)
3577internal override SyntaxNode ParseTypeName(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)
CodeFixes\Suppression\AbstractSuppressionCodeFixProvider.PragmaHelpers.cs (12)
34var nodeWithTokens = suppressionTargetInfo.NodeWithTokens;
35var root = await nodeWithTokens.SyntaxTree.GetRootAsync(cancellationToken).ConfigureAwait(false);
51SyntaxNode newNode;
61var newRoot = root.ReplaceNode(nodeWithTokens, newNode);
107Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode,
159Func<SyntaxNode, CancellationToken, SyntaxNode> formatNode,
211var nodeWithTokens = suppressionTargetInfo.NodeWithTokens;
222var root = nodeWithTokens.SyntaxTree.GetRoot();
224var subtreeRoot = root.FindNode(new TextSpan(previousOfStart.FullSpan.Start, spanEnd - previousOfStart.FullSpan.Start));
241var newSubtreeRoot = subtreeRoot.ReplaceTokens([startToken, previousOfStart, endToken, nextOfEnd],
CodeLens\CodeLensReferencesService.cs (8)
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 (46)
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);
700var dummyImport = CreateImport(generator, "Dummy", withFormatterAnnotation: false);
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)
Completion\Providers\AbstractAwaitCompletionProvider.cs (10)
58protected abstract int GetAsyncKeywordInsertionPosition(SyntaxNode declaration);
59protected abstract TextChange? GetReturnTypeChange(SemanticModel semanticModel, SyntaxNode declaration, CancellationToken cancellationToken);
61protected abstract SyntaxNode? GetAsyncSupportingDeclaration(SyntaxToken leftToken, int position);
63protected abstract ITypeSymbol? GetTypeSymbolOfExpression(SemanticModel semanticModel, SyntaxNode potentialAwaitableExpression, CancellationToken cancellationToken);
64protected abstract SyntaxNode? GetExpressionToPlaceAwaitInFrontOf(SyntaxTree syntaxTree, int position, CancellationToken cancellationToken);
98var declaration = GetAsyncSupportingDeclaration(leftToken, position);
183var declaration = GetAsyncSupportingDeclaration(root.FindToken(leftTokenPosition), position);
216var expr = GetExpressionToPlaceAwaitInFrontOf(syntaxTree, position, cancellationToken);
257var potentialAwaitableExpression = GetExpressionToPlaceAwaitInFrontOf(syntaxTree, position, cancellationToken);
260var parentOfAwaitable = potentialAwaitableExpression.Parent;
ConvertForEachToFor\AbstractConvertForEachToForCodeRefactoringProvider.cs (16)
28where TStatementSyntax : SyntaxNode
43protected abstract (SyntaxNode start, SyntaxNode end) GetForEachBody(TForEachStatement foreachStatement);
86ISemanticFactsService semanticFacts, SemanticModel model, SyntaxNode location, string baseName, CancellationToken cancellationToken)
89protected static SyntaxNode GetCollectionVariableName(
91ForEachInfo foreachInfo, SyntaxNode foreachCollectionExpression, CancellationToken cancellationToken)
105SyntaxNode type, SyntaxNode foreachCollectionExpression, SyntaxNode collectionVariable)
119var expression = foreachCollectionExpression.WithoutAnnotations(SimplificationHelpers.DoNotSimplifyAnnotation);
120var collectionStatement = generator.LocalDeclarationStatement(
132SyntaxGenerator generator, SyntaxNode type, SyntaxToken foreachVariable,
133ITypeSymbol castType, SyntaxNode collectionVariable, SyntaxToken indexVariable)
135var memberAccess = generator.ElementAccessExpression(
143var localDecl = generator.LocalDeclarationStatement(
424var newRoot = editor.GetChangedRoot();
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 (343)
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 TextSpan? TryGetDiagnosticSpan(SyntaxNode node, EditKind editKind);
260internal TextSpan GetDiagnosticSpan(SyntaxNode node, EditKind editKind)
263protected virtual TextSpan GetBodyDiagnosticSpan(SyntaxNode node, EditKind editKind)
265var current = node.Parent;
283internal abstract TextSpan GetLambdaParameterDiagnosticSpan(SyntaxNode lambda, int ordinal);
305internal string GetDisplayName(SyntaxNode node, EditKind editKind = EditKind.Update)
356protected virtual string GetBodyDisplayName(SyntaxNode node, EditKind editKind = EditKind.Update)
358var current = node.Parent;
386protected abstract string? TryGetDisplayName(SyntaxNode node, EditKind editKind);
388protected virtual string GetSuspensionPointDisplayName(SyntaxNode node, EditKind editKind)
394protected abstract List<SyntaxNode> GetExceptionHandlingAncestors(SyntaxNode node, SyntaxNode root, bool isNonLeaf);
395protected abstract TextSpan GetExceptionHandlingRegion(SyntaxNode node, out bool coversAllChildren);
397internal abstract void ReportTopLevelSyntacticRudeEdits(RudeEditDiagnosticsBuilder diagnostics, Match<SyntaxNode> match, Edit<SyntaxNode> edit, Dictionary<SyntaxNode, EditKind> editMap);
398internal abstract void ReportEnclosingExceptionHandlingRudeEdits(RudeEditDiagnosticsBuilder diagnostics, IEnumerable<Edit<SyntaxNode>> exceptionHandlingEdits, SyntaxNode oldStatement, TextSpan newStatementSpan);
400internal abstract bool HasUnsupportedOperation(IEnumerable<SyntaxNode> newNodes, [NotNullWhen(true)] out SyntaxNode? unsupportedNode, out RudeEditKind rudeEdit);
404if (HasUnsupportedOperation(body.GetDescendantNodes(IsNotLambda), out var unsupportedNode, out var rudeEdit))
415IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap,
416SyntaxNode oldActiveStatement,
419SyntaxNode newActiveStatement,
425internal abstract void ReportInsertedMemberSymbolRudeEdits(RudeEditDiagnosticsBuilder diagnostics, ISymbol newSymbol, SyntaxNode newNode, bool insertingIntoExistingContainingType);
426internal abstract void ReportStateMachineSuspensionPointRudeEdits(DiagnosticContext diagnosticContext, SyntaxNode oldNode, SyntaxNode newNode);
428internal abstract Func<SyntaxNode, bool> IsLambda { get; }
429internal abstract Func<SyntaxNode, bool> IsNotLambda { get; }
430internal abstract Func<SyntaxNode, IEnumerable<SyntaxToken>> DescendantTokensIgnoringLambdaBodies { get; }
433internal abstract bool IsInterfaceDeclaration(SyntaxNode node);
434internal abstract bool IsRecordDeclaration(SyntaxNode node);
439internal abstract bool IsNestedFunction(SyntaxNode node);
441internal abstract bool IsLocalFunction(SyntaxNode node);
442internal abstract bool IsGenericLocalFunction(SyntaxNode node);
443internal abstract bool IsClosureScope(SyntaxNode node);
444internal abstract SyntaxNode GetCapturedParameterScope(SyntaxNode declaringMethodOrLambda);
445internal abstract IMethodSymbol GetLambdaExpressionSymbol(SemanticModel model, SyntaxNode lambdaExpression, CancellationToken cancellationToken);
446internal abstract SyntaxNode? GetContainingQueryExpression(SyntaxNode node);
447internal abstract bool QueryClauseLambdasTypeEquivalent(SemanticModel oldModel, SyntaxNode oldNode, SemanticModel newModel, SyntaxNode newNode, CancellationToken cancellationToken);
465internal abstract bool TryGetLambdaBodies(SyntaxNode node, [NotNullWhen(true)] out LambdaBody? body1, out LambdaBody? body2);
467internal abstract bool IsStateMachineMethod(SyntaxNode declaration);
473internal abstract SyntaxNode? TryGetContainingTypeDeclaration(SyntaxNode node);
479internal abstract bool IsDeclarationWithInitializer(SyntaxNode declaration);
489internal abstract bool IsPrimaryConstructorDeclaration(SyntaxNode declaration);
498internal abstract SyntaxNode EmptyCompilationUnit { get; }
610using var _3 = ArrayBuilder<(SyntaxNode OldNode, SyntaxNode NewNode, TextSpan DiagnosticSpan)>.GetInstance(out var triviaEdits);
741private async ValueTask<(SyntaxNode oldRoot, SyntaxNode newRoot)> GetSyntaxRootsAsync(Document? oldDocument, Document? newDocument, CancellationToken cancellationToken)
743SyntaxNode? oldRoot = null;
744SyntaxNode? newRoot = null;
763SyntaxNode GetEmptyRoot(ParseOptions options)
779private void ReportTopLevelSyntacticRudeEdits(RudeEditDiagnosticsBuilder diagnostics, EditScript<SyntaxNode> syntacticEdits, Dictionary<SyntaxNode, EditKind> editMap)
787internal Dictionary<SyntaxNode, EditKind> BuildEditMap(EditScript<SyntaxNode> editScript)
789var map = new Dictionary<SyntaxNode, EditKind>(editScript.Edits.Length);
826Match<SyntaxNode> topMatch,
851var node = TryGetNode(topMatch.OldRoot, oldStatementSpan.Start);
858var hasPartner = topMatch.TryGetNewNode(oldMemberDeclaration, out var newMemberDeclaration);
871var oldStatementSyntax = oldBody.FindStatement(oldStatementSpan, out var _);
880SyntaxNode? newStatement = null;
884if (TryGetTrackedStatement(newActiveStatementSpans, oldActiveStatements[i].Statement.Id, newText, newBody, out var trackedStatement, out var trackedStatementPart))
941internal readonly struct ActiveNode(int activeStatementIndex, SyntaxNode oldNode, LambdaBody? enclosingLambdaBody, int statementPart, SyntaxNode? newTrackedNode)
944public readonly SyntaxNode OldNode = oldNode;
945public readonly SyntaxNode? NewTrackedNode = newTrackedNode;
982SyntaxNode? oldDeclaration,
983SyntaxNode? newDeclaration,
991Match<SyntaxNode> topMatch,
1072var oldStatementSyntax = oldMemberBody.FindStatement(oldStatementSpan, out var statementPart);
1093SyntaxNode? trackedNode = null;
1095if (TryGetTrackedStatement(newActiveStatementSpans, oldActiveStatements[activeStatementIndex].Statement.Id, newText, newMemberBody, out var newStatementSyntax, out var _))
1227SyntaxNode? newStatementSyntax;
1365private static bool TryGetTrackedStatement(ImmutableArray<ActiveStatementLineSpan> activeStatementSpans, ActiveStatementId id, SourceText text, MemberBody body, [NotNullWhen(true)] out SyntaxNode? trackedStatement, out int trackedStatementPart)
1410IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap,
1411SyntaxNode oldStatementSyntax,
1412SyntaxNode oldEncompassingAncestor,
1413SyntaxNode? newStatementSyntax,
1414SyntaxNode newEncompassingAncestor,
1439var edits = new MapBasedLongestCommonSubsequence<SyntaxNode>(forwardMap).GetEdits(oldAncestors, newAncestors);
1459ArrayBuilder<(DeclarationBodyMap map, SyntaxNode? oldLambda)>? lambdaBodyMaps = null;
1460SyntaxNode? currentOldLambda = null;
1476lambdaBodyMaps ??= ArrayBuilder<(DeclarationBodyMap, SyntaxNode?)>.GetInstance();
1510var map = new Dictionary<SyntaxNode, SyntaxNode>();
1511var additionalReverseMap = ImmutableDictionary.CreateBuilder<SyntaxNode, SyntaxNode>();
1616private static List<KeyValuePair<SyntaxNode, SyntaxNode>>? GetMatchingActiveNodes(IEnumerable<ActiveNode> activeNodes)
1619List<KeyValuePair<SyntaxNode, SyntaxNode>>? lazyKnownMatches = null;
1633public ActiveStatementExceptionRegions GetExceptionRegions(SyntaxNode root, TextSpan unmappedActiveStatementSpan, bool isNonLeaf, CancellationToken cancellationToken)
1635var node = root.FindToken(unmappedActiveStatementSpan.Start).Parent;
1642private ActiveStatementExceptionRegions GetExceptionRegions(List<SyntaxNode> exceptionHandlingAncestors, SyntaxTree tree, CancellationToken cancellationToken)
1675SyntaxNode oldEncompassingAncestor,
1676IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap,
1682var oldLambda = oldLambdaBody.GetLambda();
1698private TextSpan FindClosestActiveSpan(SyntaxNode statement, int statementPart)
1725internal TextSpan GetDeletedNodeActiveSpan(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode deletedNode)
1734if (forwardMap.TryGetValue(oldNode, out var newNode))
1743internal TextSpan GetDeletedDeclarationActiveSpan(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode deletedDeclaration)
1753var hasAncestor = TryGetMatchingAncestor(forwardMap, deletedDeclaration, out var newAncestor);
1765internal TextSpan GetDeletedNodeDiagnosticSpan(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode deletedNode)
1767var hasAncestor = TryGetMatchingAncestor(forwardMap, deletedNode, out var newAncestor);
1775private static bool TryGetMatchingAncestor(IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMap, SyntaxNode? oldNode, [NotNullWhen(true)] out SyntaxNode? newAncestor)
1793protected static bool HasParentEdit(IReadOnlyDictionary<SyntaxNode, EditKind> editMap, Edit<SyntaxNode> edit)
1795SyntaxNode node;
1813protected static bool HasEdit(IReadOnlyDictionary<SyntaxNode, EditKind> editMap, SyntaxNode? node, EditKind editKind)
1825protected void AddAroundActiveStatementRudeDiagnostic(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode? oldNode, SyntaxNode? newNode, TextSpan newActiveStatementSpan)
1843protected void AddRudeTypeUpdateAroundActiveStatement(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode newNode, ITypeSymbol oldType, ITypeSymbol newType)
1852protected void AddRudeUpdateAroundActiveStatement(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode newNode)
1861protected void AddRudeInsertAroundActiveStatement(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode newNode)
1870protected void AddRudeDeleteAroundActiveStatement(RudeEditDiagnosticsBuilder diagnostics, SyntaxNode oldNode, TextSpan newActiveStatementSpan)
1881IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap,
1882SyntaxNode oldActiveStatement,
1883SyntaxNode oldEncompassingAncestor,
1885SyntaxNode newActiveStatement,
1886SyntaxNode newEncompassingAncestor,
1888Func<SyntaxNode, bool> nodeSelector,
1889Func<TSyntaxNode, OneOrMany<SyntaxNode>> getTypedNodes,
1893where TSyntaxNode : SyntaxNode
1925private void ReportRudeEditsAndInserts(List<SyntaxNode?>? oldNodes, List<SyntaxNode?> newNodes, RudeEditDiagnosticsBuilder diagnostics)
1931var newNode = newNodes[i];
1951List<SyntaxNode?> oldNodes,
1953List<SyntaxNode?> newNodes,
1956IReadOnlyDictionary<SyntaxNode, SyntaxNode>? reverseMap,
1957Func<TSyntaxNode, OneOrMany<SyntaxNode>> getTypedNodes,
1961where TSyntaxNode : SyntaxNode
1967var newNode = newNodes[newIndex];
1973SyntaxNode? oldNode;
1997else if (reverseMap.TryGetValue(newNode, out var oldPartner) && comparer((TSyntaxNode)oldPartner, (TSyntaxNode)newNode))
2048private static int IndexOfEquivalent<TSyntaxNode>(SyntaxNode newNode, List<SyntaxNode?> oldNodes, int startIndex, Func<TSyntaxNode, TSyntaxNode, bool> comparer)
2049where TSyntaxNode : SyntaxNode
2053var oldNode = oldNodes[i];
2063private static List<SyntaxNode?>? GetAncestors(SyntaxNode? root, SyntaxNode node, Func<SyntaxNode, bool> nodeSelector)
2065List<SyntaxNode?>? list = null;
2066var current = node;
2097Match<SyntaxNode> topMatch,
2098IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
2099[Out] ArrayBuilder<(SyntaxNode OldNode, SyntaxNode NewNode, TextSpan DiagnosticSpan)> triviaEdits,
2114using var _ = ArrayBuilder<(string filePath, int oldStartLine, int oldEndLine, int delta, SyntaxNode oldNode, SyntaxNode newNode)>.GetInstance(out var segments);
2538public readonly Dictionary<SyntaxNode, SyntaxMaps> ChangedDeclarations = [];
2555EditScript<SyntaxNode> editScript,
2556IReadOnlyDictionary<SyntaxNode, EditKind> editMap,
2559IReadOnlyList<(SyntaxNode OldNode, SyntaxNode NewNode, TextSpan DiagnosticSpan)> triviaEdits,
2627var newTypeDeclaration = GetSymbolDeclarationSyntax(newSymbol, refs => refs.First(r => r.SyntaxTree == edit.NewNode!.SyntaxTree), cancellationToken);
3488SyntaxNode? newDeclaration,
3532(SyntaxNode? oldDeclaration, SyntaxNode? newDeclaration) GetSymbolDeclarationNodes(ISymbol? oldSymbol, ISymbol? newSymbol, SyntaxNode? oldNode, SyntaxNode? newNode)
3885var oldRoot = oldModel.SyntaxTree.GetRoot(cancellationToken);
3886foreach (var oldTypeDeclaration in GetTopLevelTypeDeclarations(oldRoot))
3916var newRoot = newModel.SyntaxTree.GetRoot(cancellationToken);
3917foreach (var newTypeDeclaration in GetTopLevelTypeDeclarations(newRoot))
3950private bool IsRestartRequired(ISymbol oldMember, SyntaxNode? oldDeclaration, Compilation oldCompilation, ISymbol newMember, SyntaxNode? newDeclaration, CancellationToken cancellationToken)
4041SyntaxNode? oldDeclaration,
4045SyntaxNode? newDeclaration,
4545/// and therefore not produced by <see cref="GetSymbolEdits(EditKind, SyntaxNode?, SyntaxNode?, DocumentSemanticModel, DocumentSemanticModel, Match{SyntaxNode}, IReadOnlyDictionary{SyntaxNode, EditKind}, SymbolInfoCache, CancellationToken)"/>
4918SyntaxNode? newNode,
4920Match<SyntaxNode>? topMatch,
4946private SyntaxNode GetDiagnosticNode(out int distance, CancellationToken cancellationToken)
4966var oldContainerDeclaration = analyzer.GetSymbolDeclarationSyntax(oldSymbol.ContainingSymbol, topMatch.OldRoot.SyntaxTree, cancellationToken);
4968topMatch.TryGetNewNode(oldContainerDeclaration, out var newContainerDeclaration))
4980var node = analyzer.GetSymbolDeclarationSyntax(newDiagnosticSymbol, newModel.SyntaxTree, cancellationToken);
5033public void Report(RudeEditKind kind, SyntaxNode locationNode, CancellationToken cancellationToken, string?[]? arguments = null)
5054var node = GetDiagnosticNode(out var distance, cancellationToken);
5059topMatch?.TryGetOldNode(node, out var oldNode) == true &&
5125SyntaxNode? newNode,
5127Match<SyntaxNode>? topMatch,
5240private static Func<SyntaxNode, SyntaxNode?> CreateSyntaxMapForEquivalentNodes(MemberBody oldBody, MemberBody newBody)
5248private static Func<SyntaxNode, SyntaxNode?> CreateSyntaxMap(DeclarationBodyMap bodyMap)
5253return newNode => reverseMatch.TryGetValue(newNode, out var oldNode) || additionalReverse.TryGetValue(newNode, out oldNode) ? oldNode : null;
5258IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseTopMatches,
5259IReadOnlyDictionary<SyntaxNode, SyntaxMaps> changedDeclarations)
5283if (reverseTopMatches.TryGetValue(newDeclaration, out var oldDeclaration))
5326Match<SyntaxNode> topMatch,
5380SyntaxNode? oldDeclaration = null;
5381SyntaxNode? newDeclaration = null;
5544var syntax = GetSymbolDeclarationSyntax(member, cancellationToken);
5591SyntaxNode? oldDeclaration,
5595SyntaxNode? newDeclaration,
5602out Func<SyntaxNode, RuntimeRudeEdit?>? runtimeRudeEdits,
5609using var _ = PooledDictionary<SyntaxNode, RudeEditDiagnostic>.GetInstance(out var runtimeRudeEditsBuilder);
5627var oldLambda = oldLambdaBody.GetLambda();
5628var newLambda = newLambdaBody.GetLambda();
5712ArrayBuilder<SyntaxNode>? lazyNewErroneousClauses = null;
5717lazyNewErroneousClauses ??= ArrayBuilder<SyntaxNode>.GetInstance();
5796using var _2 = ArrayBuilder<SyntaxNode?>.GetInstance(newInLambdaCaptures.Length, fillWithValue: null, out var newCapturesToClosureScopes);
5800using var _3 = ArrayBuilder<SyntaxNode?>.GetInstance(oldInLambdaCaptures.Length, fillWithValue: null, out var oldCapturesToClosureScopes);
5857bool CanAddNewLambda(SyntaxNode newLambda, LambdaBody newLambdaBody1, LambdaBody? newLambdaBody2)
5919private IEnumerable<(SyntaxNode lambda, LambdaBody lambdaBody1, LambdaBody? lambdaBody2)> GetLambdaBodies(MemberBody? body)
5938private IEnumerable<LambdaBody> GetEnclosingLambdaBodies(SyntaxNode encompassingAncestor, SyntaxNode node)
6132foreach (var expressionOrStatement in lambdaBody.GetExpressionsAndStatements())
6172protected abstract SyntaxNode? GetSymbolDeclarationSyntax(ISymbol symbol, Func<ImmutableArray<SyntaxReference>, SyntaxReference?> selector, CancellationToken cancellationToken);
6174protected SyntaxNode GetSymbolDeclarationSyntax(ISymbol symbol, CancellationToken cancellationToken)
6177protected SyntaxNode? GetSingleSymbolDeclarationSyntax(ISymbol symbol, CancellationToken cancellationToken)
6180protected SyntaxNode? GetSymbolDeclarationSyntax(ISymbol symbol, SyntaxTree tree, CancellationToken cancellationToken)
6183protected abstract ISymbol? GetDeclaredSymbol(SemanticModel model, SyntaxNode declaration, CancellationToken cancellationToken);
6185protected ISymbol GetRequiredDeclaredSymbol(SemanticModel model, SyntaxNode declaration, CancellationToken cancellationToken)
6216var lambda = parameter.ContainingSymbol is IMethodSymbol { MethodKind: MethodKind.LambdaMethod or MethodKind.LocalFunction } containingLambda ?
6231IReadOnlyDictionary<SyntaxNode, SyntaxNode>? parameterMap,
6232IReadOnlyDictionary<SyntaxNode, SyntaxNode> bodyMap,
6238SyntaxNode? mappedParameter = null;
6245else if (bodyMap.TryGetValue(parameterKey.ContainingLambda, out var mappedContainingLambdaSyntax))
6250if (bodyMap.TryGetValue(parameterKey.Syntax, out var mappedParameter))
6269private readonly record struct CapturedParameterKey(ParameterKind Kind, SyntaxNode? Syntax = null, SyntaxNode? ContainingLambda = null);
6273SyntaxNode? oldDeclaration,
6276SyntaxNode? newDeclaration,
6280[Out] ArrayBuilder<SyntaxNode?> newCapturesToClosureScopes, // {new capture index -> new closure scope}
6281[Out] ArrayBuilder<SyntaxNode?> oldCapturesToClosureScopes, // {old capture index -> old closure scope}
6282[Out] Dictionary<SyntaxNode, RudeEditDiagnostic> closureRudeEdits,
6285BidirectionalMap<SyntaxNode>? parameterMap = null;
6307using var _1 = PooledDictionary<SyntaxNode, int>.GetInstance(out var oldLocalCaptures);
6351var newCaptureSyntax = GetSymbolDeclarationSyntax(local, cancellationToken);
6354if (!bodyMap.Reverse.TryGetValue(newCaptureSyntax, out var mappedOldSyntax) ||
6420var oldScope = GetCapturedVariableScope(oldSymbol, cancellationToken);
6421var newScope = GetCapturedVariableScope(newSymbol, cancellationToken);
6437SyntaxNode oldLambda,
6438SyntaxNode newLambda,
6440IDictionary<SyntaxNode, RudeEditDiagnostic> runtimeRudeEditsBuilder,
6498private SyntaxNode GetCapturedVariableScope(ISymbol local, CancellationToken cancellationToken)
6504var scope = GetCapturedParameterScope(GetSymbolDeclarationSyntax(local.ContainingSymbol, cancellationToken));
6509var node = GetSymbolDeclarationSyntax(local, cancellationToken);
6522private static bool AreEquivalentClosureScopes(SyntaxNode? oldScope, SyntaxNode? newScope, IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMap)
6529return reverseMap.TryGetValue(newScope, out var mappedScope) && mappedScope == oldScope;
6572private SyntaxNode? GetFirstChangedChildIgnoringLambdaBodies(SyntaxNode oldNode, SyntaxNode newNode)
6582private static SyntaxNode? FindPartner(OneOrMany<SyntaxNode> rootNodes, OneOrMany<SyntaxNode> otherRootNodes, SyntaxNode otherNode)
6598internal static SyntaxNode FindPartner(SyntaxNode root, SyntaxNode otherRoot, SyntaxNode otherNode)
6606var originalLeftNode = otherNode;
6609var rightNode = root;
6630/// This is a copy of <see cref="SyntaxNode.ChildThatContainsPosition"/> that also returns the index of the child node.
6632internal static SyntaxNodeOrToken ChildThatContainsPosition(SyntaxNode self, int position, out int childIndex)
6666internal static void FindLeafNodeAndPartner(SyntaxNode leftRoot, int leftPosition, SyntaxNode rightRoot, out SyntaxNode leftNode, out SyntaxNode? rightNode)
6700private static SyntaxNode? TryGetNode(SyntaxNode root, int position)
6703internal static void AddNodes<T>(ArrayBuilder<SyntaxNode> nodes, SyntaxList<T> list)
6704where T : SyntaxNode
6712internal static void AddNodes<T>(ArrayBuilder<SyntaxNode> nodes, SeparatedSyntaxList<T>? list)
6713where T : SyntaxNode
6782private bool InGenericLocalContext(SyntaxNode node, OneOrMany<SyntaxNode> roots)
6784var current = node;
6826public IMethodSymbol? GetEncompassingPrimaryConstructor(SyntaxNode declaration, ISymbol symbol, CancellationToken cancellationToken)
6934internal Action<SyntaxNode>? FaultInjector
6940internal void ReportTopLevelSyntacticRudeEdits(RudeEditDiagnosticsBuilder diagnostics, EditScript<SyntaxNode> syntacticEdits, Dictionary<SyntaxNode, EditKind> editMap)
EditAndContinue\DeclarationBodyMap.cs (23)
16SpecializedCollections.EmptyReadOnlyDictionary<SyntaxNode, SyntaxNode>(),
17SpecializedCollections.EmptyReadOnlyDictionary<SyntaxNode, SyntaxNode>(),
18ImmutableDictionary<SyntaxNode, SyntaxNode>.Empty);
20public IReadOnlyDictionary<SyntaxNode, SyntaxNode> Forward { get; }
21public IReadOnlyDictionary<SyntaxNode, SyntaxNode> Reverse { get; }
23public ImmutableDictionary<SyntaxNode, SyntaxNode> AdditionalReverseMapping { get; }
26IReadOnlyDictionary<SyntaxNode, SyntaxNode> forwardMatch,
27IReadOnlyDictionary<SyntaxNode, SyntaxNode> reverseMatch,
28ImmutableDictionary<SyntaxNode, SyntaxNode> additionalReverseMapping)
37public static DeclarationBodyMap FromMatch(Match<SyntaxNode> match)
38=> new(match.Matches, match.ReverseMatches, ImmutableDictionary<SyntaxNode, SyntaxNode>.Empty);
40public DeclarationBodyMap WithAdditionalMapping(SyntaxNode oldNode, SyntaxNode newNode)
EmbeddedLanguages\AbstractLanguageDetector.cs (7)
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,
117foreach (var siblingArg in arguments)
121var expr = syntaxFacts.IsArgument(argument)
139protected static string? GetNameOfType(SyntaxNode? typeNode, ISyntaxFacts syntaxFacts)
153protected string? GetNameOfInvokedExpression(SyntaxNode invokedExpression)
EmbeddedLanguages\EmbeddedLanguageDetector.cs (27)
102for (var node = token.Parent; node != null; node = node.Parent)
165var interpolationFormatClause = token.Parent;
166var interpolation = interpolationFormatClause?.Parent;
170var expression = syntaxFacts.GetExpressionOfInterpolation(interpolation);
216var container = TryFindContainer(token);
232syntaxFacts.GetPartsOfNamedMemberInitializer(container.Parent, out var name, out _);
238var statement = container.FirstAncestorOrSelf<SyntaxNode>(syntaxFacts.IsStatement);
241syntaxFacts.GetPartsOfAssignmentStatement(statement, out var left, out var right);
254var variableDeclarator = container.Parent.Parent;
303var container = TryFindContainer(token);
307var statement = container.FirstAncestorOrSelf<SyntaxNode>(syntaxFacts.IsStatement);
310syntaxFacts.GetPartsOfAssignmentStatement(statement, out var left, out var right);
319var variableDeclarator = container.Parent.Parent;
333SyntaxNode tokenParent,
349foreach (var statement in blockFacts.GetExecutableBlockStatements(block))
360SyntaxNode tokenParent,
386SyntaxNode node,
393foreach (var descendent in node.DescendantNodesAndSelf())
419private SyntaxNode? TryFindContainer(SyntaxToken token)
425if (syntaxFacts.IsAnyInitializerExpression(node.Parent, out var instance))
433SyntaxNode argument,
449SyntaxNode argument,
463SyntaxNode left,
533private static string? GetNameOfType(SyntaxNode? typeNode, ISyntaxFacts syntaxFacts)
547private string? GetNameOfInvokedExpression(SyntaxNode invokedExpression)
EmbeddedLanguages\Json\LanguageServices\AbstractJsonDetectionAnalyzer.cs (1)
55SyntaxNode node,
EmbeddedLanguages\Json\LanguageServices\AbstractJsonDiagnosticAnalyzer.cs (1)
53SyntaxNode node,
EmbeddedLanguages\Json\LanguageServices\JsonLanguageDetector.cs (8)
127SyntaxNode argumentNode,
160SemanticModel semanticModel, ITypeSymbol exprType, SyntaxNode expr, CancellationToken cancellationToken, out JsonOptions options)
176syntaxFacts.GetPartsOfBaseObjectCreationExpression(expr, out var argumentList, out var objectInitializer);
180foreach (var initializer in initializers)
184syntaxFacts.GetPartsOfNamedMemberInitializer(initializer, out var name, out var initExpr);
205SemanticModel semanticModel, SyntaxNode argumentNode, CancellationToken cancellationToken)
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;
Highlighting\Keywords\AbstractKeywordHighlighter.cs (8)
15where TNode : SyntaxNode
17protected sealed override bool IsHighlightableNode(SyntaxNode node)
20protected sealed override void AddHighlightsForNode(SyntaxNode node, List<TextSpan> highlights, CancellationToken cancellationToken)
32protected abstract bool IsHighlightableNode(SyntaxNode node);
38SyntaxNode root, int position, List<TextSpan> highlights, CancellationToken cancellationToken)
77protected abstract void AddHighlightsForNode(SyntaxNode node, List<TextSpan> highlights, CancellationToken cancellationToken);
82internal void AddTouchingTokens(SyntaxNode root, int position, ref TemporaryArray<SyntaxToken> tokens)
90SyntaxNode root, int position, ref TemporaryArray<SyntaxToken> tokens, bool findInsideTrivia)
InitializeParameter\AbstractAddParameterCheckCodeRefactoringProvider.cs (42)
38where TTypeDeclarationSyntax : SyntaxNode
39where TParameterSyntax : SyntaxNode
40where TStatementSyntax : SyntaxNode
41where TExpressionSyntax : SyntaxNode
62protected abstract bool CanOffer(SyntaxNode body);
69SyntaxNode functionDeclaration,
72ImmutableArray<SyntaxNode> listOfParameterNodes,
80foreach (var parameterNode in listOfParameterNodes)
102SyntaxNode functionDeclaration,
187var functionDeclaration = firstParameterNode.FirstAncestorOrSelf<SyntaxNode>(IsFunctionDeclaration);
242var syntax = statement.Syntax;
543SyntaxNode functionDeclaration,
566SyntaxNode functionDeclaration,
582SyntaxNode functionDeclaration,
598SyntaxNode functionDeclaration,
620var statementToAddAfter = GetStatementToAddCheckAfter(semanticModel, parameter, blockStatement, cancellationToken);
625var newRoot = editor.GetChangedRoot();
632SyntaxNode functionDeclaration,
647var parameterIdentifierName = generator.IdentifierName(parameter.Name);
648var typeOfParameterExpression = generator.TypeOfExpression(generator.TypeExpression(parameter.Type));
650SyntaxNode enumIsDefinedInvocation;
669var finalCondition = generator.LogicalNotExpression(enumIsDefinedInvocation);
671var throwStatement = generator.ThrowStatement(
680var enumIsDefinedCheckStatement = generator.IfStatement(finalCondition, [throwStatement]);
683var statementToAddAfter = GetStatementToAddCheckAfter(semanticModel, parameter, blockStatement, cancellationToken);
686var newRoot = editor.GetChangedRoot();
736var parameterNameExpression = generator.IdentifierName(parameter.Name);
737var zeroLiteralExpression = generator.LiteralExpression(0);
738var condition = includeZero
742var parameterNameOfExpression = generator.NameOfExpression(parameterNameExpression);
743var throwStatement = generator.ThrowStatement(
790private static SyntaxNode? GetStatementToAddCheckAfter(
922var coalesce = generator.CoalesceExpression(
940private static SyntaxNode GetTypeNode(
950private static SyntaxNode CreateArgumentNullException(
958private SyntaxNode CreateArgumentException(
968var nameofExpression = generator.NameOfExpression(generator.IdentifierName(parameter.Name));
976private SyntaxNode CreateExceptionMessageArgument(string messageTemplate, SyntaxGenerator generator, SyntaxNode parameterNameOfExpression)
982using var _ = ArrayBuilder<SyntaxNode>.GetInstance(out var content);
1015private static SyntaxNode InterpolatedStringText(SyntaxGenerator generator, string content, string value)
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 (11)
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)
290var identifierNameSyntax =
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 (33)
24where TExpressionSyntax : SyntaxNode
25where TCrefSyntax : SyntaxNode
26where TStatementSyntax : SyntaxNode
27where TPropertySyntax : SyntaxNode
29public abstract SyntaxNode GetPropertyNodeToReplace(SyntaxNode propertyDeclaration);
30public abstract Task<ImmutableArray<SyntaxNode>> GetReplacementMembersAsync(
31Document document, IPropertySymbol property, SyntaxNode propertyDeclaration, IFieldSymbol? propertyBackingField, string desiredGetMethodName, string desiredSetMethodName, CancellationToken cancellationToken);
34protected abstract TCrefSyntax CreateCrefSyntax(TCrefSyntax originalCref, SyntaxToken identifierToken, SyntaxNode? parameterType);
36protected abstract TExpressionSyntax UnwrapCompoundAssignment(SyntaxNode compoundAssignment, TExpressionSyntax readExpression);
37public async Task<SyntaxNode?> GetPropertyDeclarationAsync(CodeRefactoringContext context)
40protected static SyntaxNode GetFieldReference(SyntaxGenerator generator, IFieldSymbol propertyBackingField)
42var memberName = generator.IdentifierName(propertyBackingField.Name);
57SyntaxEditor editor, SyntaxNode identifierName,
73private delegate TExpressionSyntax GetWriteValue(ReferenceReplacer replacer, SyntaxNode parent);
164var literalOne = replacer.Generator.LiteralExpression(1);
166var writeValue = replacer._syntaxFacts.IsOperandOfIncrementExpression(replacer._expression)
186private static readonly Func<SyntaxNode, SyntaxGenerator, ReplaceParentArgs, SyntaxNode> replaceParentCallback =
192var writeExpression = replacer.GetWriteExpression(
256var declarator = _expression.Parent;
259var newDeclarator = Generator.NamedAnonymousObjectMemberDeclarator(
305SyntaxNode? parameterType;
320private SyntaxNode QualifyIfAppropriate(IFieldSymbol propertyBackingField, SyntaxNode newIdentifierName)
325var container = propertyBackingField.IsStatic
342var newIdentifierName = QualifyIfAppropriate(_propertyBackingField, Generator.IdentifierName(newIdentifierToken));
357private SyntaxNode GetWriteExpression(
365var newIdentifierName = QualifyIfAppropriate(_propertyBackingField, Generator.IdentifierName(newIdentifierToken));
389string desiredName, SyntaxNode? argument, bool keepTrivia, string? conflictMessage)
394var newIdentifierName = Generator.IdentifierName(newIdentifier);
406var invocation = Generator.InvocationExpression(updatedExpression, arguments);
419private 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 (20)
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,
251foreach (var errorCodeNode in errorCodeNodes)
297SyntaxNode idNode,
391SyntaxNode root,
512PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
513PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
586PooledDictionary<string, List<SyntaxNode>> idToSuppressMessageAttributesMap,
587PooledDictionary<SyntaxNode, bool> suppressMessageAttributesToIsUsedMap,
596var attributeNode = await attribute.ApplicationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
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);
805var attributeNode = await attribute.ApplicationSyntaxReference.GetSyntaxAsync(cancellationToken).ConfigureAwait(false);
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 (25)
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,
538ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> ineligibleFieldUsageIfOutsideProperty,
539ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldReads,
540ConcurrentDictionary<IFieldSymbol, ConcurrentSet<SyntaxNode>> fieldWrites,
625static bool NotWithinProperty(IEnumerable<SyntaxNode> nodes, TPropertyDeclaration propertyDeclaration)
627foreach (var node in nodes)
636static IEnumerable<SyntaxNode> NonConstructorLocations(IEnumerable<SyntaxNode> nodes)
643var fieldNode = GetFieldNode(result.FieldDeclaration, variableDeclarator);
src\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)
27where TExpressionSyntax : SyntaxNode
30protected abstract bool IsSimpleNameGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
31protected abstract bool IsConstructorInitializerGeneration(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
32protected abstract bool IsImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken);
34protected abstract bool TryInitializeImplicitObjectCreation(SemanticDocument document, SyntaxNode node, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
35protected abstract bool TryInitializeSimpleNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
36protected abstract bool TryInitializeConstructorInitializerGeneration(SemanticDocument document, SyntaxNode constructorInitializer, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
37protected abstract bool TryInitializeSimpleAttributeNameGenerationState(SemanticDocument document, SyntaxNode simpleName, CancellationToken cancellationToken, out SyntaxToken token, out ImmutableArray<Argument<TExpressionSyntax>> arguments, [NotNullWhen(true)] out INamedTypeSymbol? typeToGenerateIn);
80public async Task<ImmutableArray<CodeAction>> GenerateConstructorAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
src\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 (8)
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)
98var classNodeToAddMembersTo = _classNode;
249Func<SyntaxNode, SyntaxNode, SyntaxNode> createAddOrRemoveHandler)
src\Analyzers\Core\CodeFixes\ImplementInterface\AbstractImplementInterfaceService.cs (10)
33protected abstract bool TryInitializeState(Document document, SemanticModel model, SyntaxNode interfaceNode, CancellationToken cancellationToken,
34[NotNullWhen(true)] out SyntaxNode? classOrStructDecl,
39protected abstract SyntaxNode AddCommentInsideIfStatement(SyntaxNode ifDisposingStatement, SyntaxTriviaList trivia);
40protected abstract SyntaxNode CreateFinalizer(SyntaxGenerator generator, INamedTypeSymbol classType, string disposeMethodDisplayString);
43Document document, ImplementTypeOptions options, SyntaxNode node, CancellationToken cancellationToken)
62public async Task<ImplementInterfaceInfo?> AnalyzeAsync(Document document, SyntaxNode interfaceType, CancellationToken cancellationToken)
68protected TNode AddComment<TNode>(string comment, TNode node) where TNode : SyntaxNode
71protected TNode AddComments<TNode>(string comment1, string comment2, TNode node) where TNode : SyntaxNode
74protected 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 (17)
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);
75var coalesceExpression = GetCoalesceExpression(
91private static SyntaxNode GetCoalesceExpression(
93SyntaxNode whenPart, SyntaxNode whenTrue,
94SyntaxNode conditionalPartLow,
95SyntaxNode currentWhenTrue, SyntaxNode currentWhenFalse)
src\Compilers\Core\AnalyzerDriver\DeclarationComputer.cs (12)
16internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, IEnumerable<SyntaxNode>? executableCodeBlocks, CancellationToken cancellationToken)
22internal static DeclarationInfo GetDeclarationInfo(SyntaxNode node, ISymbol? declaredSymbol, IEnumerable<SyntaxNode>? executableCodeBlocks)
24var codeBlocks = executableCodeBlocks?.Where(c => c != null).AsImmutableOrEmpty() ?? ImmutableArray<SyntaxNode>.Empty;
28internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, CancellationToken cancellationToken)
30return GetDeclarationInfo(model, node, getSymbol, (IEnumerable<SyntaxNode>?)null, cancellationToken);
33internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, SyntaxNode executableCodeBlock, CancellationToken cancellationToken)
38internal static DeclarationInfo GetDeclarationInfo(SemanticModel model, SyntaxNode node, bool getSymbol, CancellationToken cancellationToken, params SyntaxNode[] executableCodeBlocks)
43private 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)
23Public Overrides Sub AddSuppressOperationsSlow(list As ArrayBuilder(Of SuppressOperation), node As SyntaxNode, ByRef nextOperation As NextSuppressOperationAction)
58Public Overrides Sub AddIndentBlockOperationsSlow(list As List(Of IndentBlockOperation), node As SyntaxNode, ByRef nextOperation As NextIndentBlockOperationAction)
84Private 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)
97Private Overloads Shared Sub AddIndentBlockOperations(list As List(Of IndentBlockOperation), parameterOrArgumentList As SyntaxNode, indentationDelta As Integer)
114Private Shared Sub AddArgumentListIndentBlockOperations(operations As List(Of IndentBlockOperation), node As SyntaxNode)
170Public Overrides Sub AddAlignTokensOperationsSlow(operations As List(Of AlignTokensOperation), node As SyntaxNode, ByRef nextAction As NextAlignTokensOperationAction)
185Private Shared Sub AddCaseClauseAlignTokensOperations(operations As List(Of AlignTokensOperation), node As SyntaxNode)
202Private 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)
59Public Overloads Overrides Function LocalDeclarationStatement(type As SyntaxNode, identifier As SyntaxToken, Optional initializer As SyntaxNode = Nothing, Optional isConst As Boolean = False) As SyntaxNode
65Public Overrides Function WithInitializer(variableDeclarator As SyntaxNode, initializer As SyntaxNode) As SyntaxNode
69Public Overrides Function EqualsValueClause(operatorToken As SyntaxToken, value As SyntaxNode) As SyntaxNode
73Friend Shared Function VariableDeclarator(type As SyntaxNode, name As ModifiedIdentifierSyntax, Optional expression As SyntaxNode = Nothing) As VariableDeclaratorSyntax
86Public Overrides Function ConditionalAccessExpression(expression As SyntaxNode, whenNotNull As SyntaxNode) As SyntaxNode
92Public Overrides Function MemberBindingExpression(name As SyntaxNode) As SyntaxNode
96Public Overrides Function RefExpression(expression As SyntaxNode) As SyntaxNode
100Public Overrides Function AddParentheses(expression As SyntaxNode, Optional includeElasticTrivia As Boolean = True, Optional addSimplifierAnnotation As Boolean = True) As SyntaxNode
104Friend Shared Function Parenthesize(expression As SyntaxNode, Optional addSimplifierAnnotation As Boolean = True) As ParenthesizedExpressionSyntax
108Public Overrides Function YieldReturnStatement(expression As SyntaxNode) As SyntaxNode
118Public Overrides Function InterpolatedStringExpression(startToken As SyntaxToken, content As IEnumerable(Of SyntaxNode), endToken As SyntaxToken) As SyntaxNode
123Public Overrides Function InterpolatedStringText(textToken As SyntaxToken) As SyntaxNode
131Public Overrides Function Interpolation(syntaxNode As SyntaxNode) As SyntaxNode
135Public Overrides Function InterpolationAlignmentClause(alignment As SyntaxNode) As SyntaxNode
141Public Overrides Function InterpolationFormatClause(format As String) As SyntaxNode
147Public Overrides Function TypeParameterList(typeParameterNames As IEnumerable(Of String)) As SyntaxNode
153Public Overrides Function Type(typeSymbol As ITypeSymbol, typeContext As Boolean) As SyntaxNode
157Public Overrides Function NegateEquality(generator As SyntaxGenerator, node As SyntaxNode, left As SyntaxNode, negatedKind As Operations.BinaryOperatorKind, right As SyntaxNode) As SyntaxNode
172Public Overrides Function IsNotTypeExpression(expression As SyntaxNode, type As SyntaxNode) As SyntaxNode
178type As SyntaxNode,
181Optional parameters As IEnumerable(Of SyntaxNode) = Nothing,
182Optional addAccessorStatements As IEnumerable(Of SyntaxNode) = Nothing,
183Optional removeAccessorStatements As IEnumerable(Of SyntaxNode) = Nothing,
184Optional raiseAccessorStatements As IEnumerable(Of SyntaxNode) = Nothing) As SyntaxNode
194addAccessorStatements = SpecializedCollections.EmptyEnumerable(Of SyntaxNode)()
198removeAccessorStatements = SpecializedCollections.EmptyEnumerable(Of SyntaxNode)()
202raiseAccessorStatements = SpecializedCollections.EmptyEnumerable(Of SyntaxNode)()
226Friend Shared Function CreateAddHandlerAccessorBlock(delegateType As SyntaxNode, statements As IEnumerable(Of SyntaxNode)) As AccessorBlockSyntax
248Friend Shared Function CreateRemoveHandlerAccessorBlock(delegateType As SyntaxNode, statements As IEnumerable(Of SyntaxNode)) As AccessorBlockSyntax
270Friend Shared Function CreateRaiseEventAccessorBlock(parameters As IEnumerable(Of SyntaxNode), statements As IEnumerable(Of SyntaxNode)) As AccessorBlockSyntax
285Friend Shared Function GetStatementList(nodes As IEnumerable(Of SyntaxNode)) As SyntaxList(Of StatementSyntax)
293Friend Shared Function AsStatement(node As SyntaxNode) As StatementSyntax
362Friend Shared Function GetParameterList(parameters As IEnumerable(Of SyntaxNode)) As ParameterListSyntax
366Friend Shared Function GetModifierList(accessibility As Accessibility, modifiers As DeclarationModifiers, declaration As SyntaxNode, kind As DeclarationKind, Optional isDefault As Boolean = False) As SyntaxTokenList
467Public Overrides Function IsPatternExpression(expression As SyntaxNode, isToken As SyntaxToken, pattern As SyntaxNode) As SyntaxNode
471Public Overrides Function AndPattern(left As SyntaxNode, right As SyntaxNode) As SyntaxNode
475Public Overrides Function ConstantPattern(expression As SyntaxNode) As SyntaxNode
479Public Overrides Function DeclarationPattern(type As INamedTypeSymbol, name As String) As SyntaxNode
483Public Overrides Function LessThanRelationalPattern(expression As SyntaxNode) As SyntaxNode
487Public Overrides Function LessThanEqualsRelationalPattern(expression As SyntaxNode) As SyntaxNode
491Public Overrides Function GreaterThanRelationalPattern(expression As SyntaxNode) As SyntaxNode
495Public Overrides Function GreaterThanEqualsRelationalPattern(expression As SyntaxNode) As SyntaxNode
499Public Overrides Function NotPattern(pattern As SyntaxNode) As SyntaxNode
503Public Overrides Function OrPattern(left As SyntaxNode, right As SyntaxNode) As SyntaxNode
507Public Overrides Function ParenthesizedPattern(pattern As SyntaxNode) As SyntaxNode
511Public Overrides Function TypePattern(type As SyntaxNode) As SyntaxNode
515Public Overrides Function UnaryPattern(operatorToken As SyntaxToken, pattern As SyntaxNode) As SyntaxNode
521Public Overrides Function BitwiseOrExpression(left As SyntaxNode, right As SyntaxNode) As SyntaxNode
525Public Overrides Function CastExpression(type As SyntaxNode, expression As SyntaxNode) As SyntaxNode
529Public Overrides Function DefaultExpression(type As ITypeSymbol) As SyntaxNode
533Public Overrides Function DefaultExpression(type As SyntaxNode) As SyntaxNode
537Public Overrides Function IdentifierName(identifier As String) As SyntaxNode
541Public Overrides Function MemberAccessExpressionWorker(expression As SyntaxNode, simpleName As SyntaxNode) As SyntaxNode
549Public Shared Function ParenthesizeLeft(expression As SyntaxNode) As ExpressionSyntax
562Public Overrides Function TypeExpression(typeSymbol As ITypeSymbol, refKind As RefKind) As SyntaxNode
567Public 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 (153)
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
103body As SyntaxNode,
104partnerBody As SyntaxNode,
105<Out> ByRef partnerStatement As SyntaxNode,
106<Out> ByRef statementPart As Integer) As SyntaxNode
115Dim node As SyntaxNode = Nothing
158Friend Overrides Function IsClosureScope(node As SyntaxNode) As Boolean
162Friend Overrides Function GetCapturedParameterScope(methodOrLambda As SyntaxNode) As SyntaxNode
166Protected Overrides Function FindEnclosingLambdaBody(encompassingAncestor As SyntaxNode, node As SyntaxNode) As LambdaBody
168Dim body As SyntaxNode = Nothing
179Protected Overrides Function ComputeTopLevelMatch(oldCompilationUnit As SyntaxNode, newCompilationUnit As SyntaxNode) As Match(Of SyntaxNode)
183Protected Overrides Function ComputeParameterMap(oldDeclaration As SyntaxNode, newDeclaration As SyntaxNode) As BidirectionalMap(Of SyntaxNode)?
194Dim map = BidirectionalMap(Of SyntaxNode).FromMatch(If(primaryMatch, secondaryMatch))
203Private Shared Function GetTopLevelMatch(oldNode As SyntaxNode, newNode As SyntaxNode) As Match(Of SyntaxNode)
207Private Shared Function GetDeclarationParameterLists(declaration As SyntaxNode) As (Primary As SyntaxNode, Secondary As SyntaxNode)
226Protected Overrides Function IsNamespaceDeclaration(node As SyntaxNode) As Boolean
231Private Shared Function IsTypeDeclaration(node As SyntaxNode) As Boolean
235Protected Overrides Function IsCompilationUnitWithGlobalStatements(node As SyntaxNode) As Boolean
239Protected Overrides Function IsGlobalStatement(node As SyntaxNode) As Boolean
243Protected Overrides Iterator Function GetTopLevelTypeDeclarations(compilationUnit As SyntaxNode) As IEnumerable(Of SyntaxNode)
277Protected Overrides Function GetSyntaxSequenceEdits(oldNodes As ImmutableArray(Of SyntaxNode), newNodes As ImmutableArray(Of SyntaxNode)) As IEnumerable(Of SequenceEdit)
281Friend Overrides ReadOnly Property EmptyCompilationUnit As SyntaxNode
292Protected Overrides Function StatementLabelEquals(node1 As SyntaxNode, node2 As SyntaxNode) As Boolean
296Private Shared Function ChildrenCompiledInBody(node As SyntaxNode) As Boolean
307Protected Overrides Function TryGetActiveSpan(node As SyntaxNode, statementPart As Integer, minLength As Integer, <Out> ByRef span As TextSpan) As Boolean
311Protected Overrides Iterator Function EnumerateNearStatements(statement As SyntaxNode) As IEnumerable(Of ValueTuple(Of SyntaxNode, Integer))
319Dim lastBlockStatement As SyntaxNode = Nothing
383Private Shared Function GetFieldOrPropertyModifiers(node As SyntaxNode) As SyntaxTokenList?
393Private Shared Function AreEquivalentIgnoringLambdaBodies(left As SyntaxNode, right As SyntaxNode) As Boolean
402Protected Overrides Function AreEquivalentActiveStatements(oldStatement As SyntaxNode, newStatement As SyntaxNode, statementPart As Integer) As Boolean
435Private Shared Function HasMultiInitializer(modifiedIdentifier As SyntaxNode) As Boolean
444Friend Overrides Function IsInterfaceDeclaration(node As SyntaxNode) As Boolean
448Friend Overrides Function IsRecordDeclaration(node As SyntaxNode) As Boolean
453Friend Overrides Function TryGetContainingTypeDeclaration(node As SyntaxNode) As SyntaxNode
457Friend Overrides Function IsDeclarationWithInitializer(declaration As SyntaxNode) As Boolean
487Friend Overrides Function IsPrimaryConstructorDeclaration(declaration As SyntaxNode) As Boolean
509Protected Overrides Function GetSymbolDeclarationSyntax(symbol As ISymbol, selector As Func(Of ImmutableArray(Of SyntaxReference), SyntaxReference), cancellationToken As CancellationToken) As SyntaxNode
614Protected Overrides Function GetDeclaredSymbol(model As SemanticModel, declaration As SyntaxNode, cancellationToken As CancellationToken) As ISymbol
684oldNode As SyntaxNode,
685newNode As SyntaxNode,
725oldNode As SyntaxNode,
727newNode As SyntaxNode,
731topMatch As Match(Of SyntaxNode),
732editMap As IReadOnlyDictionary(Of SyntaxNode, EditKind),
872node As SyntaxNode,
920Private Function GetParameterContainingMemberOrType(node As SyntaxNode, otherNode As SyntaxNode, model As SemanticModel, fromOtherMap As IReadOnlyDictionary(Of SyntaxNode, SyntaxNode), cancellationToken As CancellationToken) As ISymbol
927Dim declaration As SyntaxNode = Nothing
937Private Shared Function GetContainingDeclaration(node As SyntaxNode) As SyntaxNode
941Friend Overrides ReadOnly Property IsLambda As Func(Of SyntaxNode, Boolean)
947Friend Overrides ReadOnly Property IsNotLambda As Func(Of SyntaxNode, Boolean)
953Friend Overrides ReadOnly Property DescendantTokensIgnoringLambdaBodies As Func(Of SyntaxNode, IEnumerable(Of SyntaxToken))
965Friend Overrides Function IsNestedFunction(node As SyntaxNode) As Boolean
969Friend Overrides Function IsLocalFunction(node As SyntaxNode) As Boolean
973Friend Overrides Function IsGenericLocalFunction(node As SyntaxNode) As Boolean
977Friend Overrides Function TryGetLambdaBodies(node As SyntaxNode, <Out> ByRef body1 As LambdaBody, <Out> ByRef body2 As LambdaBody) As Boolean
978Dim bodyNode1 As SyntaxNode = Nothing
979Dim bodyNode2 As SyntaxNode = Nothing
989Friend Overrides Function GetLambdaExpressionSymbol(model As SemanticModel, lambdaExpression As SyntaxNode, cancellationToken As CancellationToken) As IMethodSymbol
996Friend Overrides Function GetContainingQueryExpression(node As SyntaxNode) As SyntaxNode
1000Friend Overrides Function QueryClauseLambdasTypeEquivalent(oldModel As SemanticModel, oldNode As SyntaxNode, newModel As SemanticModel, newNode As SyntaxNode, cancellationToken As CancellationToken) As Boolean
1058Protected Overrides Function TryGetDiagnosticSpan(node As SyntaxNode, editKind As EditKind) As TextSpan?
1062Protected Overloads Shared Function GetDiagnosticSpan(node As SyntaxNode, editKind As EditKind) As TextSpan
1066Private Shared Function TryGetDiagnosticSpanImpl(node As SyntaxNode, editKind As EditKind) As TextSpan?
1070Protected Overrides Function GetBodyDiagnosticSpan(node As SyntaxNode, editKind As EditKind) As TextSpan
1075Friend Shared Function TryGetDiagnosticSpanImpl(kind As SyntaxKind, node As SyntaxNode, editKind As EditKind) As TextSpan?
1307Private Overloads Shared Function GetDiagnosticSpan(ifKeyword As SyntaxToken, condition As SyntaxNode, thenKeywordOpt As SyntaxToken) As TextSpan
1404Friend Overrides Function GetLambdaParameterDiagnosticSpan(lambda As SyntaxNode, ordinal As Integer) As TextSpan
1447Protected Overrides Function TryGetDisplayName(node As SyntaxNode, editKind As EditKind) As String
1451Protected Overloads Shared Function GetDisplayName(node As SyntaxNode, editKind As EditKind) As String
1461Protected Overrides Function GetBodyDisplayName(node As SyntaxNode, Optional editKind As EditKind = EditKind.Update) As String
1465Private Shared Function TryGetDisplayNameImpl(node As SyntaxNode, editKind As EditKind) As String
1694Private ReadOnly _match As Match(Of SyntaxNode)
1695Private ReadOnly _oldNode As SyntaxNode
1696Private ReadOnly _newNode As SyntaxNode
1702oldNode As SyntaxNode,
1703newNode As SyntaxNode,
1705Optional match As Match(Of SyntaxNode) = Nothing,
1765Private Sub ClassifyMove(newNode As SyntaxNode)
1788Private Sub ClassifyReorder(oldNode As SyntaxNode, newNode As SyntaxNode)
1811Private Sub ClassifyInsert(node As SyntaxNode)
1843Private Sub ClassifyDelete(oldNode As SyntaxNode)
1870Private Sub ClassifyUpdate(newNode As SyntaxNode)
1894match As Match(Of SyntaxNode),
1895edit As Edit(Of SyntaxNode),
1896editMap As Dictionary(Of SyntaxNode, EditKind))
1927Friend Overrides Function HasUnsupportedOperation(nodes As IEnumerable(Of SyntaxNode), <Out> ByRef unsupportedNode As SyntaxNode, <Out> ByRef rudeEdit As RudeEditKind) As Boolean
1970Friend Overrides Sub ReportInsertedMemberSymbolRudeEdits(diagnostics As RudeEditDiagnosticsBuilder, newSymbol As ISymbol, newNode As SyntaxNode, insertingIntoExistingContainingType As Boolean)
2045Protected Overrides Function GetExceptionHandlingAncestors(node As SyntaxNode, root As SyntaxNode, isNonLeaf As Boolean) As List(Of SyntaxNode)
2046Dim result = New List(Of SyntaxNode)()
2082exceptionHandlingEdits As IEnumerable(Of Edit(Of SyntaxNode)),
2083oldStatement As SyntaxNode,
2094Private Shared Function AreExceptionHandlingPartsEquivalent(oldNode As SyntaxNode, newNode As SyntaxNode) As Boolean
2116Protected Overrides Function GetExceptionHandlingRegion(node As SyntaxNode, <Out> ByRef coversAllChildren As Boolean) As TextSpan
2146Friend Overrides Function IsStateMachineMethod(declaration As SyntaxNode) As Boolean
2151Friend Shared Function GetStateMachineInfo(body As SyntaxNode) As StateMachineInfo
2162Friend Overrides Sub ReportStateMachineSuspensionPointRudeEdits(diagnosticContext As DiagnosticContext, oldNode As SyntaxNode, newNode As SyntaxNode)
2177Private Shared Function FindContainingStatementPart(node As SyntaxNode) As SyntaxNode
2203Private Shared Function HasNoSpilledState(awaitExpression As SyntaxNode, containingStatementPart As SyntaxNode) As Boolean
2248Private Shared Function GetExpressionFromStatementPart(statement As SyntaxNode) As ExpressionSyntax
2261Private Shared Function IsSimpleAwaitAssignment(node As SyntaxNode, awaitExpression As SyntaxNode) As Boolean
2274forwardMap As IReadOnlyDictionary(Of SyntaxNode, SyntaxNode),
2275oldActiveStatement As SyntaxNode,
2278newActiveStatement As SyntaxNode,
2292Private Shared Function FindOnErrorOrResumeStatement(newBody As DeclarationBody) As SyntaxNode
2312forwardMap As IReadOnlyDictionary(Of SyntaxNode, SyntaxNode),
2313oldActiveStatement As SyntaxNode,
2314oldEncompassingAncestor As SyntaxNode,
2316newActiveStatement As SyntaxNode,
2317newEncompassingAncestor As SyntaxNode,
2332getTypedNodes:=Function(n) OneOrMany.Create(Of SyntaxNode)(n.SyncLockStatement.Expression),
2339getTypedNodes:=Function(n) OneOrMany.Create(Of SyntaxNode)(n.WithStatement.Expression),
2346getTypedNodes:=Function(n) OneOrMany.Create(Of SyntaxNode)(n.UsingStatement.Expression),
2353getTypedNodes:=Function(n) OneOrMany.Create(Of SyntaxNode)(n.ForEachStatement.Expression),
ExtractMethod\Extensions.vb (26)
17Public Function GetUnparenthesizedExpression(node As SyntaxNode) As ExpressionSyntax
27Public Function GetStatementContainer(node As SyntaxNode) As SyntaxNode
39Public Function GetStatementUnderContainer(node As SyntaxNode) As ExecutableStatementSyntax
56Public Function ContainStatement(node As SyntaxNode, statement As StatementSyntax) As Boolean
68Public Function GetOutermostNodeWithSameSpan(initialNode As SyntaxNode, predicate As Func(Of SyntaxNode, Boolean)) As SyntaxNode
87Return CType(If(lastNode, initialNode), SyntaxNode)
91Public Function PartOfConstantInitializerExpression(node As SyntaxNode) As Boolean
97Private Function PartOfConstantInitializerExpression(Of T As SyntaxNode)(node As SyntaxNode, modifiersGetter As Func(Of T, SyntaxTokenList)) As Boolean
117Public Function IsArgumentForByRefParameter(node As SyntaxNode, model As SemanticModel, cancellationToken As CancellationToken) As Boolean
225Public Function ContainsFieldInitializer(node As SyntaxNode) As Boolean
232Public Function ContainsDotMemberAccess(node As SyntaxNode) As Boolean
233Dim predicate = Function(n As SyntaxNode)
269Dim predicate As Func(Of SyntaxNode, Boolean) =
295Return token.GetAncestors(Of SyntaxNode)().Any(predicate)
299Public Function ContainedInValidType(node As SyntaxNode) As Boolean
325Public Function UnderValidContext(ByVal node As SyntaxNode) As Boolean
328Dim predicate As Func(Of SyntaxNode, Boolean) =
339If Not node.GetAncestorsOrThis(Of SyntaxNode)().Any(predicate) Then
351Public Function IsReturnableConstruct(node As SyntaxNode) As Boolean
358Public Function HasSyntaxAnnotation([set] As HashSet(Of SyntaxAnnotation), node As SyntaxNode) As Boolean
370Public Function ToSeparatedList(Of T As SyntaxNode)(nodes As IEnumerable(Of Tuple(Of T, SyntaxToken))) As SeparatedSyntaxList(Of T)
463Public Function IsExpressionInCast(node As SyntaxNode) As Boolean
GenerateType\VisualBasicGenerateTypeService.vb (8)
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)
13Friend MustInherit Class AbstractIntrinsicOperatorSignatureHelpProvider(Of TSyntaxNode As SyntaxNode)
20Private Function TryGetSyntaxNode(root As SyntaxNode, position As Integer, syntaxFacts As ISyntaxFactsService, triggerReason As SignatureHelpTriggerReason, cancellationToken As CancellationToken, ByRef node As TSyntaxNode) As Boolean
84Protected Overridable Function GetCurrentArgumentStateWorker(node As SyntaxNode, position As Integer) As SignatureHelpState
105Private Function GetCurrentArgumentState(root As SyntaxNode, position As Integer, syntaxFacts As ISyntaxFactsService, currentSpan As TextSpan, cancellationToken As CancellationToken) As SignatureHelpState
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 (81)
14/// particular tree <em>in order</em>. Changes are given a <see cref="SyntaxNode"/> they will apply to in the
23/// Each change has its given <see cref="SyntaxNode"/> tracked, using a <see cref="SyntaxAnnotation"/>, producing a
31/// A change first attempts to find its <see cref="SyntaxNode"/> in the 'current' root. If that node cannot be
37/// cref="SyntaxNode"/> found in the current root. The 'current' root will then be updated by replacing the current
51/// <para/> If a client wants to make a replacement, then find the <em>value</em> <see cref="SyntaxNode"/> put into
63public SyntaxEditor(SyntaxNode root, Workspace workspace)
71public SyntaxEditor(SyntaxNode root, HostWorkspaceServices services)
79public SyntaxEditor(SyntaxNode root, SolutionServices services)
85internal SyntaxEditor(SyntaxNode root, SyntaxGenerator generator)
92/// The <see cref="SyntaxNode"/> that was specified when the <see cref="SyntaxEditor"/> was constructed.
94public SyntaxNode OriginalRoot { get; }
97/// A <see cref="SyntaxGenerator"/> to use to create and change <see cref="SyntaxNode"/>'s.
104public SyntaxNode GetChangedRoot()
108var newRoot = OriginalRoot.TrackNodes(nodes);
119public void TrackNode(SyntaxNode node)
129public void RemoveNode(SyntaxNode node)
137public void RemoveNode(SyntaxNode node, SyntaxRemoveOptions options)
149public void ReplaceNode(SyntaxNode node, Func<SyntaxNode, SyntaxGenerator, SyntaxNode> computeReplacement)
158internal void ReplaceNode(SyntaxNode node, Func<SyntaxNode, SyntaxGenerator, IEnumerable<SyntaxNode>> computeReplacement)
167internal void ReplaceNode<TArgument>(SyntaxNode node, Func<SyntaxNode, SyntaxGenerator, TArgument, SyntaxNode> computeReplacement, TArgument argument)
181public void ReplaceNode(SyntaxNode node, SyntaxNode newNode)
195public void InsertBefore(SyntaxNode node, IEnumerable<SyntaxNode> newNodes)
209public void InsertBefore(SyntaxNode node, SyntaxNode newNode)
217public void InsertAfter(SyntaxNode node, IEnumerable<SyntaxNode> newNodes)
231public void InsertAfter(SyntaxNode node, SyntaxNode newNode)
234private void CheckNodeInOriginalTree(SyntaxNode node)
245private abstract class Change(SyntaxNode node)
247internal readonly SyntaxNode OriginalNode = node;
249public SyntaxNode Apply(SyntaxNode root, SyntaxGenerator generator)
251var currentNode = root.GetCurrentNode(OriginalNode);
258protected static SyntaxNode ValidateNewRoot(SyntaxNode? root)
261protected abstract SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator);
264private sealed class NoChange(SyntaxNode node) : Change(node)
266protected override SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator)
270private sealed class RemoveChange(SyntaxNode node, SyntaxRemoveOptions options) : Change(node)
272protected override SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator)
278private readonly Func<SyntaxNode, SyntaxGenerator, SyntaxNode?> _modifier;
281SyntaxNode node,
282Func<SyntaxNode, SyntaxGenerator, SyntaxNode?> modifier)
289protected override SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator)
294SyntaxNode node,
295Func<SyntaxNode, SyntaxGenerator, IEnumerable<SyntaxNode>> modifier) : Change(node)
297protected override SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator)
302SyntaxNode node,
303Func<SyntaxNode, SyntaxGenerator, TArgument, SyntaxNode> modifier,
306protected override SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator)
310private sealed class InsertChange(SyntaxNode node, IEnumerable<SyntaxNode> newNodes, bool isBefore) : Change(node)
312private readonly List<SyntaxNode> _newNodes = [.. newNodes];
314protected override SyntaxNode Apply(SyntaxNode root, SyntaxNode currentNode, SyntaxGenerator generator)
Editing\SyntaxEditorExtensions.cs (38)
11public static void SetAccessibility(this SyntaxEditor editor, SyntaxNode declaration, Accessibility accessibility)
14public static void SetModifiers(this SyntaxEditor editor, SyntaxNode declaration, DeclarationModifiers modifiers)
17internal static void RemoveAllAttributes(this SyntaxEditor editor, SyntaxNode declaration)
20internal static void RemoveAllComments(this SyntaxEditor editor, SyntaxNode declaration)
23internal static void RemoveAllTypeInheritance(this SyntaxEditor editor, SyntaxNode declaration)
26public static void SetName(this SyntaxEditor editor, SyntaxNode declaration, string name)
29public static void SetType(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode type)
32public static void SetTypeParameters(this SyntaxEditor editor, SyntaxNode declaration, IEnumerable<string> typeParameters)
35public static void SetTypeConstraint(this SyntaxEditor editor, SyntaxNode declaration, string typeParameterName, SpecialTypeConstraintKind kind, IEnumerable<SyntaxNode> types)
38public static void SetExpression(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode expression)
41public static void SetStatements(this SyntaxEditor editor, SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
44public static void SetGetAccessorStatements(this SyntaxEditor editor, SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
47public static void SetSetAccessorStatements(this SyntaxEditor editor, SyntaxNode declaration, IEnumerable<SyntaxNode> statements)
50public static void AddParameter(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode parameter)
53public static void InsertParameter(this SyntaxEditor editor, SyntaxNode declaration, int index, SyntaxNode parameter)
56public static void AddAttribute(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode attribute)
59public static void AddReturnAttribute(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode attribute)
62public static void AddAttributeArgument(this SyntaxEditor editor, SyntaxNode attributeDeclaration, SyntaxNode attributeArgument)
65public static void AddMember(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode member)
68public static void InsertMembers(this SyntaxEditor editor, SyntaxNode declaration, int index, IEnumerable<SyntaxNode> members)
71public static void AddInterfaceType(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode interfaceType)
74public static void AddBaseType(this SyntaxEditor editor, SyntaxNode declaration, SyntaxNode baseType)
77internal static void RemovePrimaryConstructor(this SyntaxEditor editor, SyntaxNode declaration)
Editing\SyntaxGenerator.cs (802)
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 SyntaxNode ParseTypeName(string stringToParse);
2419internal abstract SyntaxTrivia Trivia(SyntaxNode node);
2421internal abstract SyntaxNode DocumentationCommentTrivia(IEnumerable<SyntaxNode> nodes, SyntaxTriviaList trailingTrivia, string endOfLineString);
2423internal abstract SyntaxNode? DocumentationCommentTriviaWithUpdatedContent(SyntaxTrivia trivia, IEnumerable<SyntaxNode> content);
FindSymbols\FindReferences\Finders\AbstractReferenceFinder.cs (18)
45var parent = symbol.IsDelegateType()
54ISymbol searchSymbol, FindReferencesDocumentState state, SyntaxNode node, CancellationToken cancellationToken)
218SyntaxNode node,
227var directive = node.GetRequiredParent();
371SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData);
384foreach (var node in state.Root.DescendantNodesAndSelf())
403SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData)
442SyntaxNode node, FindReferencesDocumentState state, Action<FinderLocation, TData> processResult, TData processResultData)
448foreach (var expression in expressions)
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 (16)
89var constructorSyntax = constructor.DeclaringSyntaxReferences[0].GetSyntax(cancellationToken);
212foreach (var node in indexerReferenceExpressions)
232private static (bool matched, CandidateReason reason, SyntaxNode indexerReference) ComputeIndexerInformation(
235SyntaxNode node,
260private static (bool matched, CandidateReason reason, SyntaxNode indexerReference) ComputeIndexerMemberCRefInformation(
261IPropertySymbol symbol, FindReferencesDocumentState state, SyntaxNode node, CancellationToken cancellationToken)
269private static (bool matched, CandidateReason reason, SyntaxNode indexerReference) ComputeConditionalAccessInformation(
270IPropertySymbol symbol, SyntaxNode node, FindReferencesDocumentState state, CancellationToken cancellationToken)
274syntaxFacts.GetPartsOfConditionalAccessExpression(node, out _, out var indexerReference);
288private static (bool matched, CandidateReason reason, SyntaxNode? indexerReference) ComputeElementAccessInformation(
289IPropertySymbol symbol, SyntaxNode node, FindReferencesDocumentState state, CancellationToken cancellationToken)
292state.SyntaxFacts.GetPartsOfElementAccessExpression(node, out var expression, out var indexerReference);
305private static (bool matched, CandidateReason reason, SyntaxNode indexerReference) ComputeImplicitElementAccessInformation(
306IPropertySymbol symbol, SyntaxNode node, FindReferencesDocumentState state, CancellationToken cancellationToken)
308var argumentList = state.SyntaxFacts.GetArgumentListOfImplicitElementAccess(node);
FindSymbols\SyntaxTree\SyntaxTreeIndex_Create.cs (17)
40ProjectState project, SyntaxNode root, Checksum checksum, CancellationToken _)
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)
95var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
116var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
133var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
152public static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
155internal static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken)
158private static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
178internal static SyntaxNode Format(SyntaxNode node, SyntaxAnnotation annotation, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
189public static SyntaxNode Format(SyntaxNode node, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
192internal static SyntaxNode Format(SyntaxNode node, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken)
204public static SyntaxNode Format(SyntaxNode node, TextSpan span, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
207internal static SyntaxNode Format(SyntaxNode node, TextSpan span, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken)
219public static SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
222private static SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
228internal static SyntaxNode Format(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
231private static IFormattingResult? GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
255internal static IFormattingResult GetFormattingResult(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
269public static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
272internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken)
284public static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, TextSpan span, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
287internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, TextSpan span, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken = default)
299public static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options = null, CancellationToken cancellationToken = default)
302internal static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, SolutionServices services, SyntaxFormattingOptions options, CancellationToken cancellationToken = default)
305private static IList<TextChange> GetFormattedTextChanges(SyntaxNode node, IEnumerable<TextSpan>? spans, Workspace workspace, OptionSet? options, ImmutableArray<AbstractFormattingRule> rules, CancellationToken cancellationToken)
313internal 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;
SemanticModelReuse\SemanticModelWorkspaceServiceFactory.SemanticModelWorkspaceService.cs (6)
15internal readonly struct SemanticModelReuseInfo(SemanticModel previousNonSpeculativeSemanticModel, SemanticModel currentSemanticModel, SyntaxNode bodyNode, VersionStamp topLevelSementicVersion)
31public readonly SyntaxNode BodyNode = bodyNode;
84public async ValueTask<SemanticModel> ReuseExistingSpeculativeModelAsync(Document document, SyntaxNode node, CancellationToken cancellationToken)
90var bodyNode = reuseService.TryGetContainingMethodBodyForSpeculation(node);
128ImmutableDictionary<DocumentId, SemanticModelReuseInfo?> map, Document document, SyntaxNode bodyNode, CancellationToken cancellationToken)
167SyntaxNode bodyNode,
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 (127)
23public static SyntaxNode GetRequiredParent(this SyntaxNode node)
26public static IEnumerable<SyntaxNodeOrToken> DepthFirstTraversal(this SyntaxNode node)
29public static IEnumerable<SyntaxNode> DepthFirstTraversalNodes(this SyntaxNode node)
32public static IEnumerable<SyntaxNode> GetAncestors(this SyntaxNode node)
34var current = node.Parent;
44public static IEnumerable<TNode> GetAncestors<TNode>(this SyntaxNode node)
45where TNode : SyntaxNode
47var current = node.Parent;
59public static TNode? GetAncestor<TNode>(this SyntaxNode node)
60where TNode : SyntaxNode
62var current = node.Parent;
76public static TNode? GetAncestorOrThis<TNode>(this SyntaxNode? node)
77where TNode : SyntaxNode
82public static IEnumerable<TNode> GetAncestorsOrThis<TNode>(this SyntaxNode? node)
83where TNode : SyntaxNode
85var current = node;
97public static bool HasAncestor<TNode>(this SyntaxNode node)
98where TNode : SyntaxNode
104this SyntaxNode node, TextSpan searchSpan, Func<SyntaxNode, bool> predicate)
105where TSyntaxNode : SyntaxNode
109var nodes = new LinkedList<SyntaxNode>();
114var currentNode = nodes.First!.Value;
129public static bool CheckParent<T>([NotNullWhen(returnValue: true)] this SyntaxNode? node, Func<T, bool> valueChecker) where T : SyntaxNode
145public static bool IsChildNode<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
146where TParent : SyntaxNode
154var ancestorNode = childGetter(ancestor);
162public static bool IsFoundUnder<TParent>(this SyntaxNode node, Func<TParent, SyntaxNode?> childGetter)
163where TParent : SyntaxNode
171var child = childGetter(ancestor);
174return node.GetAncestorsOrThis<SyntaxNode>().Contains(child);
177public static SyntaxNode GetCommonRoot(this SyntaxNode node1, SyntaxNode node2)
183using var _ = PooledHashSet<SyntaxNode>.GetInstance(out var set);
184set.AddRange(node2.GetAncestorsOrThis<SyntaxNode>());
186foreach (var ancestor in node1.AncestorsAndSelf())
195public static int Width(this SyntaxNode node)
198public static int FullWidth(this SyntaxNode node)
201public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes, Func<SyntaxNode, bool> predicate)
204public static SyntaxNode? FindInnermostCommonNode(this IEnumerable<SyntaxNode> nodes)
214using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var commonAncestorsStack);
215using var _2 = PooledHashSet<SyntaxNode>.GetInstance(out var commonAncestorsSet);
218foreach (var node in nodes)
225foreach (var ancestor in node.ValueAncestorsAndSelf())
239var commonAncestor = FindCommonAncestor(node, commonAncestorsSet);
281static SyntaxNode? FindCommonAncestor(SyntaxNode node, HashSet<SyntaxNode> commonAncestorsSet)
283foreach (var ancestor in node.ValueAncestorsAndSelf())
293public static TSyntaxNode? FindInnermostCommonNode<TSyntaxNode>(this IEnumerable<SyntaxNode> nodes) where TSyntaxNode : SyntaxNode
296public static TextSpan GetContainedSpan(this IEnumerable<SyntaxNode> nodes)
302foreach (var node in nodes)
312public static bool OverlapsHiddenPosition(this SyntaxNode node, CancellationToken cancellationToken)
315public static bool OverlapsHiddenPosition(this SyntaxNode node, TextSpan span, CancellationToken cancellationToken)
318public static bool OverlapsHiddenPosition(this SyntaxNode declaration, SyntaxNode startNode, SyntaxNode endNode, CancellationToken cancellationToken)
327public static IEnumerable<T> GetAnnotatedNodes<T>(this SyntaxNode node, SyntaxAnnotation syntaxAnnotation) where T : SyntaxNode
341IEnumerable<SyntaxNode> nodes,
342Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>> computeReplacementAsync,
343CancellationToken cancellationToken) where TRootNode : SyntaxNode
365CancellationToken cancellationToken) where TRootNode : SyntaxNode
378CancellationToken cancellationToken) where TRoot : SyntaxNode
389IEnumerable<SyntaxNode>? nodes,
390Func<SyntaxNode, SyntaxNode, CancellationToken, Task<SyntaxNode>>? computeReplacementNodeAsync,
396where TRoot : SyntaxNode
403var nodeReplacements = new Dictionary<SyntaxNode, SyntaxNode>();
439if (nodesToReplace.TryGetValue(span, out var currentNode))
441var original = (SyntaxNode?)retryAnnotations.GetAnnotations(currentNode).SingleOrDefault() ?? currentNode;
442var newNode = await computeReplacementNodeAsync!(original, currentNode, cancellationToken).ConfigureAwait(false);
472if (rewritten != original || !nodeReplacements.TryGetValue(original, out var replaced))
598SyntaxNode root,
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 (23)
37var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
70bool OverlapsWithSpan(SyntaxNode n) => spansTree.HasIntervalThatOverlapsWith(n.FullSpan.Start, n.FullSpan.Length);
73protected abstract INamespaceSymbol? GetExplicitNamespaceSymbol(SyntaxNode node, SemanticModel model);
77SyntaxNode container,
95SyntaxNode container,
100private static SyntaxNode GenerateNamespaceImportDeclaration(INamespaceSymbol namespaceSymbol, SyntaxGenerator generator)
111IEnumerable<SyntaxNode> syntaxNodes,
117using var _1 = ArrayBuilder<SyntaxNode>.GetInstance(out var importsToAdd);
118using var _2 = ArrayBuilder<SyntaxNode>.GetInstance(out var nodesToSimplify);
120var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
139var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
159var first = root.DescendantNodesAndSelf().First(x => x.HasAnnotation(annotation));
160var last = root.DescendantNodesAndSelf().Last(x => x.HasAnnotation(annotation));
162var context = first.GetCommonRoot(last);
172IEnumerable<SyntaxNode> annotatedNodes,
178using var _ = PooledDictionary<INamespaceSymbol, SyntaxNode>.GetInstance(out var importToSyntax);
180var root = await document.GetRequiredSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
188SyntaxNode? first = null, last = null;
190foreach (var annotatedNode in annotatedNodes)
218var namespaceSyntax = GenerateNamespaceImportDeclaration(namespaceSymbol, generator);
233var context = first.GetCommonRoot(last);
236var importContainer = addImportsService.GetImportContainer(root, context, importToSyntax.First().Value, options);
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)
975/// document instance defined by its name and root <see cref="SyntaxNode"/>.
977public Solution AddDocument(DocumentId documentId, string name, SyntaxNode syntaxRoot, IEnumerable<string>? folders = null, string? filePath = null, bool isGenerated = false, PreservationMode preservationMode = PreservationMode.PreserveValue)
1379public Solution WithDocumentSyntaxRoot(DocumentId documentId, SyntaxNode root, PreservationMode mode = PreservationMode.PreserveValue)
1383internal Solution WithDocumentSyntaxRoots(ImmutableArray<(DocumentId documentId, SyntaxNode root)> syntaxRoots, PreservationMode mode = PreservationMode.PreserveValue)
1648=> WithCompilationState(CompilationState.WithFrozenSourceGeneratedDocuments(documents.SelectAsArray(d => (d.documentIdentity, d.generationDateTime, (SourceText?)d.text, (SyntaxNode?)null))));
Workspace\Solution\SolutionCompilationState.cs (12)
799ImmutableArray<(SourceGeneratedDocumentIdentity, DateTime, SourceText?, SyntaxNode?)>) GetOrdinaryAndSourceGeneratedDocuments()
805using var _2 = ArrayBuilder<(SourceGeneratedDocumentIdentity, DateTime, SourceText?, SyntaxNode?)>.GetInstance(out var sourceGeneratedDocuments);
831ImmutableArray<(SourceGeneratedDocumentIdentity documentIdentity, DateTime generationDateTime, SourceText? sourceText, SyntaxNode? syntaxNode)> sourceGeneratedDocuments,
986/// <inheritdoc cref="Solution.WithDocumentSyntaxRoots(ImmutableArray{ValueTuple{DocumentId, SyntaxNode}}, PreservationMode)"/>
990public SolutionCompilationState WithDocumentSyntaxRoots(ImmutableArray<(DocumentId documentId, SyntaxNode root)> syntaxRoots, PreservationMode mode)
994return UpdateDocumentsInMultipleProjects<DocumentState, SyntaxNode, PreservationMode>(
999oldDocumentState.TryGetSyntaxTree(out var oldTree) && oldTree.TryGetRoot(out var oldRoot) && oldRoot == root
1003(ImmutableArray<(DocumentId, SyntaxNode)>,
1004ImmutableArray<(SourceGeneratedDocumentIdentity, DateTime, SourceText?, SyntaxNode?)>) GetOrdinaryAndSourceGeneratedDocuments()
1009using var _1 = ArrayBuilder<(DocumentId, SyntaxNode)>.GetInstance(capacity: syntaxRoots.Length, out var ordinaryDocuments);
1010using var _2 = ArrayBuilder<(SourceGeneratedDocumentIdentity, DateTime, SourceText?, SyntaxNode?)>.GetInstance(out var sourceGeneratedDocuments);
1386ImmutableArray<(SourceGeneratedDocumentIdentity documentIdentity, DateTime generationDateTime, SourceText? sourceText, SyntaxNode? syntaxNode)> documents)