diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpDirectivesTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpDirectivesTest.cs index 539b8f4745..56c5eb8548 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpDirectivesTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpDirectivesTest.cs @@ -923,6 +923,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy if (UseBaselineTests && !IsTheory) { + SyntaxTreeVerifier.Verify(result); AssertSyntaxTreeNodeMatchesBaseline(result); return; } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpSectionTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpSectionTest.cs index 3e2fbac20f..a1d686375a 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpSectionTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpSectionTest.cs @@ -9,78 +9,33 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { public class CSharpSectionTest : CsHtmlMarkupParserTestBase { + public CSharpSectionTest() + { + UseBaselineTests = true; + } + [Fact] public void ParseSectionBlockCapturesNewlineImmediatelyFollowing() { - // Arrange - var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_DirectiveExpectsIdentifier( - new SourceSpan(new SourceLocation(8, 0, 8), contentLength: Environment.NewLine.Length), SectionDirective.Directive.Directive)); - - // Act & Assert ParseDocumentTest( "@section" + Environment.NewLine, - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, string.Empty, CSharpSymbolType.Unknown) - .AsDirectiveToken(DirectiveTokenDescriptor.CreateToken(DirectiveTokenKind.Member))), - Factory.Markup(Environment.NewLine))); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockCapturesWhitespaceToEndOfLineInSectionStatementMissingOpenBrace() { - // Arrange - var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_UnexpectedEOFAfterDirective( - new SourceSpan(new SourceLocation(25 + Environment.NewLine.Length, 1, 4), contentLength: 1), - SectionDirective.Directive.Directive, - "{")); - - // Act & Assert ParseDocumentTest( "@section Foo " + Environment.NewLine + " ", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " " + Environment.NewLine + " ", markup: false).Accepts(AcceptedCharactersInternal.AllWhiteSpace)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockCapturesWhitespaceToEndOfLineInSectionStatementMissingName() { - // Arrange - var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_DirectiveExpectsIdentifier( - new SourceSpan(new SourceLocation(17, 0, 17), contentLength: Environment.NewLine.Length), SectionDirective.Directive.Directive)); - - // Act & Assert ParseDocumentTest( "@section " + Environment.NewLine + " ", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory - .Span(SpanKindInternal.Code, string.Empty, CSharpSymbolType.Unknown) - .AsDirectiveToken(DirectiveTokenDescriptor.CreateToken(DirectiveTokenKind.Member))), - Factory.Markup(Environment.NewLine + " "))); + new[] { SectionDirective.Directive }); } [Fact] @@ -88,210 +43,83 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseDocumentTest( "@Section foo", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("Section") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - Factory.Markup(" foo"))); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockReportsErrorAndTerminatesSectionBlockIfKeywordNotFollowedByIdentifierStartCharacter() { - // Arrange - var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_DirectiveExpectsIdentifier( - new SourceSpan(new SourceLocation(9, 0, 9), contentLength: 1), SectionDirective.Directive.Directive)); - - // Act & Assert ParseDocumentTest( "@section 9 {

Foo

}", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace)), - Factory.Markup("9 { "), - new MarkupTagBlock( - Factory.Markup("

")), - Factory.Markup("Foo"), - new MarkupTagBlock( - Factory.Markup("

")), - Factory.Markup(" }"))); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockReportsErrorAndTerminatesSectionBlockIfNameNotFollowedByOpenBrace() { - // Arrange - var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_UnexpectedDirectiveLiteral( - new SourceSpan(new SourceLocation(12, 0, 12), contentLength: 1), - SectionDirective.Directive.Directive, - "{")); - - // Act & Assert ParseDocumentTest( "@section foo-bar {

Foo

}", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0])), - Factory.Markup("-bar { "), - new MarkupTagBlock( - Factory.Markup("

")), - Factory.Markup("Foo"), - new MarkupTagBlock( - Factory.Markup("

")), - Factory.Markup(" }"))); + new[] { SectionDirective.Directive }); } [Fact] public void ParserOutputsErrorOnNestedSections() { - // Arrange - var erroredChunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive); - erroredChunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_DirectiveMustAppearAtStartOfLine( - new SourceSpan(new SourceLocation(16, 0, 16), contentLength: 7), "section")); - erroredChunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_SectionsCannotBeNested( - new SourceSpan(new SourceLocation(15, 0, 15), 8))); - - // Act & Assert ParseDocumentTest( "@section foo { @section bar {

Foo

} }", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(" "), - new DirectiveBlock(erroredChunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "bar", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("

")), - Factory.Markup("Foo"), - new MarkupTagBlock( - Factory.Markup("

")), - Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockHandlesEOFAfterOpenBrace() { - // Arrange - var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(new SourceLocation(13, 0, 13), contentLength: 1), SectionDirective.Directive.Directive, "}", "{")); - - // Act & Assert ParseDocumentTest( "@section foo {", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.EmptyHtml())))); + new[] { SectionDirective.Directive }); } - [Theory] - [InlineData(" ")] - [InlineData("\n")] - [InlineData(" abc")] - [InlineData(" \n abc")] - public void ParseSectionBlockHandlesEOFAfterOpenContent(string postStartBrace) + [Fact] + public void ParseSectionBlockHandlesEOFAfterOpenContent1() { - // Arrange - var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(new SourceLocation(13, 0, 13), contentLength: 1), "section", "}", "{")); - - // Act & Assert + ParseDocumentTest( - "@section foo {" + postStartBrace, - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(postStartBrace))))); + "@section foo { ", + new[] { SectionDirective.Directive }); + } + + [Fact] + public void ParseSectionBlockHandlesEOFAfterOpenContent2() + { + + ParseDocumentTest( + "@section foo {\n", + new[] { SectionDirective.Directive }); + } + + [Fact] + public void ParseSectionBlockHandlesEOFAfterOpenContent3() + { + + ParseDocumentTest( + "@section foo {abc", + new[] { SectionDirective.Directive }); + } + + [Fact] + public void ParseSectionBlockHandlesEOFAfterOpenContent4() + { + + ParseDocumentTest( + "@section foo {\n abc", + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockHandlesUnterminatedSection() { - // Arrange - var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(new SourceLocation(13, 0, 13), contentLength: 1), "section", "}", "{")); - - // Act & Assert ParseDocumentTest( "@section foo {

Foo{}

", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("

")), - // Need to provide the markup span as fragments, since the parser will split the {} into separate symbols. - Factory.Markup("Foo", "{", "}"), - new MarkupTagBlock( - Factory.Markup("

")))))); + new[] { SectionDirective.Directive }); } [Fact] @@ -299,10 +127,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { // Arrange var newLine = Environment.NewLine; - var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(new SourceLocation(13 + newLine.Length, 1, 0), contentLength: 1), "section", "}", "{")); var spaces = " "; // Act & Assert @@ -311,29 +135,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy "@section Test{0}{{{0}{1}@if(true){0}{1}{{{0}{1}{1}

Hello World

{0}{1}}}", newLine, spaces), - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "Test", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, Environment.NewLine, CSharpSymbolType.NewLine).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(newLine), - new StatementBlock( - Factory.Code(spaces).AsStatement(), - Factory.CodeTransition(), - Factory.Code($"if(true){newLine}{spaces}{{{newLine}").AsStatement(), - new MarkupBlock( - Factory.Markup($"{spaces}{spaces}"), - BlockFactory.MarkupTagBlock("

", AcceptedCharactersInternal.None), - Factory.Markup("Hello World"), - BlockFactory.MarkupTagBlock("

", AcceptedCharactersInternal.None), - Factory.Markup(newLine).Accepts(AcceptedCharactersInternal.None)), - Factory.Code($"{spaces}}}").AsStatement()))))); + new[] { SectionDirective.Directive }); } [Fact] @@ -350,22 +152,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // Act & Assert ParseDocumentTest( "@section foo " + Environment.NewLine, - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " " + Environment.NewLine, markup: false).Accepts(AcceptedCharactersInternal.AllWhiteSpace)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockAcceptsOpenBraceMultipleLinesBelowSectionName() { - // Act & Assert ParseDocumentTest( "@section foo " + Environment.NewLine @@ -377,239 +169,76 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + "{" + Environment.NewLine + "

Foo

" + Environment.NewLine + "}", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " " + string.Format("{0}{0}{0}{0}{0}{0}", Environment.NewLine), markup: false).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(Environment.NewLine), - new MarkupTagBlock( - Factory.Markup("

")), - Factory.Markup("Foo"), - new MarkupTagBlock( - Factory.Markup("

")), - Factory.Markup(Environment.NewLine)), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockParsesNamedSectionCorrectly() { - // Act & Assert ParseDocumentTest( "@section foo {

Foo

}", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("

")), - Factory.Markup("Foo"), - new MarkupTagBlock( - Factory.Markup("

")), - Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockDoesNotRequireSpaceBetweenSectionNameAndOpenBrace() { - // Act & Assert ParseDocumentTest( "@section foo{

Foo

}", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("

")), - Factory.Markup("Foo"), - new MarkupTagBlock( - Factory.Markup("

")), - Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockBalancesBraces() { - // Act & Assert ParseDocumentTest( "@section foo { }", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("")), - Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockAllowsBracesInCSharpExpression() { - // Act & Assert ParseDocumentTest( "@section foo { I really want to render a close brace, so here I go: @(\"}\") }", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(" I really want to render a close brace, so here I go: "), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None), - Factory.Code("\"}\"").AsExpression(), - Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void SectionIsCorrectlyTerminatedWhenCloseBraceImmediatelyFollowsCodeBlock() { - // Act & Assert ParseDocumentTest( "@section Foo {" + Environment.NewLine + "@if(true) {" + Environment.NewLine + "}" + Environment.NewLine + "}", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(Environment.NewLine), - new StatementBlock( - Factory.CodeTransition(), - Factory.Code($"if(true) {{{Environment.NewLine}}}{Environment.NewLine}").AsStatement() - )), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void SectionIsCorrectlyTerminatedWhenCloseBraceImmediatelyFollowsCodeBlockNoWhitespace() { - // Act & Assert ParseDocumentTest( "@section Foo {" + Environment.NewLine + "@if(true) {" + Environment.NewLine + "}}", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(Environment.NewLine), - new StatementBlock( - Factory.CodeTransition(), - Factory.Code($"if(true) {{{Environment.NewLine}}}").AsStatement() - )), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockCorrectlyTerminatesWhenCloseBraceImmediatelyFollowsMarkup() { - // Act & Assert ParseDocumentTest( "@section foo {something}", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup("something")), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockParsesComment() { - // Act & Assert ParseDocumentTest( "@section s {}", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - BlockFactory.HtmlCommentBlock(" "), - Factory.EmptyHtml()), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } // This was a user reported bug (codeplex #710), the section parser wasn't handling @@ -617,150 +246,38 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy [Fact] public void ParseSectionBlockParsesCommentWithDelimiters() { - // Act & Assert ParseDocumentTest( "@section s {}", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - BlockFactory.HtmlCommentBlock(" > \" '"), - Factory.EmptyHtml()), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockCommentRecoversFromUnclosedTag() { - // Act & Assert ParseDocumentTest( "@section s {" + Environment.NewLine + " \" '-->}", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(Environment.NewLine), - new MarkupTagBlock( - Factory.Markup(" \" '"), - Factory.EmptyHtml()), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } [Fact] public void ParseSectionBlockParsesXmlProcessingInstruction() { - // Act & Assert ParseDocumentTest( "@section s { }", - new[] { SectionDirective.Directive }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive }); } - public static TheoryData SectionWithEscapedTransitionData + [Fact] + public void ParseSectionBlock_WithDoubleTransition1() { - get - { - var factory = new SpanFactory(); - - return new TheoryData - { - { - "@section s {}", - new MarkupBlock( - factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - factory.CodeTransition(), - factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 17, 0, 17), new LocationTagged("'", 25, 0, 25)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - new MarkupBlock( - factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 23, 0, 23), new LocationTagged("@", 23, 0, 23))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />"))), - factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - factory.EmptyHtml()) - }, - { - "@section s {}", - new MarkupBlock( - factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - factory.CodeTransition(), - factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 17, 0, 17), new LocationTagged("'", 39, 0, 39)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - new MarkupBlock( - new DynamicAttributeBlockChunkGenerator(new LocationTagged(string.Empty, 23, 0, 23), 23, 0, 23), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("DateTime.Now") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), - new MarkupBlock( - factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged(" ", 36, 0, 36), new LocationTagged("@", 37, 0, 37))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />"))), - factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - factory.EmptyHtml()) - }, - }; - } + ParseDocumentTest("@section s {}", new[] { SectionDirective.Directive }); } - [Theory] - [MemberData(nameof(SectionWithEscapedTransitionData))] - public void ParseSectionBlock_WithDoubleTransition_DoesNotThrow(string input, object expected) + [Fact] + public void ParseSectionBlock_WithDoubleTransition2() { - FixupSpans = true; - - ParseDocumentTest(input, new[] { SectionDirective.Directive }, (Block)expected); + ParseDocumentTest("@section s {}", new[] { SectionDirective.Directive }); } + } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockAcceptsOpenBraceMultipleLinesBelowSectionName.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockAcceptsOpenBraceMultipleLinesBelowSectionName.syntaxtree.txt new file mode 100644 index 0000000000..0b589fa230 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockAcceptsOpenBraceMultipleLinesBelowSectionName.syntaxtree.txt @@ -0,0 +1,44 @@ +Markup block - Gen - 46 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 46 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ LFLFLFLFLFLF] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:7 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.NewLine;[LF]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (30:6,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 14 - (31:6,1) + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (31:6,1) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Tag block - Gen - 3 - (33:7,0) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (33:7,0) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Foo] - SpanEditHandler;Accepts:Any - (36:7,3) - Symbols:1 + HtmlSymbolType.Text;[Foo]; + Tag block - Gen - 4 - (39:7,6) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (39:7,6) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (43:7,10) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (45:8,0) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (46:8,1) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockAllowsBracesInCSharpExpression.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockAllowsBracesInCSharpExpression.syntaxtree.txt new file mode 100644 index 0000000000..7629579f45 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockAllowsBracesInCSharpExpression.syntaxtree.txt @@ -0,0 +1,58 @@ +Markup block - Gen - 76 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 76 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 61 - (14:0,14) + Markup span - Gen - [ I really want to render a close brace, so here I go: ] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:25 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[I]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[really]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[want]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[to]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[render]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[a]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[close]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[brace,]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[so]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[here]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[I]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[go:]; + HtmlSymbolType.WhiteSpace;[ ]; + Expression block - Gen - 6 - (68:0,68) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (68:0,68) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [(] - SpanEditHandler;Accepts:None - (69:0,69) - Symbols:1 + CSharpSymbolType.LeftParenthesis;[(]; + Code span - Gen - ["}"] - SpanEditHandler;Accepts:Any - (70:0,70) - Symbols:1 + CSharpSymbolType.StringLiteral;["}"]; + MetaCode span - Gen - [)] - SpanEditHandler;Accepts:None - (73:0,73) - Symbols:1 + CSharpSymbolType.RightParenthesis;[)]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (74:0,74) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (75:0,75) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (76:0,76) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockBalancesBraces.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockBalancesBraces.syntaxtree.txt new file mode 100644 index 0000000000..b7d3454670 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockBalancesBraces.syntaxtree.txt @@ -0,0 +1,48 @@ +Markup block - Gen - 67 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 67 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 52 - (14:0,14) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 8 - (15:0,15) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (56:0,56) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[script]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (65:0,65) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (66:0,66) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (67:0,67) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCapturesNewlineImmediatelyFollowing.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCapturesNewlineImmediatelyFollowing.syntaxtree.txt new file mode 100644 index 0000000000..546b239714 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCapturesNewlineImmediatelyFollowing.syntaxtree.txt @@ -0,0 +1,12 @@ +Markup block - Gen - 10 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 8 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.Unknown;[]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (8:0,8) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCapturesWhitespaceToEndOfLineInSectionStatementMissingName.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCapturesWhitespaceToEndOfLineInSectionStatementMissingName.syntaxtree.txt new file mode 100644 index 0000000000..4590b6fe8b --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCapturesWhitespaceToEndOfLineInSectionStatementMissingName.syntaxtree.txt @@ -0,0 +1,15 @@ +Markup block - Gen - 23 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 17 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (17:0,17) - Symbols:1 + CSharpSymbolType.Unknown;[]; + Markup span - Gen - [LF ] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:2 + HtmlSymbolType.NewLine;[LF]; + HtmlSymbolType.WhiteSpace;[ ]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCapturesWhitespaceToEndOfLineInSectionStatementMissingOpenBrace.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCapturesWhitespaceToEndOfLineInSectionStatementMissingOpenBrace.syntaxtree.txt new file mode 100644 index 0000000000..c1f6728eda --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCapturesWhitespaceToEndOfLineInSectionStatementMissingOpenBrace.syntaxtree.txt @@ -0,0 +1,18 @@ +Markup block - Gen - 27 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 27 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [Foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[Foo]; + Markup span - Gen - [ LF ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:3 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (27:1,4) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCommentRecoversFromUnclosedTag.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCommentRecoversFromUnclosedTag.syntaxtree.txt new file mode 100644 index 0000000000..55310fee65 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCommentRecoversFromUnclosedTag.syntaxtree.txt @@ -0,0 +1,45 @@ +Markup block - Gen - 33 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 33 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [s] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[s]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (10:0,10) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (11:0,11) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 20 - (12:0,12) + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Tag block - Gen - 4 - (14:1,0) + Markup span - Gen - [ - 14 - (18:2,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (29:2,11) - Symbols:2 + HtmlSymbolType.DoubleHyphen;[--]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (32:2,14) - Symbols:1 + HtmlSymbolType.Unknown;[]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (32:2,14) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (33:2,15) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCorrectlyTerminatesWhenCloseBraceImmediatelyFollowsMarkup.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCorrectlyTerminatesWhenCloseBraceImmediatelyFollowsMarkup.syntaxtree.txt new file mode 100644 index 0000000000..2a3fe9aae1 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockCorrectlyTerminatesWhenCloseBraceImmediatelyFollowsMarkup.syntaxtree.txt @@ -0,0 +1,23 @@ +Markup block - Gen - 24 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 24 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 9 - (14:0,14) + Markup span - Gen - [something] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.Text;[something]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (23:0,23) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (24:0,24) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockDoesNotRequireSpaceBetweenSectionNameAndOpenBrace.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockDoesNotRequireSpaceBetweenSectionNameAndOpenBrace.syntaxtree.txt new file mode 100644 index 0000000000..d09ac5b531 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockDoesNotRequireSpaceBetweenSectionNameAndOpenBrace.syntaxtree.txt @@ -0,0 +1,36 @@ +Markup block - Gen - 26 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 26 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (12:0,12) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 12 - (13:0,13) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (13:0,13) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 3 - (14:0,14) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Foo] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:1 + HtmlSymbolType.Text;[Foo]; + Tag block - Gen - 4 - (20:0,20) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (20:0,20) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (24:0,24) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (25:0,25) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (26:0,26) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenBrace.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenBrace.syntaxtree.txt new file mode 100644 index 0000000000..18a3b5034b --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenBrace.syntaxtree.txt @@ -0,0 +1,19 @@ +Markup block - Gen - 14 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 14 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[}];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 0 - (14:0,14) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenContent1.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenContent1.syntaxtree.txt new file mode 100644 index 0000000000..53009cd47d --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenContent1.syntaxtree.txt @@ -0,0 +1,19 @@ +Markup block - Gen - 15 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 15 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[}];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 1 - (14:0,14) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenContent2.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenContent2.syntaxtree.txt new file mode 100644 index 0000000000..1d6f145970 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenContent2.syntaxtree.txt @@ -0,0 +1,19 @@ +Markup block - Gen - 16 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 16 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[}];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 2 - (14:0,14) + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenContent3.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenContent3.syntaxtree.txt new file mode 100644 index 0000000000..a9a1a16f71 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenContent3.syntaxtree.txt @@ -0,0 +1,19 @@ +Markup block - Gen - 17 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 17 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[}];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 3 - (14:0,14) + Markup span - Gen - [abc] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.Text;[abc]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenContent4.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenContent4.syntaxtree.txt new file mode 100644 index 0000000000..025e6f95cc --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesEOFAfterOpenContent4.syntaxtree.txt @@ -0,0 +1,21 @@ +Markup block - Gen - 20 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 20 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[}];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 6 - (14:0,14) + Markup span - Gen - [LF abc] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:3 + HtmlSymbolType.NewLine;[LF]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[abc]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesUnterminatedSection.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesUnterminatedSection.syntaxtree.txt new file mode 100644 index 0000000000..10d6830487 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesUnterminatedSection.syntaxtree.txt @@ -0,0 +1,34 @@ +Markup block - Gen - 27 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 27 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[}];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 13 - (14:0,14) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 3 - (15:0,15) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (15:0,15) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Foo{}] - SpanEditHandler;Accepts:Any - (18:0,18) - Symbols:3 + HtmlSymbolType.Text;[Foo]; + HtmlSymbolType.Text;[{]; + HtmlSymbolType.Text;[}]; + Tag block - Gen - 4 - (23:0,23) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (23:0,23) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesUnterminatedSectionWithNestedIf.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesUnterminatedSectionWithNestedIf.syntaxtree.txt new file mode 100644 index 0000000000..3b477a43f4 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockHandlesUnterminatedSectionWithNestedIf.syntaxtree.txt @@ -0,0 +1,56 @@ +Markup block - Gen - 73 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 73 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [Test] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[Test]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:AllWhiteSpace - (13:0,13) - Symbols:1 + CSharpSymbolType.NewLine;[LF]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[}];AtEnd - (15:1,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 57 - (16:1,1) + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (16:1,1) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Statement block - Gen - 55 - (18:2,0) + Code span - Gen - [ ] - SpanEditHandler;Accepts:Any - (18:2,0) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (22:2,4) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [if(true)LF {LF] - SpanEditHandler;Accepts:Any - (23:2,5) - Symbols:8 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[true]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + Markup block - Gen - 28 - (40:4,0) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (40:4,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 3 - (48:4,8) + Markup span - Gen - [

] - SpanEditHandler;Accepts:None - (48:4,8) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Hello World] - SpanEditHandler;Accepts:Any - (51:4,11) - Symbols:3 + HtmlSymbolType.Text;[Hello]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[World]; + Tag block - Gen - 4 - (62:4,22) + Markup span - Gen - [

] - SpanEditHandler;Accepts:None - (62:4,22) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:None - (66:4,26) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Code span - Gen - [ }] - SpanEditHandler;Accepts:Any - (68:5,0) - Symbols:2 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockIgnoresSectionUnlessAllLowerCase.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockIgnoresSectionUnlessAllLowerCase.syntaxtree.txt new file mode 100644 index 0000000000..bc8fc8f51b --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockIgnoresSectionUnlessAllLowerCase.syntaxtree.txt @@ -0,0 +1,11 @@ +Markup block - Gen - 12 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Expression block - Gen - 8 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [Section] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K15 - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[Section]; + Markup span - Gen - [ foo] - SpanEditHandler;Accepts:Any - (8:0,8) - Symbols:2 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[foo]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockParsesComment.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockParsesComment.syntaxtree.txt new file mode 100644 index 0000000000..f4d0548865 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockParsesComment.syntaxtree.txt @@ -0,0 +1,33 @@ +Markup block - Gen - 21 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 21 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [s] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[s]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (10:0,10) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (11:0,11) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 8 - (12:0,12) + HtmlComment block - Gen - 8 - (12:0,12) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (17:0,17) - Symbols:2 + HtmlSymbolType.DoubleHyphen;[--]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (20:0,20) - Symbols:1 + HtmlSymbolType.Unknown;[]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (20:0,20) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockParsesCommentWithDelimiters.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockParsesCommentWithDelimiters.syntaxtree.txt new file mode 100644 index 0000000000..5bb8b52316 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockParsesCommentWithDelimiters.syntaxtree.txt @@ -0,0 +1,38 @@ +Markup block - Gen - 26 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 26 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [s] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[s]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (10:0,10) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (11:0,11) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 13 - (12:0,12) + HtmlComment block - Gen - 13 - (12:0,12) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (22:0,22) - Symbols:2 + HtmlSymbolType.DoubleHyphen;[--]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (25:0,25) - Symbols:1 + HtmlSymbolType.Unknown;[]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (25:0,25) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (26:0,26) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockParsesNamedSectionCorrectly.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockParsesNamedSectionCorrectly.syntaxtree.txt new file mode 100644 index 0000000000..565d92a215 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockParsesNamedSectionCorrectly.syntaxtree.txt @@ -0,0 +1,38 @@ +Markup block - Gen - 27 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 27 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 12 - (14:0,14) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 3 - (15:0,15) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (15:0,15) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Foo] - SpanEditHandler;Accepts:Any - (18:0,18) - Symbols:1 + HtmlSymbolType.Text;[Foo]; + Tag block - Gen - 4 - (21:0,21) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (25:0,25) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (26:0,26) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (27:0,27) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockParsesXmlProcessingInstruction.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockParsesXmlProcessingInstruction.syntaxtree.txt new file mode 100644 index 0000000000..e71b39980d --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockParsesXmlProcessingInstruction.syntaxtree.txt @@ -0,0 +1,32 @@ +Markup block - Gen - 28 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 28 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [s] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[s]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (10:0,10) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (11:0,11) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 15 - (12:0,12) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:10 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.QuestionMark;[?]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[xml]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[bleh]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.QuestionMark;[?]; + HtmlSymbolType.CloseAngle;[>]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (27:0,27) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (28:0,28) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockReportsErrorAndAcceptsWhitespaceToEndOfLineIfSectionNotFollowedByOpenBrace.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockReportsErrorAndAcceptsWhitespaceToEndOfLineIfSectionNotFollowedByOpenBrace.syntaxtree.txt new file mode 100644 index 0000000000..2cf9ce76f6 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockReportsErrorAndAcceptsWhitespaceToEndOfLineIfSectionNotFollowedByOpenBrace.syntaxtree.txt @@ -0,0 +1,17 @@ +Markup block - Gen - 20 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 20 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ LF] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:2 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.NewLine;[LF]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (20:1,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockReportsErrorAndTerminatesSectionBlockIfKeywordNotFollowedByIdentifierStartCharacter.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockReportsErrorAndTerminatesSectionBlockIfKeywordNotFollowedByIdentifierStartCharacter.syntaxtree.txt new file mode 100644 index 0000000000..6904aeccf6 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockReportsErrorAndTerminatesSectionBlockIfKeywordNotFollowedByIdentifierStartCharacter.syntaxtree.txt @@ -0,0 +1,31 @@ +Markup block - Gen - 25 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 9 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Markup span - Gen - [9 { ] - SpanEditHandler;Accepts:Any - (9:0,9) - Symbols:4 + HtmlSymbolType.Text;[9]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[{]; + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 3 - (13:0,13) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (13:0,13) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Foo] - SpanEditHandler;Accepts:Any - (16:0,16) - Symbols:1 + HtmlSymbolType.Text;[Foo]; + Tag block - Gen - 4 - (19:0,19) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (19:0,19) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ }] - SpanEditHandler;Accepts:Any - (23:0,23) - Symbols:2 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockReportsErrorAndTerminatesSectionBlockIfNameNotFollowedByOpenBrace.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockReportsErrorAndTerminatesSectionBlockIfNameNotFollowedByOpenBrace.syntaxtree.txt new file mode 100644 index 0000000000..a5332ecac8 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlockReportsErrorAndTerminatesSectionBlockIfNameNotFollowedByOpenBrace.syntaxtree.txt @@ -0,0 +1,33 @@ +Markup block - Gen - 31 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 12 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [-bar { ] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:4 + HtmlSymbolType.Text;[-bar]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[{]; + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 3 - (19:0,19) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (19:0,19) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Foo] - SpanEditHandler;Accepts:Any - (22:0,22) - Symbols:1 + HtmlSymbolType.Text;[Foo]; + Tag block - Gen - 4 - (25:0,25) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (25:0,25) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ }] - SpanEditHandler;Accepts:Any - (29:0,29) - Symbols:2 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlock_WithDoubleTransition1.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlock_WithDoubleTransition1.syntaxtree.txt new file mode 100644 index 0000000000..c42e429991 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlock_WithDoubleTransition1.syntaxtree.txt @@ -0,0 +1,42 @@ +Markup block - Gen - 30 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 30 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [s] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[s]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (10:0,10) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (11:0,11) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 17 - (12:0,12) + Tag block - Gen - 17 - (12:0,12) + Markup span - Gen - [ - 9 - (17:0,17) + Markup span - Gen - [ foo='] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 2 - (23:0,23) + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (23:0,23) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (24:0,24) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - ['] - SpanEditHandler;Accepts:Any - (25:0,25) - Symbols:1 + HtmlSymbolType.SingleQuote;[']; + Markup span - Gen - [ />] - SpanEditHandler;Accepts:Any - (26:0,26) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.CloseAngle;[>]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (29:0,29) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (30:0,30) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlock_WithDoubleTransition2.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlock_WithDoubleTransition2.syntaxtree.txt new file mode 100644 index 0000000000..7d95d54c6e --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParseSectionBlock_WithDoubleTransition2.syntaxtree.txt @@ -0,0 +1,51 @@ +Markup block - Gen - 44 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 44 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [s] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[s]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (10:0,10) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (11:0,11) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 31 - (12:0,12) + Tag block - Gen - 31 - (12:0,12) + Markup span - Gen - [ - 23 - (17:0,17) + Markup span - Gen - [ foo='] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 13 - (23:0,23) + Expression block - Gen - 13 - (23:0,23) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (23:0,23) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [DateTime.Now] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K15 - (24:0,24) - Symbols:3 + CSharpSymbolType.Identifier;[DateTime]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Now]; + Markup block - Gen - 3 - (36:0,36) + Markup span - Gen - [ @] - SpanEditHandler;Accepts:None - (36:0,36) - Symbols:2 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (38:0,38) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - ['] - SpanEditHandler;Accepts:Any - (39:0,39) - Symbols:1 + HtmlSymbolType.SingleQuote;[']; + Markup span - Gen - [ />] - SpanEditHandler;Accepts:Any - (40:0,40) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.CloseAngle;[>]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (43:0,43) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (44:0,44) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParserOutputsErrorOnNestedSections.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParserOutputsErrorOnNestedSections.syntaxtree.txt new file mode 100644 index 0000000000..6e28afaa84 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/ParserOutputsErrorOnNestedSections.syntaxtree.txt @@ -0,0 +1,58 @@ +Markup block - Gen - 44 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 44 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 29 - (14:0,14) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Directive block - Gen - 27 - (15:0,15) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (16:0,16) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (23:0,23) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [bar] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (24:0,24) - Symbols:1 + CSharpSymbolType.Identifier;[bar]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (27:0,27) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (28:0,28) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 12 - (29:0,29) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (29:0,29) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 3 - (30:0,30) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (30:0,30) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Foo] - SpanEditHandler;Accepts:Any - (33:0,33) - Symbols:1 + HtmlSymbolType.Text;[Foo]; + Tag block - Gen - 4 - (36:0,36) + Markup span - Gen - [

] - SpanEditHandler;Accepts:Any - (36:0,36) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (40:0,40) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (41:0,41) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (42:0,42) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (43:0,43) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (44:0,44) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/SectionIsCorrectlyTerminatedWhenCloseBraceImmediatelyFollowsCodeBlock.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/SectionIsCorrectlyTerminatedWhenCloseBraceImmediatelyFollowsCodeBlock.syntaxtree.txt new file mode 100644 index 0000000000..1c746af300 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/SectionIsCorrectlyTerminatedWhenCloseBraceImmediatelyFollowsCodeBlock.syntaxtree.txt @@ -0,0 +1,36 @@ +Markup block - Gen - 33 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 33 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [Foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[Foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 18 - (14:0,14) + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Statement block - Gen - 16 - (16:1,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (16:1,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [if(true) {LF}LF] - SpanEditHandler;Accepts:Any - (17:1,1) - Symbols:9 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[true]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (32:3,0) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (33:3,1) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/SectionIsCorrectlyTerminatedWhenCloseBraceImmediatelyFollowsCodeBlockNoWhitespace.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/SectionIsCorrectlyTerminatedWhenCloseBraceImmediatelyFollowsCodeBlockNoWhitespace.syntaxtree.txt new file mode 100644 index 0000000000..9210cdb53f --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpSectionTest/SectionIsCorrectlyTerminatedWhenCloseBraceImmediatelyFollowsCodeBlockNoWhitespace.syntaxtree.txt @@ -0,0 +1,35 @@ +Markup block - Gen - 31 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 31 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [Foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[Foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 16 - (14:0,14) + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Statement block - Gen - 14 - (16:1,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (16:1,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [if(true) {LF}] - SpanEditHandler;Accepts:Any - (17:1,1) - Symbols:8 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[true]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (30:2,1) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (31:2,2) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs index 82cd4f37c7..5354c54224 100644 --- a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs +++ b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs @@ -358,6 +358,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy if (UseBaselineTests && !IsTheory) { + SyntaxTreeVerifier.Verify(result); AssertSyntaxTreeNodeMatchesBaseline(result); return; } @@ -486,6 +487,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy if (UseBaselineTests && !IsTheory) { + SyntaxTreeVerifier.Verify(result); AssertSyntaxTreeNodeMatchesBaseline(result); return; }