diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpBlockTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpBlockTest.cs index fa22393a46..32755fcbfd 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpBlockTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpBlockTest.cs @@ -8,43 +8,21 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { public class CSharpBlockTest : CsHtmlCodeParserTestBase { + public CSharpBlockTest() + { + UseBaselineTests = true; + } + [Fact] public void ParseBlock_NestedCodeBlockWithCSharpAt() { - ParseBlockTest("{ if (true) { var val = @x; if (val != 3) { } } }", - new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), - Factory - .Code(" if (true) { var val = @x; if (val != 3) { } } ") - .AsStatement() - .Accepts(AcceptedCharactersInternal.Any) - .AutoCompleteWith(autoCompleteString: null, atEndOfSpan: false), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None))); + ParseBlockTest("{ if (true) { var val = @x; if (val != 3) { } } }"); } [Fact] public void ParseBlock_NestedCodeBlockWithMarkupSetsDotAsMarkup() { - ParseBlockTest("if (true) { @if(false) {
@something.
} }", - new StatementBlock( - Factory.Code("if (true) { ").AsStatement(), - new StatementBlock( - Factory.CodeTransition(), - Factory.Code("if(false) {").AsStatement(), - new MarkupBlock( - Factory.Markup(" "), - BlockFactory.MarkupTagBlock("
", AcceptedCharactersInternal.None), - Factory.EmptyHtml(), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("something") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: false) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - Factory.Markup("."), - BlockFactory.MarkupTagBlock("
", AcceptedCharactersInternal.None), - Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)), - Factory.Code("}").AsStatement()), - Factory.Code(" }").AsStatement())); + ParseBlockTest("if (true) { @if(false) {
@something.
} }"); } [Fact] @@ -53,20 +31,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy SingleSpanBlockTest(@"if(foo) { // bar } "" baz ' zoop(); -}", BlockKindInternal.Statement, SpanKindInternal.Code); +}"); } [Fact] public void NestedCodeBlockWithAtDoesntCauseError() { - ParseBlockTest("if (true) { @if(false) { } }", - new StatementBlock( - Factory.Code("if (true) { ").AsStatement(), - new StatementBlock( - Factory.CodeTransition(), - Factory.Code("if(false) { }").AsStatement() - ), - Factory.Code(" }").AsStatement())); + ParseBlockTest("if (true) { @if(false) { } }"); } [Fact] @@ -76,125 +47,97 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy @"if(foo) { /* bar } "" */ ' baz } ' zoop(); -}", BlockKindInternal.Statement, SpanKindInternal.Code); +}"); } [Fact] public void ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsForKeyword() { SingleSpanBlockTest( - "for(int i = 0; i < 10; new Foo { Bar = \"baz\" }) { Debug.WriteLine(@\"foo } bar\"); }", - BlockKindInternal.Statement, - SpanKindInternal.Code, - acceptedCharacters: AcceptedCharactersInternal.None); + "for(int i = 0; i < 10; new Foo { Bar = \"baz\" }) { Debug.WriteLine(@\"foo } bar\"); }"); } [Fact] public void ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsForeachKeyword() { SingleSpanBlockTest( - "foreach(int i = 0; i < 10; new Foo { Bar = \"baz\" }) { Debug.WriteLine(@\"foo } bar\"); }", - BlockKindInternal.Statement, - SpanKindInternal.Code, - acceptedCharacters: AcceptedCharactersInternal.None); + "foreach(int i = 0; i < 10; new Foo { Bar = \"baz\" }) { Debug.WriteLine(@\"foo } bar\"); }"); } [Fact] public void ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsWhileKeyword() { SingleSpanBlockTest( - "while(int i = 0; i < 10; new Foo { Bar = \"baz\" }) { Debug.WriteLine(@\"foo } bar\"); }", - BlockKindInternal.Statement, - SpanKindInternal.Code, - acceptedCharacters: AcceptedCharactersInternal.None); + "while(int i = 0; i < 10; new Foo { Bar = \"baz\" }) { Debug.WriteLine(@\"foo } bar\"); }"); } [Fact] public void ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsUsingKeywordFollowedByParen() { SingleSpanBlockTest( - "using(int i = 0; i < 10; new Foo { Bar = \"baz\" }) { Debug.WriteLine(@\"foo } bar\"); }", - BlockKindInternal.Statement, - SpanKindInternal.Code, acceptedCharacters: AcceptedCharactersInternal.None); + "using(int i = 0; i < 10; new Foo { Bar = \"baz\" }) { Debug.WriteLine(@\"foo } bar\"); }"); } [Fact] public void ParseBlockSupportsUsingsNestedWithinOtherBlocks() { SingleSpanBlockTest( - "if(foo) { using(int i = 0; i < 10; new Foo { Bar = \"baz\" }) { Debug.WriteLine(@\"foo } bar\"); } }", - BlockKindInternal.Statement, - SpanKindInternal.Code); + "if(foo) { using(int i = 0; i < 10; new Foo { Bar = \"baz\" }) { Debug.WriteLine(@\"foo } bar\"); } }"); } [Fact] public void ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsIfKeywordWithNoElseBranches() { SingleSpanBlockTest( - "if(int i = 0; i < 10; new Foo { Bar = \"baz\" }) { Debug.WriteLine(@\"foo } bar\"); }", - BlockKindInternal.Statement, - SpanKindInternal.Code); + "if(int i = 0; i < 10; new Foo { Bar = \"baz\" }) { Debug.WriteLine(@\"foo } bar\"); }"); } [Fact] public void ParseBlockAllowsEmptyBlockStatement() { - SingleSpanBlockTest("if(false) { }", BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest("if(false) { }"); } [Fact] public void ParseBlockTerminatesParenBalancingAtEOF() { ImplicitExpressionTest( - "Html.En(code()", "Html.En(code()", - AcceptedCharactersInternal.Any, - RazorDiagnosticFactory.CreateParsing_ExpectedCloseBracketBeforeEOF( - new SourceSpan(new SourceLocation(8, 0, 8), contentLength: 1), "(", ")")); + "Html.En(code()", "Html.En(code()"); } [Fact] public void ParseBlockSupportsBlockCommentBetweenIfAndElseClause() { SingleSpanBlockTest( - "if(foo) { bar(); } /* Foo */ /* Bar */ else { baz(); }", - BlockKindInternal.Statement, - SpanKindInternal.Code, - acceptedCharacters: AcceptedCharactersInternal.None); + "if(foo) { bar(); } /* Foo */ /* Bar */ else { baz(); }"); } [Fact] public void ParseBlockSupportsRazorCommentBetweenIfAndElseClause() { RunRazorCommentBetweenClausesTest( - "if(foo) { bar(); } ", " else { baz(); }", - acceptedCharacters: AcceptedCharactersInternal.None); + "if(foo) { bar(); } ", " else { baz(); }"); } [Fact] public void ParseBlockSupportsBlockCommentBetweenElseIfAndElseClause() { SingleSpanBlockTest( - "if(foo) { bar(); } else if(bar) { baz(); } /* Foo */ /* Bar */ else { biz(); }", - BlockKindInternal.Statement, - SpanKindInternal.Code, - acceptedCharacters: AcceptedCharactersInternal.None); + "if(foo) { bar(); } else if(bar) { baz(); } /* Foo */ /* Bar */ else { biz(); }"); } [Fact] public void ParseBlockSupportsRazorCommentBetweenElseIfAndElseClause() { RunRazorCommentBetweenClausesTest( - "if(foo) { bar(); } else if(bar) { baz(); } ", " else { baz(); }", - acceptedCharacters: AcceptedCharactersInternal.None); + "if(foo) { bar(); } else if(bar) { baz(); } ", " else { baz(); }"); } [Fact] public void ParseBlockSupportsBlockCommentBetweenIfAndElseIfClause() { SingleSpanBlockTest( - "if(foo) { bar(); } /* Foo */ /* Bar */ else if(bar) { baz(); }", - BlockKindInternal.Statement, - SpanKindInternal.Code); + "if(foo) { bar(); } /* Foo */ /* Bar */ else if(bar) { baz(); }"); } [Fact] @@ -209,7 +152,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy SingleSpanBlockTest(@"if(foo) { bar(); } // Foo // Bar -else { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCharacters: AcceptedCharactersInternal.None); +else { baz(); }"); } [Fact] @@ -218,7 +161,7 @@ else { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCh SingleSpanBlockTest(@"if(foo) { bar(); } else if(bar) { baz(); } // Foo // Bar -else { biz(); }", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCharacters: AcceptedCharactersInternal.None); +else { biz(); }"); } [Fact] @@ -227,7 +170,7 @@ else { biz(); }", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCh SingleSpanBlockTest(@"if(foo) { bar(); } // Foo // Bar -else if(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); +else if(bar) { baz(); }"); } [Fact] @@ -241,7 +184,7 @@ else if(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); }"; const string document = ifStatement + elseIfBranch; - SingleSpanBlockTest(document, BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest(document); } [Fact] @@ -254,7 +197,7 @@ else if(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); Debug.WriteLine(@""bar } baz""); }"; const string document = ifStatement + elseIfBranch + elseIfBranch + elseIfBranch + elseIfBranch; - SingleSpanBlockTest(document, BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest(document); } [Fact] @@ -269,7 +212,7 @@ else if(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); const string elseBranch = @" else { Debug.WriteLine(@""bar } baz""); }"; const string document = ifStatement + elseIfBranch + elseIfBranch + elseBranch; - SingleSpanBlockTest(document, BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCharacters: AcceptedCharactersInternal.None); + SingleSpanBlockTest(document); } [Fact] @@ -283,11 +226,8 @@ else if(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); }"; const string elseBranch = @" else { Debug.WriteLine(@""bar } baz""); }"; const string document = ifStatement + elseIfBranch + elseBranch + elseIfBranch; - const string expected = ifStatement + elseIfBranch + elseBranch; - ParseBlockTest( - document, - new StatementBlock(Factory.Code(expected).AsStatement().Accepts(AcceptedCharactersInternal.None))); + ParseBlockTest(document); } [Fact] @@ -297,7 +237,7 @@ else if(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); Debug.WriteLine(@""foo } bar""); }"; - SingleSpanBlockTest(document, BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest(document); } [Fact] @@ -311,55 +251,46 @@ else if(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); const string elseIfBranch = @" else if { foo(); }"; const string document = ifBranch + elseIfBranch; - SingleSpanBlockTest(document, BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest(document); } [Fact] public void ParseBlockCorrectlyParsesDoWhileBlock() { SingleSpanBlockTest( - "do { var foo = bar; } while(foo != bar);", - BlockKindInternal.Statement, - SpanKindInternal.Code, - acceptedCharacters: AcceptedCharactersInternal.None); + "do { var foo = bar; } while(foo != bar);"); } [Fact] public void ParseBlockCorrectlyParsesDoWhileBlockMissingSemicolon() { - SingleSpanBlockTest("do { var foo = bar; } while(foo != bar)", BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest("do { var foo = bar; } while(foo != bar)"); } [Fact] public void ParseBlockCorrectlyParsesDoWhileBlockMissingWhileCondition() { - SingleSpanBlockTest("do { var foo = bar; } while", BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest("do { var foo = bar; } while"); } [Fact] public void ParseBlockCorrectlyParsesDoWhileBlockMissingWhileConditionWithSemicolon() { SingleSpanBlockTest( - "do { var foo = bar; } while;", - BlockKindInternal.Statement, - SpanKindInternal.Code, - acceptedCharacters: AcceptedCharactersInternal.None); + "do { var foo = bar; } while;"); } [Fact] public void ParseBlockCorrectlyParsesDoWhileBlockMissingWhileClauseEntirely() { - SingleSpanBlockTest("do { var foo = bar; } narf;", "do { var foo = bar; }", BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest("do { var foo = bar; } narf;"); } [Fact] public void ParseBlockSupportsBlockCommentBetweenDoAndWhileClause() { SingleSpanBlockTest( - "do { var foo = bar; } /* Foo */ /* Bar */ while(true);", - BlockKindInternal.Statement, - SpanKindInternal.Code, - acceptedCharacters: AcceptedCharactersInternal.None); + "do { var foo = bar; } /* Foo */ /* Bar */ while(true);"); } [Fact] @@ -368,33 +299,20 @@ else if(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); SingleSpanBlockTest(@"do { var foo = bar; } // Foo // Bar -while(true);", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCharacters: AcceptedCharactersInternal.None); +while(true);"); } [Fact] public void ParseBlockSupportsRazorCommentBetweenDoAndWhileClause() { RunRazorCommentBetweenClausesTest( - "do { var foo = bar; } ", " while(true);", - acceptedCharacters: AcceptedCharactersInternal.None); + "do { var foo = bar; } ", " while(true);"); } [Fact] public void ParseBlockCorrectlyParsesMarkupInDoWhileBlock() { - ParseBlockTest("@do { var foo = bar;

Foo

foo++; } while (foo);", - new StatementBlock( - Factory.CodeTransition(), - Factory.Code("do { var foo = bar;").AsStatement(), - new MarkupBlock( - Factory.Markup(" "), - BlockFactory.MarkupTagBlock("

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

", AcceptedCharactersInternal.None), - Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None) - ), - Factory.Code("foo++; } while (foo);").AsStatement().Accepts(AcceptedCharactersInternal.None) - )); + ParseBlockTest("@do { var foo = bar;

Foo

foo++; } while (foo);"); } [Fact] @@ -411,158 +329,113 @@ while(true);", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedChara return; default: return; -}", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCharacters: AcceptedCharactersInternal.None); +}"); } [Fact] public void ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsLockKeyword() { SingleSpanBlockTest( - "lock(foo) { Debug.WriteLine(@\"foo } bar\"); }", - BlockKindInternal.Statement, - SpanKindInternal.Code, - acceptedCharacters: AcceptedCharactersInternal.None); + "lock(foo) { Debug.WriteLine(@\"foo } bar\"); }"); } [Fact] public void ParseBlockHasErrorsIfNamespaceImportMissingSemicolon() { - NamespaceImportTest( - "using Foo.Bar.Baz", - " Foo.Bar.Baz", - acceptedCharacters: AcceptedCharactersInternal.NonWhiteSpace | AcceptedCharactersInternal.WhiteSpace, - location: new SourceLocation(17, 0, 17)); + ParseBlockTest( + "using Foo.Bar.Baz"); } [Fact] public void ParseBlockHasErrorsIfNamespaceAliasMissingSemicolon() { - NamespaceImportTest( - "using Foo.Bar.Baz = FooBarBaz", - " Foo.Bar.Baz = FooBarBaz", - acceptedCharacters: AcceptedCharactersInternal.NonWhiteSpace | AcceptedCharactersInternal.WhiteSpace, - location: new SourceLocation(29, 0, 29)); + ParseBlockTest( + "using Foo.Bar.Baz = FooBarBaz"); } [Fact] public void ParseBlockParsesNamespaceImportWithSemicolonForUsingKeywordIfIsInValidFormat() { - NamespaceImportTest( - "using Foo.Bar.Baz;", - " Foo.Bar.Baz", - AcceptedCharactersInternal.NonWhiteSpace | AcceptedCharactersInternal.WhiteSpace); + ParseBlockTest( + "using Foo.Bar.Baz;"); } [Fact] public void ParseBlockDoesntCaptureWhitespaceAfterUsing() { - ParseBlockTest("using Foo ", - new DirectiveBlock( - Factory.Code("using Foo") - .AsNamespaceImport(" Foo") - .Accepts(AcceptedCharactersInternal.NonWhiteSpace | AcceptedCharactersInternal.WhiteSpace))); + ParseBlockTest("using Foo "); } [Fact] public void ParseBlockCapturesNewlineAfterUsing() { - ParseBlockTest($"using Foo{Environment.NewLine}", - new DirectiveBlock( - Factory.Code($"using Foo{Environment.NewLine}") - .AsNamespaceImport(" Foo") - .Accepts(AcceptedCharactersInternal.NonWhiteSpace | AcceptedCharactersInternal.WhiteSpace))); + ParseBlockTest($"using Foo{Environment.NewLine}"); } [Fact] public void ParseBlockParsesNamespaceAliasWithSemicolonForUsingKeywordIfIsInValidFormat() { - NamespaceImportTest( - "using FooBarBaz = FooBarBaz;", - " FooBarBaz = FooBarBaz", - AcceptedCharactersInternal.NonWhiteSpace | AcceptedCharactersInternal.WhiteSpace); + ParseBlockTest( + "using FooBarBaz = FooBarBaz;"); } [Fact] public void ParseBlockTerminatesUsingKeywordAtEOFAndOutputsFileCodeBlock() { - SingleSpanBlockTest("using ", BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest("using "); } [Fact] public void ParseBlockTerminatesSingleLineCommentAtEndOfFile() { const string document = "foreach(var f in Foo) { // foo bar baz"; - SingleSpanBlockTest( - document, - document, - BlockKindInternal.Statement, - SpanKindInternal.Code, - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(SourceLocation.Zero, contentLength: 1), "foreach", "}", "{")); + SingleSpanBlockTest(document); } [Fact] public void ParseBlockTerminatesBlockCommentAtEndOfFile() { const string document = "foreach(var f in Foo) { /* foo bar baz"; - SingleSpanBlockTest( - document, - document, - BlockKindInternal.Statement, - SpanKindInternal.Code, - RazorDiagnosticFactory.CreateParsing_BlockCommentNotTerminated( - new SourceSpan(new SourceLocation(24, 0, 24), contentLength: 1)), - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(SourceLocation.Zero, contentLength: 1), "foreach", "}", "{")); + SingleSpanBlockTest(document); } [Fact] public void ParseBlockTerminatesSingleSlashAtEndOfFile() { const string document = "foreach(var f in Foo) { / foo bar baz"; - SingleSpanBlockTest( - document, - document, - BlockKindInternal.Statement, - SpanKindInternal.Code, - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(SourceLocation.Zero, contentLength: 1), "foreach", "}", "{")); + SingleSpanBlockTest(document); } [Fact] public void ParseBlockSupportsBlockCommentBetweenTryAndFinallyClause() { - SingleSpanBlockTest("try { bar(); } /* Foo */ /* Bar */ finally { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCharacters: AcceptedCharactersInternal.None); + SingleSpanBlockTest("try { bar(); } /* Foo */ /* Bar */ finally { baz(); }"); } [Fact] public void ParseBlockSupportsRazorCommentBetweenTryAndFinallyClause() { - RunRazorCommentBetweenClausesTest("try { bar(); } ", " finally { biz(); }", acceptedCharacters: AcceptedCharactersInternal.None); + RunRazorCommentBetweenClausesTest("try { bar(); } ", " finally { biz(); }"); } [Fact] public void ParseBlockSupportsBlockCommentBetweenCatchAndFinallyClause() { SingleSpanBlockTest( - "try { bar(); } catch(bar) { baz(); } /* Foo */ /* Bar */ finally { biz(); }", - BlockKindInternal.Statement, - SpanKindInternal.Code, - acceptedCharacters: AcceptedCharactersInternal.None); + "try { bar(); } catch(bar) { baz(); } /* Foo */ /* Bar */ finally { biz(); }"); } [Fact] public void ParseBlockSupportsRazorCommentBetweenCatchAndFinallyClause() { RunRazorCommentBetweenClausesTest( - "try { bar(); } catch(bar) { baz(); } ", " finally { biz(); }", - acceptedCharacters: AcceptedCharactersInternal.None); + "try { bar(); } catch(bar) { baz(); } ", " finally { biz(); }"); } [Fact] public void ParseBlockSupportsBlockCommentBetweenTryAndCatchClause() { - SingleSpanBlockTest("try { bar(); } /* Foo */ /* Bar */ catch(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest("try { bar(); } /* Foo */ /* Bar */ catch(bar) { baz(); }"); } [Fact] @@ -577,7 +450,7 @@ while(true);", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedChara SingleSpanBlockTest(@"try { bar(); } // Foo // Bar -finally { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCharacters: AcceptedCharactersInternal.None); +finally { baz(); }"); } [Fact] @@ -586,7 +459,7 @@ finally { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code, accepte SingleSpanBlockTest(@"try { bar(); } catch(bar) { baz(); } // Foo // Bar -finally { biz(); }", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCharacters: AcceptedCharactersInternal.None); +finally { biz(); }"); } [Fact] @@ -595,13 +468,13 @@ finally { biz(); }", BlockKindInternal.Statement, SpanKindInternal.Code, accepte SingleSpanBlockTest(@"try { bar(); } // Foo // Bar -catch(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); +catch(bar) { baz(); }"); } [Fact] public void ParseBlockSupportsTryStatementWithNoAdditionalClauses() { - SingleSpanBlockTest("try { var foo = new { } }", BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest("try { var foo = new { } }"); } [Fact] @@ -610,20 +483,13 @@ catch(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); RunSimpleWrappedMarkupTest( prefix: "try {", markup: "

Foo

", - suffix: "}", - expectedStart: new SourceLocation(5, 0, 5), - expectedMarkup: new MarkupBlock( - Factory.Markup(" "), - BlockFactory.MarkupTagBlock("

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

", AcceptedCharactersInternal.None), - Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None))); + suffix: "}"); } [Fact] public void ParseBlockSupportsTryStatementWithOneCatchClause() { - SingleSpanBlockTest("try { var foo = new { } } catch(Foo Bar Baz) { var foo = new { } }", BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest("try { var foo = new { } } catch(Foo Bar Baz) { var foo = new { } }"); } [Fact] @@ -632,14 +498,7 @@ catch(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); RunSimpleWrappedMarkupTest( prefix: "try { var foo = new { } } catch(Foo Bar Baz) {", markup: "

Foo

", - suffix: "}", - expectedStart: new SourceLocation(46, 0, 46), - expectedMarkup: new MarkupBlock( - Factory.Markup(" "), - BlockFactory.MarkupTagBlock("

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

