Moved TagHelperParseTreeRewriter out of LegacyRazorDiagnostic

This commit is contained in:
Ajay Bhargav Baaskaran 2017-12-20 15:43:07 -08:00
parent 36ff269fef
commit 80af17fc4b
8 changed files with 330 additions and 516 deletions

View File

@ -30,18 +30,5 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
/// </summary>
/// <param name="error">The <see cref="RazorError"/> to track.</param>
public void OnError(RazorDiagnostic error) =>_errors.Add(error);
/// <summary>
/// Creates and tracks a new <see cref="RazorDiagnostic"/>.
/// </summary>
/// <param name="location"><see cref="SourceLocation"/> of the error.</param>
/// <param name="message">A message describing the error.</param>
/// <param name="length">The length of the error.</param>
/// <remarks>This is temporary. It will be removed once we get rid of <see cref="LegacyRazorDiagnostic"/>.</remarks>
public void OnError(SourceLocation location, string message, int length)
{
var error = RazorDiagnostic.Create(new RazorError(message, location, length));
_errors.Add(error);
}
}
}

View File

@ -291,12 +291,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
// End tag TagHelper that states it shouldn't have an end tag.
errorSink.OnError(
SourceLocationTracker.Advance(tagBlock.Start, "</"),
LegacyResources.FormatTagHelperParseTreeRewriter_EndTagTagHelperMustNotHaveAnEndTag(
RazorDiagnosticFactory.CreateParsing_TagHelperMustNotHaveAnEndTag(
new SourceSpan(SourceLocationTracker.Advance(tagBlock.Start, "</"), tagName.Length),
tagName,
descriptor.DisplayName,
invalidRule.TagStructure),
tagName.Length);
invalidRule.TagStructure));
return false;
}
@ -317,9 +316,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Could not recover, the end tag helper has no corresponding start tag, create
// an error based on the current childBlock.
errorSink.OnError(
SourceLocationTracker.Advance(tagBlock.Start, "</"),
LegacyResources.FormatTagHelpersParseTreeRewriter_FoundMalformedTagHelper(tagName),
tagName.Length);
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(SourceLocationTracker.Advance(tagBlock.Start, "</"), tagName.Length), tagName));
return false;
}
@ -502,11 +500,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var allowedChildren = _currentTagHelperTracker.AllowedChildren;
var allowedChildrenString = string.Join(", ", allowedChildren);
errorSink.OnError(
errorStart,
LegacyResources.FormatTagHelperParseTreeRewriter_CannotHaveNonTagContent(
RazorDiagnosticFactory.CreateTagHelper_CannotHaveNonTagContent(
new SourceSpan(errorStart, length),
_currentTagHelperTracker.TagName,
allowedChildrenString),
length);
allowedChildrenString));
}
}
}
@ -559,13 +556,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
ErrorSink errorSink)
{
var allowedChildrenString = string.Join(", ", tracker.AllowedChildren);
var errorMessage = LegacyResources.FormatTagHelperParseTreeRewriter_InvalidNestedTag(
tagName,
tracker.TagName,
allowedChildrenString);
var errorStart = GetTagDeclarationErrorStart(tagBlock);
errorSink.OnError(errorStart, errorMessage, tagName.Length);
errorSink.OnError(
RazorDiagnosticFactory.CreateTagHelper_InvalidNestedTag(
new SourceSpan(errorStart, tagName.Length),
tagName,
tracker.TagName,
allowedChildrenString));
}
private static void ValidateBinding(
@ -589,13 +587,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (baseStructure.HasValue && baseStructure != rule.TagStructure)
{
errorSink.OnError(
tagBlock.Start,
LegacyResources.FormatTagHelperParseTreeRewriter_InconsistentTagStructure(
RazorDiagnosticFactory.CreateTagHelper_InconsistentTagStructure(
new SourceSpan(tagBlock.Start, tagBlock.Length),
baseDescriptor.DisplayName,
descriptor.DisplayName,
tagName,
nameof(TagMatchingRuleDescriptor.TagStructure)),
tagBlock.Length);
tagName));
}
baseDescriptor = descriptor;
@ -613,9 +609,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var errorStart = GetTagDeclarationErrorStart(tag);
errorSink.OnError(
errorStart,
LegacyResources.FormatTagHelpersParseTreeRewriter_MissingCloseAngle(tagName),
tagName.Length);
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(errorStart, tagName.Length), tagName));
return false;
}
@ -771,10 +766,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var malformedTagHelper = ((TagHelperBlockTracker)tracker).Builder;
errorSink.OnError(
SourceLocationTracker.Advance(malformedTagHelper.Start, "<"),
LegacyResources.FormatTagHelpersParseTreeRewriter_FoundMalformedTagHelper(
malformedTagHelper.TagName),
malformedTagHelper.TagName.Length);
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(SourceLocationTracker.Advance(malformedTagHelper.Start, "<"), malformedTagHelper.TagName.Length),
malformedTagHelper.TagName));
BuildCurrentlyTrackedTagHelperBlock(endTag: null);
}

