From 999c24d78df1914039923cecd0ce45a7da50bdc9 Mon Sep 17 00:00:00 2001 From: Ajay Bhargav Baaskaran Date: Wed, 20 Jun 2018 17:27:39 -0700 Subject: [PATCH] Converted more parser tests to baselines - Converted CSharpAutoCompleteTest --- .../Legacy/AddTagHelperChunkGenerator.cs | 24 ++++ .../Legacy/DirectiveChunkGenerator.cs | 6 +- .../Legacy/DirectiveTokenChunkGenerator.cs | 16 ++- .../Legacy/RazorCommentChunkGenerator.cs | 5 + .../Legacy/RemoveTagHelperChunkGenerator.cs | 24 ++++ .../Legacy/TagHelperChunkGenerator.cs | 5 + .../TagHelperPrefixDirectiveChunkGenerator.cs | 20 +++ .../Legacy/TemplateBlockChunkGenerator.cs | 5 + .../Legacy/CSharpAutoCompleteTest.cs | 117 +++--------------- ...sDirectiveAutoCompleteAtEOF.syntaxtree.txt | 9 ++ ...veAutoCompleteAtStartOfFile.syntaxtree.txt | 10 ++ ...nDirectiveAutoCompleteAtEOF.syntaxtree.txt | 16 +++ ...veAutoCompleteAtStartOfFile.syntaxtree.txt | 29 +++++ ...atimBlockAutoCompleteAtEOF.diagnostics.txt | 1 + ...batimBlockAutoCompleteAtEOF.syntaxtree.txt | 7 ++ ...kAutoCompleteAtStartOfFile.diagnostics.txt | 1 + ...ckAutoCompleteAtStartOfFile.syntaxtree.txt | 21 ++++ ...lingNewlineInDesignTimeMode.syntaxtree.txt | 23 ++-- ...sionDoesNotAcceptDotAfterAt.syntaxtree.txt | 22 ++-- ...railingNewlineInRunTimeMode.syntaxtree.txt | 23 ++-- ...eSpaceOrNewlineAtDesignTime.syntaxtree.txt | 23 ++-- ...AtOutputsZeroLengthCodeSpan.syntaxtree.txt | 22 ++-- .../VerbatimBlock.syntaxtree.txt | 19 ++- .../Language/Legacy/ParserTestBase.cs | 5 + .../Language/Legacy/SyntaxTreeNodeWriter.cs | 90 ++++++-------- 25 files changed, 342 insertions(+), 201 deletions(-) create mode 100644 test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/FunctionsDirectiveAutoCompleteAtEOF.syntaxtree.txt create mode 100644 test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/FunctionsDirectiveAutoCompleteAtStartOfFile.syntaxtree.txt create mode 100644 test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/SectionDirectiveAutoCompleteAtEOF.syntaxtree.txt create mode 100644 test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/SectionDirectiveAutoCompleteAtStartOfFile.syntaxtree.txt create mode 100644 test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtEOF.diagnostics.txt create mode 100644 test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtEOF.syntaxtree.txt create mode 100644 test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtStartOfFile.diagnostics.txt create mode 100644 test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtStartOfFile.syntaxtree.txt diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/AddTagHelperChunkGenerator.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/AddTagHelperChunkGenerator.cs index 8c9d98633b..0345a706a8 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/AddTagHelperChunkGenerator.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/AddTagHelperChunkGenerator.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text; using Microsoft.Extensions.Internal; namespace Microsoft.AspNetCore.Razor.Language.Legacy @@ -63,5 +64,28 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return combiner.CombinedHash; } + + public override string ToString() + { + var builder = new StringBuilder("AddTagHelper:{"); + builder.Append(LookupText); + builder.Append(";"); + builder.Append(DirectiveText); + builder.Append(";"); + builder.Append(TypePattern); + builder.Append(";"); + builder.Append(AssemblyName); + builder.Append("}"); + + if (Diagnostics.Count > 0) + { + builder.Append(" ["); + var ids = string.Join(", ", Diagnostics.Select(diagnostic => diagnostic.Id)); + builder.Append(ids); + builder.Append("]"); + } + + return builder.ToString(); + } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/DirectiveChunkGenerator.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/DirectiveChunkGenerator.cs index c584de9cc8..b07399f032 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/DirectiveChunkGenerator.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/DirectiveChunkGenerator.cs @@ -60,8 +60,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { // This is used primarily at test time to show an identifiable representation of the chunk generator. - var builder = new StringBuilder("Directive {"); + var builder = new StringBuilder("Directive:{"); builder.Append(Descriptor.Directive); + builder.Append(";"); + builder.Append(Descriptor.Kind); + builder.Append(";"); + builder.Append(Descriptor.Usage); builder.Append("}"); if (Diagnostics.Count > 0) diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/DirectiveTokenChunkGenerator.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/DirectiveTokenChunkGenerator.cs index b7b2c9fe84..69327ba6e2 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/DirectiveTokenChunkGenerator.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/DirectiveTokenChunkGenerator.cs @@ -2,6 +2,7 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Text; using Microsoft.Extensions.Internal; namespace Microsoft.AspNetCore.Razor.Language.Legacy @@ -15,7 +16,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Descriptor = tokenDescriptor; } - public DirectiveTokenDescriptor Descriptor { get; set; } + public DirectiveTokenDescriptor Descriptor { get; } public override void Accept(ParserVisitor visitor, Span span) { @@ -37,5 +38,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return combiner.CombinedHash; } + + public override string ToString() + { + var builder = new StringBuilder("DirectiveToken {"); + builder.Append(Descriptor.Name); + builder.Append(";"); + builder.Append(Descriptor.Kind); + builder.Append(";Opt:"); + builder.Append(Descriptor.Optional); + builder.Append("}"); + + return builder.ToString(); + } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/RazorCommentChunkGenerator.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/RazorCommentChunkGenerator.cs index fdf6a6f1e4..4d3d13f0b0 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/RazorCommentChunkGenerator.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/RazorCommentChunkGenerator.cs @@ -9,5 +9,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { visitor.VisitCommentBlock(this, block); } + + public override string ToString() + { + return "RazorComment"; + } } } diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/RemoveTagHelperChunkGenerator.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/RemoveTagHelperChunkGenerator.cs index 09328bb69c..914d4d15ee 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/RemoveTagHelperChunkGenerator.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/RemoveTagHelperChunkGenerator.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text; using Microsoft.Extensions.Internal; namespace Microsoft.AspNetCore.Razor.Language.Legacy @@ -63,5 +64,28 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return combiner.CombinedHash; } + + public override string ToString() + { + var builder = new StringBuilder("RemoveTagHelper:{"); + builder.Append(LookupText); + builder.Append(";"); + builder.Append(DirectiveText); + builder.Append(";"); + builder.Append(TypePattern); + builder.Append(";"); + builder.Append(AssemblyName); + builder.Append("}"); + + if (Diagnostics.Count > 0) + { + builder.Append(" ["); + var ids = string.Join(", ", Diagnostics.Select(diagnostic => diagnostic.Id)); + builder.Append(ids); + builder.Append("]"); + } + + return builder.ToString(); + } } } \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/TagHelperChunkGenerator.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/TagHelperChunkGenerator.cs index 29a828f386..8f278edb2c 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/TagHelperChunkGenerator.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/TagHelperChunkGenerator.cs @@ -73,5 +73,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { visitor.VisitTagHelperBlock(this, block); } + + public override string ToString() + { + return "TagHelper"; + } } } \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/TagHelperPrefixDirectiveChunkGenerator.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/TagHelperPrefixDirectiveChunkGenerator.cs index bed1cadcc7..b116c5c3b3 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/TagHelperPrefixDirectiveChunkGenerator.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/TagHelperPrefixDirectiveChunkGenerator.cs @@ -4,6 +4,7 @@ using System; using System.Collections.Generic; using System.Linq; +using System.Text; using Microsoft.Extensions.Internal; namespace Microsoft.AspNetCore.Razor.Language.Legacy @@ -48,5 +49,24 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return combiner.CombinedHash; } + + public override string ToString() + { + var builder = new StringBuilder("TagHelperPrefix:{"); + builder.Append(Prefix); + builder.Append(";"); + builder.Append(DirectiveText); + builder.Append("}"); + + if (Diagnostics.Count > 0) + { + builder.Append(" ["); + var ids = string.Join(", ", Diagnostics.Select(diagnostic => diagnostic.Id)); + builder.Append(ids); + builder.Append("]"); + } + + return builder.ToString(); + } } } \ No newline at end of file diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/TemplateBlockChunkGenerator.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/TemplateBlockChunkGenerator.cs index 68212bf1b2..02940c1c31 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/TemplateBlockChunkGenerator.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/TemplateBlockChunkGenerator.cs @@ -19,5 +19,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { //context.ChunkTreeBuilder.EndParentChunk(); } + + public override string ToString() + { + return "Template"; + } } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpAutoCompleteTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpAutoCompleteTest.cs index 0ea7e057cc..4264b5a66a 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpAutoCompleteTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpAutoCompleteTest.cs @@ -10,136 +10,49 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { public class CSharpAutoCompleteTest : CsHtmlCodeParserTestBase { + public CSharpAutoCompleteTest() + { + UseBaselineTests = true; + } + [Fact] public void FunctionsDirectiveAutoCompleteAtEOF() { - // Arrange - var chunkGenerator = new DirectiveChunkGenerator(FunctionsDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(new SourceLocation(10, 0, 10), contentLength: 1), FunctionsDirective.Directive.Directive, "}", "{")); - - // Act & Assert - ParseBlockTest( - "@functions{", - new[] { FunctionsDirective.Directive }, - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("functions").Accepts(AcceptedCharactersInternal.None), - Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - Factory.EmptyCSharp().AsCodeBlock())); + // Arrange, Act & Assert + ParseBlockTest("@functions{", new[] { FunctionsDirective.Directive }); } [Fact] public void SectionDirectiveAutoCompleteAtEOF() { - // Arrange - var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(new SourceLocation(16, 0, 16), contentLength: 1), "section", "}", "{")); - - // Act & Assert - ParseBlockTest( - "@section Header {", - new[] { SectionDirective.Directive }, - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "Header", CSharpSymbolType.Identifier) - .AsDirectiveToken(SectionDirective.Directive.Tokens.First()), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.EmptyHtml()))); + // Arrange, Act & Assert + ParseBlockTest("@section Header {", new[] { SectionDirective.Directive }); } [Fact] public void VerbatimBlockAutoCompleteAtEOF() { - ParseBlockTest("@{", - new StatementBlock( - Factory.CodeTransition(), - Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), - Factory.EmptyCSharp() - .AsStatement() - .With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = "}" }) - ), - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), Resources.BlockName_Code, "}", "{")); + ParseBlockTest("@{"); } [Fact] public void FunctionsDirectiveAutoCompleteAtStartOfFile() { - // Arrange - var chunkGenerator = new DirectiveChunkGenerator(FunctionsDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(new SourceLocation(10, 0, 10), contentLength: 1), "functions", "}", "{")); - - // Act & Assert - ParseBlockTest( - "@functions{" + Environment.NewLine + "foo", - new[] { FunctionsDirective.Directive }, - new DirectiveBlock(chunkGenerator, - Factory.CodeTransition(), - Factory.MetaCode("functions").Accepts(AcceptedCharactersInternal.None), - Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - Factory.Code(Environment.NewLine + "foo").AsCodeBlock())); + // Arrange, Act & Assert + ParseBlockTest("@functions{" + Environment.NewLine + "foo", new[] { FunctionsDirective.Directive }); } [Fact] public void SectionDirectiveAutoCompleteAtStartOfFile() { - // Arrange - var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive); - chunkGenerator.Diagnostics.Add( - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(new SourceLocation(16, 0, 16), contentLength: 1), "section", "}", "{")); - - // Act & Assert - ParseBlockTest( - "@section Header {" + Environment.NewLine + "

Foo

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

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

"))))); + // Arrange, Act & Assert + ParseBlockTest("@section Header {" + Environment.NewLine + "

Foo

", new[] { SectionDirective.Directive }); } [Fact] public void VerbatimBlockAutoCompleteAtStartOfFile() { - ParseBlockTest( - "@{" + Environment.NewLine + "

", - new StatementBlock( - Factory.CodeTransition(), - Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), - Factory.Code(Environment.NewLine) - .AsStatement() - .With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = "}" }), - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), - new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharactersInternal.None))), - Factory.Span(SpanKindInternal.Code, new CSharpSymbol(string.Empty, CSharpSymbolType.Unknown)) - .With(new StatementChunkGenerator()) - ), - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), Resources.BlockName_Code, "}", "{")); + ParseBlockTest("@{" + Environment.NewLine + "

"); } } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/FunctionsDirectiveAutoCompleteAtEOF.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/FunctionsDirectiveAutoCompleteAtEOF.syntaxtree.txt new file mode 100644 index 0000000000..a4353cf354 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/FunctionsDirectiveAutoCompleteAtEOF.syntaxtree.txt @@ -0,0 +1,9 @@ +Directive block - Gen - 11 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [functions] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[functions]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[}];AtEnd - (10:0,10) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Code span - Gen - [] - CodeBlockEditHandler;Accepts:Any;CodeBlock - (11:0,11) - Symbols:1 + CSharpSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/FunctionsDirectiveAutoCompleteAtStartOfFile.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/FunctionsDirectiveAutoCompleteAtStartOfFile.syntaxtree.txt new file mode 100644 index 0000000000..7a268f583d --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/FunctionsDirectiveAutoCompleteAtStartOfFile.syntaxtree.txt @@ -0,0 +1,10 @@ +Directive block - Gen - 16 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [functions] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[functions]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[}];AtEnd - (10:0,10) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Code span - Gen - [LFfoo] - CodeBlockEditHandler;Accepts:Any;CodeBlock - (11:0,11) - Symbols:2 + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Identifier;[foo]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/SectionDirectiveAutoCompleteAtEOF.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/SectionDirectiveAutoCompleteAtEOF.syntaxtree.txt new file mode 100644 index 0000000000..c9a6364f31 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/SectionDirectiveAutoCompleteAtEOF.syntaxtree.txt @@ -0,0 +1,16 @@ +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 - [Header] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[Header]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (15:0,15) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[}];AtEnd - (16:0,16) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 0 - (17:0,17) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/SectionDirectiveAutoCompleteAtStartOfFile.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/SectionDirectiveAutoCompleteAtStartOfFile.syntaxtree.txt new file mode 100644 index 0000000000..b117855d2b --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/SectionDirectiveAutoCompleteAtStartOfFile.syntaxtree.txt @@ -0,0 +1,29 @@ +Directive block - Gen - 29 - (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 - [Header] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[Header]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (15:0,15) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[}];AtEnd - (16:0,16) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 12 - (17:0,17) + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Tag block - Gen - 3 - (19:1,0) + Markup span - Gen - [

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

] - SpanEditHandler;Accepts:Any - (25:1,6) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtEOF.diagnostics.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtEOF.diagnostics.txt new file mode 100644 index 0000000000..1ced8c1b88 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtEOF.diagnostics.txt @@ -0,0 +1 @@ +(1,2): Error RZ1006: The code block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup. diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtEOF.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtEOF.syntaxtree.txt new file mode 100644 index 0000000000..7637638d62 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtEOF.syntaxtree.txt @@ -0,0 +1,7 @@ +Statement block - Gen - 2 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Code span - Gen - [] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[}];AtEOL - (2:0,2) - Symbols:1 + CSharpSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtStartOfFile.diagnostics.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtStartOfFile.diagnostics.txt new file mode 100644 index 0000000000..1ced8c1b88 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtStartOfFile.diagnostics.txt @@ -0,0 +1 @@ +(1,2): Error RZ1006: The code block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup. diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtStartOfFile.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtStartOfFile.syntaxtree.txt new file mode 100644 index 0000000000..8066a192b7 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpAutoCompleteTest/VerbatimBlockAutoCompleteAtStartOfFile.syntaxtree.txt @@ -0,0 +1,21 @@ +Statement block - Gen - 11 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Code span - Gen - [LF] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[}];AtEOL - (2:0,2) - Symbols:1 + CSharpSymbolType.NewLine;[LF]; + Markup block - Gen - 7 - (4:1,0) + Tag block - Gen - 3 - (4:1,0) + Markup span - Gen - [

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

] - SpanEditHandler;Accepts:None - (7:1,3) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Code span - Gen - [] - SpanEditHandler;Accepts:Any - (11:1,7) - Symbols:1 + CSharpSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionAcceptsTrailingNewlineInDesignTimeMode.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionAcceptsTrailingNewlineInDesignTimeMode.syntaxtree.txt index 5ee8b370e0..9302c75396 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionAcceptsTrailingNewlineInDesignTimeMode.syntaxtree.txt +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionAcceptsTrailingNewlineInDesignTimeMode.syntaxtree.txt @@ -1,8 +1,15 @@ -Statement block - NullParentChunkGenerator - 9 - (0:0,0) - MetaCode span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - { - (0:0,0) - Code span - StatementChunkGenerator - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - - (1:0,1) - Expression block - ExpressionChunkGenerator - 5 - (1:0,1) - Transition span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - @ - (1:0,1) - Code span - ExpressionChunkGenerator - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[ATD];K14 - foo. - (2:0,2) - Code span - StatementChunkGenerator - SpanEditHandler;Accepts:Any - LF - (6:0,6) - MetaCode span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - } - (8:1,0) +Statement block - Gen - 9 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Code span - Gen - [] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - (1:0,1) - Symbols:1 + CSharpSymbolType.Unknown;[]; + Expression block - Gen - 5 - (1:0,1) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [foo.] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[ATD];K14 - (2:0,2) - Symbols:2 + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.Dot;[.]; + Code span - Gen - [LF] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:1 + CSharpSymbolType.NewLine;[LF]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (8:1,0) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionDoesNotAcceptDotAfterAt.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionDoesNotAcceptDotAfterAt.syntaxtree.txt index d0857f86f0..bec3b503d0 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionDoesNotAcceptDotAfterAt.syntaxtree.txt +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionDoesNotAcceptDotAfterAt.syntaxtree.txt @@ -1,8 +1,14 @@ -Statement block - NullParentChunkGenerator - 4 - (0:0,0) - MetaCode span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - { - (0:0,0) - Code span - StatementChunkGenerator - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - - (1:0,1) - Expression block - ExpressionChunkGenerator - 1 - (1:0,1) - Transition span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - @ - (1:0,1) - Code span - ExpressionChunkGenerator - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[ATD];K14 - - (2:0,2) - Code span - StatementChunkGenerator - SpanEditHandler;Accepts:Any - . - (2:0,2) - MetaCode span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - } - (3:0,3) +Statement block - Gen - 4 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Code span - Gen - [] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - (1:0,1) - Symbols:1 + CSharpSymbolType.Unknown;[]; + Expression block - Gen - 1 - (1:0,1) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[ATD];K14 - (2:0,2) - Symbols:1 + CSharpSymbolType.Unknown;[]; + Code span - Gen - [.] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:1 + CSharpSymbolType.Dot;[.]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (3:0,3) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionDoesNotAcceptTrailingNewlineInRunTimeMode.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionDoesNotAcceptTrailingNewlineInRunTimeMode.syntaxtree.txt index 5ee8b370e0..9302c75396 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionDoesNotAcceptTrailingNewlineInRunTimeMode.syntaxtree.txt +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionDoesNotAcceptTrailingNewlineInRunTimeMode.syntaxtree.txt @@ -1,8 +1,15 @@ -Statement block - NullParentChunkGenerator - 9 - (0:0,0) - MetaCode span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - { - (0:0,0) - Code span - StatementChunkGenerator - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - - (1:0,1) - Expression block - ExpressionChunkGenerator - 5 - (1:0,1) - Transition span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - @ - (1:0,1) - Code span - ExpressionChunkGenerator - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[ATD];K14 - foo. - (2:0,2) - Code span - StatementChunkGenerator - SpanEditHandler;Accepts:Any - LF - (6:0,6) - MetaCode span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - } - (8:1,0) +Statement block - Gen - 9 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Code span - Gen - [] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - (1:0,1) - Symbols:1 + CSharpSymbolType.Unknown;[]; + Expression block - Gen - 5 - (1:0,1) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [foo.] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[ATD];K14 - (2:0,2) - Symbols:2 + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.Dot;[.]; + Code span - Gen - [LF] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:1 + CSharpSymbolType.NewLine;[LF]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (8:1,0) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionWithOnlySingleAtAcceptsSingleSpaceOrNewlineAtDesignTime.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionWithOnlySingleAtAcceptsSingleSpaceOrNewlineAtDesignTime.syntaxtree.txt index 74caffc857..26eab9de90 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionWithOnlySingleAtAcceptsSingleSpaceOrNewlineAtDesignTime.syntaxtree.txt +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionWithOnlySingleAtAcceptsSingleSpaceOrNewlineAtDesignTime.syntaxtree.txt @@ -1,8 +1,15 @@ -Statement block - NullParentChunkGenerator - 11 - (0:0,0) - MetaCode span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - { - (0:0,0) - Code span - StatementChunkGenerator - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - LF - (1:0,1) - Expression block - ExpressionChunkGenerator - 1 - (7:1,4) - Transition span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - @ - (7:1,4) - Code span - ExpressionChunkGenerator - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[ATD];K14 - - (8:1,5) - Code span - StatementChunkGenerator - SpanEditHandler;Accepts:Any - LF - (8:1,5) - MetaCode span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - } - (10:2,0) +Statement block - Gen - 11 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Code span - Gen - [LF ] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - (1:0,1) - Symbols:2 + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + Expression block - Gen - 1 - (7:1,4) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (7:1,4) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[ATD];K14 - (8:1,5) - Symbols:1 + CSharpSymbolType.Unknown;[]; + Code span - Gen - [LF] - SpanEditHandler;Accepts:Any - (8:1,5) - Symbols:1 + CSharpSymbolType.NewLine;[LF]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (10:2,0) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionWithOnlySingleAtOutputsZeroLengthCodeSpan.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionWithOnlySingleAtOutputsZeroLengthCodeSpan.syntaxtree.txt index dcc86f7429..f4ca85113e 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionWithOnlySingleAtOutputsZeroLengthCodeSpan.syntaxtree.txt +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/InnerImplicitExpressionWithOnlySingleAtOutputsZeroLengthCodeSpan.syntaxtree.txt @@ -1,8 +1,14 @@ -Statement block - NullParentChunkGenerator - 3 - (0:0,0) - MetaCode span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - { - (0:0,0) - Code span - StatementChunkGenerator - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - - (1:0,1) - Expression block - ExpressionChunkGenerator - 1 - (1:0,1) - Transition span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - @ - (1:0,1) - Code span - ExpressionChunkGenerator - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[ATD];K14 - - (2:0,2) - Code span - StatementChunkGenerator - SpanEditHandler;Accepts:Any - - (2:0,2) - MetaCode span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - } - (2:0,2) +Statement block - Gen - 3 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Code span - Gen - [] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - (1:0,1) - Symbols:1 + CSharpSymbolType.Unknown;[]; + Expression block - Gen - 1 - (1:0,1) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[ATD];K14 - (2:0,2) - Symbols:1 + CSharpSymbolType.Unknown;[]; + Code span - Gen - [] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:1 + CSharpSymbolType.Unknown;[]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (2:0,2) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/VerbatimBlock.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/VerbatimBlock.syntaxtree.txt index fc2ac0edce..d10b13cfc1 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/VerbatimBlock.syntaxtree.txt +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpVerbatimBlockTest/VerbatimBlock.syntaxtree.txt @@ -1,5 +1,14 @@ -Statement block - NullParentChunkGenerator - 11 - (0:0,0) - Transition span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - @ - (0:0,0) - MetaCode span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - { - (1:0,1) - Code span - StatementChunkGenerator - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - foo(); - (2:0,2) - MetaCode span - NullSpanChunkGenerator - SpanEditHandler;Accepts:None - } - (10:0,10) +Statement block - Gen - 11 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Code span - Gen - [ foo(); ] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - (2:0,2) - Symbols:6 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (10:0,10) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; 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 4541d04e24..463b8bd486 100644 --- a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs +++ b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs @@ -278,6 +278,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest(document, null, designTime, new RazorDiagnostic[0]); } + internal virtual void ParseBlockTest(string document, IEnumerable directives) + { + ParseBlockTest(document, directives, null); + } + internal virtual void ParseBlockTest(string document, params RazorDiagnostic[] expectedErrors) { ParseBlockTest(document, false, expectedErrors); diff --git a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/SyntaxTreeNodeWriter.cs b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/SyntaxTreeNodeWriter.cs index d6698e40c2..290d79c459 100644 --- a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/SyntaxTreeNodeWriter.cs +++ b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/SyntaxTreeNodeWriter.cs @@ -2,7 +2,9 @@ // Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. using System; +using System.Collections.Generic; using System.IO; +using System.Linq; namespace Microsoft.AspNetCore.Razor.Language.Legacy { @@ -52,12 +54,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy public override void VisitAttributeBlock(AttributeBlockChunkGenerator chunkGenerator, Block block) { WriteBlock(block); - WriteSeparator(); - Write(chunkGenerator.Name); - WriteSeparator(); - WriteLocationTaggedString(chunkGenerator.Prefix); - WriteSeparator(); - WriteLocationTaggedString(chunkGenerator.Suffix); } public override void VisitCommentBlock(RazorCommentChunkGenerator chunkGenerator, Block block) @@ -68,21 +64,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy public override void VisitDirectiveBlock(DirectiveChunkGenerator chunkGenerator, Block block) { WriteBlock(block); - WriteSeparator(); - Write(chunkGenerator.Descriptor.Directive); - WriteSeparator(); - Write(chunkGenerator.Descriptor.Kind); - WriteSeparator(); - Write(chunkGenerator.Descriptor.Usage); } public override void VisitDynamicAttributeBlock(DynamicAttributeBlockChunkGenerator chunkGenerator, Block block) { WriteBlock(block); - WriteSeparator(); - WriteLocationTaggedString(chunkGenerator.Prefix); - WriteSeparator(); - WriteSourceLocation(chunkGenerator.ValueStart); } public override void VisitExpressionBlock(ExpressionChunkGenerator chunkGenerator, Block block) @@ -103,14 +89,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy public override void VisitAddTagHelperSpan(AddTagHelperChunkGenerator chunkGenerator, Span span) { WriteSpan(span); - WriteSeparator(); - Write(chunkGenerator.LookupText); - WriteSeparator(); - Write(chunkGenerator.DirectiveText); - WriteSeparator(); - Write(chunkGenerator.TypePattern); - WriteSeparator(); - Write(chunkGenerator.AssemblyName); } public override void VisitExpressionSpan(ExpressionChunkGenerator chunkGenerator, Span span) @@ -121,39 +99,21 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy public override void VisitImportSpan(AddImportChunkGenerator chunkGenerator, Span span) { WriteSpan(span); - WriteSeparator(); - Write(chunkGenerator.Namespace); } public override void VisitLiteralAttributeSpan(LiteralAttributeChunkGenerator chunkGenerator, Span span) { WriteSpan(span); - WriteSeparator(); - WriteLocationTaggedString(chunkGenerator.Prefix); - WriteSeparator(); - WriteLocationTaggedString(chunkGenerator.Value); } public override void VisitRemoveTagHelperSpan(RemoveTagHelperChunkGenerator chunkGenerator, Span span) { WriteSpan(span); - WriteSeparator(); - Write(chunkGenerator.LookupText); - WriteSeparator(); - Write(chunkGenerator.DirectiveText); - WriteSeparator(); - Write(chunkGenerator.TypePattern); - WriteSeparator(); - Write(chunkGenerator.AssemblyName); } public override void VisitTagHelperPrefixDirectiveSpan(TagHelperPrefixDirectiveChunkGenerator chunkGenerator, Span span) { WriteSpan(span); - WriteSeparator(); - Write(chunkGenerator.Prefix); - WriteSeparator(); - Write(chunkGenerator.DirectiveText); } public override void VisitStatementSpan(StatementChunkGenerator chunkGenerator, Span span) @@ -164,12 +124,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy public override void VisitDirectiveToken(DirectiveTokenChunkGenerator chunkGenerator, Span span) { WriteSpan(span); - WriteSeparator(); - Write(chunkGenerator.Descriptor.Kind); - WriteSeparator(); - Write(chunkGenerator.Descriptor.Name); - WriteSeparator(); - Write($"Optional: {chunkGenerator.Descriptor.Optional}"); } protected void WriteBlock(Block block) @@ -177,7 +131,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy WriteIndent(); Write($"{block.Type} block"); WriteSeparator(); - Write(block.ChunkGenerator.GetType().Name); + Write($"Gen<{block.ChunkGenerator}>"); WriteSeparator(); Write(block.Length); WriteSeparator(); @@ -189,13 +143,45 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy WriteIndent(); Write($"{span.Kind} span"); WriteSeparator(); - Write(span.ChunkGenerator.GetType().Name); + Write($"Gen<{span.ChunkGenerator}>"); + WriteSeparator(); + Write($"[{span.Content}]"); WriteSeparator(); Write(span.EditHandler); WriteSeparator(); - Write(span.Content); - WriteSeparator(); WriteSourceLocation(span.Start); + WriteSeparator(); + Write($"Symbols:{span.Symbols.Count}"); + + // Write symbols + Depth++; + foreach (var symbol in span.Symbols) + { + WriteNewLine(); + WriteIndent(); + WriteSymbol(symbol); + } + Depth--; + } + + protected void WriteSymbol(ISymbol symbol) + { + var symbolType = string.Empty; + IEnumerable diagnostics = RazorDiagnostic.EmptyArray; + + if (symbol is HtmlSymbol htmlSymbol) + { + symbolType = $"{htmlSymbol.Type.GetType().Name}.{htmlSymbol.Type}"; + diagnostics = htmlSymbol.Errors; + } + else if (symbol is CSharpSymbol csharpSymbol) + { + symbolType = $"{csharpSymbol.Type.GetType().Name}.{csharpSymbol.Type}"; + diagnostics = csharpSymbol.Errors; + } + + var symbolString = $"{symbolType};[{symbol.Content}];{string.Join(",", diagnostics.Select(diagnostic => diagnostic.Id))}"; + Write(symbolString); } protected void WriteSourceLocation(SourceLocation location)