", AcceptedCharactersInternal.None), - Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None))); + suffix: "}"); } [Fact] @@ -647,15 +506,13 @@ catch(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); { SingleSpanBlockTest( "try { var foo = new { } } catch(Foo Bar Baz) { var foo = new { } } catch(Foo Bar Baz) " + - "{ var foo = new { } } catch(Foo Bar Baz) { var foo = new { } }", - BlockKindInternal.Statement, - SpanKindInternal.Code); + "{ var foo = new { } } catch(Foo Bar Baz) { var foo = new { } }"); } [Fact] public void ParseBlockSupportsExceptionLessCatchClauses() { - SingleSpanBlockTest("try { var foo = new { } } catch { var foo = new { } }", BlockKindInternal.Statement, SpanKindInternal.Code); + SingleSpanBlockTest("try { var foo = new { } } catch { var foo = new { } }"); } [Fact] @@ -665,20 +522,13 @@ catch(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); prefix: "try { var foo = new { } } catch(Foo Bar Baz) { var foo = new { } } catch(Foo Bar Baz) " + "{ var foo = new { } } catch(Foo Bar Baz) {", markup: "

Foo

", - suffix: "}", - expectedStart: new SourceLocation(128, 0, 128), - expectedMarkup: new MarkupBlock( - Factory.Markup(" "), - BlockFactory.MarkupTagBlock("

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

", AcceptedCharactersInternal.None), - Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None))); + suffix: "}"); } [Fact] public void ParseBlockSupportsTryStatementWithFinallyClause() { - SingleSpanBlockTest("try { var foo = new { } } finally { var foo = new { } }", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCharacters: AcceptedCharactersInternal.None); + SingleSpanBlockTest("try { var foo = new { } } finally { var foo = new { } }"); } [Fact] @@ -687,113 +537,63 @@ catch(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); RunSimpleWrappedMarkupTest( prefix: "try { var foo = new { } } finally {", markup: "

Foo

", - suffix: "}", - expectedStart: new SourceLocation(35, 0, 35), - expectedMarkup: new MarkupBlock( - Factory.Markup(" "), - BlockFactory.MarkupTagBlock("

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