View File

@ -370,6 +370,53 @@ namespace Microsoft.AspNetCore.Razor.Language
return RazorDiagnostic.Create(Parsing_TagHelperAttributesMustHaveAName, location, tagName);
}
internal static readonly RazorDiagnosticDescriptor Parsing_TagHelperMustNotHaveAnEndTag =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1033",
() => LegacyResources.TagHelperParseTreeRewriter_EndTagTagHelperMustNotHaveAnEndTag,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_TagHelperMustNotHaveAnEndTag(SourceSpan location, string tagName, string displayName, TagStructure tagStructure)
{
var diagnostic = RazorDiagnostic.Create(
Parsing_TagHelperMustNotHaveAnEndTag,
location,
tagName,
displayName,
tagStructure);
return diagnostic;
}
internal static readonly RazorDiagnosticDescriptor Parsing_TagHelperFoundMalformedTagHelper =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1034",
() => LegacyResources.TagHelpersParseTreeRewriter_FoundMalformedTagHelper,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_TagHelperFoundMalformedTagHelper(SourceSpan location, string tagName)
{
var diagnostic = RazorDiagnostic.Create(
Parsing_TagHelperFoundMalformedTagHelper,
location,
tagName);
return diagnostic;
}
internal static readonly RazorDiagnosticDescriptor Parsing_TagHelperMissingCloseAngle =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1035",
() => LegacyResources.TagHelpersParseTreeRewriter_MissingCloseAngle,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_TagHelperMissingCloseAngle(SourceSpan location, string tagName)
{
var diagnostic = RazorDiagnostic.Create(
Parsing_TagHelperMissingCloseAngle,
location,
tagName);
return diagnostic;
}
#endregion
#region Semantic Errors
@ -472,6 +519,36 @@ namespace Microsoft.AspNetCore.Razor.Language
return RazorDiagnostic.Create(TagHelper_EmptyBoundAttribute, location, attributeName, tagName, propertyTypeName);
}
internal static readonly RazorDiagnosticDescriptor TagHelper_CannotHaveNonTagContent =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}2009",
() => LegacyResources.TagHelperParseTreeRewriter_CannotHaveNonTagContent,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateTagHelper_CannotHaveNonTagContent(SourceSpan location, string tagName, string allowedChildren)
{
return RazorDiagnostic.Create(TagHelper_CannotHaveNonTagContent, location, tagName, allowedChildren);
}
internal static readonly RazorDiagnosticDescriptor TagHelper_InvalidNestedTag =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}2010",
() => LegacyResources.TagHelperParseTreeRewriter_InvalidNestedTag,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateTagHelper_InvalidNestedTag(SourceSpan location, string tagName, string parent, string allowedChildren)
{
return RazorDiagnostic.Create(TagHelper_InvalidNestedTag, location, tagName, parent, allowedChildren);
}
internal static readonly RazorDiagnosticDescriptor TagHelper_InconsistentTagStructure =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}2011",
() => LegacyResources.TagHelperParseTreeRewriter_InconsistentTagStructure,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateTagHelper_InconsistentTagStructure(SourceSpan location, string firstDescriptor, string secondDescriptor, string tagName)
{
return RazorDiagnostic.Create(TagHelper_InconsistentTagStructure, location, firstDescriptor, secondDescriptor, tagName, nameof(TagMatchingRuleDescriptor.TagStructure));
}
#endregion
#region TagHelper Errors

