diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlParserTestUtils.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlParserTestUtils.cs deleted file mode 100644 index 3aa1829169..0000000000 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlParserTestUtils.cs +++ /dev/null @@ -1,43 +0,0 @@ -// Copyright (c) .NET Foundation. All rights reserved. -// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information. - -using System; - -namespace Microsoft.AspNetCore.Razor.Language.Legacy -{ - internal class HtmlParserTestUtils - { - public static void RunSingleAtEscapeTest(Action testMethod, AcceptedCharactersInternal lastSpanAcceptedCharacters = AcceptedCharactersInternal.None) - { - var factory = new SpanFactory(); - testMethod("@@bar", - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("").Accepts(lastSpanAcceptedCharacters)), - factory.Markup("@").Hidden(), - factory.Markup("@bar"), - new MarkupTagBlock( - factory.Markup("").Accepts(lastSpanAcceptedCharacters)))); - } - - public static void RunMultiAtEscapeTest(Action testMethod, AcceptedCharactersInternal lastSpanAcceptedCharacters = AcceptedCharactersInternal.None) - { - var factory = new SpanFactory(); - testMethod("@@@@@bar", - new MarkupBlock( - new MarkupTagBlock( - factory.Markup("").Accepts(lastSpanAcceptedCharacters)), - factory.Markup("@").Hidden(), - factory.Markup("@"), - factory.Markup("@").Hidden(), - factory.Markup("@"), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("bar") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - new MarkupTagBlock( - factory.Markup("").Accepts(lastSpanAcceptedCharacters)))); - } - } -} diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlToCodeSwitchTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlToCodeSwitchTest.cs index 928762fbc6..2bdf5ea638 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlToCodeSwitchTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlToCodeSwitchTest.cs @@ -10,80 +10,33 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { public class HtmlToCodeSwitchTest : CsHtmlMarkupParserTestBase { + public HtmlToCodeSwitchTest() + { + UseBaselineTests = true; + } + [Fact] public void ParseBlockSwitchesWhenCharacterBeforeSwapIsNonAlphanumeric() { - ParseBlockTest("

foo#@i

", - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup("foo#"), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("i").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)))); + ParseBlockTest("

foo#@i

