Fixes #2491: Treating RazorCommentTransition-s similar to Transitions in tag content (#2531)

* Treating RazorCommentTransition-s similar to Transitions in tag content
This commit is contained in:
Artak 2018-08-10 14:46:58 -07:00 committed by GitHub
parent 572b55690d
commit 692e09b017
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 109 additions and 9 deletions

View File

@ -856,7 +856,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Capture whitespace
var whitespace = ReadWhile(token => token.Type == HtmlTokenType.WhiteSpace || token.Type == HtmlTokenType.NewLine);
if (At(HtmlTokenType.Transition))
if (At(HtmlTokenType.Transition) || At(HtmlTokenType.RazorCommentTransition))
{
// Transition outside of attribute value => Switch to recovery mode
Accept(whitespace);
@ -931,7 +931,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
// First, determine if this is a 'data-' attribute (since those can't use conditional attributes)
var name = string.Concat(nameTokens.Select(s => s.Content));
var attributeCanBeConditional =
var attributeCanBeConditional =
Context.FeatureFlags.EXPERIMENTAL_AllowConditionalDataDashAttributes ||
!name.StartsWith("data-", StringComparison.OrdinalIgnoreCase);

View File

@ -42,6 +42,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
+ "}");
}
[Fact]
public void RazorCommentInOpeningTagBlock()
{
ParseDocumentTest("<text @* razor comment *@></text>");
}
[Fact]
public void RazorCommentInClosingTagBlock()
{
ParseDocumentTest("<text></text @* razor comment *@>");
}
[Fact]
public void UnterminatedRazorCommentInVerbatimBlock()
{

View File

@ -13,3 +13,6 @@
<p>But this should show the comment syntax: @bar</p>
@(a@**@b)
<input value="@*this razor comment is the actual value*@" type="text" />
<input @*this razor comment will not be rendered*@ type="text" />

View File

@ -38,5 +38,14 @@ Document -
CSharpExpression - (323:14,2 [2] RazorComments.cshtml)
IntermediateToken - (323:14,2 [1] RazorComments.cshtml) - CSharp - a
IntermediateToken - (328:14,7 [1] RazorComments.cshtml) - CSharp - b
HtmlContent - (330:14,9 [2] RazorComments.cshtml)
IntermediateToken - (330:14,9 [2] RazorComments.cshtml) - Html - \n
HtmlContent - (330:14,9 [85] RazorComments.cshtml)
IntermediateToken - (330:14,9 [4] RazorComments.cshtml) - Html - \n\n
IntermediateToken - (334:16,0 [6] RazorComments.cshtml) - Html - <input
IntermediateToken - (340:16,6 [51] RazorComments.cshtml) - Html - value="@*this razor comment is the actual value*@"
IntermediateToken - (391:16,57 [12] RazorComments.cshtml) - Html - type="text"
IntermediateToken - (403:16,69 [3] RazorComments.cshtml) - Html - />
IntermediateToken - (406:16,72 [2] RazorComments.cshtml) - Html - \n
IntermediateToken - (408:17,0 [7] RazorComments.cshtml) - Html - <input
HtmlContent - (458:17,50 [17] RazorComments.cshtml)
IntermediateToken - (458:17,50 [15] RazorComments.cshtml) - Html - type="text" />
IntermediateToken - (473:17,65 [2] RazorComments.cshtml) - Html - \n

View File

@ -1,11 +1,11 @@
#pragma checksum "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/RazorComments.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "051345e2cc0313fea445db2f6cf48fe28b0b4edf"
#pragma checksum "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/RazorComments.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "4d553281e07fafc67ca0139b27ee95724a37f162"
// <auto-generated/>
#pragma warning disable 1591
[assembly: global::Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute(typeof(Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles.TestFiles_IntegrationTests_CodeGenerationIntegrationTest_RazorComments_Runtime), @"default", @"/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/RazorComments.cshtml")]
namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles
{
#line hidden
[global::Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute(@"SHA1", @"051345e2cc0313fea445db2f6cf48fe28b0b4edf", @"/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/RazorComments.cshtml")]
[global::Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute(@"SHA1", @"4d553281e07fafc67ca0139b27ee95724a37f162", @"/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/RazorComments.cshtml")]
public class TestFiles_IntegrationTests_CodeGenerationIntegrationTest_RazorComments_Runtime
{
#pragma warning disable 1998
@ -45,7 +45,8 @@ Write(ab);
#line default
#line hidden
WriteLiteral("\r\n");
WriteLiteral("\r\n\r\n<input value=\"@*this razor comment is the actual value*@\" type=\"text\" />\r\n<input ");
WriteLiteral(" type=\"text\" />\r\n");
}
#pragma warning restore 1998
}

View File

@ -33,5 +33,14 @@ Document -
CSharpExpression - (323:14,2 [2] RazorComments.cshtml)
IntermediateToken - (323:14,2 [1] RazorComments.cshtml) - CSharp - a
IntermediateToken - (328:14,7 [1] RazorComments.cshtml) - CSharp - b
HtmlContent - (330:14,9 [2] RazorComments.cshtml)
IntermediateToken - (330:14,9 [2] RazorComments.cshtml) - Html - \n
HtmlContent - (330:14,9 [85] RazorComments.cshtml)
IntermediateToken - (330:14,9 [4] RazorComments.cshtml) - Html - \n\n
IntermediateToken - (334:16,0 [6] RazorComments.cshtml) - Html - <input
IntermediateToken - (340:16,6 [51] RazorComments.cshtml) - Html - value="@*this razor comment is the actual value*@"
IntermediateToken - (391:16,57 [12] RazorComments.cshtml) - Html - type="text"
IntermediateToken - (403:16,69 [3] RazorComments.cshtml) - Html - />
IntermediateToken - (406:16,72 [2] RazorComments.cshtml) - Html - \n
IntermediateToken - (408:17,0 [7] RazorComments.cshtml) - Html - <input
HtmlContent - (458:17,50 [17] RazorComments.cshtml)
IntermediateToken - (458:17,50 [15] RazorComments.cshtml) - Html - type="text" />
IntermediateToken - (473:17,65 [2] RazorComments.cshtml) - Html - \n

View File

@ -0,0 +1,8 @@
Markup span at (0:0,0 [6] ) (Accepts:Any) - Parent: Tag block at (0:0,0 [6] )
Markup span at (6:0,6 [7] ) (Accepts:Any) - Parent: Tag block at (6:0,6 [7] )
Transition span at (13:0,13 [1] ) (Accepts:None) - Parent: Comment block at (13:0,13 [19] )
MetaCode span at (14:0,14 [1] ) (Accepts:None) - Parent: Comment block at (13:0,13 [19] )
Comment span at (15:0,15 [15] ) (Accepts:Any) - Parent: Comment block at (13:0,13 [19] )
MetaCode span at (30:0,30 [1] ) (Accepts:None) - Parent: Comment block at (13:0,13 [19] )
Transition span at (31:0,31 [1] ) (Accepts:None) - Parent: Comment block at (13:0,13 [19] )
Markup span at (32:0,32 [1] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [33] )

View File

@ -0,0 +1,25 @@
Markup block - Gen<None> - 33 - (0:0,0)
Tag block - Gen<None> - 6 - (0:0,0)
Markup span - Gen<Markup> - [<text>] - SpanEditHandler;Accepts:Any - (0:0,0) - Tokens:3
HtmlTokenType.OpenAngle;[<];
HtmlTokenType.Text;[text];
HtmlTokenType.CloseAngle;[>];
Tag block - Gen<None> - 7 - (6:0,6)
Markup span - Gen<Markup> - [</text ] - SpanEditHandler;Accepts:Any - (6:0,6) - Tokens:4
HtmlTokenType.OpenAngle;[<];
HtmlTokenType.ForwardSlash;[/];
HtmlTokenType.Text;[text];
HtmlTokenType.WhiteSpace;[ ];
Comment block - Gen<RazorComment> - 19 - (13:0,13)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (13:0,13) - Tokens:1
HtmlTokenType.RazorCommentTransition;[@];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (14:0,14) - Tokens:1
HtmlTokenType.RazorCommentStar;[*];
Comment span - Gen<None> - [ razor comment ] - SpanEditHandler;Accepts:Any - (15:0,15) - Tokens:1
HtmlTokenType.RazorComment;[ razor comment ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (30:0,30) - Tokens:1
HtmlTokenType.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (31:0,31) - Tokens:1
HtmlTokenType.RazorCommentTransition;[@];
Markup span - Gen<Markup> - [>] - SpanEditHandler;Accepts:Any - (32:0,32) - Tokens:1
HtmlTokenType.CloseAngle;[>];

View File

@ -0,0 +1,8 @@
Markup span at (0:0,0 [6] ) (Accepts:Any) - Parent: Tag block at (0:0,0 [26] )
Transition span at (6:0,6 [1] ) (Accepts:None) - Parent: Comment block at (6:0,6 [19] )
MetaCode span at (7:0,7 [1] ) (Accepts:None) - Parent: Comment block at (6:0,6 [19] )
Comment span at (8:0,8 [15] ) (Accepts:Any) - Parent: Comment block at (6:0,6 [19] )
MetaCode span at (23:0,23 [1] ) (Accepts:None) - Parent: Comment block at (6:0,6 [19] )
Transition span at (24:0,24 [1] ) (Accepts:None) - Parent: Comment block at (6:0,6 [19] )
Markup span at (25:0,25 [1] ) (Accepts:Any) - Parent: Tag block at (0:0,0 [26] )
Markup span at (26:0,26 [7] ) (Accepts:Any) - Parent: Tag block at (26:0,26 [7] )

View File

@ -0,0 +1,25 @@
Markup block - Gen<None> - 33 - (0:0,0)
Tag block - Gen<None> - 26 - (0:0,0)
Markup span - Gen<Markup> - [<text ] - SpanEditHandler;Accepts:Any - (0:0,0) - Tokens:3
HtmlTokenType.OpenAngle;[<];
HtmlTokenType.Text;[text];
HtmlTokenType.WhiteSpace;[ ];
Comment block - Gen<RazorComment> - 19 - (6:0,6)
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (6:0,6) - Tokens:1
HtmlTokenType.RazorCommentTransition;[@];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (7:0,7) - Tokens:1
HtmlTokenType.RazorCommentStar;[*];
Comment span - Gen<None> - [ razor comment ] - SpanEditHandler;Accepts:Any - (8:0,8) - Tokens:1
HtmlTokenType.RazorComment;[ razor comment ];
MetaCode span - Gen<None> - [*] - SpanEditHandler;Accepts:None - (23:0,23) - Tokens:1
HtmlTokenType.RazorCommentStar;[*];
Transition span - Gen<None> - [@] - SpanEditHandler;Accepts:None - (24:0,24) - Tokens:1
HtmlTokenType.RazorCommentTransition;[@];
Markup span - Gen<Markup> - [>] - SpanEditHandler;Accepts:Any - (25:0,25) - Tokens:1
HtmlTokenType.CloseAngle;[>];
Tag block - Gen<None> - 7 - (26:0,26)
Markup span - Gen<Markup> - [</text>] - SpanEditHandler;Accepts:Any - (26:0,26) - Tokens:4
HtmlTokenType.OpenAngle;[<];
HtmlTokenType.ForwardSlash;[/];
HtmlTokenType.Text;[text];
HtmlTokenType.CloseAngle;[>];