View File

@ -419,11 +419,8 @@ namespace Microsoft.AspNetCore.Razor.Language
var originalTree = RazorSyntaxTree.Parse(sourceDocument);
var initialError = RazorDiagnostic.Create(new RazorError("Initial test error", SourceLocation.Zero, length: 1));
var expectedRewritingError = RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatTagHelpersParseTreeRewriter_FoundMalformedTagHelper("form"),
new SourceLocation(Environment.NewLine.Length * 2 + 30, 2, 1),
length: 4));
var expectedRewritingError = RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(Environment.NewLine.Length * 2 + 30, 2, 1), contentLength: 4), "form");
var erroredOriginalTree = RazorSyntaxTree.Create(originalTree.Root, originalTree.Source, new[] { initialError }, originalTree.Options);
codeDocument.SetSyntaxTree(erroredOriginalTree);

View File

@ -343,9 +343,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
var errorFormatUnclosed = "Found a malformed '{0}' tag helper. Tag helpers must have a start and " +
"end tag or be self closing.";
var errorFormatNoCloseAngle = "Missing close angle for tag helper '{0}'.";
Func<string, Block> createInvalidDoBlock = extraCode =>
{
return new MarkupBlock(
@ -375,14 +372,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -395,10 +388,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -414,14 +405,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -439,14 +426,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -462,15 +445,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnosticFactory.CreateParsing_TagHelperAttributeListMustBeWellFormed(new SourceSpan(12, 0, 12, 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperAttributeListMustBeWellFormed(
new SourceSpan(12, 0, 12, 1))
}
},
{
@ -485,14 +465,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -509,14 +485,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -531,18 +503,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagHelperBlock("strong"))),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "strong"),
new SourceLocation(11, 0, 11),
length: 6))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(11, 0, 11), contentLength: 6), "strong"),
}
},
{
@ -555,10 +521,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -571,10 +535,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -591,18 +553,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagHelperBlock("strong"))),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "strong"),
new SourceLocation(24, 0, 24),
length: 6))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(24, 0, 24), contentLength: 6), "strong")
}
},
{
@ -660,10 +616,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -678,14 +632,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(11, 0, 11), contentLength: 1), "do", "}", "{"),
}
@ -700,14 +650,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(11, 0, 11), contentLength: 1), "do", "}", "{"),
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
@ -720,14 +666,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagHelperBlock("p")),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelpersCannotHaveCSharpInTagDeclaration(new SourceSpan(3, 0, 3, 30), "p"),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(4, 0, 4), contentLength: 1), "do", "}", "{"),
@ -768,9 +710,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
var errorFormatUnclosed = "Found a malformed '{0}' tag helper. Tag helpers must have a start and " +
"end tag or be self closing.";
var errorFormatNoCloseAngle = "Missing close angle for tag helper '{0}'.";
return new TheoryData<string, MarkupBlock, RazorDiagnostic[]>
{
@ -780,14 +719,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagHelperBlock("p")),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -796,9 +731,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagHelperBlock("p")),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
absoluteIndex: 5, lineIndex: 0, columnIndex: 5, length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(absoluteIndex: 5, lineIndex: 0, characterIndex: 5, length: 1), "p")
}
},
{
@ -808,18 +742,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagHelperBlock("strong"))),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "strong"),
new SourceLocation(4, 0, 4),
length: 6)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "strong"),
new SourceLocation(4, 0, 4),
length: 6))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(4, 0, 4), contentLength: 6), "strong"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(4, 0, 4), contentLength: 6), "strong")
}
},
{
@ -829,18 +757,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagHelperBlock("p"))),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "strong"),
new SourceLocation(1, 0, 1),
length: 6)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "strong"),
new SourceLocation(1, 0, 1),
length: 6)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(9, 0, 9),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 6), "strong"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 6), "strong"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(9, 0, 9), contentLength: 1), "p")
}
},
{
@ -849,14 +771,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagHelperBlock("strong")),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "strong"),
new SourceLocation(1, 0, 1),
length: 6)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "strong"),
new SourceLocation(10, 0, 10),
length: 6))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 6), "strong"),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(10, 0, 10), contentLength: 6), "strong")
}
},
{
@ -870,14 +788,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagHelperBlock("p")),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "strong"),
new SourceLocation(4, 0, 4),
length: 6)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(14, 0, 14),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(4, 0, 4), contentLength: 6), "strong"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(14, 0, 14), contentLength: 1), "p")
}
},
{
@ -892,10 +806,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup(">"))),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "strong"),
new SourceLocation(3, 0, 3),
length: 6))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(3, 0, 3), contentLength: 6), "strong")
}
},
{
@ -906,10 +818,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
blockFactory.MarkupTagBlock("</p>"))),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(14, 0, 14),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(14, 0, 14), contentLength: 1), "p")
}
}
};
@ -1209,8 +1119,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
var malformedErrorFormat = "Found a malformed '{0}' tag helper. Tag helpers must have a start and " +
"end tag or be self closing.";
yield return new object[]
{
@ -1241,12 +1149,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
blockFactory.MarkupTagBlock("</strong>")),
new RazorDiagnostic[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, malformedErrorFormat, "strong"),
absoluteIndex: 53, lineIndex: 0, columnIndex: 53, length: 6)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, malformedErrorFormat, "strong"),
absoluteIndex: 66, lineIndex: 0, columnIndex: 66, length: 6))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 53, lineIndex: 0, characterIndex: 53, length: 6), "strong"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 66, lineIndex: 0, characterIndex: 66, length: 6), "strong")
}
};
yield return new object[]
@ -1261,9 +1167,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
blockFactory.MarkupTagBlock("</div>"))),
new RazorDiagnostic[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, malformedErrorFormat, "p"),
absoluteIndex: 6, lineIndex: 0, columnIndex: 6, length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 6, lineIndex: 0, characterIndex: 6, length: 1), "p")
}
};
yield return new object[]
@ -1278,12 +1183,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
blockFactory.MarkupTagBlock("</div>")))),
new RazorDiagnostic[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, malformedErrorFormat, "p"),
absoluteIndex: 6, lineIndex: 0, columnIndex: 6, length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, malformedErrorFormat, "strong"),
absoluteIndex: 15, lineIndex: 0, columnIndex: 15, length: 6))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 6, lineIndex: 0, characterIndex: 6, length: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 15, lineIndex: 0, characterIndex: 15, length: 6), "strong")
}
};
yield return new object[]
@ -1304,10 +1207,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup("World")))),
new RazorDiagnostic[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, malformedErrorFormat, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
};
}
@ -3694,9 +3595,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var factory = new SpanFactory();
var noErrors = new RazorDiagnostic[0];
var errorFormatUnclosed = "Found a malformed '{0}' tag helper. Tag helpers must have a start and " +
"end tag or be self closing.";
var errorFormatNoCloseAngle = "Missing close angle for tag helper '{0}'.";
var stringType = typeof(string).FullName;
var intType = typeof(int).FullName;
@ -3715,14 +3613,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNoCloseAngle, "input"),
new SourceLocation(1, 0, 1),
length: 5)),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "input"),
new SourceLocation(1, 0, 1),
length: 5)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 5), "input"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 5), "input"),
}
},
{
@ -3737,14 +3631,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNoCloseAngle, "input"),
new SourceLocation(1, 0, 1),
length: 5)),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "input"),
new SourceLocation(1, 0, 1),
length: 5)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 5), "input"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 5), "input"),
RazorDiagnosticFactory.CreateTagHelper_EmptyBoundAttribute(
new SourceSpan(7, 0, 7, 21),
"bound-required-string",
@ -3764,14 +3654,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNoCloseAngle, "input"),
new SourceLocation(1, 0, 1),
length: 5)),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "input"),
new SourceLocation(1, 0, 1),
length: 5)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 5), "input"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 5), "input"),
RazorDiagnosticFactory.CreateTagHelper_EmptyBoundAttribute(
new SourceSpan(7, 0, 7, 18),
"bound-required-int",
@ -3793,14 +3679,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNoCloseAngle, "input"),
new SourceLocation(1, 0, 1),
length: 5)),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "input"),
new SourceLocation(1, 0, 1),
length: 5)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 5), "input"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 5), "input"),
RazorDiagnosticFactory.CreateTagHelper_EmptyBoundAttribute(
new SourceSpan(7, 0, 7, 18),
"bound-required-int",
@ -3825,14 +3707,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateTagHelper_EmptyBoundAttribute(
new SourceSpan(3, 0, 3, 12),
"bound-string",
@ -3852,14 +3730,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateTagHelper_EmptyBoundAttribute(
new SourceSpan(3, 0, 3, 9),
"bound-int",
@ -3880,14 +3754,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateTagHelper_EmptyBoundAttribute(
new SourceSpan(3, 0, 3, 9),
"bound-int",
@ -3922,14 +3792,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
}))),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNoCloseAngle, "input"),
new SourceLocation(1, 0, 1),
length: 5)),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "input"),
new SourceLocation(1, 0, 1),
length: 5)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 5), "input"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 5), "input"),
RazorDiagnosticFactory.CreateTagHelper_EmptyBoundAttribute(
new SourceSpan(7, 0, 7, 18),
"bound-required-int",
@ -3940,14 +3806,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"bound-required-string",
"input",
stringType),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNoCloseAngle, "p"),
new SourceLocation(65, 0, 65),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "p"),
new SourceLocation(65, 0, 65),
length: 1)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(65, 0, 65), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(65, 0, 65), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateTagHelper_EmptyBoundAttribute(
new SourceSpan(67, 0, 67, 9),
"bound-int",

View File

@ -75,16 +75,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
Func<int, string, RazorDiagnostic> errorFormatUnclosed = (location, tagName) =>
RazorDiagnostic.Create(new RazorError(
$"Found a malformed '{tagName}' tag helper. Tag helpers must have a start and end tag or be " +
"self closing.",
new SourceLocation(location, 0, location),
tagName.Length));
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(location, 0, location), tagName.Length), tagName);
Func<int, string, RazorDiagnostic> errorFormatNoCloseAngle = (location, tagName) =>
RazorDiagnostic.Create(new RazorError(
$"Missing close angle for tag helper '{tagName}'.",
new SourceLocation(location, 0, location),
tagName.Length));
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(location, 0, location), tagName.Length), tagName);
// documentContent, expectedOutput, expectedErrors
return new TheoryData<string, MarkupBlock, RazorDiagnostic[]>
@ -433,12 +429,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.Build(),
};
var expectedErrors = new[] {
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatTagHelpersParseTreeRewriter_FoundMalformedTagHelper("th:strong"),
absoluteIndex: 8,
lineIndex: 0,
columnIndex: 8,
length: 9)),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(filePath: null, absoluteIndex: 8, lineIndex: 0, characterIndex: 8, length: 9),
"th:strong"),
};
// Act & Assert
@ -755,12 +748,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
$"{Environment.NewLine} </strong>{Environment.NewLine}</p>";
var newLineLength = Environment.NewLine.Length;
var expectedErrors = new[] {
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatTagHelperParseTreeRewriter_InvalidNestedTag("strong", "p", "br"),
absoluteIndex: 8 + newLineLength,
lineIndex: 1,
columnIndex: 5,
length: 6)),
RazorDiagnosticFactory.CreateTagHelper_InvalidNestedTag(
new SourceSpan(absoluteIndex: 8 + newLineLength, lineIndex: 1, characterIndex: 5, length: 6), "strong", "p", "br"),
};
var expectedOutput = new MarkupBlock(
new MarkupTagHelperBlock("p",
@ -790,12 +779,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var documentContent = "<strong required><strong></strong></strong>";
var expectedErrors = new[] {
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatTagHelperParseTreeRewriter_InvalidNestedTag("strong", "strong", "br"),
absoluteIndex: 18,
lineIndex: 0,
columnIndex: 18,
length: 6))
RazorDiagnosticFactory.CreateTagHelper_InvalidNestedTag(
new SourceSpan(absoluteIndex: 18, lineIndex: 0, characterIndex: 18, length: 6), "strong", "strong", "br")
};
var expectedOutput = new MarkupBlock(
new MarkupTagHelperBlock("strong",
@ -899,22 +884,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
Func<string, string, string, int, int, RazorDiagnostic> nestedTagError =
(childName, parentName, allowed, location, length) => RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatTagHelperParseTreeRewriter_InvalidNestedTag(
childName,
parentName,
allowed),
absoluteIndex: location,
lineIndex: 0,
columnIndex: location,
length: length));
(childName, parentName, allowed, location, length) =>
RazorDiagnosticFactory.CreateTagHelper_InvalidNestedTag(
new SourceSpan(absoluteIndex: location, lineIndex: 0, characterIndex: location, length: length), childName, parentName, allowed);
Func<string, string, int, int, RazorDiagnostic> nestedContentError =
(parentName, allowed, location, length) => RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatTagHelperParseTreeRewriter_CannotHaveNonTagContent(parentName, allowed),
absoluteIndex: location,
lineIndex: 0,
columnIndex: location,
length: length));
(parentName, allowed, location, length) =>
RazorDiagnosticFactory.CreateTagHelper_CannotHaveNonTagContent(
new SourceSpan(absoluteIndex: location, lineIndex: 0, characterIndex: location, length: length), parentName, allowed);
return new TheoryData<string, IEnumerable<string>, MarkupBlock, RazorDiagnostic[]>
{
@ -1152,12 +1128,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
BlockFactory.MarkupTagBlock("</")));
var expectedErrors = new[]
{
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatTagHelperParseTreeRewriter_CannotHaveNonTagContent("p", "custom"),
absoluteIndex: 3,
lineIndex: 0,
columnIndex: 3,
length: 2))
RazorDiagnosticFactory.CreateTagHelper_CannotHaveNonTagContent(
new SourceSpan(absoluteIndex: 3, lineIndex: 0, characterIndex: 3, length: 2), "p", "custom")
};
// Act & Assert
@ -1184,12 +1156,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
BlockFactory.MarkupTagBlock("</")));
var expectedErrors = new[]
{
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatTagHelperParseTreeRewriter_CannotHaveNonTagContent("th:p", "custom"),
absoluteIndex: 6,
lineIndex: 0,
columnIndex: 6,
length: 2))
RazorDiagnosticFactory.CreateTagHelper_CannotHaveNonTagContent(
new SourceSpan(absoluteIndex: 6, lineIndex: 0, characterIndex: 6, length: 2), "th:p", "custom")
};
// Act & Assert
@ -1222,15 +1190,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
var expectedError = RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatTagHelperParseTreeRewriter_EndTagTagHelperMustNotHaveAnEndTag(
"input",
"InputTagHelper",
TagStructure.WithoutEndTag),
absoluteIndex: 2,
lineIndex: 0,
columnIndex: 2,
length: 5));
var expectedError = RazorDiagnosticFactory.CreateParsing_TagHelperMustNotHaveAnEndTag(
new SourceSpan(filePath: null, absoluteIndex: 2, lineIndex: 0, characterIndex: 2, length: 5),
"input",
"InputTagHelper",
TagStructure.WithoutEndTag);
var documentContent = "</input>";
var expectedOutput = new MarkupBlock(blockFactory.MarkupTagBlock("</input>"));
var descriptors = new TagHelperDescriptor[]
@ -1253,16 +1217,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
var expectedError = RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatTagHelperParseTreeRewriter_InconsistentTagStructure(
"InputTagHelper1",
"InputTagHelper2",
"input",
nameof(TagMatchingRuleDescriptor.TagStructure)),
absoluteIndex: 0,
lineIndex: 0,
columnIndex: 0,
length: 7));
var expectedError = RazorDiagnosticFactory.CreateTagHelper_InconsistentTagStructure(
new SourceSpan(absoluteIndex: 0, lineIndex: 0, characterIndex: 0, length: 7), "InputTagHelper1", "InputTagHelper2", "input");
var documentContent = "<input>";
var expectedOutput = new MarkupBlock(new MarkupTagHelperBlock("input", TagMode.StartTagOnly));
var descriptors = new TagHelperDescriptor[]
@ -1973,9 +1929,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
var errorFormatUnclosed = "Found a malformed '{0}' tag helper. Tag helpers must have a start and " +
"end tag or be self closing.";
var errorFormatNoCloseAngle = "Missing close angle for tag helper '{0}'.";
// documentContent, expectedOutput, expectedErrors
return new TheoryData<string, MarkupBlock, RazorDiagnostic[]>
@ -1996,14 +1949,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -2018,14 +1967,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -2046,10 +1991,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(17, 0, 17),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(17, 0, 17), contentLength: 1), "p")
}
},
{
@ -2064,10 +2007,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(34, 0, 34),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(34, 0, 34), contentLength: 1), "p")
}
},
{
@ -2081,14 +2022,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
children: blockFactory.MarkupTagBlock("<p>"))),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
}
},
{
@ -2103,14 +2040,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
children: blockFactory.MarkupTagBlock("<p>"))),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
}
},
{
@ -2124,14 +2057,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(17, 0, 17),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(17, 0, 17), contentLength: 1), "p")
}
},
{
@ -2146,14 +2075,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
})),
new[]
{
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCloseAngle, "p"),
new SourceLocation(34, 0, 34),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperMissingCloseAngle(
new SourceSpan(new SourceLocation(34, 0, 34), contentLength: 1), "p")
}
},
};
@ -2523,9 +2448,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
var errorFormatMalformed =
"Found a malformed '{0}' tag helper. Tag helpers must have a start and end tag or be self " +
"closing.";
RazorDiagnostic MissingEndTagError(string tagName)
{
@ -2603,9 +2525,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new []
{
MissingEndTagError("!text"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatMalformed, "text", CultureInfo.InvariantCulture),
absoluteIndex: 11, lineIndex: 0, columnIndex: 11, length: 4))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 11, lineIndex: 0, characterIndex: 11, length: 4), "text")
}
},
{
@ -2672,9 +2593,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
RazorDiagnosticFactory.CreateParsing_UnexpectedEndTag(
new SourceSpan(filePath: null, absoluteIndex: 19, lineIndex: 0, characterIndex: 19, length: 4), "text"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatMalformed, "text", CultureInfo.InvariantCulture),
absoluteIndex: 19, lineIndex: 0, columnIndex: 19, length: 4))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 19, lineIndex: 0, characterIndex: 19, length: 4), "text")
}
},
};
@ -3194,9 +3114,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
var errorFormatMalformed =
"Found a malformed '{0}' tag helper. Tag helpers must have a start and end tag or be self " +
"closing.";
RazorDiagnostic MissingEndTagError(string tagName, int index = 3)
{
@ -3274,9 +3191,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new []
{
MissingEndTagError("!p"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatMalformed, "p", CultureInfo.InvariantCulture),
absoluteIndex: 8, lineIndex: 0, columnIndex: 8, length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 8, lineIndex: 0, characterIndex: 8, length: 1), "p")
}
},
{
@ -3288,9 +3204,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new []
{
MissingEndTagError("p"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatMalformed, "p", CultureInfo.InvariantCulture),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 3, lineIndex: 0, characterIndex: 3, length: 1), "p")
}
},
{
@ -3319,9 +3234,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
MissingEndTagError("p"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatMalformed, "p", CultureInfo.InvariantCulture),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 3, lineIndex: 0, characterIndex: 3, length: 1), "p")
}
},
{
@ -3343,9 +3257,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
RazorDiagnosticFactory.CreateParsing_UnexpectedEndTag(
new SourceSpan(filePath: null, absoluteIndex: 13, lineIndex: 0, characterIndex: 13, length: 1), "p"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatMalformed, "p", CultureInfo.InvariantCulture),
absoluteIndex: 13, lineIndex: 0, columnIndex: 13, length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 13, lineIndex: 0, characterIndex: 13, length: 1), "p")
}
},
{
@ -3366,14 +3279,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new []
{
MissingEndTagError("strong"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatMalformed, "strong", CultureInfo.InvariantCulture),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 6)),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 3, lineIndex: 0, characterIndex: 3, length: 6), "strong"),
RazorDiagnosticFactory.CreateParsing_UnexpectedEndTag(
new SourceSpan(filePath: null, absoluteIndex: 17, lineIndex: 0, characterIndex: 17, length: 6), "strong"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatMalformed, "strong", CultureInfo.InvariantCulture),
absoluteIndex: 17, lineIndex: 0, columnIndex: 17, length: 6))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 17, lineIndex: 0, characterIndex: 17, length: 6), "strong")
}
},
{
@ -3415,16 +3326,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new []
{
MissingEndTagError("p"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatMalformed, "p", CultureInfo.InvariantCulture),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 1)),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatMalformed, "strong", CultureInfo.InvariantCulture),
absoluteIndex: 6, lineIndex: 0, columnIndex: 6, length: 6)),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 3, lineIndex: 0, characterIndex: 3, length: 1), "p"),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 6, lineIndex: 0, characterIndex: 6, length: 6), "strong"),
MissingEndTagError("!p", index: 24),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatMalformed, "strong", CultureInfo.InvariantCulture),
absoluteIndex: 29, lineIndex: 0, columnIndex: 29, length: 6)),
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 29, lineIndex: 0, characterIndex: 29, length: 6), "strong"),
RazorDiagnosticFactory.CreateParsing_UnexpectedEndTag(
new SourceSpan(filePath: null, absoluteIndex: 38, lineIndex: 0, characterIndex: 38, length: 2), "!p"),
}
@ -3630,8 +3538,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
var errorFormatUnclosed = "Found a malformed '{0}' tag helper. Tag helpers must have a start and " +
"end tag or be self closing.";
// documentContent, expectedOutput, expectedErrors
return new TheoryData<string, MarkupBlock, RazorDiagnostic[]>
@ -3670,9 +3576,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
blockFactory.MarkupTagBlock("</p>")),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "p", CultureInfo.InvariantCulture),
absoluteIndex: 6, lineIndex: 0, columnIndex: 6, length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(absoluteIndex: 6, lineIndex: 0, characterIndex: 6, length: 1), "p")
}
},
{
@ -3681,10 +3586,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupTagHelperBlock("p", blockFactory.EscapedMarkupTagBlock("</", "p>"))),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "p", CultureInfo.InvariantCulture),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -3703,10 +3606,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
blockFactory.EscapedMarkupTagBlock("</", "p>"))),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "p", CultureInfo.InvariantCulture),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
{
@ -3717,10 +3618,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
blockFactory.MarkupTagBlock("</p>")),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "p", CultureInfo.InvariantCulture),
new SourceLocation(11, 0, 11),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(11, 0, 11), contentLength: 1), "p")
}
},
{
@ -3748,10 +3647,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
blockFactory.EscapedMarkupTagBlock("</", "p>"))),
new []
{
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatUnclosed, "p", CultureInfo.InvariantCulture),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_TagHelperFoundMalformedTagHelper(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), "p")
}
},
};

View File

@ -1,2 +1,2 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteTagHelper.cshtml(3,2): Error RZ9999: Missing close angle for tag helper 'p'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteTagHelper.cshtml(3,2): Error RZ9999: Found a malformed 'p' tag helper. Tag helpers must have a start and end tag or be self closing.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteTagHelper.cshtml(3,2): Error RZ1035: Missing close angle for tag helper 'p'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteTagHelper.cshtml(3,2): Error RZ1034: Found a malformed 'p' tag helper. Tag helpers must have a start and end tag or be self closing.

View File

@ -1,2 +1,2 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteTagHelper.cshtml(3,2): Error RZ9999: Missing close angle for tag helper 'p'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteTagHelper.cshtml(3,2): Error RZ9999: Found a malformed 'p' tag helper. Tag helpers must have a start and end tag or be self closing.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteTagHelper.cshtml(3,2): Error RZ1035: Missing close angle for tag helper 'p'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteTagHelper.cshtml(3,2): Error RZ1034: Found a malformed 'p' tag helper. Tag helpers must have a start and end tag or be self closing.