Skip to content
Open
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public void GetAttributeNameValuePairs_ParsesPairsCorrectly(
Assert.Empty(errorSink.GetErrorsAndClear());

// Act
var pairs = TagHelperParseTreeRewriter.Rewriter.GetAttributeNameValuePairs(element.StartTag);
var pairs = TagHelperParseTreeRewriter.Rewriter.GetAttributeNameValuePairs(element.MarkupStartTag);

// Assert
Assert.Equal(expectedPairs, pairs);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public void GetAttributeNameValuePairs_ParsesPairsCorrectly(
Assert.Empty(errorSink.GetErrorsAndClear());

// Act
var pairs = TagHelperParseTreeRewriter.Rewriter.GetAttributeNameValuePairs(element.StartTag);
var pairs = TagHelperParseTreeRewriter.Rewriter.GetAttributeNameValuePairs(element.MarkupStartTag);

// Assert
Assert.Equal(expectedPairs, pairs);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -1300,8 +1300,8 @@ public override void DefaultVisit(SyntaxNode node)

public override void VisitMarkupElement(MarkupElementSyntax node)
{
if ((node.StartTag != null && node.StartTag.IsMarkupTransition) ||
(node.EndTag != null && node.EndTag.IsMarkupTransition))
if ((node.MarkupStartTag != null && node.MarkupStartTag.IsMarkupTransition) ||
(node.MarkupEndTag != null && node.MarkupEndTag.IsMarkupTransition))
{
// We don't want to create a node for Markup transitions (<text></text>). Treat their contents as regular markup.
// Technically there shouldn't be an end transition without a start transition but just being defensive.
Expand All @@ -1317,33 +1317,33 @@ public override void VisitMarkupElement(MarkupElementSyntax node)
TagName = node.StartTag?.Name.Content ?? node.EndTag?.Name.Content ?? string.Empty,
};

if (node.StartTag != null && node.EndTag != null && node.StartTag.IsVoidElement())
if (node.MarkupStartTag != null && node.MarkupEndTag != null && node.MarkupStartTag.IsVoidElement())
{
element.AddDiagnostic(
ComponentDiagnosticFactory.Create_UnexpectedClosingTagForVoidElement(
BuildSourceSpanFromNode(node.EndTag), node.EndTag.GetTagNameWithOptionalBang()));
BuildSourceSpanFromNode(node.MarkupEndTag), node.MarkupEndTag.GetTagNameWithOptionalBang()));
}
else if (node.StartTag != null && node.EndTag == null && !node.StartTag.IsVoidElement() && !node.StartTag.IsSelfClosing())
else if (node.MarkupStartTag != null && node.MarkupEndTag == null && !node.MarkupStartTag.IsVoidElement() && !node.MarkupStartTag.IsSelfClosing())
{
element.AddDiagnostic(
ComponentDiagnosticFactory.Create_UnclosedTag(
BuildSourceSpanFromNode(node.StartTag), node.StartTag.GetTagNameWithOptionalBang()));
BuildSourceSpanFromNode(node.MarkupStartTag), node.MarkupStartTag.GetTagNameWithOptionalBang()));
}
else if (node.StartTag == null && node.EndTag != null)
else if (node.MarkupStartTag == null && node.MarkupEndTag != null)
{
element.AddDiagnostic(
ComponentDiagnosticFactory.Create_UnexpectedClosingTag(
BuildSourceSpanFromNode(node.EndTag), node.EndTag.GetTagNameWithOptionalBang()));
BuildSourceSpanFromNode(node.MarkupEndTag), node.MarkupEndTag.GetTagNameWithOptionalBang()));
}

