Fix invalid cast with end script tag containing code (dotnet/aspnetcore-tooling#193)

\n\nCommit migrated from 56fa17b094
This commit is contained in:
Ajay Bhargav Baaskaran 2019-02-07 15:06:26 -08:00 committed by GitHub
parent 73ca91f603
commit daeb4f80d1
1 changed files with 5 additions and 3 deletions

View File

@ -1357,8 +1357,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var tagStart = CurrentStart; var tagStart = CurrentStart;
builder.Add(OutputAsMarkupLiteral()); builder.Add(OutputAsMarkupLiteral());
SpanContext.EditHandler.AcceptedCharacters = endTagAcceptedCharacters;
var openAngleToken = EatCurrentToken(); // '<' var openAngleToken = EatCurrentToken(); // '<'
var forwardSlashToken = EatCurrentToken(); // '/' var forwardSlashToken = EatCurrentToken(); // '/'
var tagNameToken = EatCurrentToken(); // 'script' var tagNameToken = EatCurrentToken(); // 'script'
@ -1369,8 +1367,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{ {
var miscAttributeBuilder = pooledResult.Builder; var miscAttributeBuilder = pooledResult.Builder;
ParseMarkupNodes(miscAttributeBuilder, ParseMode.Text, token => token.Kind == SyntaxKind.CloseAngle); // We want to accept malformed end tags as content.
AcceptUntil(SyntaxKind.CloseAngle, SyntaxKind.OpenAngle);
miscAttributeBuilder.Add(OutputAsMarkupLiteral()); miscAttributeBuilder.Add(OutputAsMarkupLiteral());
if (miscAttributeBuilder.Count > 0) if (miscAttributeBuilder.Count > 0)
{ {
miscContent = SyntaxFactory.MarkupMiscAttributeContent(miscAttributeBuilder.ToList()); miscContent = SyntaxFactory.MarkupMiscAttributeContent(miscAttributeBuilder.ToList());
@ -1390,6 +1390,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
} }
} }
SpanContext.EditHandler.AcceptedCharacters = endTagAcceptedCharacters;
endTag = SyntaxFactory.MarkupEndTag( endTag = SyntaxFactory.MarkupEndTag(
openAngleToken, openAngleToken,
forwardSlashToken, forwardSlashToken,