Don't ignore whitespace at the start of '<text>' tag

This commit is contained in:
Ajay Bhargav Baaskaran 2017-06-07 17:23:10 -07:00
parent 758be9ae13
commit 8bba757703
11 changed files with 40 additions and 36 deletions

View File

@ -1272,6 +1272,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{ {
PutBack(lastWhitespace); PutBack(lastWhitespace);
} }
else
{
// If it precedes a '<text>' tag, it should be accepted as code.
Accept(lastWhitespace);
}
} }
if (isMarkup) if (isMarkup)

View File

@ -114,7 +114,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
length: 1)); length: 1));
} }
[Fact(Skip = "Fails due to https://github.com/aspnet/Razor/issues/897")] [Fact]
public void RazorCommentInVerbatimBlock() public void RazorCommentInVerbatimBlock()
{ {
ParseDocumentTest("@{" + Environment.NewLine ParseDocumentTest("@{" + Environment.NewLine
@ -126,7 +126,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new StatementBlock( new StatementBlock(
Factory.CodeTransition(), Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(Environment.NewLine) Factory.Code($"{Environment.NewLine} ")
.AsStatement() .AsStatement()
.AutoCompleteWith("}"), .AutoCompleteWith("}"),
new MarkupBlock( new MarkupBlock(

View File

@ -605,12 +605,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None))); Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
} }
[Fact(Skip = "Fails due to https://github.com/aspnet/Razor/issues/897")] [Fact]
public void ParseBlockCorrectlyReturnsFromMarkupBlockWithPseudoTag() public void ParseBlockCorrectlyReturnsFromMarkupBlockWithPseudoTag()
{ {
ParseBlockTest("if (i > 0) { <text>;</text> }", ParseBlockTest("if (i > 0) { <text>;</text> }",
new StatementBlock( new StatementBlock(
Factory.Code("if (i > 0) {").AsStatement(), Factory.Code("if (i > 0) { ").AsStatement(),
new MarkupBlock( new MarkupBlock(
new MarkupTagBlock( new MarkupTagBlock(
Factory.MarkupTransition("<text>").Accepts(AcceptedCharactersInternal.None)), Factory.MarkupTransition("<text>").Accepts(AcceptedCharactersInternal.None)),
@ -620,13 +620,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Code(" }").AsStatement())); Factory.Code(" }").AsStatement()));
} }
[Fact(Skip = "Fails due to https://github.com/aspnet/Razor/issues/897")] [Fact]
public void ParseBlockCorrectlyReturnsFromMarkupBlockWithPseudoTagInCodeBlock() public void ParseBlockCorrectlyReturnsFromMarkupBlockWithPseudoTagInCodeBlock()
{ {
ParseBlockTest("{ if (i > 0) { <text>;</text> } }", ParseBlockTest("{ if (i > 0) { <text>;</text> } }",
new StatementBlock( new StatementBlock(
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.Code(" if (i > 0) {") Factory.Code(" if (i > 0) { ")
.AsStatement() .AsStatement()
.AutoCompleteWith(autoCompleteString: null), .AutoCompleteWith(autoCompleteString: null),
new MarkupBlock( new MarkupBlock(
@ -639,7 +639,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None))); Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
} }
[Fact(Skip = "Fails due to https://github.com/aspnet/Razor/issues/897")] [Fact]
public void ParseBlockSupportsAllKindsOfImplicitMarkupInCodeBlock() public void ParseBlockSupportsAllKindsOfImplicitMarkupInCodeBlock()
{ {
ParseBlockTest("{" + Environment.NewLine ParseBlockTest("{" + Environment.NewLine
@ -665,7 +665,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup("Single Line Markup" + Environment.NewLine) Factory.Markup("Single Line Markup" + Environment.NewLine)
.With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None)) .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None))
), ),
Factory.Code($" }}{Environment.NewLine} foreach (var p in Enumerable.Range(1, 10)) {{{Environment.NewLine}").AsStatement(), Factory.Code($" }}{Environment.NewLine} foreach (var p in Enumerable.Range(1, 10)) {{{Environment.NewLine} ").AsStatement(),
new MarkupBlock( new MarkupBlock(
new MarkupTagBlock( new MarkupTagBlock(
Factory.MarkupTransition("<text>").Accepts(AcceptedCharactersInternal.None)), Factory.MarkupTransition("<text>").Accepts(AcceptedCharactersInternal.None)),

View File

@ -1451,7 +1451,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new SourceLocation(index, 0, index)), new SourceLocation(index, 0, index)),
new StatementBlock( new StatementBlock(
factory.CodeTransition(), factory.CodeTransition(),
factory.Code("do { var foo = bar;").AsStatement(), factory.Code("do { var foo = bar; ").AsStatement(),
new MarkupBlock( new MarkupBlock(
new MarkupTagBlock( new MarkupTagBlock(
factory.MarkupTransition("<text>")), factory.MarkupTransition("<text>")),

View File

@ -141,7 +141,6 @@ namespace Microsoft.AspNetCore.Razor.Language
[InlineData(12, 2)] [InlineData(12, 2)]
[InlineData(12, 14)] [InlineData(12, 14)]
[InlineData(13, 13)] [InlineData(13, 13)]
[InlineData(13, 13)]
[InlineData(20, 1)] [InlineData(20, 1)]
[InlineData(21, 0)] [InlineData(21, 0)]
public void GetOffSet_SpanIsNotOwnerOfChange_ThrowsException(int absoluteIndex, int length) public void GetOffSet_SpanIsNotOwnerOfChange_ThrowsException(int absoluteIndex, int length)

View File

@ -3,12 +3,12 @@ Document -
NamespaceDeclaration - - Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles NamespaceDeclaration - - Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles
ClassDeclaration - - public - TestFiles_IntegrationTests_CodeGenerationIntegrationTest_CodeBlockWithTextElement_Runtime - - ClassDeclaration - - public - TestFiles_IntegrationTests_CodeGenerationIntegrationTest_CodeBlockWithTextElement_Runtime - -
MethodDeclaration - - public - async - System.Threading.Tasks.Task - ExecuteAsync MethodDeclaration - - public - async - System.Threading.Tasks.Task - ExecuteAsync
CSharpCode - (2:0,2 [16] CodeBlockWithTextElement.cshtml) CSharpCode - (2:0,2 [17] CodeBlockWithTextElement.cshtml)
RazorIRToken - (2:0,2 [16] CodeBlockWithTextElement.cshtml) - CSharp - \n var a = 1; RazorIRToken - (2:0,2 [17] CodeBlockWithTextElement.cshtml) - CSharp - \n var a = 1;
HtmlContent - (25:1,21 [3] CodeBlockWithTextElement.cshtml) HtmlContent - (25:1,21 [3] CodeBlockWithTextElement.cshtml)
RazorIRToken - (25:1,21 [3] CodeBlockWithTextElement.cshtml) - Html - foo RazorIRToken - (25:1,21 [3] CodeBlockWithTextElement.cshtml) - Html - foo
CSharpCode - (35:1,31 [19] CodeBlockWithTextElement.cshtml) CSharpCode - (35:1,31 [22] CodeBlockWithTextElement.cshtml)
RazorIRToken - (35:1,31 [19] CodeBlockWithTextElement.cshtml) - CSharp - \n var b = 1; RazorIRToken - (35:1,31 [22] CodeBlockWithTextElement.cshtml) - CSharp - \n var b = 1;
HtmlContent - (63:2,23 [4] CodeBlockWithTextElement.cshtml) HtmlContent - (63:2,23 [4] CodeBlockWithTextElement.cshtml)
RazorIRToken - (63:2,23 [4] CodeBlockWithTextElement.cshtml) - Html - bar RazorIRToken - (63:2,23 [4] CodeBlockWithTextElement.cshtml) - Html - bar
CSharpExpression - (69:2,29 [3] CodeBlockWithTextElement.cshtml) CSharpExpression - (69:2,29 [3] CodeBlockWithTextElement.cshtml)

View File

@ -40,7 +40,7 @@ Document -
RazorIRToken - (166:7,35 [6] ComplexTagHelpers.cshtml) - Html - string RazorIRToken - (166:7,35 [6] ComplexTagHelpers.cshtml) - Html - string
HtmlContent - (178:7,47 [10] ComplexTagHelpers.cshtml) HtmlContent - (178:7,47 [10] ComplexTagHelpers.cshtml)
RazorIRToken - (178:7,47 [10] ComplexTagHelpers.cshtml) - Html - \n RazorIRToken - (178:7,47 [10] ComplexTagHelpers.cshtml) - Html - \n
TagHelper - (188:8,8 [529] ComplexTagHelpers.cshtml) - p - TagMode.StartTagAndEndTag TagHelper - (188:8,8 [531] ComplexTagHelpers.cshtml) - p - TagMode.StartTagAndEndTag
TagHelperBody - TagHelperBody -
HtmlContent - (226:8,46 [34] ComplexTagHelpers.cshtml) HtmlContent - (226:8,46 [34] ComplexTagHelpers.cshtml)
RazorIRToken - (226:8,46 [14] ComplexTagHelpers.cshtml) - Html - \n RazorIRToken - (226:8,46 [14] ComplexTagHelpers.cshtml) - Html - \n
@ -106,28 +106,28 @@ Document -
HtmlContent - (591:17,66 [18] ComplexTagHelpers.cshtml) HtmlContent - (591:17,66 [18] ComplexTagHelpers.cshtml)
RazorIRToken - (591:17,66 [2] ComplexTagHelpers.cshtml) - Html - \n RazorIRToken - (591:17,66 [2] ComplexTagHelpers.cshtml) - Html - \n
RazorIRToken - (593:18,0 [16] ComplexTagHelpers.cshtml) - Html - RazorIRToken - (593:18,0 [16] ComplexTagHelpers.cshtml) - Html -
TagHelper - (609:18,16 [79] ComplexTagHelpers.cshtml) - input - TagMode.StartTagOnly TagHelper - (609:18,16 [81] ComplexTagHelpers.cshtml) - input - TagMode.StartTagOnly
TagHelperBody - TagHelperBody -
CreateTagHelper - - TestNamespace.InputTagHelper CreateTagHelper - - TestNamespace.InputTagHelper
CreateTagHelper - - TestNamespace.InputTagHelper2 CreateTagHelper - - TestNamespace.InputTagHelper2
SetTagHelperProperty - (622:18,29 [64] ComplexTagHelpers.cshtml) - type - Type - HtmlAttributeValueStyle.SingleQuotes SetTagHelperProperty - (622:18,29 [66] ComplexTagHelpers.cshtml) - type - Type - HtmlAttributeValueStyle.SingleQuotes
CSharpCode - (623:18,30 [10] ComplexTagHelpers.cshtml) CSharpCode - (623:18,30 [11] ComplexTagHelpers.cshtml)
RazorIRToken - (623:18,30 [10] ComplexTagHelpers.cshtml) - CSharp - if(true) { RazorIRToken - (623:18,30 [11] ComplexTagHelpers.cshtml) - CSharp - if(true) {
HtmlContent - (640:18,47 [8] ComplexTagHelpers.cshtml) HtmlContent - (640:18,47 [8] ComplexTagHelpers.cshtml)
RazorIRToken - (640:18,47 [8] ComplexTagHelpers.cshtml) - Html - checkbox RazorIRToken - (640:18,47 [8] ComplexTagHelpers.cshtml) - Html - checkbox
CSharpCode - (655:18,62 [9] ComplexTagHelpers.cshtml) CSharpCode - (655:18,62 [10] ComplexTagHelpers.cshtml)
RazorIRToken - (655:18,62 [9] ComplexTagHelpers.cshtml) - CSharp - } else { RazorIRToken - (655:18,62 [10] ComplexTagHelpers.cshtml) - CSharp - } else {
HtmlContent - (671:18,78 [8] ComplexTagHelpers.cshtml) HtmlContent - (671:18,78 [8] ComplexTagHelpers.cshtml)
RazorIRToken - (671:18,78 [8] ComplexTagHelpers.cshtml) - Html - anything RazorIRToken - (671:18,78 [8] ComplexTagHelpers.cshtml) - Html - anything
CSharpCode - (686:18,93 [2] ComplexTagHelpers.cshtml) CSharpCode - (686:18,93 [2] ComplexTagHelpers.cshtml)
RazorIRToken - (686:18,93 [2] ComplexTagHelpers.cshtml) - CSharp - } RazorIRToken - (686:18,93 [2] ComplexTagHelpers.cshtml) - CSharp - }
SetTagHelperProperty - (622:18,29 [64] ComplexTagHelpers.cshtml) - type - Type - HtmlAttributeValueStyle.SingleQuotes SetTagHelperProperty - (622:18,29 [66] ComplexTagHelpers.cshtml) - type - Type - HtmlAttributeValueStyle.SingleQuotes
CSharpCode - (623:18,30 [10] ComplexTagHelpers.cshtml) CSharpCode - (623:18,30 [11] ComplexTagHelpers.cshtml)
RazorIRToken - (623:18,30 [10] ComplexTagHelpers.cshtml) - CSharp - if(true) { RazorIRToken - (623:18,30 [11] ComplexTagHelpers.cshtml) - CSharp - if(true) {
HtmlContent - (640:18,47 [8] ComplexTagHelpers.cshtml) HtmlContent - (640:18,47 [8] ComplexTagHelpers.cshtml)
RazorIRToken - (640:18,47 [8] ComplexTagHelpers.cshtml) - Html - checkbox RazorIRToken - (640:18,47 [8] ComplexTagHelpers.cshtml) - Html - checkbox
CSharpCode - (655:18,62 [9] ComplexTagHelpers.cshtml) CSharpCode - (655:18,62 [10] ComplexTagHelpers.cshtml)
RazorIRToken - (655:18,62 [9] ComplexTagHelpers.cshtml) - CSharp - } else { RazorIRToken - (655:18,62 [10] ComplexTagHelpers.cshtml) - CSharp - } else {
HtmlContent - (671:18,78 [8] ComplexTagHelpers.cshtml) HtmlContent - (671:18,78 [8] ComplexTagHelpers.cshtml)
RazorIRToken - (671:18,78 [8] ComplexTagHelpers.cshtml) - Html - anything RazorIRToken - (671:18,78 [8] ComplexTagHelpers.cshtml) - Html - anything
CSharpCode - (686:18,93 [2] ComplexTagHelpers.cshtml) CSharpCode - (686:18,93 [2] ComplexTagHelpers.cshtml)

View File

@ -10,7 +10,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles
DefineSection("Link", async () => { DefineSection("Link", async () => {
}); });
WriteLiteral("(string link) {\r\n <a"); WriteLiteral("(string link) {\r\n <a");
BeginWriteAttribute("href", " href=\"", 36, "\"", 93, 1); BeginWriteAttribute("href", " href=\"", 36, "\"", 94, 1);
WriteAttributeValue("", 43, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => { WriteAttributeValue("", 43, new Microsoft.AspNetCore.Mvc.Razor.HelperResult(async(__razor_attribute_value_writer) => {
PushWriter(__razor_attribute_value_writer); PushWriter(__razor_attribute_value_writer);
#line 2 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InlineBlocks.cshtml" #line 2 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InlineBlocks.cshtml"
@ -36,7 +36,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles
#line hidden #line hidden
PopWriter(); PopWriter();
} }
), 43, 50, false); ), 43, 51, false);
EndWriteAttribute(); EndWriteAttribute();
WriteLiteral(" />\r\n}"); WriteLiteral(" />\r\n}");
} }

View File

@ -10,12 +10,12 @@ Document -
HtmlContent - (13:0,13 [23] InlineBlocks.cshtml) HtmlContent - (13:0,13 [23] InlineBlocks.cshtml)
RazorIRToken - (13:0,13 [21] InlineBlocks.cshtml) - Html - (string link) {\n RazorIRToken - (13:0,13 [21] InlineBlocks.cshtml) - Html - (string link) {\n
RazorIRToken - (34:1,4 [2] InlineBlocks.cshtml) - Html - <a RazorIRToken - (34:1,4 [2] InlineBlocks.cshtml) - Html - <a
HtmlAttribute - (36:1,6 [58] InlineBlocks.cshtml) - href=" - " HtmlAttribute - (36:1,6 [59] InlineBlocks.cshtml) - href=" - "
CSharpCodeAttributeValue - (43:1,13 [50] InlineBlocks.cshtml) - CSharpCodeAttributeValue - (43:1,13 [51] InlineBlocks.cshtml) -
RazorIRToken - (44:1,14 [19] InlineBlocks.cshtml) - CSharp - if(link != null) { RazorIRToken - (44:1,14 [19] InlineBlocks.cshtml) - CSharp - if(link != null) {
CSharpExpression - (64:1,34 [4] InlineBlocks.cshtml) CSharpExpression - (64:1,34 [4] InlineBlocks.cshtml)
RazorIRToken - (64:1,34 [4] InlineBlocks.cshtml) - CSharp - link RazorIRToken - (64:1,34 [4] InlineBlocks.cshtml) - CSharp - link
RazorIRToken - (68:1,38 [9] InlineBlocks.cshtml) - CSharp - } else { RazorIRToken - (68:1,38 [10] InlineBlocks.cshtml) - CSharp - } else {
HtmlContent - (84:1,54 [1] InlineBlocks.cshtml) HtmlContent - (84:1,54 [1] InlineBlocks.cshtml)
RazorIRToken - (84:1,54 [1] InlineBlocks.cshtml) - Html - # RazorIRToken - (84:1,54 [1] InlineBlocks.cshtml) - Html - #
RazorIRToken - (92:1,62 [2] InlineBlocks.cshtml) - CSharp - } RazorIRToken - (92:1,62 [2] InlineBlocks.cshtml) - CSharp - }