if (node.StartTag != null && !_document.Options.SuppressPrimaryMethodBody)
if (node.MarkupStartTag != null && !_document.Options.SuppressPrimaryMethodBody)
{
// We only want this error during the second phase of the two phase compilation.
var startTagName = node.StartTag.GetTagNameWithOptionalBang();
var startTagName = node.MarkupStartTag.GetTagNameWithOptionalBang();
if (!string.IsNullOrEmpty(startTagName) && LooksLikeAComponentName(_document, startTagName))
{
element.AddDiagnostic(
ComponentDiagnosticFactory.Create_UnexpectedMarkupElement(startTagName, BuildSourceSpanFromNode(node.StartTag)));
ComponentDiagnosticFactory.Create_UnexpectedMarkupElement(startTagName, BuildSourceSpanFromNode(node.MarkupStartTag)));
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -88,14 +88,14 @@ public RazorDocumentSyntax ParseDocument()
// We were tracking a void element but we reached the end of the document without finding a matching end tag.
// So, close that element and move its content to its parent.
var children = builder.Consume();
var voidElement = SyntaxFactory.MarkupElement(tracker.StartTag, EmptySyntaxList, endTag: null);
var voidElement = SyntaxFactory.MarkupElement(tracker.StartTag, EmptySyntaxList, markupEndTag: null);
builder.AddRange(tracker.PreviousNodes);
builder.Add(voidElement);
builder.AddRange(children);
}
else
{
var element = SyntaxFactory.MarkupElement(tracker.StartTag, builder.Consume(), endTag: null);
var element = SyntaxFactory.MarkupElement(tracker.StartTag, builder.Consume(), markupEndTag: null);
builder.AddRange(tracker.PreviousNodes);
builder.Add(element);
}
Expand Down Expand Up @@ -322,7 +322,7 @@ private void CompleteMarkupInCodeBlock(in SyntaxListBuilder<RazorSyntaxNode> bui
while (_tagTracker.Count > 0)
{
var tracker = _tagTracker.Pop();
var element = SyntaxFactory.MarkupElement(tracker.StartTag, builder.Consume(), endTag: null);
var element = SyntaxFactory.MarkupElement(tracker.StartTag, builder.Consume(), markupEndTag: null);
builder.AddRange(tracker.PreviousNodes);
builder.Add(element);

Expand Down Expand Up @@ -498,7 +498,7 @@ private void ParseMarkupElement(in SyntaxListBuilder<RazorSyntaxNode> builder, P
if (tagMode == MarkupTagMode.SelfClosing || tagMode == MarkupTagMode.Invalid || tagMode == MarkupTagMode.Void)
{
// For cases like <foo />, <input> or invalid cases like |<|<p>
var element = SyntaxFactory.MarkupElement(startTag, EmptySyntaxList, endTag: null);
var element = SyntaxFactory.MarkupElement(startTag, EmptySyntaxList, markupEndTag: null);
builder.Add(element);
return;
}
Expand Down Expand Up @@ -532,7 +532,7 @@ private void ParseMarkupElement(in SyntaxListBuilder<RazorSyntaxNode> builder, P
if (!TryRecoverStartTag(builder, endTagName, endTag))
{
// Could not recover.
var element = SyntaxFactory.MarkupElement(startTag: null, body: EmptySyntaxList, endTag: endTag);
var element = SyntaxFactory.MarkupElement(markupStartTag: null, body: EmptySyntaxList, markupEndTag: endTag);
builder.Add(element);

if (mode == ParseMode.MarkupInCodeBlock)
Expand Down Expand Up @@ -563,7 +563,7 @@ private void CompleteEndTag(
while (_tagTracker.Count > 0)
{
var tracker = _tagTracker.Pop();
var unclosedElement = SyntaxFactory.MarkupElement(tracker.StartTag, builder.Consume(), endTag: null);
var unclosedElement = SyntaxFactory.MarkupElement(tracker.StartTag, builder.Consume(), markupEndTag: null);
builder.AddRange(tracker.PreviousNodes);
builder.Add(unclosedElement);

Expand All @@ -589,7 +589,7 @@ private bool TryRecoverStartTag(in SyntaxListBuilder<RazorSyntaxNode> builder, s
{
var tracker = _tagTracker.Pop();
var children = builder.Consume();
var voidElement = SyntaxFactory.MarkupElement(tracker.StartTag, EmptySyntaxList, endTag: null);
var voidElement = SyntaxFactory.MarkupElement(tracker.StartTag, EmptySyntaxList, markupEndTag: null);
builder.AddRange(tracker.PreviousNodes);
builder.Add(voidElement);
builder.AddRange(children);
Expand All @@ -612,7 +612,7 @@ private bool TryRecoverStartTag(in SyntaxListBuilder<RazorSyntaxNode> builder, s
for (var i = 0; i < malformedTagCount; i++)
{
var tracker = _tagTracker.Pop();
var malformedElement = SyntaxFactory.MarkupElement(tracker.StartTag, builder.Consume(), endTag: null);
var malformedElement = SyntaxFactory.MarkupElement(tracker.StartTag, builder.Consume(), markupEndTag: null);
builder.AddRange(tracker.PreviousNodes);
builder.Add(malformedElement);
}
Expand Down Expand Up @@ -2149,7 +2149,7 @@ private void NestingBlock(in SyntaxListBuilder<RazorSyntaxNode> builder, Tuple<s
while (_tagTracker.Count > 0)
{
var tracker = _tagTracker.Pop();
var element = SyntaxFactory.MarkupElement(tracker.StartTag, builder.Consume(), endTag: null);
var element = SyntaxFactory.MarkupElement(tracker.StartTag, builder.Consume(), markupEndTag: null);
builder.AddRange(tracker.PreviousNodes);
builder.Add(element);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -115,14 +115,14 @@ public override SyntaxNode VisitMarkupElement(MarkupElementSyntax node)
if (startTag != null)
{
var tagName = startTag.GetTagNameWithOptionalBang();
if (TryRewriteTagHelperStart(startTag, node.EndTag, out tagHelperStart, out tagHelperInfo))
if (TryRewriteTagHelperStart(startTag, node.MarkupEndTag, out tagHelperStart, out tagHelperInfo))
{
// This is a tag helper.
if (tagHelperInfo.TagMode == TagMode.SelfClosing || tagHelperInfo.TagMode == TagMode.StartTagOnly)
{
var tagHelperElement = SyntaxFactory.MarkupTagHelperElement(tagHelperStart, body: default, endTag: null, tagHelperInfo);
var tagHelperElement = SyntaxFactory.MarkupTagHelperElement(tagHelperStart, body: default, tagHelperEndTag: null, tagHelperInfo);

if (node.Body.Count == 0 && node.EndTag == null)
if (node.Body.Count == 0 && node.MarkupEndTag == null)
{
return tagHelperElement;
}
Expand All @@ -134,14 +134,14 @@ public override SyntaxNode VisitMarkupElement(MarkupElementSyntax node)
var rewrittenBody = VisitList(node.Body);
rewrittenNodes.AddRange(rewrittenBody);

return SyntaxFactory.MarkupElement(startTag: null, body: rewrittenNodes.ToList(), endTag: node.EndTag);
return SyntaxFactory.MarkupElement(markupStartTag: null, body: rewrittenNodes.ToList(), markupEndTag: node.MarkupEndTag);
}
else if (node.EndTag == null)
{
// Start tag helper with no corresponding end tag.
var source = new SourceSpan(SourceLocationTracker.Advance(startTag.GetSourceLocation(_source), "<"), tagName.Length);
_errorSink.OnError(
node.StartTag.IsVoidElement()
startTag.IsVoidElement()
? RazorDiagnosticFactory.CreateParsing_VoidElement(source, tagName)
: RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(source, tagName));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,5 +101,6 @@ static bool IsValidToken(SyntaxToken token, out SyntaxToken validToken)
}
}

public abstract BaseMarkupStartTagSyntax? GetStartTag();
public BaseMarkupStartTagSyntax? GetStartTag()
=> (Parent as BaseMarkupElementSyntax)?.StartTag;
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ internal abstract partial class BaseMarkupStartTagSyntax
{
private SyntaxNode? _lazyChildren;

public BaseMarkupElementSyntax ParentElement => (BaseMarkupElementSyntax)Parent;

public SyntaxList<RazorSyntaxNode> LegacyChildren
{
get
Expand Down Expand Up @@ -130,5 +132,6 @@ static bool IsValidToken(SyntaxToken token, out SyntaxToken validToken)
}
}

public abstract BaseMarkupEndTagSyntax? GetEndTag();
public BaseMarkupEndTagSyntax? GetEndTag()
=> (Parent as BaseMarkupElementSyntax)?.EndTag;
}
Loading
Loading