Language\DefaultRazorIntermediateNodeLoweringPhase.cs (16)
529protected SourceSpan? BuildSourceSpanFromNode(SyntaxNode node)
688foreach (var child in descendantNodes)
786var markupLiteral = SyntaxFactory.MarkupTextLiteral(node.LiteralTokens).Green.CreateRed(node.Parent, node.Position);
799protected internal void VisitAttributeValue(SyntaxNode node)
834var rewritten = SyntaxFactory.MarkupTextLiteral(builder.ToList()).Green.CreateRed(node.Parent, position);
851var rewritten = SyntaxFactory.MarkupTextLiteral(builder.ToList()).Green.CreateRed(node.Parent, position);
872var rewritten = SyntaxFactory.CSharpExpressionLiteral(builder.ToList(), generator, editHandler).Green.CreateRed(node.Parent, position);
881var rewritten = SyntaxFactory.MarkupTextLiteral(escapedAtTokens).Green.CreateRed(node.Parent, position);
891protected void Combine(HtmlContentIntermediateNode node, SyntaxNode item)
1269var mergedAttribute = SyntaxFactory.MarkupTextLiteral(mergedLiterals).Green.CreateRed(node.Parent, node.Position);
1333SyntaxNode rewritten;
1433var literal = SyntaxFactory.MarkupTextLiteral(literals).Green.CreateRed(node.Parent, node.Position);
1554private void VisitHtmlContent(SyntaxNode node)
1822var rewritten = SyntaxFactory.MarkupTextLiteral(mergedTokens.ToList()).Green.CreateRed(node.Value.Parent, atPosition);
2139if (node.FirstAncestorOrSelf<SyntaxNode>(n => n is MarkupStartTagSyntax || n is MarkupEndTagSyntax) != null)
2163if (node.FirstAncestorOrSelf<SyntaxNode>(n => n is CSharpImplicitExpressionSyntax) == null)
Language\Legacy\ImplicitExpressionEditHandler.cs (21)
56protected override PartialParseResultInternal CanAcceptChange(SyntaxNode target, SourceChange change)
125private static bool IsDotlessCommitInsertion(SyntaxNode target, SourceChange change)
131private static bool IsNewDotlessCommitInsertion(SyntaxNode target, SourceChange change)
144private static bool IsSecondaryDotlessCommitInsertion(SyntaxNode target, SourceChange change)
154private static bool IsAcceptableReplace(SyntaxNode target, SourceChange change)
160private bool IsAcceptableIdentifierReplacement(SyntaxNode target, SourceChange change)
211private static bool IsAcceptableDeletion(SyntaxNode target, SourceChange change)
218private static bool IsAcceptableInsertion(SyntaxNode target, SourceChange change)
226internal static bool IsAcceptableDeletionInBalancedParenthesis(SyntaxNode target, SourceChange change)
256internal static bool IsAcceptableInsertionInBalancedParenthesis(SyntaxNode target, SourceChange change)
415private static bool IsAcceptableEndInsertion(SyntaxNode target, SourceChange change)
425private static bool IsAcceptableInnerInsertion(SyntaxNode target, SourceChange change)
437private static bool RemainingIsWhitespace(SyntaxNode target, SourceChange change)
443private PartialParseResultInternal HandleDotlessCommitInsertion(SyntaxNode target)
453private PartialParseResultInternal HandleReplacement(SyntaxNode target, SourceChange change)
474private PartialParseResultInternal HandleDeletion(SyntaxNode target, char previousChar, SourceChange change)
497private PartialParseResultInternal HandleInsertion(SyntaxNode target, char previousChar, SourceChange change)
518private PartialParseResultInternal HandleInsertionAfterIdPart(SyntaxNode target, SourceChange change)
547private PartialParseResultInternal HandleInsertionAfterOpenParenthesis(SyntaxNode target, SourceChange change)
557private PartialParseResultInternal HandleInsertionAfterDot(SyntaxNode target, SourceChange change)
567private PartialParseResultInternal TryAcceptChange(SyntaxNode target, SourceChange change, PartialParseResultInternal acceptResult = PartialParseResultInternal.Accepted)
Language\Legacy\SpanEditHandler.cs (12)
55public virtual EditResult ApplyChange(SyntaxNode target, SourceChange change)
60public virtual EditResult ApplyChange(SyntaxNode target, SourceChange change, bool force)
76public virtual bool OwnsChange(SyntaxNode target, SourceChange change)
84protected virtual PartialParseResultInternal CanAcceptChange(SyntaxNode target, SourceChange change)
89protected virtual SyntaxNode UpdateSpan(SyntaxNode target, SourceChange change)
98var newTarget = target switch
107_ => Assumed.Unreachable<SyntaxNode>($"The type {target?.GetType().Name} is not a supported span node."),
112protected internal static bool IsAtEndOfFirstLine(SyntaxNode target, SourceChange change)
121protected internal static bool IsEndDeletion(SyntaxNode target, SourceChange change)
129protected internal static bool IsEndReplace(SyntaxNode target, SourceChange change)
134protected internal static bool IsAtEndOfSpan(SyntaxNode target, SourceChange change)
Language\Syntax\Generated\Syntax.xml.Internal.Generated.cs (82)
60internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.RazorDocumentSyntax(this, parent, position);
140internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.RazorCommentBlockSyntax(this, parent, position);
202internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.RazorMetaCodeSyntax(this, parent, position);
256internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.GenericBlockSyntax(this, parent, position);
318internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.UnclassifiedTextLiteralSyntax(this, parent, position);
385internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupBlockSyntax(this, parent, position);
447internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupTransitionSyntax(this, parent, position);
509internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupTextLiteralSyntax(this, parent, position);
571internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupEphemeralTextLiteralSyntax(this, parent, position);
625internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupCommentBlockSyntax(this, parent, position);
690internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupMinimizedAttributeBlockSyntax(this, parent, position);
814internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupAttributeBlockSyntax(this, parent, position);
868internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupMiscAttributeContentSyntax(this, parent, position);
939internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupLiteralAttributeValueSyntax(this, parent, position);
1004internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupDynamicAttributeValueSyntax(this, parent, position);
1163internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupElementSyntax(this, parent, position);
1280internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupStartTagSyntax(this, parent, position);
1391internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupEndTagSyntax(this, parent, position);
1479internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupTagHelperElementSyntax(this, parent, position);
1592internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupTagHelperStartTagSyntax(this, parent, position);
1699internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupTagHelperEndTagSyntax(this, parent, position);
1821internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupTagHelperAttributeSyntax(this, parent, position);
1890internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupMinimizedTagHelperAttributeSyntax(this, parent, position);
1944internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupTagHelperAttributeValueSyntax(this, parent, position);
2099internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupTagHelperDirectiveAttributeSyntax(this, parent, position);
2201internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.MarkupMinimizedTagHelperDirectiveAttributeSyntax(this, parent, position);
2268internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.CSharpCodeBlockSyntax(this, parent, position);
2324internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.CSharpTransitionSyntax(this, parent, position);
2386internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.CSharpStatementLiteralSyntax(this, parent, position);
2448internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.CSharpExpressionLiteralSyntax(this, parent, position);
2510internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.CSharpEphemeralTextLiteralSyntax(this, parent, position);
2564internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.CSharpTemplateBlockSyntax(this, parent, position);
2640internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.CSharpStatementSyntax(this, parent, position);
2706internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.CSharpStatementBodySyntax(this, parent, position);
2765internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.CSharpExplicitExpressionSyntax(this, parent, position);
2831internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.CSharpExplicitExpressionBodySyntax(this, parent, position);
2890internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.CSharpImplicitExpressionSyntax(this, parent, position);
2938internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.CSharpImplicitExpressionBodySyntax(this, parent, position);
3014internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.RazorDirectiveSyntax(this, parent, position);
3077internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.RazorUsingDirectiveSyntax(this, parent, position);
3142internal override SyntaxNode CreateRed(SyntaxNode parent, int position) => new Syntax.RazorDirectiveBodySyntax(this, parent, position);
Language\Syntax\Generated\Syntax.xml.Syntax.Generated.cs (142)
11internal RazorBlockSyntax(GreenNode green, SyntaxNode parent, int position)
28internal RazorDocumentSyntax(GreenNode green, SyntaxNode parent, int position)
36internal override SyntaxNode GetNodeSlot(int index) => index == 0 ? GetRedAtZero(ref this._document) : null;
38internal override SyntaxNode GetCachedSlot(int index) => index == 0 ? this._document : null;
63internal RazorCommentBlockSyntax(GreenNode green, SyntaxNode parent, int position)
74internal override SyntaxNode GetNodeSlot(int index) => null;
76internal override SyntaxNode GetCachedSlot(int index) => null;
104internal RazorMetaCodeSyntax(GreenNode green, SyntaxNode parent, int position)
120internal override SyntaxNode GetNodeSlot(int index) => null;
122internal override SyntaxNode GetCachedSlot(int index) => null;
150private SyntaxNode _children;
152internal GenericBlockSyntax(GreenNode green, SyntaxNode parent, int position)
159internal override SyntaxNode GetNodeSlot(int index) => index == 0 ? GetRedAtZero(ref this._children) : null;
161internal override SyntaxNode GetCachedSlot(int index) => index == 0 ? this._children : null;
189internal UnclassifiedTextLiteralSyntax(GreenNode green, SyntaxNode parent, int position)
205internal override SyntaxNode GetNodeSlot(int index) => null;
207internal override SyntaxNode GetCachedSlot(int index) => null;
235internal MarkupSyntaxNode(GreenNode green, SyntaxNode parent, int position)
243private SyntaxNode _children;
245internal MarkupBlockSyntax(GreenNode green, SyntaxNode parent, int position)
252internal override SyntaxNode GetNodeSlot(int index) => index == 0 ? GetRedAtZero(ref this._children) : null;
254internal override SyntaxNode GetCachedSlot(int index) => index == 0 ? this._children : null;
282internal MarkupTransitionSyntax(GreenNode green, SyntaxNode parent, int position)
298internal override SyntaxNode GetNodeSlot(int index) => null;
300internal override SyntaxNode GetCachedSlot(int index) => null;
328internal MarkupTextLiteralSyntax(GreenNode green, SyntaxNode parent, int position)
344internal override SyntaxNode GetNodeSlot(int index) => null;
346internal override SyntaxNode GetCachedSlot(int index) => null;
374internal MarkupEphemeralTextLiteralSyntax(GreenNode green, SyntaxNode parent, int position)
390internal override SyntaxNode GetNodeSlot(int index) => null;
392internal override SyntaxNode GetCachedSlot(int index) => null;
420private SyntaxNode _children;
422internal MarkupCommentBlockSyntax(GreenNode green, SyntaxNode parent, int position)
429internal override SyntaxNode GetNodeSlot(int index) => index == 0 ? GetRedAtZero(ref this._children) : null;
431internal override SyntaxNode GetCachedSlot(int index) => index == 0 ? this._children : null;
462internal MarkupMinimizedAttributeBlockSyntax(GreenNode green, SyntaxNode parent, int position)
470internal override SyntaxNode GetNodeSlot(int index)
478internal override SyntaxNode GetCachedSlot(int index)
518internal MarkupAttributeBlockSyntax(GreenNode green, SyntaxNode parent, int position)
531internal override SyntaxNode GetNodeSlot(int index)
543internal override SyntaxNode GetCachedSlot(int index)
585private SyntaxNode _children;
587internal MarkupMiscAttributeContentSyntax(GreenNode green, SyntaxNode parent, int position)
594internal override SyntaxNode GetNodeSlot(int index) => index == 0 ? GetRedAtZero(ref this._children) : null;
596internal override SyntaxNode GetCachedSlot(int index) => index == 0 ? this._children : null;
625internal MarkupLiteralAttributeValueSyntax(GreenNode green, SyntaxNode parent, int position)
633internal override SyntaxNode GetNodeSlot(int index)
641internal override SyntaxNode GetCachedSlot(int index)
675internal MarkupDynamicAttributeValueSyntax(GreenNode green, SyntaxNode parent, int position)
683internal override SyntaxNode GetNodeSlot(int index)
691internal override SyntaxNode GetCachedSlot(int index)
722internal BaseMarkupStartTagSyntax(GreenNode green, SyntaxNode parent, int position)
761internal BaseMarkupEndTagSyntax(GreenNode green, SyntaxNode parent, int position)
800internal BaseMarkupElementSyntax(GreenNode green, SyntaxNode parent, int position)
817private SyntaxNode _body;
820internal MarkupElementSyntax(GreenNode green, SyntaxNode parent, int position)
829internal override SyntaxNode GetNodeSlot(int index)
838internal override SyntaxNode GetCachedSlot(int index)
873private SyntaxNode _attributes;
875internal MarkupStartTagSyntax(GreenNode green, SyntaxNode parent, int position)
904internal override SyntaxNode GetNodeSlot(int index) => index == 3 ? GetRed(ref this._attributes, 3) : null;
906internal override SyntaxNode GetCachedSlot(int index) => index == 3 ? this._attributes : null;
949internal MarkupEndTagSyntax(GreenNode green, SyntaxNode parent, int position)
971internal override SyntaxNode GetNodeSlot(int index) => index == 4 ? GetRed(ref this._miscAttributeContent, 4) : null;
973internal override SyntaxNode GetCachedSlot(int index) => index == 4 ? this._miscAttributeContent : null;
1019private SyntaxNode _body;
1022internal MarkupTagHelperElementSyntax(GreenNode green, SyntaxNode parent, int position)
1032internal override SyntaxNode GetNodeSlot(int index)
1041internal override SyntaxNode GetCachedSlot(int index)
1077private SyntaxNode _attributes;
1079internal MarkupTagHelperStartTagSyntax(GreenNode green, SyntaxNode parent, int position)
1107internal override SyntaxNode GetNodeSlot(int index) => index == 3 ? GetRed(ref this._attributes, 3) : null;
1109internal override SyntaxNode GetCachedSlot(int index) => index == 3 ? this._attributes : null;
1151internal MarkupTagHelperEndTagSyntax(GreenNode green, SyntaxNode parent, int position)
1172internal override SyntaxNode GetNodeSlot(int index) => index == 4 ? GetRed(ref this._miscAttributeContent, 4) : null;
1174internal override SyntaxNode GetCachedSlot(int index) => index == 4 ? this._miscAttributeContent : null;
1225internal MarkupTagHelperAttributeSyntax(GreenNode green, SyntaxNode parent, int position)
1239internal override SyntaxNode GetNodeSlot(int index)
1251internal override SyntaxNode GetCachedSlot(int index)
1299internal MarkupMinimizedTagHelperAttributeSyntax(GreenNode green, SyntaxNode parent, int position)
1308internal override SyntaxNode GetNodeSlot(int index)
1316internal override SyntaxNode GetCachedSlot(int index)
1350private SyntaxNode _children;
1352internal MarkupTagHelperAttributeValueSyntax(GreenNode green, SyntaxNode parent, int position)
1359internal override SyntaxNode GetNodeSlot(int index) => index == 0 ? GetRedAtZero(ref this._children) : null;
1361internal override SyntaxNode GetCachedSlot(int index) => index == 0 ? this._children : null;
1399internal MarkupTagHelperDirectiveAttributeSyntax(GreenNode green, SyntaxNode parent, int position)
1416internal override SyntaxNode GetNodeSlot(int index)
1431internal override SyntaxNode GetCachedSlot(int index)
1490internal MarkupMinimizedTagHelperDirectiveAttributeSyntax(GreenNode green, SyntaxNode parent, int position)
1502internal override SyntaxNode GetNodeSlot(int index)
1513internal override SyntaxNode GetCachedSlot(int index)
1555internal CSharpSyntaxNode(GreenNode green, SyntaxNode parent, int position)
1563private SyntaxNode _children;
1565internal CSharpCodeBlockSyntax(GreenNode green, SyntaxNode parent, int position)
1572internal override SyntaxNode GetNodeSlot(int index) => index == 0 ? GetRedAtZero(ref this._children) : null;
1574internal override SyntaxNode GetCachedSlot(int index) => index == 0 ? this._children : null;
1602internal CSharpTransitionSyntax(GreenNode green, SyntaxNode parent, int position)
1611internal override SyntaxNode GetNodeSlot(int index) => null;
1613internal override SyntaxNode GetCachedSlot(int index) => null;
1639internal CSharpStatementLiteralSyntax(GreenNode green, SyntaxNode parent, int position)
1655internal override SyntaxNode GetNodeSlot(int index) => null;
1657internal override SyntaxNode GetCachedSlot(int index) => null;
1685internal CSharpExpressionLiteralSyntax(GreenNode green, SyntaxNode parent, int position)
1701internal override SyntaxNode GetNodeSlot(int index) => null;
1703internal override SyntaxNode GetCachedSlot(int index) => null;
1731internal CSharpEphemeralTextLiteralSyntax(GreenNode green, SyntaxNode parent, int position)
1747internal override SyntaxNode GetNodeSlot(int index) => null;
1749internal override SyntaxNode GetCachedSlot(int index) => null;
1777private SyntaxNode _children;
1779internal CSharpTemplateBlockSyntax(GreenNode green, SyntaxNode parent, int position)
1786internal override SyntaxNode GetNodeSlot(int index) => index == 0 ? GetRedAtZero(ref this._children) : null;
1788internal override SyntaxNode GetCachedSlot(int index) => index == 0 ? this._children : null;
1816internal CSharpRazorBlockSyntax(GreenNode green, SyntaxNode parent, int position)
1835internal CSharpStatementSyntax(GreenNode green, SyntaxNode parent, int position)
1843internal override SyntaxNode GetNodeSlot(int index)
1851internal override SyntaxNode GetCachedSlot(int index)
1888internal CSharpStatementBodySyntax(GreenNode green, SyntaxNode parent, int position)
1897internal override SyntaxNode GetNodeSlot(int index)
1906internal override SyntaxNode GetCachedSlot(int index)
1948internal CSharpExplicitExpressionSyntax(GreenNode green, SyntaxNode parent, int position)
1956internal override SyntaxNode GetNodeSlot(int index)
1964internal override SyntaxNode GetCachedSlot(int index)
2001internal CSharpExplicitExpressionBodySyntax(GreenNode green, SyntaxNode parent, int position)
2010internal override SyntaxNode GetNodeSlot(int index)
2019internal override SyntaxNode GetCachedSlot(int index)
2061internal CSharpImplicitExpressionSyntax(GreenNode green, SyntaxNode parent, int position)
2069internal override SyntaxNode GetNodeSlot(int index)
2077internal override SyntaxNode GetCachedSlot(int index)
2112internal CSharpImplicitExpressionBodySyntax(GreenNode green, SyntaxNode parent, int position)
2119internal override SyntaxNode GetNodeSlot(int index) => index == 0 ? GetRedAtZero(ref this._csharpCode) : null;
2121internal override SyntaxNode GetCachedSlot(int index) => index == 0 ? this._csharpCode : null;
2147internal BaseRazorDirectiveSyntax(GreenNode green, SyntaxNode parent, int position)
2161internal RazorDirectiveSyntax(GreenNode green, SyntaxNode parent, int position)
2170internal override SyntaxNode GetNodeSlot(int index)
2178internal override SyntaxNode GetCachedSlot(int index)
2215internal RazorUsingDirectiveSyntax(GreenNode green, SyntaxNode parent, int position)
2224internal override SyntaxNode GetNodeSlot(int index)
2232internal override SyntaxNode GetCachedSlot(int index)
2269internal RazorDirectiveBodySyntax(GreenNode green, SyntaxNode parent, int position)
2277internal override SyntaxNode GetNodeSlot(int index)
2285internal override SyntaxNode GetCachedSlot(int index)
Language\Syntax\RazorSyntaxNode.cs (11)
11public RazorSyntaxNode(GreenNode green, SyntaxNode parent, int position)
25protected internal override SyntaxNode ReplaceCore<TNode>(
27Func<TNode, TNode, SyntaxNode>? computeReplacementNode = null,
32protected internal override SyntaxNode ReplaceNodeInListCore(SyntaxNode originalNode, IEnumerable<SyntaxNode> replacementNodes)
35protected internal override SyntaxNode InsertNodesInListCore(SyntaxNode nodeInList, IEnumerable<SyntaxNode> nodesToInsert, bool insertBefore)
38protected internal override SyntaxNode ReplaceTokenInListCore(SyntaxToken originalToken, IEnumerable<SyntaxToken> newTokens)
41protected internal override SyntaxNode InsertTokensInListCore(SyntaxToken originalToken, IEnumerable<SyntaxToken> newTokens, bool insertBefore)
Language\Syntax\SyntaxBuilderExtensions.cs (58)
15where TNode : SyntaxNode
92where TNode : SyntaxNode
131/// Produces a <see cref="SyntaxNode"/> for a <see cref="SyntaxList"/> from the
134public static SyntaxNode? ToListNode<TNode>(ref readonly this PooledArrayBuilder<TNode> builder)
135where TNode : SyntaxNode
139/// Produces a <see cref="SyntaxNode"/> with the given <paramref name="parent"/>
142public static SyntaxNode? ToListNode<TNode>(
143ref readonly this PooledArrayBuilder<TNode> builder, SyntaxNode parent)
144where TNode : SyntaxNode
148/// Produces a <see cref="SyntaxNode"/> with the given <paramref name="parent"/>
152public static SyntaxNode? ToListNode<TNode>(
153ref readonly this PooledArrayBuilder<TNode> builder, SyntaxNode? parent, int position)
154where TNode : SyntaxNode
160/// Produces a <see cref="SyntaxNode"/> for a <see cref="SyntaxList"/> from the
163public static SyntaxNode? ToListNode(ref readonly this PooledArrayBuilder<SyntaxToken> builder)
167/// Produces a <see cref="SyntaxNode"/> with the given <paramref name="parent"/>
170public static SyntaxNode? ToListNode(
171ref readonly this PooledArrayBuilder<SyntaxToken> builder, SyntaxNode parent)
175/// Produces a <see cref="SyntaxNode"/> with the given <paramref name="parent"/>
179public static SyntaxNode? ToListNode(
180ref readonly this PooledArrayBuilder<SyntaxToken> builder, SyntaxNode? parent, int position)
186/// Produces a <see cref="SyntaxNode"/> for a <see cref="SyntaxList"/> from the
207public static SyntaxNode? ToListNodeAndClear<TNode>(ref this PooledArrayBuilder<TNode> builder)
208where TNode : SyntaxNode
212/// Produces a <see cref="SyntaxNode"/> with the given <paramref name="parent"/>
234public static SyntaxNode? ToListNodeAndClear<TNode>(
235ref this PooledArrayBuilder<TNode> builder, SyntaxNode parent)
236where TNode : SyntaxNode
238var result = builder.ToListNode(parent, parent.Position);
245/// Produces a <see cref="SyntaxNode"/> with the given <paramref name="parent"/>
267public static SyntaxNode? ToListNodeAndClear<TNode>(
268ref this PooledArrayBuilder<TNode> builder, SyntaxNode? parent, int position)
269where TNode : SyntaxNode
271var result = builder.ToListNode(parent, position);
278/// Produces a <see cref="SyntaxNode"/> for a <see cref="SyntaxList"/> from the
299public static SyntaxNode? ToListNodeAndClear(ref this PooledArrayBuilder<SyntaxToken> builder)
303/// Produces a <see cref="SyntaxNode"/> with the given <paramref name="parent"/>
325public static SyntaxNode? ToListNodeAndClear(
326ref this PooledArrayBuilder<SyntaxToken> builder, SyntaxNode parent)
328var result = builder.ToListNode(parent, parent.Position);
335/// Produces a <see cref="SyntaxNode"/> with the given <paramref name="parent"/>
357public static SyntaxNode? ToListNodeAndClear(
358ref this PooledArrayBuilder<SyntaxToken> builder, SyntaxNode? parent, int position)
360var result = builder.ToListNode(parent, position);
370where TNode : SyntaxNode
378ref readonly this PooledArrayBuilder<TNode> builder, SyntaxNode parent)
379where TNode : SyntaxNode
387ref readonly this PooledArrayBuilder<TNode> builder, SyntaxNode? parent, int position)
388where TNode : SyntaxNode
404ref readonly this PooledArrayBuilder<SyntaxToken> builder, SyntaxNode parent)
412ref readonly this PooledArrayBuilder<SyntaxToken> builder, SyntaxNode? parent, int position, int index)
439where TNode : SyntaxNode
465ref this PooledArrayBuilder<TNode> builder, SyntaxNode parent)
466where TNode : SyntaxNode
492ref this PooledArrayBuilder<TNode> builder, SyntaxNode? parent, int position)
493where TNode : SyntaxNode
548ref this PooledArrayBuilder<SyntaxToken> builder, SyntaxNode parent)
574ref this PooledArrayBuilder<SyntaxToken> builder, SyntaxNode? parent, int position, int index)
Language\Syntax\SyntaxFactory.cs (8)
19SyntaxKind kind, SyntaxNode? parent, int position, params RazorDiagnostic[] diagnostics)
23SyntaxKind kind, string content, SyntaxNode? parent, int position, params RazorDiagnostic[] diagnostics)
27SyntaxKind kind, SyntaxNode? parent, int position, int index, params RazorDiagnostic[] diagnostics)
31SyntaxKind kind, string content, SyntaxNode? parent, int position, int index, params RazorDiagnostic[] diagnostics)
38where TNode : SyntaxNode
42where TNode : SyntaxNode
46where TNode : SyntaxNode
50where TNode : SyntaxNode
Language\Syntax\SyntaxList.cs (34)
10internal abstract class SyntaxList(InternalSyntax.SyntaxList green, SyntaxNode parent, int position) : SyntaxNode(green, parent, position)
13where TNode : SyntaxNode
27where TNode : SyntaxNode
61protected internal override SyntaxNode ReplaceCore<TNode>(
63Func<TNode, TNode, SyntaxNode>? computeReplacementNode = null,
66=> Assumed.Unreachable<SyntaxNode>();
68protected internal override SyntaxNode ReplaceNodeInListCore(SyntaxNode originalNode, IEnumerable<SyntaxNode> replacementNodes)
69=> Assumed.Unreachable<SyntaxNode>();
71protected internal override SyntaxNode InsertNodesInListCore(SyntaxNode nodeInList, IEnumerable<SyntaxNode> nodesToInsert, bool insertBefore)
72=> Assumed.Unreachable<SyntaxNode>();
74protected internal override SyntaxNode ReplaceTokenInListCore(SyntaxToken originalToken, IEnumerable<SyntaxToken> newTokens)
75=> Assumed.Unreachable<SyntaxNode>();
77protected internal override SyntaxNode InsertTokensInListCore(SyntaxToken originalToken, IEnumerable<SyntaxToken> newTokens, bool insertBefore)
78=> Assumed.Unreachable<SyntaxNode>();
82private SyntaxNode? _child0;
83private SyntaxNode? _child1;
85internal WithTwoChildren(InternalSyntax.SyntaxList green, SyntaxNode parent, int position)
90internal override SyntaxNode? GetNodeSlot(int index)
98internal override SyntaxNode? GetCachedSlot(int index)
109private SyntaxNode? _child0;
110private SyntaxNode? _child1;
111private SyntaxNode? _child2;
113internal WithThreeChildren(InternalSyntax.SyntaxList green, SyntaxNode parent, int position)
118internal override SyntaxNode? GetNodeSlot(int index)
127internal override SyntaxNode? GetCachedSlot(int index)
139private readonly ArrayElement<SyntaxNode?>[] _children;
141internal WithManyChildren(InternalSyntax.SyntaxList green, SyntaxNode parent, int position)
144_children = new ArrayElement<SyntaxNode?>[green.SlotCount];
147internal override SyntaxNode? GetNodeSlot(int index)
150internal override SyntaxNode? GetCachedSlot(int index)
Language\Syntax\SyntaxNavigator.cs (6)
22internal static SyntaxToken GetFirstToken(SyntaxNode current, bool includeZeroWidth)
27internal static SyntaxToken GetLastToken(SyntaxNode current, bool includeZeroWidth)
42internal static SyntaxToken GetFirstToken(SyntaxNode current, Func<SyntaxToken, bool>? predicate)
86internal static SyntaxToken GetLastToken(SyntaxNode current, Func<SyntaxToken, bool> predicate)
173internal static SyntaxToken GetNextToken(SyntaxNode node, Func<SyntaxToken, bool>? predicate)
257internal static SyntaxToken GetPreviousToken(SyntaxNode node, Func<SyntaxToken, bool> predicate)
Language\Syntax\SyntaxNode.cs (49)
15internal abstract partial class SyntaxNode(GreenNode green, SyntaxNode parent, int position)
18public SyntaxNode Parent { get; } = parent;
41internal abstract SyntaxNode? GetNodeSlot(int index);
43internal abstract SyntaxNode? GetCachedSlot(int index);
45internal SyntaxNode? GetRed(ref SyntaxNode? field, int slot)
47var result = field;
63internal SyntaxNode? GetRedAtZero(ref SyntaxNode? field)
65var result = field;
81where T : SyntaxNode
100where T : SyntaxNode
117internal SyntaxNode? GetRedElement(ref SyntaxNode? element, int slot)
121var result = element;
165var prevSibling = GetCachedSlot(index);
224public IEnumerable<SyntaxNode> ChildNodes()
252public IEnumerable<SyntaxNode> Ancestors()
258public IEnumerable<SyntaxNode> AncestorsAndSelf()
260for (var node = this; node != null; node = node.Parent)
270where TNode : SyntaxNode
272for (var node = this; node != null; node = node.Parent)
287public IEnumerable<SyntaxNode> DescendantNodes(Func<SyntaxNode, bool>? descendIntoChildren = null)
297public IEnumerable<SyntaxNode> DescendantNodes(TextSpan span, Func<SyntaxNode, bool>? descendIntoChildren = null)
306public IEnumerable<SyntaxNode> DescendantNodesAndSelf(Func<SyntaxNode, bool>? descendIntoChildren = null)
316public IEnumerable<SyntaxNode> DescendantNodesAndSelf(TextSpan span, Func<SyntaxNode, bool>? descendIntoChildren = null)
325public IEnumerable<SyntaxNodeOrToken> DescendantNodesAndTokens(Func<SyntaxNode, bool>? descendIntoChildren = null)
335public IEnumerable<SyntaxNodeOrToken> DescendantNodesAndTokens(TextSpan span, Func<SyntaxNode, bool>? descendIntoChildren = null)
344public IEnumerable<SyntaxNodeOrToken> DescendandNodesAndTokensAndSelf(Func<SyntaxNode, bool>? descendIntoChildren = null)
353public IEnumerable<SyntaxNodeOrToken> DescendandNodesAndTokensAndSelf(TextSpan span, Func<SyntaxNode, bool>? descendIntoChildren = null)
361public IEnumerable<SyntaxToken> DescendantTokens(Func<SyntaxNode, bool>? descendIntoChildren = null)
371public IEnumerable<SyntaxToken> DescendantTokens(TextSpan span, Func<SyntaxNode, bool>? descendIntoChildren = null)
378protected internal abstract SyntaxNode ReplaceCore<TNode>(
380Func<TNode, TNode, SyntaxNode>? computeReplacementNode = null,
383where TNode : SyntaxNode;
385protected internal abstract SyntaxNode ReplaceNodeInListCore(SyntaxNode originalNode, IEnumerable<SyntaxNode> replacementNodes);
386protected internal abstract SyntaxNode InsertNodesInListCore(SyntaxNode nodeInList, IEnumerable<SyntaxNode> nodesToInsert, bool insertBefore);
387protected internal abstract SyntaxNode ReplaceTokenInListCore(SyntaxToken originalToken, IEnumerable<SyntaxToken> newTokens);
388protected internal abstract SyntaxNode InsertTokensInListCore(SyntaxToken originalToken, IEnumerable<SyntaxToken> newTokens, bool insertBefore);
395public bool IsEquivalentTo(SyntaxNode other)
451var node = curNode.AsNode();
Language\Syntax\SyntaxNode.Iterators.cs (11)
14private IEnumerable<SyntaxNode> DescendantNodesImpl(TextSpan span, Func<SyntaxNode, bool>? descendIntoChildren, bool includeSelf)
25var node = stack.TryGetNextAsNodeInSpan(in span);
38private IEnumerable<SyntaxNodeOrToken> DescendantNodesAndTokensImpl(TextSpan span, Func<SyntaxNode, bool>? descendIntoChildren, bool includeSelf)
101public ChildSyntaxListEnumeratorStack(SyntaxNode startingNode, Func<SyntaxNode, bool>? descendIntoChildren)
134public SyntaxNode? TryGetNextAsNodeInSpan(in TextSpan span)
138SyntaxNode? nodeValue;
151public void PushChildren(SyntaxNode node)
164public void PushChildren(SyntaxNode node, Func<SyntaxNode, bool>? descendIntoChildren)
Language\Syntax\SyntaxNodeExtensions.cs (31)
15public static TNode WithDiagnostics<TNode>(this TNode node, params RazorDiagnostic[] diagnostics) where TNode : SyntaxNode
20public static TNode AppendDiagnostic<TNode>(this TNode node, params ReadOnlySpan<RazorDiagnostic> diagnostics) where TNode : SyntaxNode
37where TNode : SyntaxNode
48public static SourceLocation GetSourceLocation(this SyntaxNode node, RazorSourceDocument source)
118public static SourceSpan GetSourceSpan(this SyntaxNode node, RazorSourceDocument source)
145IEnumerable<SyntaxNode> nodes,
146Func<SyntaxNode, SyntaxNode, SyntaxNode> computeReplacementNode,
149where TRoot : SyntaxNode
166public static TRoot ReplaceNodes<TRoot, TNode>(this TRoot root, IEnumerable<TNode> nodes, Func<TNode, TNode, SyntaxNode> computeReplacementNode)
167where TRoot : SyntaxNode
168where TNode : SyntaxNode
180public static TRoot ReplaceNode<TRoot>(this TRoot root, SyntaxNode oldNode, SyntaxNode newNode)
181where TRoot : SyntaxNode
198public static TRoot ReplaceNode<TRoot>(this TRoot root, SyntaxNode oldNode, IEnumerable<SyntaxNode> newNodes)
199where TRoot : SyntaxNode
214where TRoot : SyntaxNode
216return (TRoot)root.ReplaceCore<SyntaxNode>(tokens: tokens, computeReplacementToken: computeReplacementToken);
228where TRoot : SyntaxNode
230return (TRoot)root.ReplaceCore<SyntaxNode>(tokens: [oldToken], computeReplacementToken: (o, r) => newToken);
240public static TRoot InsertNodesBefore<TRoot>(this TRoot root, SyntaxNode nodeInList, IEnumerable<SyntaxNode> newNodes)
241where TRoot : SyntaxNode
253public static TRoot InsertNodesAfter<TRoot>(this TRoot root, SyntaxNode nodeInList, IEnumerable<SyntaxNode> newNodes)
254where TRoot : SyntaxNode
259public static string GetContent<TNode>(this TNode node) where TNode : SyntaxNode
268public override void Visit(SyntaxNode node)
Language\Syntax\SyntaxReplacer.cs (39)
14internal static SyntaxNode Replace<TNode>(
15SyntaxNode root,
17Func<TNode, TNode, SyntaxNode>? computeReplacementNode = null,
20where TNode : SyntaxNode
36IEnumerable<SyntaxNode>? nodes = null,
37Func<SyntaxNode, SyntaxNode, SyntaxNode>? computeReplacementNode = null,
41var replacer = new Replacer<SyntaxNode>(nodes, computeReplacementNode, tokens, computeReplacementToken);
53private sealed class Replacer<TNode> : SyntaxRewriter where TNode : SyntaxNode
55private static readonly HashSet<SyntaxNode> s_noNodes = [];
58private readonly Func<TNode, TNode, SyntaxNode>? _computeReplacementNode;
61private readonly HashSet<SyntaxNode> _nodeSet;
69Func<TNode, TNode, SyntaxNode>? computeReplacementNode = null,
88foreach (var node in _nodeSet)
144public override SyntaxNode? Visit(SyntaxNode? node)
146var rewritten = node;
200internal static SyntaxNode ReplaceNodeInList(SyntaxNode root, SyntaxNode originalNode, IEnumerable<SyntaxNode> newNodes)
205internal static SyntaxNode InsertNodeInList(SyntaxNode root, SyntaxNode nodeInList, IEnumerable<SyntaxNode> nodesToInsert, bool insertBefore)
210public static SyntaxNode ReplaceTokenInList(SyntaxNode root, SyntaxToken tokenInList, IEnumerable<SyntaxToken> newTokens)
215public static SyntaxNode InsertTokenInList(SyntaxNode root, SyntaxToken tokenInList, IEnumerable<SyntaxToken> newTokens, bool insertBefore)
252public override SyntaxNode? Visit(SyntaxNode? node)
254SyntaxNode? rewritten = node;
270private readonly SyntaxNode _originalNode;
271private readonly IEnumerable<SyntaxNode> _newNodes;
274SyntaxNode originalNode,
275IEnumerable<SyntaxNode> replacementNodes,
284public override SyntaxNode? Visit(SyntaxNode? node)