"); } [Fact] public void ParseBlockSwitchesToCodeWhenSwapCharacterEncounteredMidTag() { - ParseBlockTest("", - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); + ParseBlockTest(""); } [Fact] public void ParseBlockSwitchesToCodeWhenSwapCharacterEncounteredInAttributeValue() { - ParseBlockTest("", - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("(" bar=\"", 4, 0, 4), new LocationTagged("\"", 14, 0, 14)), - Factory.Markup(" bar=\"").With(SpanChunkGenerator.Null), - new MarkupBlock(new DynamicAttributeBlockChunkGenerator(new LocationTagged(string.Empty, 10, 0, 10), 10, 0, 10), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("baz") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), - Factory.Markup("\"").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); + ParseBlockTest(""); } [Fact] public void ParseBlockSwitchesToCodeWhenSwapCharacterEncounteredInTagContent() { - ParseBlockTest("@bar@boz", - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml(), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("bar") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml(), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("boz") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); + ParseBlockTest("@bar@boz"); } [Fact] @@ -91,121 +44,43 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { // TODO: Fix at a later date, HTML should be a tag block: https://github.com/aspnet/Razor/issues/101 ParseBlockTest("@:
  • Foo @Bar Baz" + Environment.NewLine - + "bork", - new MarkupBlock( - Factory.MarkupTransition(), - Factory.MetaMarkup(":", HtmlSymbolType.Colon), - Factory.Markup("
  • Foo ").With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString)), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("Bar") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - Factory.Markup(" Baz" + Environment.NewLine) - .Accepts(AcceptedCharactersInternal.None))); + + "bork"); } [Fact] public void ParseBlockSupportsCodeWithinComment() { - ParseBlockTest("", - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), - BlockFactory.HtmlCommentBlock(Factory, f => new SyntaxTreeNode[] { - f.Markup(" ").Accepts(AcceptedCharactersInternal.WhiteSpace), - new ExpressionBlock( - f.CodeTransition(), - f.Code("foo") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - f.Markup(" ").Accepts(AcceptedCharactersInternal.WhiteSpace) }), - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); + ParseBlockTest(""); } [Fact] public void ParseBlockSupportsCodeWithinSGMLDeclaration() { - ParseBlockTest("", - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup("").Accepts(AcceptedCharactersInternal.None), - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); + ParseBlockTest(""); } [Fact] public void ParseBlockSupportsCodeWithinCDataDeclaration() { - ParseBlockTest("", - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup("").Accepts(AcceptedCharactersInternal.None), - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); + ParseBlockTest(""); } [Fact] public void ParseBlockSupportsCodeWithinXMLProcessingInstruction() { - ParseBlockTest("", - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup("").Accepts(AcceptedCharactersInternal.None), - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); + ParseBlockTest(""); } [Fact] public void ParseBlockDoesNotSwitchToCodeOnEmailAddressInText() { - ParseBlockTest("anurse@microsoft.com", - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup("anurse@microsoft.com"), - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); + ParseBlockTest("anurse@microsoft.com"); } [Fact] public void ParseBlockDoesNotSwitchToCodeOnEmailAddressInAttribute() { - ParseBlockTest("Email me", - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("(" href=\"", 2, 0, 2), new LocationTagged("\"", 36, 0, 36)), - Factory.Markup(" href=\"").With(SpanChunkGenerator.Null), - Factory.Markup("mailto:anurse@microsoft.com") - .With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 9, 0, 9), new LocationTagged("mailto:anurse@microsoft.com", 9, 0, 9))), - Factory.Markup("\"").With(SpanChunkGenerator.Null)), - Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup("Email me"), - new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); + ParseBlockTest("Email me"); } [Fact] @@ -215,33 +90,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + " @foreach(var p in Products) {" + Environment.NewLine + "
  • Product: @p.Name
  • " + Environment.NewLine + " }" + Environment.NewLine - + " ", - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("
      ").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup(Environment.NewLine), - new StatementBlock( - Factory.Code(" ").AsStatement(), - Factory.CodeTransition(), - Factory.Code("foreach(var p in Products) {" + Environment.NewLine).AsStatement(), - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("
    • ").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup("Product: "), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("p.Name") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - new MarkupTagBlock( - Factory.Markup("
    • ").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)), - Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharactersInternal.None)), - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None)))); + + " "); } [Fact] @@ -251,33 +100,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + " @foreach(var p in Products) {" + Environment.NewLine + "
  • Product: @p.Name
  • " + Environment.NewLine + " }" + Environment.NewLine - + " ", - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("
      ")), - Factory.Markup(Environment.NewLine), - new StatementBlock( - Factory.Code(" ").AsStatement(), - Factory.CodeTransition(), - Factory.Code("foreach(var p in Products) {" + Environment.NewLine).AsStatement(), - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("
    • ").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup("Product: "), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("p.Name") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - new MarkupTagBlock( - Factory.Markup("
    • ").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)), - Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharactersInternal.None)), - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("
    ")))); + + " "); } [Fact] @@ -291,45 +114,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + " }" + Environment.NewLine + " " + Environment.NewLine + "}", - new[] { SectionDirective.Directive, }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(Environment.NewLine + " "), - new MarkupTagBlock( - Factory.Markup("
      ")), - Factory.Markup(Environment.NewLine), - new StatementBlock( - Factory.Code(" ").AsStatement(), - Factory.CodeTransition(), - Factory.Code("foreach(var p in Products) {" + Environment.NewLine).AsStatement(), - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("
    • ").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup("Product: "), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("p.Name") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - new MarkupTagBlock( - Factory.Markup("
    • ").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)), - Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharactersInternal.None)), - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("
    ")), - Factory.Markup(Environment.NewLine)), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive, }); } [Fact] @@ -340,27 +125,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + "
  • Product: @p.Name
  • " + Environment.NewLine + " }" + Environment.NewLine + " ", - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("
      ").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup(Environment.NewLine + " "), - new StatementBlock( - Factory.CodeTransition(), - Factory.Code($"foreach(var p in Products) {{{Environment.NewLine} ").AsStatement(), - new MarkupBlock( - new MarkupTagBlock( - Factory.Markup("
    • ").Accepts(AcceptedCharactersInternal.None)), - Factory.Markup("Product: "), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("p.Name").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - new MarkupTagBlock( - Factory.Markup("
    • ").Accepts(AcceptedCharactersInternal.None))), - Factory.Code(Environment.NewLine + " }").AsStatement().Accepts(AcceptedCharactersInternal.None)), - Factory.Markup(Environment.NewLine + " "), - new MarkupTagBlock( - Factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None))), designTime: true); } @@ -368,25 +132,26 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy [Fact] public void ParseBlockTreatsTwoAtSignsAsEscapeSequence() { - HtmlParserTestUtils.RunSingleAtEscapeTest(ParseBlockTest); + ParseBlockTest("@@bar"); } [Fact] public void ParseBlockTreatsPairsOfAtSignsAsEscapeSequence() { - HtmlParserTestUtils.RunMultiAtEscapeTest(ParseBlockTest); + ParseBlockTest("@@@@@bar"); } [Fact] public void ParseDocumentTreatsTwoAtSignsAsEscapeSequence() { - HtmlParserTestUtils.RunSingleAtEscapeTest(ParseDocumentTest, lastSpanAcceptedCharacters: AcceptedCharactersInternal.Any); + ParseDocumentTest("@@bar"); } [Fact] public void ParseDocumentTreatsPairsOfAtSignsAsEscapeSequence() { - HtmlParserTestUtils.RunMultiAtEscapeTest(ParseDocumentTest, lastSpanAcceptedCharacters: AcceptedCharactersInternal.Any); + var factory = new SpanFactory(); + ParseDocumentTest("@@@@@bar"); } [Fact] @@ -394,27 +159,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseDocumentTest( "@section Foo { @@bar }", - new[] { SectionDirective.Directive, }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("")), - Factory.Markup("@").Hidden(), - Factory.Markup("@bar"), - new MarkupTagBlock( - Factory.Markup("")), - Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive, }); } [Fact] @@ -422,34 +167,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseDocumentTest( "@section Foo { @@@@@bar }", - new[] { SectionDirective.Directive, }, - new MarkupBlock( - Factory.EmptyHtml(), - new DirectiveBlock(new DirectiveChunkGenerator(SectionDirective.Directive), - Factory.CodeTransition(), - Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), - Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), - Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(SectionDirective.Directive.Tokens[0]), - Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), - new MarkupBlock( - Factory.Markup(" "), - new MarkupTagBlock( - Factory.Markup("")), - Factory.Markup("@").Hidden(), - Factory.Markup("@"), - Factory.Markup("@").Hidden(), - Factory.Markup("@"), - new ExpressionBlock( - Factory.CodeTransition(), - Factory.Code("bar") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), - new MarkupTagBlock( - Factory.Markup("")), - Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), - Factory.EmptyHtml())); + new[] { SectionDirective.Directive, }); } } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/CSharpCodeParserDoesNotAcceptLeadingOrTrailingWhitespaceInDesignMode.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/CSharpCodeParserDoesNotAcceptLeadingOrTrailingWhitespaceInDesignMode.syntaxtree.txt new file mode 100644 index 0000000000..948a0899e9 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/CSharpCodeParserDoesNotAcceptLeadingOrTrailingWhitespaceInDesignMode.syntaxtree.txt @@ -0,0 +1,64 @@ +Markup block - Gen - 95 - (0:0,0) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 4 - (3:0,3) + Markup span - Gen - [
      ] - SpanEditHandler;Accepts:None - (3:0,3) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[ul]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF ] - SpanEditHandler;Accepts:Any - (7:0,7) - Symbols:2 + HtmlSymbolType.NewLine;[LF]; + HtmlSymbolType.WhiteSpace;[ ]; + Statement block - Gen - 71 - (13:1,4) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (13:1,4) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [foreach(var p in Products) {LF ] - SpanEditHandler;Accepts:Any - (14:1,5) - Symbols:14 + CSharpSymbolType.Keyword;[foreach]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[p]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[in]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Products]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + Markup block - Gen - 25 - (52:2,8) + Tag block - Gen - 4 - (52:2,8) + Markup span - Gen - [
    • ] - SpanEditHandler;Accepts:None - (52:2,8) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[li]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Product: ] - SpanEditHandler;Accepts:Any - (56:2,12) - Symbols:2 + HtmlSymbolType.Text;[Product:]; + HtmlSymbolType.WhiteSpace;[ ]; + Expression block - Gen - 7 - (65:2,21) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (65:2,21) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [p.Name] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (66:2,22) - Symbols:3 + CSharpSymbolType.Identifier;[p]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Name]; + Tag block - Gen - 5 - (72:2,28) + Markup span - Gen - [
    • ] - SpanEditHandler;Accepts:None - (72:2,28) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[li]; + HtmlSymbolType.CloseAngle;[>]; + Code span - Gen - [LF }] - SpanEditHandler;Accepts:None - (77:2,33) - Symbols:3 + CSharpSymbolType.NewLine;[LF]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [LF ] - SpanEditHandler;Accepts:Any - (84:3,5) - Symbols:2 + HtmlSymbolType.NewLine;[LF]; + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 5 - (90:4,4) + Markup span - Gen - [
    ] - SpanEditHandler;Accepts:None - (90:4,4) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[ul]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockDoesNotSwitchToCodeOnEmailAddressInAttribute.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockDoesNotSwitchToCodeOnEmailAddressInAttribute.syntaxtree.txt new file mode 100644 index 0000000000..37c69b5ea1 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockDoesNotSwitchToCodeOnEmailAddressInAttribute.syntaxtree.txt @@ -0,0 +1,27 @@ +Markup block - Gen - 50 - (0:0,0) + Tag block - Gen - 38 - (0:0,0) + Markup span - Gen - [ - 35 - (2:0,2) + Markup span - Gen - [ href="] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[href]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.DoubleQuote;["]; + Markup span - Gen - [mailto:anurse@microsoft.com] - SpanEditHandler;Accepts:Any - (9:0,9) - Symbols:1 + HtmlSymbolType.Text;[mailto:anurse@microsoft.com]; + Markup span - Gen - ["] - SpanEditHandler;Accepts:Any - (36:0,36) - Symbols:1 + HtmlSymbolType.DoubleQuote;["]; + Markup span - Gen - [>] - SpanEditHandler;Accepts:None - (37:0,37) - Symbols:1 + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Email me] - SpanEditHandler;Accepts:Any - (38:0,38) - Symbols:3 + HtmlSymbolType.Text;[Email]; + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[me]; + Tag block - Gen - 4 - (46:0,46) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (46:0,46) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[a]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockDoesNotSwitchToCodeOnEmailAddressInText.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockDoesNotSwitchToCodeOnEmailAddressInText.syntaxtree.txt new file mode 100644 index 0000000000..9f5608c121 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockDoesNotSwitchToCodeOnEmailAddressInText.syntaxtree.txt @@ -0,0 +1,14 @@ +Markup block - Gen - 31 - (0:0,0) + Tag block - Gen - 5 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [anurse@microsoft.com] - SpanEditHandler;Accepts:Any - (5:0,5) - Symbols:1 + HtmlSymbolType.Text;[anurse@microsoft.com]; + Tag block - Gen - 6 - (25:0,25) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (25:0,25) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockGivesWhitespacePreceedingAtToCodeIfThereIsNoMarkupOnThatLine.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockGivesWhitespacePreceedingAtToCodeIfThereIsNoMarkupOnThatLine.syntaxtree.txt new file mode 100644 index 0000000000..97f7e23a10 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockGivesWhitespacePreceedingAtToCodeIfThereIsNoMarkupOnThatLine.syntaxtree.txt @@ -0,0 +1,67 @@ +Markup block - Gen - 95 - (0:0,0) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 4 - (3:0,3) + Markup span - Gen - [
      ] - SpanEditHandler;Accepts:None - (3:0,3) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[ul]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (7:0,7) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Statement block - Gen - 77 - (9:1,0) + Code span - Gen - [ ] - SpanEditHandler;Accepts:Any - (9:1,0) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (13:1,4) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [foreach(var p in Products) {LF] - SpanEditHandler;Accepts:Any - (14:1,5) - Symbols:13 + CSharpSymbolType.Keyword;[foreach]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[p]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[in]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Products]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + Markup block - Gen - 35 - (44:2,0) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (44:2,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 4 - (52:2,8) + Markup span - Gen - [
    • ] - SpanEditHandler;Accepts:None - (52:2,8) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[li]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Product: ] - SpanEditHandler;Accepts:Any - (56:2,12) - Symbols:2 + HtmlSymbolType.Text;[Product:]; + HtmlSymbolType.WhiteSpace;[ ]; + Expression block - Gen - 7 - (65:2,21) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (65:2,21) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [p.Name] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (66:2,22) - Symbols:3 + CSharpSymbolType.Identifier;[p]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Name]; + Tag block - Gen - 5 - (72:2,28) + Markup span - Gen - [
    • ] - SpanEditHandler;Accepts:None - (72:2,28) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[li]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:None - (77:2,33) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Code span - Gen - [ }LF] - SpanEditHandler;Accepts:None - (79:3,0) - Symbols:3 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (86:4,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 5 - (90:4,4) + Markup span - Gen - [
    ] - SpanEditHandler;Accepts:None - (90:4,4) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[ul]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockParsesCodeWithinSingleLineMarkup.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockParsesCodeWithinSingleLineMarkup.syntaxtree.txt new file mode 100644 index 0000000000..26a77f66d2 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockParsesCodeWithinSingleLineMarkup.syntaxtree.txt @@ -0,0 +1,20 @@ +Markup block - Gen - 20 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + HtmlSymbolType.Transition;[@]; + MetaCode span - Gen - [:] - SpanEditHandler;Accepts:Any - (1:0,1) - Symbols:1 + HtmlSymbolType.Colon;[:]; + Markup span - Gen - [
  • Foo ] - SpanEditHandler;Accepts:Any - (2:0,2) - Symbols:5 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[li]; + HtmlSymbolType.CloseAngle;[>]; + HtmlSymbolType.Text;[Foo]; + HtmlSymbolType.WhiteSpace;[ ]; + Expression block - Gen - 4 - (10:0,10) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (10:0,10) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [Bar] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (11:0,11) - Symbols:1 + CSharpSymbolType.Identifier;[Bar]; + Markup span - Gen - [ BazLF] - SpanEditHandler;Accepts:None - (14:0,14) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[Baz]; + HtmlSymbolType.NewLine;[LF]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSupportsCodeWithinCDataDeclaration.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSupportsCodeWithinCDataDeclaration.syntaxtree.txt new file mode 100644 index 0000000000..d77cce5211 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSupportsCodeWithinCDataDeclaration.syntaxtree.txt @@ -0,0 +1,32 @@ +Markup block - Gen - 36 - (0:0,0) + Tag block - Gen - 5 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ - 4 - (19:0,19) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (19:0,19) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [bar] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (20:0,20) - Symbols:1 + CSharpSymbolType.Identifier;[bar]; + Markup span - Gen - [ baz]]>] - SpanEditHandler;Accepts:None - (23:0,23) - Symbols:5 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[baz]; + HtmlSymbolType.RightBracket;[]]; + HtmlSymbolType.RightBracket;[]]; + HtmlSymbolType.CloseAngle;[>]; + Tag block - Gen - 6 - (30:0,30) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (30:0,30) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSupportsCodeWithinComment.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSupportsCodeWithinComment.syntaxtree.txt new file mode 100644 index 0000000000..a3a816b3b0 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSupportsCodeWithinComment.syntaxtree.txt @@ -0,0 +1,29 @@ +Markup block - Gen - 24 - (0:0,0) + Tag block - Gen - 5 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + HtmlComment block - Gen - 13 - (5:0,5) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:2 + HtmlSymbolType.DoubleHyphen;[--]; + HtmlSymbolType.CloseAngle;[>]; + Tag block - Gen - 6 - (18:0,18) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (18:0,18) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSupportsCodeWithinSGMLDeclaration.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSupportsCodeWithinSGMLDeclaration.syntaxtree.txt new file mode 100644 index 0000000000..5d04b3c5e1 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSupportsCodeWithinSGMLDeclaration.syntaxtree.txt @@ -0,0 +1,28 @@ +Markup block - Gen - 34 - (0:0,0) + Tag block - Gen - 5 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ - 4 - (19:0,19) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (19:0,19) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [bar] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (20:0,20) - Symbols:1 + CSharpSymbolType.Identifier;[bar]; + Markup span - Gen - [ baz>] - SpanEditHandler;Accepts:None - (23:0,23) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[baz]; + HtmlSymbolType.CloseAngle;[>]; + Tag block - Gen - 6 - (28:0,28) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (28:0,28) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSupportsCodeWithinXMLProcessingInstruction.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSupportsCodeWithinXMLProcessingInstruction.syntaxtree.txt new file mode 100644 index 0000000000..958f302a8e --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSupportsCodeWithinXMLProcessingInstruction.syntaxtree.txt @@ -0,0 +1,29 @@ +Markup block - Gen - 31 - (0:0,0) + Tag block - Gen - 5 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ - 4 - (15:0,15) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [bar] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (16:0,16) - Symbols:1 + CSharpSymbolType.Identifier;[bar]; + Markup span - Gen - [ baz?>] - SpanEditHandler;Accepts:None - (19:0,19) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[baz]; + HtmlSymbolType.QuestionMark;[?]; + HtmlSymbolType.CloseAngle;[>]; + Tag block - Gen - 6 - (25:0,25) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (25:0,25) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSwitchesToCodeWhenSwapCharacterEncounteredInAttributeValue.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSwitchesToCodeWhenSwapCharacterEncounteredInAttributeValue.syntaxtree.txt new file mode 100644 index 0000000000..fa946cb97b --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSwitchesToCodeWhenSwapCharacterEncounteredInAttributeValue.syntaxtree.txt @@ -0,0 +1,23 @@ +Markup block - Gen - 18 - (0:0,0) + Tag block - Gen - 18 - (0:0,0) + Markup span - Gen - [ - 11 - (4:0,4) + Markup span - Gen - [ bar="] - SpanEditHandler;Accepts:Any - (4:0,4) - Symbols:4 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.Text;[bar]; + HtmlSymbolType.Equals;[=]; + HtmlSymbolType.DoubleQuote;["]; + Markup block - Gen - 4 - (10:0,10) + Expression block - Gen - 4 - (10:0,10) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (10:0,10) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [baz] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (11:0,11) - Symbols:1 + CSharpSymbolType.Identifier;[baz]; + Markup span - Gen - ["] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.DoubleQuote;["]; + Markup span - Gen - [ />] - SpanEditHandler;Accepts:None - (15:0,15) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSwitchesToCodeWhenSwapCharacterEncounteredInTagContent.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSwitchesToCodeWhenSwapCharacterEncounteredInTagContent.syntaxtree.txt new file mode 100644 index 0000000000..16bebe86c4 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSwitchesToCodeWhenSwapCharacterEncounteredInTagContent.syntaxtree.txt @@ -0,0 +1,37 @@ +Markup block - Gen - 30 - (0:0,0) + Tag block - Gen - 5 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (5:0,5) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Expression block - Gen - 4 - (5:0,5) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (5:0,5) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [bar] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (6:0,6) - Symbols:1 + CSharpSymbolType.Identifier;[bar]; + Tag block - Gen - 5 - (9:0,9) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (9:0,9) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[baz]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Expression block - Gen - 4 - (14:0,14) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (14:0,14) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [boz] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (15:0,15) - Symbols:1 + CSharpSymbolType.Identifier;[boz]; + Tag block - Gen - 6 - (18:0,18) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (18:0,18) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[baz]; + HtmlSymbolType.CloseAngle;[>]; + Tag block - Gen - 6 - (24:0,24) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (24:0,24) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSwitchesToCodeWhenSwapCharacterEncounteredMidTag.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSwitchesToCodeWhenSwapCharacterEncounteredMidTag.syntaxtree.txt new file mode 100644 index 0000000000..7394791b41 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSwitchesToCodeWhenSwapCharacterEncounteredMidTag.syntaxtree.txt @@ -0,0 +1,15 @@ +Markup block - Gen - 12 - (0:0,0) + Tag block - Gen - 12 - (0:0,0) + Markup span - Gen - [ - 4 - (5:0,5) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (5:0,5) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [bar] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (6:0,6) - Symbols:1 + CSharpSymbolType.Identifier;[bar]; + Markup span - Gen - [ />] - SpanEditHandler;Accepts:None - (9:0,9) - Symbols:3 + HtmlSymbolType.WhiteSpace;[ ]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSwitchesWhenCharacterBeforeSwapIsNonAlphanumeric.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSwitchesWhenCharacterBeforeSwapIsNonAlphanumeric.syntaxtree.txt new file mode 100644 index 0000000000..b86f0ea6f4 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockSwitchesWhenCharacterBeforeSwapIsNonAlphanumeric.syntaxtree.txt @@ -0,0 +1,19 @@ +Markup block - Gen - 13 - (0:0,0) + Tag block - Gen - 3 - (0:0,0) + Markup span - Gen - [

    ] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [foo#] - SpanEditHandler;Accepts:Any - (3:0,3) - Symbols:1 + HtmlSymbolType.Text;[foo#]; + Expression block - Gen - 2 - (7:0,7) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (7:0,7) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [i] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (8:0,8) - Symbols:1 + CSharpSymbolType.Identifier;[i]; + Tag block - Gen - 4 - (9:0,9) + Markup span - Gen - [

    ] - SpanEditHandler;Accepts:None - (9:0,9) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[p]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockTreatsPairsOfAtSignsAsEscapeSequence.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockTreatsPairsOfAtSignsAsEscapeSequence.syntaxtree.txt new file mode 100644 index 0000000000..5479cca648 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockTreatsPairsOfAtSignsAsEscapeSequence.syntaxtree.txt @@ -0,0 +1,25 @@ +Markup block - Gen - 19 - (0:0,0) + Tag block - Gen - 5 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (5:0,5) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (7:0,7) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (8:0,8) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Expression block - Gen - 4 - (9:0,9) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (9:0,9) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [bar] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (10:0,10) - Symbols:1 + CSharpSymbolType.Identifier;[bar]; + Tag block - Gen - 6 - (13:0,13) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (13:0,13) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockTreatsTwoAtSignsAsEscapeSequence.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockTreatsTwoAtSignsAsEscapeSequence.syntaxtree.txt new file mode 100644 index 0000000000..8aeb246480 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseBlockTreatsTwoAtSignsAsEscapeSequence.syntaxtree.txt @@ -0,0 +1,17 @@ +Markup block - Gen - 16 - (0:0,0) + Tag block - Gen - 5 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (5:0,5) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@bar] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:2 + HtmlSymbolType.Transition;[@]; + HtmlSymbolType.Text;[bar]; + Tag block - Gen - 6 - (10:0,10) + Markup span - Gen - [] - SpanEditHandler;Accepts:None - (10:0,10) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseDocumentGivesWhitespacePreceedingAtToCodeIfThereIsNoMarkupOnThatLine.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseDocumentGivesWhitespacePreceedingAtToCodeIfThereIsNoMarkupOnThatLine.syntaxtree.txt new file mode 100644 index 0000000000..22d17d4440 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseDocumentGivesWhitespacePreceedingAtToCodeIfThereIsNoMarkupOnThatLine.syntaxtree.txt @@ -0,0 +1,67 @@ +Markup block - Gen - 95 - (0:0,0) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 4 - (3:0,3) + Markup span - Gen - [
      ] - SpanEditHandler;Accepts:Any - (3:0,3) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[ul]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (7:0,7) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Statement block - Gen - 77 - (9:1,0) + Code span - Gen - [ ] - SpanEditHandler;Accepts:Any - (9:1,0) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (13:1,4) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [foreach(var p in Products) {LF] - SpanEditHandler;Accepts:Any - (14:1,5) - Symbols:13 + CSharpSymbolType.Keyword;[foreach]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[p]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[in]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Products]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + Markup block - Gen - 35 - (44:2,0) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (44:2,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 4 - (52:2,8) + Markup span - Gen - [
    • ] - SpanEditHandler;Accepts:None - (52:2,8) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[li]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Product: ] - SpanEditHandler;Accepts:Any - (56:2,12) - Symbols:2 + HtmlSymbolType.Text;[Product:]; + HtmlSymbolType.WhiteSpace;[ ]; + Expression block - Gen - 7 - (65:2,21) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (65:2,21) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [p.Name] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (66:2,22) - Symbols:3 + CSharpSymbolType.Identifier;[p]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Name]; + Tag block - Gen - 5 - (72:2,28) + Markup span - Gen - [
    • ] - SpanEditHandler;Accepts:None - (72:2,28) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[li]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:None - (77:2,33) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Code span - Gen - [ }LF] - SpanEditHandler;Accepts:None - (79:3,0) - Symbols:3 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (86:4,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 5 - (90:4,4) + Markup span - Gen - [
    ] - SpanEditHandler;Accepts:Any - (90:4,4) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[ul]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseDocumentTreatsPairsOfAtSignsAsEscapeSequence.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseDocumentTreatsPairsOfAtSignsAsEscapeSequence.syntaxtree.txt new file mode 100644 index 0000000000..5fa07c06ba --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseDocumentTreatsPairsOfAtSignsAsEscapeSequence.syntaxtree.txt @@ -0,0 +1,25 @@ +Markup block - Gen - 19 - (0:0,0) + Tag block - Gen - 5 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (5:0,5) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (7:0,7) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (8:0,8) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Expression block - Gen - 4 - (9:0,9) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (9:0,9) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [bar] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K14 - (10:0,10) - Symbols:1 + CSharpSymbolType.Identifier;[bar]; + Tag block - Gen - 6 - (13:0,13) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (13:0,13) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseDocumentTreatsTwoAtSignsAsEscapeSequence.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseDocumentTreatsTwoAtSignsAsEscapeSequence.syntaxtree.txt new file mode 100644 index 0000000000..00160b1158 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/ParseDocumentTreatsTwoAtSignsAsEscapeSequence.syntaxtree.txt @@ -0,0 +1,17 @@ +Markup block - Gen - 16 - (0:0,0) + Tag block - Gen - 5 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (5:0,5) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@bar] - SpanEditHandler;Accepts:Any - (6:0,6) - Symbols:2 + HtmlSymbolType.Transition;[@]; + HtmlSymbolType.Text;[bar]; + Tag block - Gen - 6 - (10:0,10) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (10:0,10) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/SectionBodyTreatsPairsOfAtSignsAsEscapeSequence.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/SectionBodyTreatsPairsOfAtSignsAsEscapeSequence.syntaxtree.txt new file mode 100644 index 0000000000..6acb2c4c98 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/SectionBodyTreatsPairsOfAtSignsAsEscapeSequence.syntaxtree.txt @@ -0,0 +1,49 @@ +Markup block - Gen - 36 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 36 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [Foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[Foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 21 - (14:0,14) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 5 - (15:0,15) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (15:0,15) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (20:0,20) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (22:0,22) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (23:0,23) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Expression block - Gen - 4 - (24:0,24) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (24:0,24) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [bar] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K15 - (25:0,25) - Symbols:1 + CSharpSymbolType.Identifier;[bar]; + Tag block - Gen - 6 - (28:0,28) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (28:0,28) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (34:0,34) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (35:0,35) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (36:0,36) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/SectionBodyTreatsTwoAtSignsAsEscapeSequence.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/SectionBodyTreatsTwoAtSignsAsEscapeSequence.syntaxtree.txt new file mode 100644 index 0000000000..a0eaa86dd4 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/SectionBodyTreatsTwoAtSignsAsEscapeSequence.syntaxtree.txt @@ -0,0 +1,41 @@ +Markup block - Gen - 33 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 33 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [Foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[Foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 18 - (14:0,14) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 5 - (15:0,15) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (15:0,15) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [@] - SpanEditHandler;Accepts:Any - (20:0,20) - Symbols:1 + HtmlSymbolType.Transition;[@]; + Markup span - Gen - [@bar] - SpanEditHandler;Accepts:Any - (21:0,21) - Symbols:2 + HtmlSymbolType.Transition;[@]; + HtmlSymbolType.Text;[bar]; + Tag block - Gen - 6 - (25:0,25) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (25:0,25) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[foo]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (31:0,31) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (32:0,32) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (33:0,33) - Symbols:1 + HtmlSymbolType.Unknown;[]; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/SectionContextGivesWhitespacePreceedingAtToCodeIfThereIsNoMarkupOnThatLine.syntaxtree.txt b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/SectionContextGivesWhitespacePreceedingAtToCodeIfThereIsNoMarkupOnThatLine.syntaxtree.txt new file mode 100644 index 0000000000..acf6f3e5b4 --- /dev/null +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/TestFiles/ParserTests/HtmlToCodeSwitchTest/SectionContextGivesWhitespacePreceedingAtToCodeIfThereIsNoMarkupOnThatLine.syntaxtree.txt @@ -0,0 +1,90 @@ +Markup block - Gen - 127 - (0:0,0) + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (0:0,0) - Symbols:1 + HtmlSymbolType.Unknown;[]; + Directive block - Gen - 127 - (0:0,0) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (0:0,0) - Symbols:1 + CSharpSymbolType.Transition;[@]; + MetaCode span - Gen - [section] - SpanEditHandler;Accepts:None - (1:0,1) - Symbols:1 + CSharpSymbolType.Identifier;[section]; + Code span - Gen - [ ] - SpanEditHandler;Accepts:WhiteSpace - (8:0,8) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Code span - Gen - [foo] - DirectiveTokenEditHandler;Accepts:NonWhiteSpace - (9:0,9) - Symbols:1 + CSharpSymbolType.Identifier;[foo]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:AllWhiteSpace - (12:0,12) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + MetaCode span - Gen - [{] - AutoCompleteEditHandler;Accepts:None,AutoComplete:[];AtEnd - (13:0,13) - Symbols:1 + CSharpSymbolType.LeftBrace;[{]; + Markup block - Gen - 112 - (14:0,14) + Markup span - Gen - [LF ] - SpanEditHandler;Accepts:Any - (14:0,14) - Symbols:2 + HtmlSymbolType.NewLine;[LF]; + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 4 - (20:1,4) + Markup span - Gen - [
      ] - SpanEditHandler;Accepts:Any - (20:1,4) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[ul]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (24:1,8) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Statement block - Gen - 89 - (26:2,0) + Code span - Gen - [ ] - SpanEditHandler;Accepts:Any - (26:2,0) - Symbols:1 + CSharpSymbolType.WhiteSpace;[ ]; + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (34:2,8) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [foreach(var p in Products) {LF] - SpanEditHandler;Accepts:Any - (35:2,9) - Symbols:13 + CSharpSymbolType.Keyword;[foreach]; + CSharpSymbolType.LeftParenthesis;[(]; + CSharpSymbolType.Identifier;[var]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[p]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Keyword;[in]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.Identifier;[Products]; + CSharpSymbolType.RightParenthesis;[)]; + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.LeftBrace;[{]; + CSharpSymbolType.NewLine;[LF]; + Markup block - Gen - 39 - (65:3,0) + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (65:3,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 4 - (77:3,12) + Markup span - Gen - [
    • ] - SpanEditHandler;Accepts:None - (77:3,12) - Symbols:3 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.Text;[li]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [Product: ] - SpanEditHandler;Accepts:Any - (81:3,16) - Symbols:2 + HtmlSymbolType.Text;[Product:]; + HtmlSymbolType.WhiteSpace;[ ]; + Expression block - Gen - 7 - (90:3,25) + Transition span - Gen - [@] - SpanEditHandler;Accepts:None - (90:3,25) - Symbols:1 + CSharpSymbolType.Transition;[@]; + Code span - Gen - [p.Name] - ImplicitExpressionEditHandler;Accepts:NonWhiteSpace;ImplicitExpression[RTD];K15 - (91:3,26) - Symbols:3 + CSharpSymbolType.Identifier;[p]; + CSharpSymbolType.Dot;[.]; + CSharpSymbolType.Identifier;[Name]; + Tag block - Gen - 5 - (97:3,32) + Markup span - Gen - [
    • ] - SpanEditHandler;Accepts:None - (97:3,32) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[li]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:None - (102:3,37) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + Code span - Gen - [ }LF] - SpanEditHandler;Accepts:None - (104:4,0) - Symbols:3 + CSharpSymbolType.WhiteSpace;[ ]; + CSharpSymbolType.RightBrace;[}]; + CSharpSymbolType.NewLine;[LF]; + Markup span - Gen - [ ] - SpanEditHandler;Accepts:Any - (115:5,0) - Symbols:1 + HtmlSymbolType.WhiteSpace;[ ]; + Tag block - Gen - 5 - (119:5,4) + Markup span - Gen - [
    ] - SpanEditHandler;Accepts:Any - (119:5,4) - Symbols:4 + HtmlSymbolType.OpenAngle;[<]; + HtmlSymbolType.ForwardSlash;[/]; + HtmlSymbolType.Text;[ul]; + HtmlSymbolType.CloseAngle;[>]; + Markup span - Gen - [LF] - SpanEditHandler;Accepts:Any - (124:5,9) - Symbols:1 + HtmlSymbolType.NewLine;[LF]; + MetaCode span - Gen - [}] - SpanEditHandler;Accepts:None - (126:6,0) - Symbols:1 + CSharpSymbolType.RightBrace;[}]; + Markup span - Gen - [] - SpanEditHandler;Accepts:Any - (127:6,1) - Symbols:1 + HtmlSymbolType.Unknown;[];