", AcceptedCharactersInternal.None), - Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)), - acceptedCharacters: AcceptedCharactersInternal.None); + suffix: "}"); } [Fact] public void ParseBlockStopsParsingCatchClausesAfterFinallyBlock() { - var expectedContent = "try { var foo = new { } } finally { var foo = new { } }"; - SingleSpanBlockTest(expectedContent + " catch(Foo Bar Baz) { }", expectedContent, BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCharacters: AcceptedCharactersInternal.None); + var content = "try { var foo = new { } } finally { var foo = new { } }"; + SingleSpanBlockTest(content + " catch(Foo Bar Baz) { }"); } [Fact] public void ParseBlockDoesNotAllowMultipleFinallyBlocks() { - var expectedContent = "try { var foo = new { } } finally { var foo = new { } }"; - SingleSpanBlockTest(expectedContent + " finally { }", expectedContent, BlockKindInternal.Statement, SpanKindInternal.Code, acceptedCharacters: AcceptedCharactersInternal.None); + var content = "try { var foo = new { } } finally { var foo = new { } }"; + SingleSpanBlockTest(content + " finally { }"); } [Fact] public void ParseBlockAcceptsTrailingDotIntoImplicitExpressionWhenEmbeddedInCode() { // Arrange - ParseBlockTest(@"if(foo) { @foo. }", - new StatementBlock( - Factory.Code("if(foo) { ").AsStatement(), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("foo.") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace) - ), - Factory.Code(" }").AsStatement() - )); + ParseBlockTest(@"if(foo) { @foo. }"); } [Fact] public void ParseBlockParsesExpressionOnSwitchCharacterFollowedByOpenParen() { // Arrange - ParseBlockTest(@"if(foo) { @(foo + bar) }", - new StatementBlock( - Factory.Code("if(foo) { ").AsStatement(), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None), - Factory.Code("foo + bar").AsExpression(), - Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None) - ), - Factory.Code(" }").AsStatement() - )); + ParseBlockTest(@"if(foo) { @(foo + bar) }"); } [Fact] public void ParseBlockParsesExpressionOnSwitchCharacterFollowedByIdentifierStart() { // Arrange - ParseBlockTest(@"if(foo) { @foo[4].bar() }", - new StatementBlock( - Factory.Code("if(foo) { ").AsStatement(), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("foo[4].bar()") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace) - ), - Factory.Code(" }").AsStatement() - )); + ParseBlockTest(@"if(foo) { @foo[4].bar() }"); } [Fact] public void ParseBlockTreatsDoubleAtSignAsEscapeSequenceIfAtStatementStart() { // Arrange - ParseBlockTest(@"if(foo) { @@class.Foo() }", - new StatementBlock( - Factory.Code("if(foo) { ").AsStatement(), - Factory.Code("@").Hidden(), - Factory.Code("@class.Foo() }").AsStatement() - )); + ParseBlockTest(@"if(foo) { @@class.Foo() }"); } [Fact] public void ParseBlockTreatsAtSignsAfterFirstPairAsPartOfCSharpStatement() { // Arrange - ParseBlockTest(@"if(foo) { @@@@class.Foo() }", - new StatementBlock( - Factory.Code("if(foo) { ").AsStatement(), - Factory.Code("@").Hidden(), - Factory.Code("@@@class.Foo() }").AsStatement() - )); + ParseBlockTest(@"if(foo) { @@@@class.Foo() }"); } [Fact] public void ParseBlockDoesNotParseMarkupStatementOrExpressionOnSwitchCharacterNotFollowedByOpenAngleOrColon() { // Arrange - ParseBlockTest("if(foo) { @\"Foo\".ToString(); }", - new StatementBlock( - Factory.Code("if(foo) { @\"Foo\".ToString(); }").AsStatement())); + ParseBlockTest("if(foo) { @\"Foo\".ToString(); }"); } [Fact] @@ -809,448 +609,78 @@ catch(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code); + " }" + Environment.NewLine + " " + Environment.NewLine + " " + Environment.NewLine - + " }", - new StatementBlock( - Factory.Code("foreach(var c in db.Categories) {" + Environment.NewLine).AsStatement(), - new MarkupBlock( - Factory.Markup(" "), - BlockFactory.MarkupTagBlock("
", AcceptedCharactersInternal.None), - Factory.Markup(Environment.NewLine + " "), - BlockFactory.MarkupTagBlock("

", AcceptedCharactersInternal.None), - Factory.EmptyHtml(), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("c.Name") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - BlockFactory.MarkupTagBlock("

", AcceptedCharactersInternal.None), - Factory.Markup(Environment.NewLine + " "), - BlockFactory.MarkupTagBlock("
    ", AcceptedCharactersInternal.None), - Factory.Markup(Environment.NewLine), - new StatementBlock( - Factory.Code(@" ").AsStatement(), - Factory.CodeTransition(), - Factory.Code("foreach(var p in c.Products) {" + Environment.NewLine).AsStatement(), - new MarkupBlock( - Factory.Markup(" "), - BlockFactory.MarkupTagBlock("
  • ", AcceptedCharactersInternal.None), - new MarkupTagBlock( - Factory.Markup("(" href=\"", 183 + Environment.NewLine.Length * 5, 5, 30), - new LocationTagged("\"", 246 + Environment.NewLine.Length * 5, 5, 93)), - Factory.Markup(" href=\"").With(SpanChunkGenerator.Null), - new MarkupBlock( - new DynamicAttributeBlockChunkGenerator( - new LocationTagged(string.Empty, 190 + Environment.NewLine.Length * 5, 5, 37), 190 + Environment.NewLine.Length * 5, 5, 37), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("Html.ActionUrl(\"Products\", \"Detail\", new { id = p.Id })") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), - Factory.Markup("\"").With(SpanChunkGenerator.Null)), - Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml(), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("p.Name") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - BlockFactory.MarkupTagBlock("", AcceptedCharactersInternal.None), - BlockFactory.MarkupTagBlock("
  • ", AcceptedCharactersInternal.None), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)), - Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharactersInternal.None)), - Factory.Markup(" "), - BlockFactory.MarkupTagBlock("
", AcceptedCharactersInternal.None), - Factory.Markup(Environment.NewLine + " "), - BlockFactory.MarkupTagBlock("
", AcceptedCharactersInternal.None), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)), - Factory.Code(" }").AsStatement().Accepts(AcceptedCharactersInternal.None))); + + " }"); } - public static TheoryData BlockWithEscapedTransitionData + [Fact] + public void ParseBlock_WithDoubleTransitionInAttributeValue_DoesNotThrow() { - get - { - var factory = new SpanFactory(); - var datetimeBlock = new ExpressionBlock( - factory.CodeTransition(), - factory.Code("DateTime.Now") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)); - - return new TheoryData - { - { - // Double transition in attribute value - "{}", - CreateStatementBlock( - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 6, 0, 6), new LocationTagged("'", 14, 0, 14)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - new MarkupBlock( - factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), new LocationTagged("@", 12, 0, 12))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))) - }, - { - // Double transition at the end of attribute value - "{}", - CreateStatementBlock( - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 6, 0, 6), new LocationTagged("'", 17, 0, 17)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - factory.Markup("abc").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), new LocationTagged("abc", 12, 0, 12))), - new MarkupBlock( - factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 15, 0, 15), new LocationTagged("@", 15, 0, 15))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))) - }, - { - // Double transition at the beginning attribute value - "{}", - CreateStatementBlock( - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 6, 0, 6), new LocationTagged("'", 17, 0, 17)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - new MarkupBlock( - factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), new LocationTagged("@", 12, 0, 12))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - factory.Markup("def").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 14, 0, 14), new LocationTagged("def", 14, 0, 14))), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))) - }, - { - // Double transition in between attribute value - "{}", - CreateStatementBlock( - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 6, 0, 6), new LocationTagged("'", 22, 0, 22)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - factory.Markup("abc").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), new LocationTagged("abc", 12, 0, 12))), - new MarkupBlock( - factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged(" ", 15, 0, 15), new LocationTagged("@", 16, 0, 16))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - factory.Markup(" def").With(new LiteralAttributeChunkGenerator(new LocationTagged(" ", 18, 0, 18), new LocationTagged("def", 19, 0, 19))), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))) - }, - { - // Double transition with expression block - "{}", - CreateStatementBlock( - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 6, 0, 6), new LocationTagged("'", 27, 0, 27)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - new MarkupBlock( - factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), new LocationTagged("@", 12, 0, 12))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - new MarkupBlock( - new DynamicAttributeBlockChunkGenerator(new LocationTagged(string.Empty, 14, 0, 14), 14, 0, 14), - factory.EmptyHtml().With(SpanChunkGenerator.Null), - datetimeBlock), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))) - }, - { - "{}", - CreateStatementBlock( - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 6, 0, 6), new LocationTagged("'", 28, 0, 28)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - new MarkupBlock( - new DynamicAttributeBlockChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), 12, 0, 12), - datetimeBlock), - new MarkupBlock( - factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged(" ", 25, 0, 25), new LocationTagged("@", 26, 0, 26))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))) - }, - { - "{}", - CreateStatementBlock( - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 6, 0, 6), new LocationTagged("'", 27, 0, 27)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - new MarkupBlock( - new DynamicAttributeBlockChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), 12, 0, 12), - datetimeBlock), - new MarkupBlock( - factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 25, 0, 25), new LocationTagged("@", 25, 0, 25))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))) - }, - { - "{}", - CreateStatementBlock( - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 6, 0, 6), new LocationTagged("'", 33, 0, 33)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - new MarkupBlock( - new DynamicAttributeBlockChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), 12, 0, 12), - new ExpressionBlock( - factory.CodeTransition(), - factory.MetaCode("(").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None), - factory.Code("2+3").AsExpression(), - factory.MetaCode(")").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None))), - new MarkupBlock( - factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 18, 0, 18), new LocationTagged("@", 18, 0, 18))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - new MarkupBlock( - new DynamicAttributeBlockChunkGenerator(new LocationTagged(string.Empty, 20, 0, 20), 20, 0, 20), - factory.EmptyHtml().With(SpanChunkGenerator.Null), - datetimeBlock), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))) - }, - { - "{}", - CreateStatementBlock( - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 6, 0, 6), new LocationTagged("'", 20, 0, 20)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - new MarkupBlock( - factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), new LocationTagged("@", 12, 0, 12))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - new MarkupBlock( - new DynamicAttributeBlockChunkGenerator(new LocationTagged(string.Empty, 14, 0, 14), 14, 0, 14), - factory.EmptyHtml().With(SpanChunkGenerator.Null), - new ExpressionBlock( - factory.CodeTransition(), - factory.MetaCode("(").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None), - factory.Code("2+3").AsExpression(), - factory.MetaCode(")").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None))), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))) - }, - { - // Double transition with email in attribute value - "{}", - CreateStatementBlock( - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 6, 0, 6), new LocationTagged("'", 26, 0, 26)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - factory.Markup("abc@def.com").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), new LocationTagged("abc@def.com", 12, 0, 12))), - new MarkupBlock( - factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged(" ", 23, 0, 23), new LocationTagged("@", 24, 0, 24))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))) - }, - { - "{}", - CreateStatementBlock( - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo='", 6, 0, 6), new LocationTagged("'", 27, 0, 27)), - factory.Markup(" foo='").With(SpanChunkGenerator.Null), - factory.Markup("abc").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), new LocationTagged("abc", 12, 0, 12))), - new MarkupBlock( - factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 15, 0, 15), new LocationTagged("@", 15, 0, 15))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - factory.Markup("def.com").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 17, 0, 17), new LocationTagged("def.com", 17, 0, 17))), - new MarkupBlock( - factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged(" ", 24, 0, 24), new LocationTagged("@", 25, 0, 25))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))) - }, - { - // Double transition in complex regex in attribute value - @"{}", - CreateStatementBlock( - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("(" foo=\"", 6, 0, 6), new LocationTagged("\"", 112, 0, 112)), - factory.Markup(" foo=\"").With(SpanChunkGenerator.Null), - factory.Markup(@"/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), new LocationTagged(@"/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+", 12, 0, 12))), - new MarkupBlock( - factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 44, 0, 44), new LocationTagged("@", 44, 0, 44))).Accepts(AcceptedCharactersInternal.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), - factory.Markup(@"[a-z0-9]([a-z0-9-]*[a-z0-9])?\.([a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 46, 0, 46), new LocationTagged(@"[a-z0-9]([a-z0-9-]*[a-z0-9])?\.([a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i", 46, 0, 46))), - factory.Markup("\"").With(SpanChunkGenerator.Null)), - factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))) - }, - }; - } + var input = "{}"; + ParseBlockTest(input); } - [Theory] - [MemberData(nameof(BlockWithEscapedTransitionData))] - public void ParseBlock_WithDoubleTransition_DoesNotThrow(string input, object expected) + [Fact] + public void ParseBlock_WithDoubleTransitionAtEndOfAttributeValue_DoesNotThrow() { - FixupSpans = true; + var input = "{}"; + ParseBlockTest(input); + } - // Act & Assert - ParseBlockTest(input, (Block)expected); + [Fact] + public void ParseBlock_WithDoubleTransitionAtBeginningOfAttributeValue_DoesNotThrow() + { + var input = "{}"; + ParseBlockTest(input); + } + + [Fact] + public void ParseBlock_WithDoubleTransitionBetweenAttributeValue_DoesNotThrow() + { + var input = "{}"; + ParseBlockTest(input); + } + + [Fact] + public void ParseBlock_WithDoubleTransitionWithExpressionBlock_DoesNotThrow() + { + var input = "{}"; + ParseBlockTest(input); + } + + [Fact] + public void ParseBlock_WithDoubleTransitionInEmail_DoesNotThrow() + { + var input = "{}"; + ParseBlockTest(input); + } + + [Fact] + public void ParseBlock_WithDoubleTransitionInRegex_DoesNotThrow() + { + var input = @"{}"; + ParseBlockTest(input); } [Fact] public void ParseBlock_WithDoubleTransition_EndOfFile_Throws() { - // Arrange - var expected = new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("(" foo='", 6, 0, 6), new LocationTagged(string.Empty, 14, 0, 14)), - Factory.Markup(" foo='").With(SpanChunkGenerator.Null), - new MarkupBlock( - Factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), new LocationTagged("@", 12, 0, 12))).Accepts(AcceptedCharactersInternal.None), - Factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)))), - Factory.EmptyHtml())); - var expectedErrors = new RazorDiagnostic[] - { - RazorDiagnosticFactory.CreateParsing_UnfinishedTag( - new SourceSpan(new SourceLocation(2, 0, 2), contentLength: 4), "span"), - RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF( - new SourceSpan(SourceLocation.Zero, contentLength: 1), Resources.BlockName_Code, "}", "{"), - }; - - // Act & Assert - ParseBlockTest("{(" foo='", 6, 0, 6), new LocationTagged("'", 15, 0, 15)), - Factory.Markup(" foo='").With(SpanChunkGenerator.Null), - new MarkupBlock( - new DynamicAttributeBlockChunkGenerator(new LocationTagged(string.Empty, 12, 0, 12), 12, 0, 12), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.EmptyCSharp().AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace))), - new MarkupBlock( - new DynamicAttributeBlockChunkGenerator(new LocationTagged(" ", 13, 0, 13), 13, 0, 13), - Factory.Markup(" ").With(SpanChunkGenerator.Null), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.EmptyCSharp().AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace))), - Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None))), - Factory.EmptyCSharp().AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)); - var expectedErrors = new RazorDiagnostic[] - { - RazorDiagnosticFactory.CreateParsing_UnexpectedWhiteSpaceAtStartOfCodeBlock( - new SourceSpan(new SourceLocation(13, 0, 13), contentLength: 1)), - RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock( - new SourceSpan(new SourceLocation(15, 0, 15), contentLength: 5), - "' />}"), - }; - - // Act & Assert - ParseBlockTest("{}", expected, expectedErrors); + ParseBlockTest("{}"); } private void RunRazorCommentBetweenClausesTest(string preComment, string postComment, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any) { - ParseBlockTest(preComment + "@* Foo *@ @* Bar *@" + postComment, - new StatementBlock( - Factory.Code(preComment).AsStatement(), - new CommentBlock( - Factory.CodeTransition(CSharpSymbolType.RazorCommentTransition), - Factory.MetaCode("*", CSharpSymbolType.RazorCommentStar).Accepts(AcceptedCharactersInternal.None), - Factory.Comment(" Foo ", CSharpSymbolType.RazorComment), - Factory.MetaCode("*", CSharpSymbolType.RazorCommentStar).Accepts(AcceptedCharactersInternal.None), - Factory.CodeTransition(CSharpSymbolType.RazorCommentTransition) - ), - Factory.Code(" ").AsStatement(), - new CommentBlock( - Factory.CodeTransition(CSharpSymbolType.RazorCommentTransition), - Factory.MetaCode("*", CSharpSymbolType.RazorCommentStar).Accepts(AcceptedCharactersInternal.None), - Factory.Comment(" Bar ", CSharpSymbolType.RazorComment), - Factory.MetaCode("*", CSharpSymbolType.RazorCommentStar).Accepts(AcceptedCharactersInternal.None), - Factory.CodeTransition(CSharpSymbolType.RazorCommentTransition) - ), - Factory.Code(postComment).AsStatement().Accepts(acceptedCharacters))); + ParseBlockTest(preComment + "@* Foo *@ @* Bar *@" + postComment); } - private void RunSimpleWrappedMarkupTest(string prefix, string markup, string suffix, MarkupBlock expectedMarkup, SourceLocation expectedStart, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any) + private void RunSimpleWrappedMarkupTest(string prefix, string markup, string suffix) { - var expected = new StatementBlock( - Factory.Code(prefix).AsStatement(), - expectedMarkup, - Factory.Code(suffix).AsStatement().Accepts(acceptedCharacters)); - - // Since we're building the 'expected' input out of order we need to do some trickery - // to get the locations right. - SpancestryCorrector.Correct(expected); - expected.FindFirstDescendentSpan().ChangeStart(SourceLocation.Zero); - - // We make the caller pass a start location so we can verify that nothing has gone awry. - Assert.Equal(expectedStart, expectedMarkup.Start); - - ParseBlockTest(prefix + markup + suffix, expected); - } - - private void NamespaceImportTest(string content, string expectedNS, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.None, SourceLocation? location = null) - { - ParseBlockTest(content, - new DirectiveBlock( - Factory.Code(content) - .AsNamespaceImport(expectedNS) - .Accepts(acceptedCharacters))); - } - - private static StatementBlock CreateStatementBlock(MarkupBlock block) - { - var factory = new SpanFactory(); - return new StatementBlock( - factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), - block, - factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)); + ParseBlockTest(prefix + markup + suffix); } } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/BalancingBracketsIgnoresStringLiteralCharactersAndBracketsInsideBlockComments.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/BalancingBracketsIgnoresStringLiteralCharactersAndBracketsInsideBlockComments.syntaxtree.txt new file mode 100644 index 0000000000..492147e886 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/BalancingBracketsIgnoresStringLiteralCharactersAndBracketsInsideBlockComments.syntaxtree.txt @@ -0,0 +1,21 @@ +Statement block - Gen - 54 - (0:0,0) + Code span - Gen - [if(foo) {LF /* bar } " */ ' baz } 'LF zoop();LF}] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:19 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* bar } " */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.CharacterLiteral;[' baz } ']; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[zoop]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/BalancingBracketsIgnoresStringLiteralCharactersAndBracketsInsideSingleLineComments.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/BalancingBracketsIgnoresStringLiteralCharactersAndBracketsInsideSingleLineComments.syntaxtree.txt new file mode 100644 index 0000000000..6092ec784e --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/BalancingBracketsIgnoresStringLiteralCharactersAndBracketsInsideSingleLineComments.syntaxtree.txt @@ -0,0 +1,19 @@ +Statement block - Gen - 47 - (0:0,0) + Code span - Gen - [if(foo) {LF // bar } " baz 'LF zoop();LF}] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:17 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[// bar } " baz ']; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[zoop]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/NestedCodeBlockWithAtDoesntCauseError.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/NestedCodeBlockWithAtDoesntCauseError.syntaxtree.txt new file mode 100644 index 0000000000..7515b640d9 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/NestedCodeBlockWithAtDoesntCauseError.syntaxtree.txt @@ -0,0 +1,25 @@ +Statement block - Gen - 28 - (0:0,0) + Code span - Gen - [if (true) { ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:8 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[true]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + Statement block - Gen - 14 - (12:0,12) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [if(false) { }] - SpanEditHandler;Accepts:Any - (13:0,13) - Symbols:8 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[false]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + Code span - Gen - [ }] - SpanEditHandler;Accepts:Any - (26:0,26) - Symbols:2 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockAcceptsElseIfWithNoCondition.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockAcceptsElseIfWithNoCondition.syntaxtree.txt new file mode 100644 index 0000000000..c52b4341ce --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockAcceptsElseIfWithNoCondition.syntaxtree.txt @@ -0,0 +1,60 @@ +Statement block - Gen - 106 - (0:0,0) + Code span - Gen - [if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"foo } bar");LF} else if { foo(); }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:58 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockAcceptsTrailingDotIntoImplicitExpressionWhenEmbeddedInCode.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockAcceptsTrailingDotIntoImplicitExpressionWhenEmbeddedInCode.syntaxtree.txt new file mode 100644 index 0000000000..5ba3927092 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockAcceptsTrailingDotIntoImplicitExpressionWhenEmbeddedInCode.syntaxtree.txt @@ -0,0 +1,18 @@ +Statement block - Gen - 17 - (0:0,0) + Code span - Gen - [if(foo) { ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:7 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + Expression block - Gen - 5 - (10:0,10) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (10:0,10) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [foo.] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[ATD];K14 - (11:0,11) - Symbols:2 + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.Dot;[.]; + Code span - Gen - [ }] - SpanEditHandler;Accepts:Any - (15:0,15) - Symbols:2 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockAllowsEmptyBlockStatement.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockAllowsEmptyBlockStatement.syntaxtree.txt new file mode 100644 index 0000000000..df639fbb77 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockAllowsEmptyBlockStatement.syntaxtree.txt @@ -0,0 +1,10 @@ +Statement block - Gen - 13 - (0:0,0) + Code span - Gen - [if(false) { }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:8 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[false]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCapturesNewlineAfterUsing.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCapturesNewlineAfterUsing.syntaxtree.txt new file mode 100644 index 0000000000..b766d9e667 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCapturesNewlineAfterUsing.syntaxtree.txt @@ -0,0 +1,6 @@ +Directive block - Gen - 11 - (0:0,0) + Code span - Gen - [using FooLF] - SpanEditHandler;Accepts:AnyExceptNewline - (0:0,0) - Symbols:4 + CSharpSymbolType.Keyword;[using]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.NewLine;[LF]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlock.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlock.syntaxtree.txt new file mode 100644 index 0000000000..08f5c5b2d9 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlock.syntaxtree.txt @@ -0,0 +1,26 @@ +Statement block - Gen - 40 - (0:0,0) + Code span - Gen - [do { var foo = bar; } while(foo != bar);] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:24 + CSharpSymbolType.Keyword;[do]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[while]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.NotEqual;[!=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlockMissingSemicolon.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlockMissingSemicolon.syntaxtree.txt new file mode 100644 index 0000000000..2d72a88d86 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlockMissingSemicolon.syntaxtree.txt @@ -0,0 +1,25 @@ +Statement block - Gen - 39 - (0:0,0) + Code span - Gen - [do { var foo = bar; } while(foo != bar)] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:23 + CSharpSymbolType.Keyword;[do]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[while]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.NotEqual;[!=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlockMissingWhileClauseEntirely.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlockMissingWhileClauseEntirely.syntaxtree.txt new file mode 100644 index 0000000000..6f8df081d8 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlockMissingWhileClauseEntirely.syntaxtree.txt @@ -0,0 +1,16 @@ +Statement block - Gen - 21 - (0:0,0) + Code span - Gen - [do { var foo = bar; }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:14 + CSharpSymbolType.Keyword;[do]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlockMissingWhileCondition.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlockMissingWhileCondition.syntaxtree.txt new file mode 100644 index 0000000000..8c0d027674 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlockMissingWhileCondition.syntaxtree.txt @@ -0,0 +1,18 @@ +Statement block - Gen - 27 - (0:0,0) + Code span - Gen - [do { var foo = bar; } while] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:16 + CSharpSymbolType.Keyword;[do]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[while]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlockMissingWhileConditionWithSemicolon.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlockMissingWhileConditionWithSemicolon.syntaxtree.txt new file mode 100644 index 0000000000..a91ee07a03 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesDoWhileBlockMissingWhileConditionWithSemicolon.syntaxtree.txt @@ -0,0 +1,19 @@ +Statement block - Gen - 28 - (0:0,0) + Code span - Gen - [do { var foo = bar; } while;] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:17 + CSharpSymbolType.Keyword;[do]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[while]; + CSharpSymbolType.Semicolon;[;]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesMarkupInDoWhileBlock.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesMarkupInDoWhileBlock.syntaxtree.txt new file mode 100644 index 0000000000..4f4319d5cb --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockCorrectlyParsesMarkupInDoWhileBlock.syntaxtree.txt @@ -0,0 +1,50 @@ +Statement block - Gen - 58 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [do { var foo = bar;] - SpanEditHandler;Accepts:Any - (1:0,1) - Symbols:12 + CSharpSymbolType.Keyword;[do]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.Semicolon;[;]; + Markup block - Gen - 12 - (20:0,20) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (20:0,20) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 3 - (21:0,21) + Markup span - Gen - [

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

] - SpanEditHandler;Accepts:None - (27:0,27) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:None - (31:0,31) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo++; } while (foo);] - SpanEditHandler;Accepts:None - (32:0,32) - Symbols:15 + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.Increment;[++]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[while]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.GreaterThan;[>]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockDoesNotAllowMultipleFinallyBlocks.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockDoesNotAllowMultipleFinallyBlocks.syntaxtree.txt new file mode 100644 index 0000000000..493313d0b3 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockDoesNotAllowMultipleFinallyBlocks.syntaxtree.txt @@ -0,0 +1,37 @@ +Statement block - Gen - 55 - (0:0,0) + Code span - Gen - [try { var foo = new { } } finally { var foo = new { } }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:35 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[finally]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockDoesNotParseMarkupStatementOrExpressionOnSwitchCharacterNotFollowedByOpenAngleOrColon.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockDoesNotParseMarkupStatementOrExpressionOnSwitchCharacterNotFollowedByOpenAngleOrColon.syntaxtree.txt new file mode 100644 index 0000000000..194df0b599 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockDoesNotParseMarkupStatementOrExpressionOnSwitchCharacterNotFollowedByOpenAngleOrColon.syntaxtree.txt @@ -0,0 +1,17 @@ +Statement block - Gen - 30 - (0:0,0) + Code span - Gen - [if(foo) { @"Foo".ToString(); }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:15 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;[@"Foo"]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[ToString]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockDoesntCaptureWhitespaceAfterUsing.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockDoesntCaptureWhitespaceAfterUsing.syntaxtree.txt new file mode 100644 index 0000000000..85b88e63eb --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockDoesntCaptureWhitespaceAfterUsing.syntaxtree.txt @@ -0,0 +1,5 @@ +Directive block - Gen - 9 - (0:0,0) + Code span - Gen - [using Foo] - SpanEditHandler;Accepts:AnyExceptNewline - (0:0,0) - Symbols:3 + CSharpSymbolType.Keyword;[using]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockHasErrorsIfNamespaceAliasMissingSemicolon.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockHasErrorsIfNamespaceAliasMissingSemicolon.syntaxtree.txt new file mode 100644 index 0000000000..5b1371ae8d --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockHasErrorsIfNamespaceAliasMissingSemicolon.syntaxtree.txt @@ -0,0 +1,13 @@ +Directive block - Gen - 29 - (0:0,0) + Code span - Gen - [using Foo.Bar.Baz = FooBarBaz] - SpanEditHandler;Accepts:AnyExceptNewline - (0:0,0) - Symbols:11 + CSharpSymbolType.Keyword;[using]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Baz]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[FooBarBaz]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockHasErrorsIfNamespaceImportMissingSemicolon.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockHasErrorsIfNamespaceImportMissingSemicolon.syntaxtree.txt new file mode 100644 index 0000000000..a7bb8199b2 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockHasErrorsIfNamespaceImportMissingSemicolon.syntaxtree.txt @@ -0,0 +1,9 @@ +Directive block - Gen - 17 - (0:0,0) + Code span - Gen - [using Foo.Bar.Baz] - SpanEditHandler;Accepts:AnyExceptNewline - (0:0,0) - Symbols:7 + CSharpSymbolType.Keyword;[using]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Baz]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesElseIfBranchesOfIfStatement.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesElseIfBranchesOfIfStatement.syntaxtree.txt new file mode 100644 index 0000000000..8d7dc26146 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesElseIfBranchesOfIfStatement.syntaxtree.txt @@ -0,0 +1,95 @@ +Statement block - Gen - 180 - (0:0,0) + Code span - Gen - [if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"foo } bar");LF} else if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"bar } baz");LF}] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:93 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"bar } baz"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesExpressionOnSwitchCharacterFollowedByIdentifierStart.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesExpressionOnSwitchCharacterFollowedByIdentifierStart.syntaxtree.txt new file mode 100644 index 0000000000..2e3daab58a --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesExpressionOnSwitchCharacterFollowedByIdentifierStart.syntaxtree.txt @@ -0,0 +1,24 @@ +Statement block - Gen - 25 - (0:0,0) + Code span - Gen - [if(foo) { ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:7 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + Expression block - Gen - 13 - (10:0,10) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (10:0,10) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [foo[4].bar()] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[ATD];K14 - (11:0,11) - Symbols:8 + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.LeftBracket;[[]; + CSharpSymbolType.IntegerLiteral;[4]; + CSharpSymbolType.RightBracket;[]]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + Code span - Gen - [ }] - SpanEditHandler;Accepts:Any - (23:0,23) - Symbols:2 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesExpressionOnSwitchCharacterFollowedByOpenParen.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesExpressionOnSwitchCharacterFollowedByOpenParen.syntaxtree.txt new file mode 100644 index 0000000000..333a092687 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesExpressionOnSwitchCharacterFollowedByOpenParen.syntaxtree.txt @@ -0,0 +1,25 @@ +Statement block - Gen - 24 - (0:0,0) + Code span - Gen - [if(foo) { ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:7 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + Expression block - Gen - 12 - (10:0,10) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (10:0,10) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [(] - SpanEditHandler;Accepts:None - (11:0,11) - Symbols:1 + CSharpSymbolType.LeftParenthesis;[(]; + Code span - Gen - [foo + bar] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:5 + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Plus;[+]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + MetaCode span - Gen - [)] - SpanEditHandler;Accepts:None - (21:0,21) - Symbols:1 + CSharpSymbolType.RightParenthesis;[)]; + Code span - Gen - [ }] - SpanEditHandler;Accepts:Any - (22:0,22) - Symbols:2 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesMultipleElseIfBranchesOfIfStatement.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesMultipleElseIfBranchesOfIfStatement.syntaxtree.txt new file mode 100644 index 0000000000..ab769c186e --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesMultipleElseIfBranchesOfIfStatement.syntaxtree.txt @@ -0,0 +1,239 @@ +Statement block - Gen - 459 - (0:0,0) + Code span - Gen - [if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"foo } bar");LF} else if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"bar } baz");LF} else if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"bar } baz");LF} else if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"bar } baz");LF} else if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"bar } baz");LF}] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:237 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"bar } baz"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"bar } baz"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"bar } baz"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"bar } baz"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesMultipleElseIfBranchesOfIfStatementFollowedByOneElseBranch.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesMultipleElseIfBranchesOfIfStatementFollowedByOneElseBranch.syntaxtree.txt new file mode 100644 index 0000000000..817f2e20cc --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesMultipleElseIfBranchesOfIfStatementFollowedByOneElseBranch.syntaxtree.txt @@ -0,0 +1,157 @@ +Statement block - Gen - 313 - (0:0,0) + Code span - Gen - [if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"foo } bar");LF} else if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"bar } baz");LF} else if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"bar } baz");LF} else { Debug.WriteLine(@"bar } baz"); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:155 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"bar } baz"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"bar } baz"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"bar } baz"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesNamespaceAliasWithSemicolonForUsingKeywordIfIsInValidFormat.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesNamespaceAliasWithSemicolonForUsingKeywordIfIsInValidFormat.syntaxtree.txt new file mode 100644 index 0000000000..775666b7e4 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesNamespaceAliasWithSemicolonForUsingKeywordIfIsInValidFormat.syntaxtree.txt @@ -0,0 +1,10 @@ +Directive block - Gen - 28 - (0:0,0) + Code span - Gen - [using FooBarBaz = FooBarBaz;] - SpanEditHandler;Accepts:AnyExceptNewline - (0:0,0) - Symbols:8 + CSharpSymbolType.Keyword;[using]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[FooBarBaz]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[FooBarBaz]; + CSharpSymbolType.Semicolon;[;]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesNamespaceImportWithSemicolonForUsingKeywordIfIsInValidFormat.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesNamespaceImportWithSemicolonForUsingKeywordIfIsInValidFormat.syntaxtree.txt new file mode 100644 index 0000000000..80e34b4242 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockParsesNamespaceImportWithSemicolonForUsingKeywordIfIsInValidFormat.syntaxtree.txt @@ -0,0 +1,10 @@ +Directive block - Gen - 18 - (0:0,0) + Code span - Gen - [using Foo.Bar.Baz;] - SpanEditHandler;Accepts:AnyExceptNewline - (0:0,0) - Symbols:8 + CSharpSymbolType.Keyword;[using]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Baz]; + CSharpSymbolType.Semicolon;[;]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsForKeyword.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsForKeyword.syntaxtree.txt new file mode 100644 index 0000000000..91928ed5f2 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsForKeyword.syntaxtree.txt @@ -0,0 +1,46 @@ +Statement block - Gen - 82 - (0:0,0) + Code span - Gen - [for(int i = 0; i < 10; new Foo { Bar = "baz" }) { Debug.WriteLine(@"foo } bar"); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:44 + CSharpSymbolType.Keyword;[for]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsForeachKeyword.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsForeachKeyword.syntaxtree.txt new file mode 100644 index 0000000000..6ded04854f --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsForeachKeyword.syntaxtree.txt @@ -0,0 +1,46 @@ +Statement block - Gen - 86 - (0:0,0) + Code span - Gen - [foreach(int i = 0; i < 10; new Foo { Bar = "baz" }) { Debug.WriteLine(@"foo } bar"); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:44 + CSharpSymbolType.Keyword;[foreach]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsIfKeywordWithNoElseBranches.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsIfKeywordWithNoElseBranches.syntaxtree.txt new file mode 100644 index 0000000000..c3cd91c222 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsIfKeywordWithNoElseBranches.syntaxtree.txt @@ -0,0 +1,46 @@ +Statement block - Gen - 81 - (0:0,0) + Code span - Gen - [if(int i = 0; i < 10; new Foo { Bar = "baz" }) { Debug.WriteLine(@"foo } bar"); }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:44 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsLockKeyword.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsLockKeyword.syntaxtree.txt new file mode 100644 index 0000000000..72b6a2a065 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsLockKeyword.syntaxtree.txt @@ -0,0 +1,18 @@ +Statement block - Gen - 44 - (0:0,0) + Code span - Gen - [lock(foo) { Debug.WriteLine(@"foo } bar"); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:16 + CSharpSymbolType.Keyword;[lock]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsSwitchKeyword.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsSwitchKeyword.syntaxtree.txt new file mode 100644 index 0000000000..45e7542193 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsSwitchKeyword.syntaxtree.txt @@ -0,0 +1,54 @@ +Statement block - Gen - 161 - (0:0,0) + Code span - Gen - [switch(foo) {LF case 0:LF break;LF case 1:LF {LF break;LF }LF case 2:LF return;LF default:LF return;LF}] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:52 + CSharpSymbolType.Keyword;[switch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[case]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Colon;[:]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[break]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[case]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[1]; + CSharpSymbolType.Colon;[:]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[break]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[case]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[2]; + CSharpSymbolType.Colon;[:]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[return]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[default]; + CSharpSymbolType.Colon;[:]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[return]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsUsingKeywordFollowedByParen.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsUsingKeywordFollowedByParen.syntaxtree.txt new file mode 100644 index 0000000000..d96f852117 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsUsingKeywordFollowedByParen.syntaxtree.txt @@ -0,0 +1,46 @@ +Statement block - Gen - 84 - (0:0,0) + Code span - Gen - [using(int i = 0; i < 10; new Foo { Bar = "baz" }) { Debug.WriteLine(@"foo } bar"); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:44 + CSharpSymbolType.Keyword;[using]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsWhileKeyword.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsWhileKeyword.syntaxtree.txt new file mode 100644 index 0000000000..40767f609b --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSkipsParenthesisedExpressionAndThenBalancesBracesIfFirstIdentifierIsWhileKeyword.syntaxtree.txt @@ -0,0 +1,46 @@ +Statement block - Gen - 84 - (0:0,0) + Code span - Gen - [while(int i = 0; i < 10; new Foo { Bar = "baz" }) { Debug.WriteLine(@"foo } bar"); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:44 + CSharpSymbolType.Keyword;[while]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockStopsParsingCatchClausesAfterFinallyBlock.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockStopsParsingCatchClausesAfterFinallyBlock.syntaxtree.txt new file mode 100644 index 0000000000..493313d0b3 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockStopsParsingCatchClausesAfterFinallyBlock.syntaxtree.txt @@ -0,0 +1,37 @@ +Statement block - Gen - 55 - (0:0,0) + Code span - Gen - [try { var foo = new { } } finally { var foo = new { } }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:35 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[finally]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockStopsParsingCodeAfterElseBranch.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockStopsParsingCodeAfterElseBranch.syntaxtree.txt new file mode 100644 index 0000000000..1d53581e15 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockStopsParsingCodeAfterElseBranch.syntaxtree.txt @@ -0,0 +1,109 @@ +Statement block - Gen - 220 - (0:0,0) + Code span - Gen - [if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"foo } bar");LF} else if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"bar } baz");LF} else { Debug.WriteLine(@"bar } baz"); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:107 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"bar } baz"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"bar } baz"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockStopsParsingIfIfStatementNotFollowedByElse.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockStopsParsingIfIfStatementNotFollowedByElse.syntaxtree.txt new file mode 100644 index 0000000000..f3ca23e917 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockStopsParsingIfIfStatementNotFollowedByElse.syntaxtree.txt @@ -0,0 +1,47 @@ +Statement block - Gen - 87 - (0:0,0) + Code span - Gen - [if(int i = 0; i < 10; new Foo { Bar = "baz" }) {LF Debug.WriteLine(@"foo } bar");LF}] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:45 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenCatchAndFinallyClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenCatchAndFinallyClause.syntaxtree.txt new file mode 100644 index 0000000000..372641ccc4 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenCatchAndFinallyClause.syntaxtree.txt @@ -0,0 +1,41 @@ +Statement block - Gen - 75 - (0:0,0) + Code span - Gen - [try { bar(); } catch(bar) { baz(); } /* Foo */ /* Bar */ finally { biz(); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:39 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Foo */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Bar */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[finally]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[biz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenDoAndWhileClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenDoAndWhileClause.syntaxtree.txt new file mode 100644 index 0000000000..6c2b490097 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenDoAndWhileClause.syntaxtree.txt @@ -0,0 +1,26 @@ +Statement block - Gen - 54 - (0:0,0) + Code span - Gen - [do { var foo = bar; } /* Foo */ /* Bar */ while(true);] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:24 + CSharpSymbolType.Keyword;[do]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Foo */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Bar */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[while]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[true]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenElseIfAndElseClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenElseIfAndElseClause.syntaxtree.txt new file mode 100644 index 0000000000..b7dbaff01b --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenElseIfAndElseClause.syntaxtree.txt @@ -0,0 +1,46 @@ +Statement block - Gen - 78 - (0:0,0) + Code span - Gen - [if(foo) { bar(); } else if(bar) { baz(); } /* Foo */ /* Bar */ else { biz(); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:44 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Foo */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Bar */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[biz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenIfAndElseClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenIfAndElseClause.syntaxtree.txt new file mode 100644 index 0000000000..b3d9e4803d --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenIfAndElseClause.syntaxtree.txt @@ -0,0 +1,30 @@ +Statement block - Gen - 54 - (0:0,0) + Code span - Gen - [if(foo) { bar(); } /* Foo */ /* Bar */ else { baz(); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:28 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Foo */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Bar */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenIfAndElseIfClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenIfAndElseIfClause.syntaxtree.txt new file mode 100644 index 0000000000..a3e21f379d --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenIfAndElseIfClause.syntaxtree.txt @@ -0,0 +1,35 @@ +Statement block - Gen - 62 - (0:0,0) + Code span - Gen - [if(foo) { bar(); } /* Foo */ /* Bar */ else if(bar) { baz(); }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:33 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Foo */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Bar */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenTryAndCatchClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenTryAndCatchClause.syntaxtree.txt new file mode 100644 index 0000000000..98ebae7b75 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenTryAndCatchClause.syntaxtree.txt @@ -0,0 +1,30 @@ +Statement block - Gen - 56 - (0:0,0) + Code span - Gen - [try { bar(); } /* Foo */ /* Bar */ catch(bar) { baz(); }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:28 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Foo */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Bar */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenTryAndFinallyClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenTryAndFinallyClause.syntaxtree.txt new file mode 100644 index 0000000000..76850c7324 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsBlockCommentBetweenTryAndFinallyClause.syntaxtree.txt @@ -0,0 +1,27 @@ +Statement block - Gen - 53 - (0:0,0) + Code span - Gen - [try { bar(); } /* Foo */ /* Bar */ finally { baz(); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:25 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Foo */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* Bar */]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[finally]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsExceptionLessCatchClauses.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsExceptionLessCatchClauses.syntaxtree.txt new file mode 100644 index 0000000000..03b82d640b --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsExceptionLessCatchClauses.syntaxtree.txt @@ -0,0 +1,37 @@ +Statement block - Gen - 53 - (0:0,0) + Code span - Gen - [try { var foo = new { } } catch { var foo = new { } }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:35 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenCatchAndFinallyClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenCatchAndFinallyClause.syntaxtree.txt new file mode 100644 index 0000000000..acf12c72eb --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenCatchAndFinallyClause.syntaxtree.txt @@ -0,0 +1,41 @@ +Statement block - Gen - 72 - (0:0,0) + Code span - Gen - [try { bar(); } catch(bar) { baz(); }LF// FooLF// BarLFfinally { biz(); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:39 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Foo]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Bar]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Keyword;[finally]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[biz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenDoAndWhileClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenDoAndWhileClause.syntaxtree.txt new file mode 100644 index 0000000000..40209ac12e --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenDoAndWhileClause.syntaxtree.txt @@ -0,0 +1,26 @@ +Statement block - Gen - 51 - (0:0,0) + Code span - Gen - [do { var foo = bar; }LF// FooLF// BarLFwhile(true);] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:24 + CSharpSymbolType.Keyword;[do]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Foo]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Bar]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Keyword;[while]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[true]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenElseIfAndElseClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenElseIfAndElseClause.syntaxtree.txt new file mode 100644 index 0000000000..33a8921e59 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenElseIfAndElseClause.syntaxtree.txt @@ -0,0 +1,46 @@ +Statement block - Gen - 75 - (0:0,0) + Code span - Gen - [if(foo) { bar(); } else if(bar) { baz(); }LF// FooLF// BarLFelse { biz(); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:44 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Foo]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Bar]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[biz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenIfAndElseClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenIfAndElseClause.syntaxtree.txt new file mode 100644 index 0000000000..ecff6e6791 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenIfAndElseClause.syntaxtree.txt @@ -0,0 +1,30 @@ +Statement block - Gen - 51 - (0:0,0) + Code span - Gen - [if(foo) { bar(); }LF// FooLF// BarLFelse { baz(); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:28 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Foo]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Bar]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenIfAndElseIfClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenIfAndElseIfClause.syntaxtree.txt new file mode 100644 index 0000000000..7d68e7beaa --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenIfAndElseIfClause.syntaxtree.txt @@ -0,0 +1,35 @@ +Statement block - Gen - 59 - (0:0,0) + Code span - Gen - [if(foo) { bar(); }LF// FooLF// BarLFelse if(bar) { baz(); }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:33 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Foo]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Bar]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenTryAndCatchClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenTryAndCatchClause.syntaxtree.txt new file mode 100644 index 0000000000..e0c31462eb --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenTryAndCatchClause.syntaxtree.txt @@ -0,0 +1,30 @@ +Statement block - Gen - 53 - (0:0,0) + Code span - Gen - [try { bar(); }LF// FooLF// BarLFcatch(bar) { baz(); }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:28 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Foo]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Bar]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenTryAndFinallyClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenTryAndFinallyClause.syntaxtree.txt new file mode 100644 index 0000000000..f04cd252d5 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsLineCommentBetweenTryAndFinallyClause.syntaxtree.txt @@ -0,0 +1,27 @@ +Statement block - Gen - 50 - (0:0,0) + Code span - Gen - [try { bar(); }LF// FooLF// BarLFfinally { baz(); }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:25 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Foo]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Comment;[// Bar]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.Keyword;[finally]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsMarkupWithinAdditionalCatchClauses.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsMarkupWithinAdditionalCatchClauses.syntaxtree.txt new file mode 100644 index 0000000000..f6bdbfe7eb --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsMarkupWithinAdditionalCatchClauses.syntaxtree.txt @@ -0,0 +1,100 @@ +Statement block - Gen - 141 - (0:0,0) + Code span - Gen - [try { var foo = new { } } catch(Foo Bar Baz) { var foo = new { } } catch(Foo Bar Baz) { var foo = new { } } catch(Foo Bar Baz) {] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:78 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Baz]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Baz]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Baz]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 12 - (128:0,128) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (128:0,128) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 3 - (129:0,129) + Markup span - Gen - [

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

] - SpanEditHandler;Accepts:None - (135:0,135) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:None - (139:0,139) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Code span - Gen - [}] - SpanEditHandler;Accepts:Any - (140:0,140) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsMarkupWithinCatchClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsMarkupWithinCatchClause.syntaxtree.txt new file mode 100644 index 0000000000..8024183cd0 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsMarkupWithinCatchClause.syntaxtree.txt @@ -0,0 +1,50 @@ +Statement block - Gen - 59 - (0:0,0) + Code span - Gen - [try { var foo = new { } } catch(Foo Bar Baz) {] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:28 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Baz]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 12 - (46:0,46) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (46:0,46) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 3 - (47:0,47) + Markup span - Gen - [

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

] - SpanEditHandler;Accepts:None - (53:0,53) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:None - (57:0,57) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Code span - Gen - [}] - SpanEditHandler;Accepts:Any - (58:0,58) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsMarkupWithinFinallyClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsMarkupWithinFinallyClause.syntaxtree.txt new file mode 100644 index 0000000000..f3e53bc0e1 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsMarkupWithinFinallyClause.syntaxtree.txt @@ -0,0 +1,43 @@ +Statement block - Gen - 48 - (0:0,0) + Code span - Gen - [try { var foo = new { } } finally {] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:21 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[finally]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 12 - (35:0,35) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (35:0,35) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 3 - (36:0,36) + Markup span - Gen - [

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

] - SpanEditHandler;Accepts:None - (42:0,42) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:None - (46:0,46) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Code span - Gen - [}] - SpanEditHandler;Accepts:None - (47:0,47) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsMarkupWithinTryClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsMarkupWithinTryClause.syntaxtree.txt new file mode 100644 index 0000000000..c3bb2e8568 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsMarkupWithinTryClause.syntaxtree.txt @@ -0,0 +1,25 @@ +Statement block - Gen - 18 - (0:0,0) + Code span - Gen - [try {] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:3 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 12 - (5:0,5) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (5:0,5) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 3 - (6:0,6) + Markup span - Gen - [

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

] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:None - (16:0,16) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Code span - Gen - [}] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenCatchAndFinallyClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenCatchAndFinallyClause.syntaxtree.txt new file mode 100644 index 0000000000..166e268a6f --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenCatchAndFinallyClause.syntaxtree.txt @@ -0,0 +1,63 @@ +Statement block - Gen - 75 - (0:0,0) + Code span - Gen - [try { bar(); } catch(bar) { baz(); } ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:25 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (37:0,37) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (37:0,37) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (38:0,38) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Foo ] - SpanEditHandler;Accepts:Any - (39:0,39) - Symbols:1 + CSharpSymbolType.RazorComment;[ Foo ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (44:0,44) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (45:0,45) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:Any - (46:0,46) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (47:0,47) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (47:0,47) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (48:0,48) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Bar ] - SpanEditHandler;Accepts:Any - (49:0,49) - Symbols:1 + CSharpSymbolType.RazorComment;[ Bar ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (54:0,54) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (55:0,55) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ finally { biz(); }] - SpanEditHandler;Accepts:None - (56:0,56) - Symbols:11 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[finally]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[biz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenDoAndWhileClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenDoAndWhileClause.syntaxtree.txt new file mode 100644 index 0000000000..5d37bf7216 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenDoAndWhileClause.syntaxtree.txt @@ -0,0 +1,48 @@ +Statement block - Gen - 54 - (0:0,0) + Code span - Gen - [do { var foo = bar; } ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:15 + CSharpSymbolType.Keyword;[do]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (22:0,22) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (22:0,22) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (23:0,23) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Foo ] - SpanEditHandler;Accepts:Any - (24:0,24) - Symbols:1 + CSharpSymbolType.RazorComment;[ Foo ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (29:0,29) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (30:0,30) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:Any - (31:0,31) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (32:0,32) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (32:0,32) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (33:0,33) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Bar ] - SpanEditHandler;Accepts:Any - (34:0,34) - Symbols:1 + CSharpSymbolType.RazorComment;[ Bar ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (39:0,39) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (40:0,40) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ while(true);] - SpanEditHandler;Accepts:None - (41:0,41) - Symbols:6 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[while]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[true]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenElseIfAndElseClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenElseIfAndElseClause.syntaxtree.txt new file mode 100644 index 0000000000..f968c56872 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenElseIfAndElseClause.syntaxtree.txt @@ -0,0 +1,68 @@ +Statement block - Gen - 78 - (0:0,0) + Code span - Gen - [if(foo) { bar(); } else if(bar) { baz(); } ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:30 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (43:0,43) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (43:0,43) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (44:0,44) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Foo ] - SpanEditHandler;Accepts:Any - (45:0,45) - Symbols:1 + CSharpSymbolType.RazorComment;[ Foo ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (50:0,50) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (51:0,51) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:Any - (52:0,52) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (53:0,53) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (53:0,53) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (54:0,54) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Bar ] - SpanEditHandler;Accepts:Any - (55:0,55) - Symbols:1 + CSharpSymbolType.RazorComment;[ Bar ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (60:0,60) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (61:0,61) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ else { baz(); }] - SpanEditHandler;Accepts:None - (62:0,62) - Symbols:11 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenIfAndElseClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenIfAndElseClause.syntaxtree.txt new file mode 100644 index 0000000000..5dddcf991b --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenIfAndElseClause.syntaxtree.txt @@ -0,0 +1,52 @@ +Statement block - Gen - 54 - (0:0,0) + Code span - Gen - [if(foo) { bar(); } ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:14 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (19:0,19) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (19:0,19) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (20:0,20) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Foo ] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:1 + CSharpSymbolType.RazorComment;[ Foo ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (26:0,26) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (27:0,27) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:Any - (28:0,28) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (29:0,29) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (29:0,29) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (30:0,30) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Bar ] - SpanEditHandler;Accepts:Any - (31:0,31) - Symbols:1 + CSharpSymbolType.RazorComment;[ Bar ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (36:0,36) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (37:0,37) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ else { baz(); }] - SpanEditHandler;Accepts:None - (38:0,38) - Symbols:11 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenIfAndElseIfClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenIfAndElseIfClause.syntaxtree.txt new file mode 100644 index 0000000000..7ad78eea0d --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenIfAndElseIfClause.syntaxtree.txt @@ -0,0 +1,57 @@ +Statement block - Gen - 62 - (0:0,0) + Code span - Gen - [if(foo) { bar(); } ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:14 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (19:0,19) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (19:0,19) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (20:0,20) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Foo ] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:1 + CSharpSymbolType.RazorComment;[ Foo ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (26:0,26) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (27:0,27) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:Any - (28:0,28) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (29:0,29) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (29:0,29) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (30:0,30) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Bar ] - SpanEditHandler;Accepts:Any - (31:0,31) - Symbols:1 + CSharpSymbolType.RazorComment;[ Bar ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (36:0,36) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (37:0,37) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ else if(bar) { baz(); }] - SpanEditHandler;Accepts:Any - (38:0,38) - Symbols:16 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[else]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenTryAndCatchClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenTryAndCatchClause.syntaxtree.txt new file mode 100644 index 0000000000..aa16fc8b57 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenTryAndCatchClause.syntaxtree.txt @@ -0,0 +1,51 @@ +Statement block - Gen - 55 - (0:0,0) + Code span - Gen - [try { bar(); }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:10 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + Comment block - Gen - 9 - (14:0,14) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (14:0,14) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Foo ] - SpanEditHandler;Accepts:Any - (16:0,16) - Symbols:1 + CSharpSymbolType.RazorComment;[ Foo ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (21:0,21) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (22:0,22) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:Any - (23:0,23) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (24:0,24) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (24:0,24) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (25:0,25) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Bar ] - SpanEditHandler;Accepts:Any - (26:0,26) - Symbols:1 + CSharpSymbolType.RazorComment;[ Bar ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (31:0,31) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (32:0,32) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ catch(bar) { baz(); }] - SpanEditHandler;Accepts:Any - (33:0,33) - Symbols:14 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenTryAndFinallyClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenTryAndFinallyClause.syntaxtree.txt new file mode 100644 index 0000000000..f31b7a4b66 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsRazorCommentBetweenTryAndFinallyClause.syntaxtree.txt @@ -0,0 +1,49 @@ +Statement block - Gen - 53 - (0:0,0) + Code span - Gen - [try { bar(); } ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:11 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (15:0,15) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (16:0,16) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Foo ] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:1 + CSharpSymbolType.RazorComment;[ Foo ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (22:0,22) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (23:0,23) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:Any - (24:0,24) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Comment block - Gen - 9 - (25:0,25) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (25:0,25) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (26:0,26) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Comment span - Gen - [ Bar ] - SpanEditHandler;Accepts:Any - (27:0,27) - Symbols:1 + CSharpSymbolType.RazorComment;[ Bar ]; + MetaCode span - Gen - [*] - SpanEditHandler;Accepts:None - (32:0,32) - Symbols:1 + CSharpSymbolType.RazorCommentStar;[*]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (33:0,33) - Symbols:1 + CSharpSymbolType.RazorCommentTransition;[@]; + Code span - Gen - [ finally { biz(); }] - SpanEditHandler;Accepts:None - (34:0,34) - Symbols:11 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[finally]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[biz]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsTryStatementWithFinallyClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsTryStatementWithFinallyClause.syntaxtree.txt new file mode 100644 index 0000000000..493313d0b3 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsTryStatementWithFinallyClause.syntaxtree.txt @@ -0,0 +1,37 @@ +Statement block - Gen - 55 - (0:0,0) + Code span - Gen - [try { var foo = new { } } finally { var foo = new { } }] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:35 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[finally]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsTryStatementWithMultipleCatchClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsTryStatementWithMultipleCatchClause.syntaxtree.txt new file mode 100644 index 0000000000..7c2f15939f --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsTryStatementWithMultipleCatchClause.syntaxtree.txt @@ -0,0 +1,94 @@ +Statement block - Gen - 148 - (0:0,0) + Code span - Gen - [try { var foo = new { } } catch(Foo Bar Baz) { var foo = new { } } catch(Foo Bar Baz) { var foo = new { } } catch(Foo Bar Baz) { var foo = new { } }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:92 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Baz]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Baz]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Baz]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsTryStatementWithNoAdditionalClauses.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsTryStatementWithNoAdditionalClauses.syntaxtree.txt new file mode 100644 index 0000000000..61dabde423 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsTryStatementWithNoAdditionalClauses.syntaxtree.txt @@ -0,0 +1,19 @@ +Statement block - Gen - 25 - (0:0,0) + Code span - Gen - [try { var foo = new { } }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:17 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsTryStatementWithOneCatchClause.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsTryStatementWithOneCatchClause.syntaxtree.txt new file mode 100644 index 0000000000..2dc17cf9b8 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsTryStatementWithOneCatchClause.syntaxtree.txt @@ -0,0 +1,44 @@ +Statement block - Gen - 66 - (0:0,0) + Code span - Gen - [try { var foo = new { } } catch(Foo Bar Baz) { var foo = new { } }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:42 + CSharpSymbolType.Keyword;[try]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[catch]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Baz]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsUsingsNestedWithinOtherBlocks.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsUsingsNestedWithinOtherBlocks.syntaxtree.txt new file mode 100644 index 0000000000..e3f8d60c2d --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockSupportsUsingsNestedWithinOtherBlocks.syntaxtree.txt @@ -0,0 +1,55 @@ +Statement block - Gen - 96 - (0:0,0) + Code span - Gen - [if(foo) { using(int i = 0; i < 10; new Foo { Bar = "baz" }) { Debug.WriteLine(@"foo } bar"); } }] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:53 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[using]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[int]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[0]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[i]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LessThan;[<]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[10]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["baz"]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Debug]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[WriteLine]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;[@"foo } bar"]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesBlockCommentAtEndOfFile.diagnostics.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesBlockCommentAtEndOfFile.diagnostics.txt new file mode 100644 index 0000000000..ad0b9a4c86 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesBlockCommentAtEndOfFile.diagnostics.txt @@ -0,0 +1,2 @@ +(1,25): Error RZ1001: End of file was reached before the end of the block comment. All comments started with "/*" sequence must be terminated with a matching "*/" sequence. +(1,1): Error RZ1006: The foreach 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/CSharpBlockTest/ParseBlockTerminatesBlockCommentAtEndOfFile.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesBlockCommentAtEndOfFile.syntaxtree.txt new file mode 100644 index 0000000000..79ab1d0164 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesBlockCommentAtEndOfFile.syntaxtree.txt @@ -0,0 +1,16 @@ +Statement block - Gen - 38 - (0:0,0) + Code span - Gen - [foreach(var f in Foo) { /* foo bar baz] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:14 + CSharpSymbolType.Keyword;[foreach]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[f]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[in]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[/* foo bar baz];RZ1001(24:0,24 [1] ) diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesParenBalancingAtEOF.diagnostics.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesParenBalancingAtEOF.diagnostics.txt new file mode 100644 index 0000000000..a40df1a410 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesParenBalancingAtEOF.diagnostics.txt @@ -0,0 +1 @@ +(1,9): Error RZ1027: An opening "(" is missing the corresponding closing ")". diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesParenBalancingAtEOF.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesParenBalancingAtEOF.syntaxtree.txt new file mode 100644 index 0000000000..b7d07763b6 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesParenBalancingAtEOF.syntaxtree.txt @@ -0,0 +1,11 @@ +Expression block - Gen - 15 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [Html.En(code()] - ImplicitExpressionEditHandler;Accepts:Any;ImplicitExpression[RTD];K14 - (1:0,1) - Symbols:7 + CSharpSymbolType.Identifier;[Html]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[En]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[code]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesSingleLineCommentAtEndOfFile.diagnostics.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesSingleLineCommentAtEndOfFile.diagnostics.txt new file mode 100644 index 0000000000..ad3a00985c --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesSingleLineCommentAtEndOfFile.diagnostics.txt @@ -0,0 +1 @@ +(1,1): Error RZ1006: The foreach 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/CSharpBlockTest/ParseBlockTerminatesSingleLineCommentAtEndOfFile.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesSingleLineCommentAtEndOfFile.syntaxtree.txt new file mode 100644 index 0000000000..142f08509f --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesSingleLineCommentAtEndOfFile.syntaxtree.txt @@ -0,0 +1,16 @@ +Statement block - Gen - 38 - (0:0,0) + Code span - Gen - [foreach(var f in Foo) { // foo bar baz] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:14 + CSharpSymbolType.Keyword;[foreach]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[f]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[in]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Comment;[// foo bar baz]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesSingleSlashAtEndOfFile.diagnostics.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesSingleSlashAtEndOfFile.diagnostics.txt new file mode 100644 index 0000000000..ad3a00985c --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesSingleSlashAtEndOfFile.diagnostics.txt @@ -0,0 +1 @@ +(1,1): Error RZ1006: The foreach 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/CSharpBlockTest/ParseBlockTerminatesSingleSlashAtEndOfFile.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesSingleSlashAtEndOfFile.syntaxtree.txt new file mode 100644 index 0000000000..b9f5736263 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesSingleSlashAtEndOfFile.syntaxtree.txt @@ -0,0 +1,22 @@ +Statement block - Gen - 37 - (0:0,0) + Code span - Gen - [foreach(var f in Foo) { / foo bar baz] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:20 + CSharpSymbolType.Keyword;[foreach]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[f]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[in]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Slash;[/]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[bar]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[baz]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesUsingKeywordAtEOFAndOutputsFileCodeBlock.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesUsingKeywordAtEOFAndOutputsFileCodeBlock.syntaxtree.txt new file mode 100644 index 0000000000..4a8f3b0bb8 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTerminatesUsingKeywordAtEOFAndOutputsFileCodeBlock.syntaxtree.txt @@ -0,0 +1,4 @@ +Statement block - Gen - 25 - (0:0,0) + Code span - Gen - [using ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:2 + CSharpSymbolType.Keyword;[using]; + CSharpSymbolType.WhiteSpace;[ ]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTreatsAtSignsAfterFirstPairAsPartOfCSharpStatement.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTreatsAtSignsAfterFirstPairAsPartOfCSharpStatement.syntaxtree.txt new file mode 100644 index 0000000000..fb00f94e10 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTreatsAtSignsAfterFirstPairAsPartOfCSharpStatement.syntaxtree.txt @@ -0,0 +1,22 @@ +Statement block - Gen - 27 - (0:0,0) + Code span - Gen - [if(foo) { ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:7 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [@] - SpanEditHandler;Accepts:Any - (10:0,10) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [@@@class.Foo() }] - SpanEditHandler;Accepts:Any - (11:0,11) - Symbols:10 + CSharpSymbolType.Transition;[@]; + CSharpSymbolType.Transition;[@]; + CSharpSymbolType.Transition;[@]; + CSharpSymbolType.Keyword;[class]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTreatsDoubleAtSignAsEscapeSequenceIfAtStatementStart.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTreatsDoubleAtSignAsEscapeSequenceIfAtStatementStart.syntaxtree.txt new file mode 100644 index 0000000000..f2f576ce8d --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlockTreatsDoubleAtSignAsEscapeSequenceIfAtStatementStart.syntaxtree.txt @@ -0,0 +1,20 @@ +Statement block - Gen - 25 - (0:0,0) + Code span - Gen - [if(foo) { ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:7 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[foo]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [@] - SpanEditHandler;Accepts:Any - (10:0,10) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [@class.Foo() }] - SpanEditHandler;Accepts:Any - (11:0,11) - Symbols:8 + CSharpSymbolType.Transition;[@]; + CSharpSymbolType.Keyword;[class]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Foo]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_NestedCodeBlockWithCSharpAt.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_NestedCodeBlockWithCSharpAt.syntaxtree.txt new file mode 100644 index 0000000000..7858f8d83f --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_NestedCodeBlockWithCSharpAt.syntaxtree.txt @@ -0,0 +1,41 @@ +Statement block - Gen - 49 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Code span - Gen - [ if (true) { var val = @x; if (val != 3) { } } ] - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[];AtEOL - (1:0,1) - Symbols:35 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[true]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[val]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Transition;[@]; + CSharpSymbolType.Identifier;[x]; + CSharpSymbolType.Semicolon;[;]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[val]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.NotEqual;[!=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.IntegerLiteral;[3]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (48:0,48) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_NestedCodeBlockWithMarkupSetsDotAsMarkup.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_NestedCodeBlockWithMarkupSetsDotAsMarkup.syntaxtree.txt new file mode 100644 index 0000000000..4d46547f84 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_NestedCodeBlockWithMarkupSetsDotAsMarkup.syntaxtree.txt @@ -0,0 +1,50 @@ +Statement block - Gen - 51 - (0:0,0) + Code span - Gen - [if (true) { ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:8 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[true]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + Statement block - Gen - 37 - (12:0,12) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [if(false) {] - SpanEditHandler;Accepts:Any - (13:0,13) - Symbols:6 + CSharpSymbolType.Keyword;[if]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Keyword;[false]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 24 - (24:0,24) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (24:0,24) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 5 - (25:0,25) + Markup span - Gen - [
] - SpanEditHandler;Accepts:None - (25:0,25) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[div]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (30:0,30) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Expression block - Gen - 10 - (30:0,30) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (30:0,30) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [something] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (31:0,31) - Symbols:1 + CSharpSymbolType.Identifier;[something]; + Markup span - Gen - [.] - SpanEditHandler;Accepts:Any - (40:0,40) - Symbols:1 + HtmlSymbolType.Text;[.]; + Tag block - Gen - 6 - (41:0,41) + Markup span - Gen - [
] - SpanEditHandler;Accepts:None - (41:0,41) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[div]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:None - (47:0,47) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Code span - Gen - [}] - SpanEditHandler;Accepts:Any - (48:0,48) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Code span - Gen - [ }] - SpanEditHandler;Accepts:Any - (49:0,49) - Symbols:2 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionAtBeginningOfAttributeValue_DoesNotThrow.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionAtBeginningOfAttributeValue_DoesNotThrow.syntaxtree.txt new file mode 100644 index 0000000000..d7cf158060 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionAtBeginningOfAttributeValue_DoesNotThrow.syntaxtree.txt @@ -0,0 +1,31 @@ +Statement block - Gen - 22 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 20 - (1:0,1) + Tag block - Gen - 20 - (1:0,1) + Markup span - Gen - [ - 12 - (6:0,6) + Markup span - Gen - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 2 - (12:0,12) + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (13:0,13) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [def] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.Text;[def]; + Markup span - Gen - ['] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:1 + HtmlSymbolType.SingleQuote;[']; + Markup span - Gen - [ />] - SpanEditHandler;Accepts:None - (18:0,18) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.CloseAngle;[>]; + Code span - Gen - [] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:1 + CSharpSymbolType.Unknown;[]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (21:0,21) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionAtEndOfAttributeValue_DoesNotThrow.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionAtEndOfAttributeValue_DoesNotThrow.syntaxtree.txt new file mode 100644 index 0000000000..2e2a371f2d --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionAtEndOfAttributeValue_DoesNotThrow.syntaxtree.txt @@ -0,0 +1,31 @@ +Statement block - Gen - 22 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 20 - (1:0,1) + Tag block - Gen - 20 - (1:0,1) + Markup span - Gen - [ - 12 - (6:0,6) + Markup span - Gen - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup span - Gen - [abc] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:1 + HtmlSymbolType.Text;[abc]; + Markup block - Gen - 2 - (15:0,15) + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (16:0,16) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - ['] - SpanEditHandler;Accepts:Any - (17:0,17) - Symbols:1 + HtmlSymbolType.SingleQuote;[']; + Markup span - Gen - [ />] - SpanEditHandler;Accepts:None - (18:0,18) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.CloseAngle;[>]; + Code span - Gen - [] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:1 + CSharpSymbolType.Unknown;[]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (21:0,21) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionBetweenAttributeValue_DoesNotThrow.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionBetweenAttributeValue_DoesNotThrow.syntaxtree.txt new file mode 100644 index 0000000000..4281b0f23e --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionBetweenAttributeValue_DoesNotThrow.syntaxtree.txt @@ -0,0 +1,35 @@ +Statement block - Gen - 27 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 25 - (1:0,1) + Tag block - Gen - 25 - (1:0,1) + Markup span - Gen - [ - 17 - (6:0,6) + Markup span - Gen - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup span - Gen - [abc] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:1 + HtmlSymbolType.Text;[abc]; + Markup block - Gen - 3 - (15:0,15) + Markup span - Gen - [ @] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:2 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (17:0,17) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [ def] - SpanEditHandler;Accepts:Any - (18:0,18) - Symbols:2 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[def]; + Markup span - Gen - ['] - SpanEditHandler;Accepts:Any - (22:0,22) - Symbols:1 + HtmlSymbolType.SingleQuote;[']; + Markup span - Gen - [ />] - SpanEditHandler;Accepts:None - (23:0,23) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.CloseAngle;[>]; + Code span - Gen - [] - SpanEditHandler;Accepts:Any - (26:0,26) - Symbols:1 + CSharpSymbolType.Unknown;[]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (26:0,26) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionInAttributeValue_DoesNotThrow.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionInAttributeValue_DoesNotThrow.syntaxtree.txt new file mode 100644 index 0000000000..fe93e1b8a3 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionInAttributeValue_DoesNotThrow.syntaxtree.txt @@ -0,0 +1,29 @@ +Statement block - Gen - 19 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 17 - (1:0,1) + Tag block - Gen - 17 - (1:0,1) + Markup span - Gen - [ - 9 - (6:0,6) + Markup span - Gen - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 2 - (12:0,12) + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (13:0,13) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - ['] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.SingleQuote;[']; + Markup span - Gen - [ />] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.CloseAngle;[>]; + Code span - Gen - [] - SpanEditHandler;Accepts:Any - (18:0,18) - Symbols:1 + CSharpSymbolType.Unknown;[]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (18:0,18) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionInEmail_DoesNotThrow.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionInEmail_DoesNotThrow.syntaxtree.txt new file mode 100644 index 0000000000..db745aa5c1 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionInEmail_DoesNotThrow.syntaxtree.txt @@ -0,0 +1,42 @@ +Statement block - Gen - 44 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 42 - (1:0,1) + Tag block - Gen - 42 - (1:0,1) + Markup span - Gen - [ - 34 - (6:0,6) + Markup span - Gen - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup span - Gen - [abc@def.com] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:1 + HtmlSymbolType.Text;[abc@def.com]; + Markup span - Gen - [ abc] - SpanEditHandler;Accepts:Any - (23:0,23) - Symbols:2 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[abc]; + Markup block - Gen - 2 - (27:0,27) + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (27:0,27) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (28:0,28) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [def.com] - SpanEditHandler;Accepts:Any - (29:0,29) - Symbols:1 + HtmlSymbolType.Text;[def.com]; + 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:None - (40:0,40) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.CloseAngle;[>]; + Code span - Gen - [] - SpanEditHandler;Accepts:Any - (43:0,43) - Symbols:1 + CSharpSymbolType.Unknown;[]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (43:0,43) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionInRegex_DoesNotThrow.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionInRegex_DoesNotThrow.syntaxtree.txt new file mode 100644 index 0000000000..3ac9e76d8a --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionInRegex_DoesNotThrow.syntaxtree.txt @@ -0,0 +1,75 @@ +Statement block - Gen - 117 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 115 - (1:0,1) + Tag block - Gen - 115 - (1:0,1) + Markup span - Gen - [ - 107 - (6:0,6) + Markup span - Gen - [ foo="] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.DoubleQuote;["]; + Markup span - Gen - [/^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+] - SpanEditHandler;Accepts:Any - (12:0,12) - Symbols:14 + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[^]; + HtmlSymbolType.LeftBracket;[[]; + HtmlSymbolType.Text;[a-z0-9]; + HtmlSymbolType.Bang;[!]; + HtmlSymbolType.Text;[#$%&]; + HtmlSymbolType.SingleQuote;[']; + HtmlSymbolType.Text;[*+\]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.QuestionMark;[?]; + HtmlSymbolType.Text;[^_`{|}~.-]; + HtmlSymbolType.RightBracket;[]]; + HtmlSymbolType.Text;[+]; + Markup block - Gen - 2 - (44:0,44) + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (44:0,44) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (45:0,45) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [[a-z0-9]([a-z0-9-]*[a-z0-9])?\.([a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i] - SpanEditHandler;Accepts:Any - (46:0,46) - Symbols:30 + HtmlSymbolType.LeftBracket;[[]; + HtmlSymbolType.Text;[a-z0-9]; + HtmlSymbolType.RightBracket;[]]; + HtmlSymbolType.Text;[(]; + HtmlSymbolType.LeftBracket;[[]; + HtmlSymbolType.Text;[a-z0-9-]; + HtmlSymbolType.RightBracket;[]]; + HtmlSymbolType.Text;[*]; + HtmlSymbolType.LeftBracket;[[]; + HtmlSymbolType.Text;[a-z0-9]; + HtmlSymbolType.RightBracket;[]]; + HtmlSymbolType.Text;[)]; + HtmlSymbolType.QuestionMark;[?]; + HtmlSymbolType.Text;[\.(]; + HtmlSymbolType.LeftBracket;[[]; + HtmlSymbolType.Text;[a-z0-9]; + HtmlSymbolType.RightBracket;[]]; + HtmlSymbolType.Text;[(]; + HtmlSymbolType.LeftBracket;[[]; + HtmlSymbolType.Text;[a-z0-9-]; + HtmlSymbolType.RightBracket;[]]; + HtmlSymbolType.Text;[*]; + HtmlSymbolType.LeftBracket;[[]; + HtmlSymbolType.Text;[a-z0-9]; + HtmlSymbolType.RightBracket;[]]; + HtmlSymbolType.Text;[)]; + HtmlSymbolType.QuestionMark;[?]; + HtmlSymbolType.Text;[)*$]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[i]; + Markup span - Gen - ["] - SpanEditHandler;Accepts:Any - (112:0,112) - Symbols:1 + HtmlSymbolType.DoubleQuote;["]; + Markup span - Gen - [ />] - SpanEditHandler;Accepts:None - (113:0,113) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.CloseAngle;[>]; + Code span - Gen - [] - SpanEditHandler;Accepts:Any - (116:0,116) - Symbols:1 + CSharpSymbolType.Unknown;[]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (116:0,116) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionWithExpressionBlock_DoesNotThrow.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionWithExpressionBlock_DoesNotThrow.syntaxtree.txt new file mode 100644 index 0000000000..52c3f384bb --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransitionWithExpressionBlock_DoesNotThrow.syntaxtree.txt @@ -0,0 +1,144 @@ +Statement block - Gen - 120 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 118 - (1:0,1) + Tag block - Gen - 118 - (1:0,1) + Markup span - Gen - [ - 15 - (6:0,6) + Markup span - Gen - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 2 - (12:0,12) + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (13:0,13) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup block - Gen - 6 - (14:0,14) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Expression block - Gen - 6 - (14:0,14) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (14:0,14) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [(] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:1 + CSharpSymbolType.LeftParenthesis;[(]; + Code span - Gen - [2+3] - SpanEditHandler;Accepts:Any - (16:0,16) - Symbols:3 + CSharpSymbolType.IntegerLiteral;[2]; + CSharpSymbolType.Plus;[+]; + CSharpSymbolType.IntegerLiteral;[3]; + MetaCode span - Gen - [)] - SpanEditHandler;Accepts:None - (19:0,19) - Symbols:1 + CSharpSymbolType.RightParenthesis;[)]; + Markup span - Gen - ['] - SpanEditHandler;Accepts:Any - (20:0,20) - Symbols:1 + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 28 - (21:0,21) + Markup span - Gen - [ bar='] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[bar]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 6 - (27:0,27) + Expression block - Gen - 6 - (27:0,27) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (27:0,27) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [(] - SpanEditHandler;Accepts:None - (28:0,28) - Symbols:1 + CSharpSymbolType.LeftParenthesis;[(]; + Code span - Gen - [2+3] - SpanEditHandler;Accepts:Any - (29:0,29) - Symbols:3 + CSharpSymbolType.IntegerLiteral;[2]; + CSharpSymbolType.Plus;[+]; + CSharpSymbolType.IntegerLiteral;[3]; + MetaCode span - Gen - [)] - SpanEditHandler;Accepts:None - (32:0,32) - Symbols:1 + CSharpSymbolType.RightParenthesis;[)]; + Markup block - Gen - 2 - (33:0,33) + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (33:0,33) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (34:0,34) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup block - Gen - 13 - (35:0,35) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (35:0,35) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Expression block - Gen - 13 - (35:0,35) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (35:0,35) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [DateTime.Now] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (36:0,36) - Symbols:3 + CSharpSymbolType.Identifier;[DateTime]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Now]; + Markup span - Gen - ['] - SpanEditHandler;Accepts:Any - (48:0,48) - Symbols:1 + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 22 - (49:0,49) + Markup span - Gen - [ baz='] - SpanEditHandler;Accepts:Any - (49:0,49) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[baz]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 13 - (55:0,55) + Expression block - Gen - 13 - (55:0,55) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (55:0,55) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [DateTime.Now] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (56:0,56) - Symbols:3 + CSharpSymbolType.Identifier;[DateTime]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Now]; + Markup block - Gen - 2 - (68:0,68) + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (68:0,68) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (69:0,69) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - ['] - SpanEditHandler;Accepts:Any - (70:0,70) - Symbols:1 + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 23 - (71:0,71) + Markup span - Gen - [ bat='] - SpanEditHandler;Accepts:Any - (71:0,71) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[bat]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 13 - (77:0,77) + Expression block - Gen - 13 - (77:0,77) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (77:0,77) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [DateTime.Now] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (78:0,78) - Symbols:3 + CSharpSymbolType.Identifier;[DateTime]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Now]; + Markup block - Gen - 3 - (90:0,90) + Markup span - Gen - [ @] - SpanEditHandler;Accepts:None - (90:0,90) - Symbols:2 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (92:0,92) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - ['] - SpanEditHandler;Accepts:Any - (93:0,93) - Symbols:1 + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 22 - (94:0,94) + Markup span - Gen - [ zoo='] - SpanEditHandler;Accepts:Any - (94:0,94) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[zoo]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 2 - (100:0,100) + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (100:0,100) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (101:0,101) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup block - Gen - 13 - (102:0,102) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (102:0,102) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Expression block - Gen - 13 - (102:0,102) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (102:0,102) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [DateTime.Now] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (103:0,103) - Symbols:3 + CSharpSymbolType.Identifier;[DateTime]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Now]; + Markup span - Gen - ['] - SpanEditHandler;Accepts:Any - (115:0,115) - Symbols:1 + HtmlSymbolType.SingleQuote;[']; + Markup span - Gen - [ />] - SpanEditHandler;Accepts:None - (116:0,116) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.CloseAngle;[>]; + Code span - Gen - [] - SpanEditHandler;Accepts:Any - (119:0,119) - Symbols:1 + CSharpSymbolType.Unknown;[]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (119:0,119) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransition_EndOfFile_Throws.diagnostics.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransition_EndOfFile_Throws.diagnostics.txt new file mode 100644 index 0000000000..24f11b3532 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransition_EndOfFile_Throws.diagnostics.txt @@ -0,0 +1,2 @@ +(1,3): Error RZ1024: End of file or an unexpected character was reached before the "span" tag could be parsed. Elements inside markup blocks must be complete. They must either be self-closing ("
") or have matching end tags ("

Hello

"). If you intended to display a "<" character, use the "<" HTML entity. +(1,1): 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/CSharpBlockTest/ParseBlock_WithDoubleTransition_EndOfFile_Throws.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransition_EndOfFile_Throws.syntaxtree.txt new file mode 100644 index 0000000000..9fbfa723b7 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithDoubleTransition_EndOfFile_Throws.syntaxtree.txt @@ -0,0 +1,21 @@ +Statement block - Gen - 14 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 13 - (1:0,1) + Tag block - Gen - 13 - (1:0,1) + Markup span - Gen - [ - 2 - (12:0,12) + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:None - (13:0,13) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithUnexpectedTransitionsInAttributeValue_Throws.diagnostics.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithUnexpectedTransitionsInAttributeValue_Throws.diagnostics.txt new file mode 100644 index 0000000000..cbdffd5de4 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithUnexpectedTransitionsInAttributeValue_Throws.diagnostics.txt @@ -0,0 +1,2 @@ +(1,14): Error RZ1003: A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following "@" with no space in between. +(1,16): Error RZ1005: "' />}" is not valid at the start of a code block. Only identifiers, keywords, comments, "(" and "{" are valid. diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithUnexpectedTransitionsInAttributeValue_Throws.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithUnexpectedTransitionsInAttributeValue_Throws.syntaxtree.txt new file mode 100644 index 0000000000..6a84c3a982 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParseBlock_WithUnexpectedTransitionsInAttributeValue_Throws.syntaxtree.txt @@ -0,0 +1,38 @@ +Statement block - Gen - 20 - (0:0,0) + MetaCode span - Gen - [{] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 18 - (1:0,1) + Tag block - Gen - 18 - (1:0,1) + Markup span - Gen - [ - 10 - (6:0,6) + Markup span - Gen - [ foo='] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.SingleQuote;[']; + Markup block - Gen - 1 - (12:0,12) + Expression block - Gen - 1 - (12:0,12) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (12:0,12) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (13:0,13) - Symbols:1 + CSharpSymbolType.Unknown;[]; + Markup block - Gen - 2 - (13:0,13) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (13:0,13) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Expression block - Gen - 1 - (14:0,14) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (14:0,14) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (15:0,15) - Symbols:1 + CSharpSymbolType.Unknown;[]; + Markup span - Gen - ['] - SpanEditHandler;Accepts:Any - (15:0,15) - Symbols:1 + HtmlSymbolType.SingleQuote;[']; + Markup span - Gen - [ />] - SpanEditHandler;Accepts:None - (16:0,16) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.CloseAngle;[>]; + Code span - Gen - [] - SpanEditHandler;Accepts:Any - (19:0,19) - Symbols:1 + CSharpSymbolType.Unknown;[]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (19:0,19) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParsersCanNestRecursively.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParsersCanNestRecursively.syntaxtree.txt new file mode 100644 index 0000000000..b04759cfbd --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/CSharpBlockTest/ParsersCanNestRecursively.syntaxtree.txt @@ -0,0 +1,179 @@ +Statement block - Gen - 351 - (0:0,0) + Code span - Gen - [foreach(var c in db.Categories) {LF] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:15 + CSharpSymbolType.Keyword;[foreach]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[c]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[in]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[db]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Categories]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + Markup block - Gen - 307 - (35:1,0) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (35:1,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 5 - (47:1,12) + Markup span - Gen - [
] - SpanEditHandler;Accepts:None - (47:1,12) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[div]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF ] - SpanEditHandler;Accepts:Any - (52:1,17) - Symbols:2 + HtmlSymbolType.NewLine;[LF]; + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 4 - (70:2,16) + Markup span - Gen - [

] - SpanEditHandler;Accepts:None - (70:2,16) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[h1]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (74:2,20) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Expression block - Gen - 7 - (74:2,20) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (74:2,20) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [c.Name] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (75:2,21) - Symbols:3 + CSharpSymbolType.Identifier;[c]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Name]; + Tag block - Gen - 5 - (81:2,27) + Markup span - Gen - [

] - SpanEditHandler;Accepts:None - (81:2,27) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[h1]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF ] - SpanEditHandler;Accepts:Any - (86:2,32) - Symbols:2 + HtmlSymbolType.NewLine;[LF]; + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 4 - (104:3,16) + Markup span - Gen - [
    ] - SpanEditHandler;Accepts:None - (104:3,16) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[ul]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (108:3,20) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Statement block - Gen - 189 - (110:4,0) + Code span - Gen - [ ] - SpanEditHandler;Accepts:Any - (110:4,0) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (130:4,20) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [foreach(var p in c.Products) {LF] - SpanEditHandler;Accepts:Any - (131:4,21) - Symbols:15 + CSharpSymbolType.Keyword;[foreach]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[p]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[in]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[c]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Products]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + Markup block - Gen - 113 - (163:5,0) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (163:5,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 4 - (187:5,24) + Markup span - Gen - [
  • ] - SpanEditHandler;Accepts:None - (187:5,24) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[li]; + HtmlSymbolType.CloseAngle;[>]; + Tag block - Gen - 67 - (191:5,28) + Markup span - Gen - [ - 64 - (193:5,30) + Markup span - Gen - [ href="] - SpanEditHandler;Accepts:Any - (193:5,30) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[href]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.DoubleQuote;["]; + Markup block - Gen - 56 - (200:5,37) + Expression block - Gen - 56 - (200:5,37) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (200:5,37) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [Html.ActionUrl("Products", "Detail", new { id = p.Id })] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (201:5,38) - Symbols:24 + CSharpSymbolType.Identifier;[Html]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[ActionUrl]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.StringLiteral;["Products"]; + CSharpSymbolType.Comma;[,]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.StringLiteral;["Detail"]; + CSharpSymbolType.Comma;[,]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[new]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[id]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Assign;[=]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[p]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Id]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.RightParenthesis;[)]; + Markup span - Gen - ["] - SpanEditHandler;Accepts:Any - (256:5,93) - Symbols:1 + HtmlSymbolType.DoubleQuote;["]; + Markup span - Gen - [>] - SpanEditHandler;Accepts:None - (257:5,94) - Symbols:1 + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (258:5,95) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Expression block - Gen - 7 - (258:5,95) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (258:5,95) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [p.Name] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (259:5,96) - Symbols:3 + CSharpSymbolType.Identifier;[p]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Name]; + Tag block - Gen - 4 - (265:5,102) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (265:5,102) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[a]; + HtmlSymbolType.CloseAngle;[>]; + Tag block - Gen - 5 - (269:5,106) + Markup span - Gen - [
  • ] - SpanEditHandler;Accepts:None - (269:5,106) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[li]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:None - (274:5,111) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Code span - Gen - [ }LF] - SpanEditHandler;Accepts:None - (276:6,0) - Symbols:3 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (299:7,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 5 - (315:7,16) + Markup span - Gen - [
] - SpanEditHandler;Accepts:None - (315:7,16) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[ul]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF ] - SpanEditHandler;Accepts:Any - (320:7,21) - Symbols:2 + HtmlSymbolType.NewLine;[LF]; + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 6 - (334:8,12) + Markup span - Gen - [
] - SpanEditHandler;Accepts:None - (334:8,12) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[div]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:None - (340:8,18) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Code span - Gen - [ }] - SpanEditHandler;Accepts:None - (342:9,0) - Symbols:2 + CSharpSymbolType.WhiteSpace;[ ]; + 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 f3e36315ec..42031cd37f 100644 --- a/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs +++ b/test/Microsoft.AspNetCore.Razor.Test.Common/Language/Legacy/ParserTestBase.cs @@ -365,6 +365,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy } } + internal virtual void SingleSpanBlockTest(string document) + { + SingleSpanBlockTest(document, default, default); + } + internal virtual void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any) { SingleSpanBlockTest(document, blockKind, spanType, acceptedCharacters, expectedError: null); @@ -394,6 +399,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { var result = ParseBlock(document, designTime: false); + if (UseBaselineTests && !IsTheory) + { + AssertSyntaxTreeNodeMatchesBaseline(result); + return; + } + var builder = new BlockBuilder(); builder.Type = blockKind; var expected = ConfigureAndAddSpanToBlock(builder, Factory.Span(spanType, spanContent, spanType == SpanKindInternal.Markup).Accepts(acceptedCharacters));