Make invalid namespace tokens support IntelliSense.
- Added a `DirectiveTokenEditHandler` to enable IntelliSense for invalid namespace tokens. - Added tests to verify new `DirectiveTokenEditHandler`. - Updated test expectations for `DirectiveTokenEditHandler`. #1393
This commit is contained in:
parent
2e8c154fcb
commit
1f32a8322e
|
|
@ -0,0 +1,49 @@
|
|||
// 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;
|
||||
using System.Collections.Generic;
|
||||
using Microsoft.AspNetCore.Razor.Language.Legacy;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
internal class DirectiveTokenEditHandler : SpanEditHandler
|
||||
{
|
||||
public DirectiveTokenEditHandler(Func<string, IEnumerable<ISymbol>> tokenizer) : base(tokenizer)
|
||||
{
|
||||
}
|
||||
|
||||
protected override PartialParseResult CanAcceptChange(Span target, SourceChange change)
|
||||
{
|
||||
if (AcceptedCharacters == AcceptedCharacters.NonWhiteSpace)
|
||||
{
|
||||
var originalText = change.GetOriginalText(target);
|
||||
var editedContent = change.GetEditedContent(target);
|
||||
|
||||
if (!ContainsWhitespace(originalText) && !ContainsWhitespace(editedContent))
|
||||
{
|
||||
// Did not modify whitespace, directive format should be the same.
|
||||
// Return provisional so extensible IR/code gen pieces can see the full directive text
|
||||
// once the user stops editing the document.
|
||||
return PartialParseResult.Accepted | PartialParseResult.Provisional;
|
||||
}
|
||||
}
|
||||
|
||||
return PartialParseResult.Rejected;
|
||||
|
||||
}
|
||||
|
||||
private static bool ContainsWhitespace(string content)
|
||||
{
|
||||
for (var i = 0; i < content.Length; i++)
|
||||
{
|
||||
if (char.IsWhiteSpace(content[i]))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1649,6 +1649,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
}
|
||||
|
||||
Span.ChunkGenerator = new DirectiveTokenChunkGenerator(tokenDescriptor);
|
||||
Span.EditHandler = new DirectiveTokenEditHandler(Language.TokenizeString);
|
||||
Output(SpanKind.Code, AcceptedCharacters.NonWhiteSpace);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -249,11 +249,7 @@ public class DivTagHelper : {typeof(TagHelper).FullName}
|
|||
public void InvalidNamespaceAtEOF_DesignTime()
|
||||
{
|
||||
var references = CreateCompilationReferences(CurrentMvcShim);
|
||||
RunDesignTimeTest(references,
|
||||
expectedErrors: new[]
|
||||
{
|
||||
"Identifier expected"
|
||||
});
|
||||
RunDesignTimeTest(references, expectedErrors: new[] { "Identifier expected" });
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
|
|||
|
|
@ -0,0 +1,66 @@
|
|||
// 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;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Microsoft.AspNetCore.Razor.Language.Legacy;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Test
|
||||
{
|
||||
public class DirectiveTokenEditHandlerTest
|
||||
{
|
||||
[Theory]
|
||||
[InlineData(0, 4, "")] // "Namespace"
|
||||
[InlineData(4, 0, "Other")] // "SomeOtherNamespace"
|
||||
[InlineData(0, 4, "Other")] // "OtherNamespace"
|
||||
public void CanAcceptChange_ProvisionallyAcceptsNonWhitespaceChanges(int index, int length, string newText)
|
||||
{
|
||||
// Arrange
|
||||
var factory = new SpanFactory();
|
||||
var directiveTokenHandler = new TestDirectiveTokenEditHandler();
|
||||
var target = factory.Span(SpanKind.Code, "SomeNamespace", markup: false)
|
||||
.With(directiveTokenHandler)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace);
|
||||
var sourceChange = new SourceChange(index, length, newText);
|
||||
|
||||
// Act
|
||||
var result = directiveTokenHandler.CanAcceptChange(target, sourceChange);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(PartialParseResult.Accepted | PartialParseResult.Provisional, result);
|
||||
}
|
||||
|
||||
[Theory]
|
||||
[InlineData(4, 1, "")] // "SomeNamespace"
|
||||
[InlineData(9, 0, " ")] // "Some Name space"
|
||||
[InlineData(9, 5, " Space")] // "Some Name Space"
|
||||
public void CanAcceptChange_RejectsWhitespaceChanges(int index, int length, string newText)
|
||||
{
|
||||
// Arrange
|
||||
var factory = new SpanFactory();
|
||||
var directiveTokenHandler = new TestDirectiveTokenEditHandler();
|
||||
var target = factory.Span(SpanKind.Code, "Some Namespace", markup: false)
|
||||
.With(directiveTokenHandler)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace);
|
||||
var sourceChange = new SourceChange(index, length, newText);
|
||||
|
||||
// Act
|
||||
var result = directiveTokenHandler.CanAcceptChange(target, sourceChange);
|
||||
|
||||
// Assert
|
||||
Assert.Equal(PartialParseResult.Rejected, result);
|
||||
}
|
||||
|
||||
private class TestDirectiveTokenEditHandler : DirectiveTokenEditHandler
|
||||
{
|
||||
public TestDirectiveTokenEditHandler() : base(content => SpanConstructor.TestTokenizer(content))
|
||||
{
|
||||
}
|
||||
|
||||
public new PartialParseResult CanAcceptChange(Span target, SourceChange change)
|
||||
=> base.CanAcceptChange(target, change);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -33,8 +33,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Header", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
.AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First()),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -87,9 +86,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Header", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "Header", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First()),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
|
|||
|
|
@ -119,9 +119,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "System.Text.Encoding.ASCIIEncoding", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)));
|
||||
Factory.Span(SpanKind.Code, "System.Text.Encoding.ASCIIEncoding", markup: false).AsDirectiveToken(descriptor.Tokens[0])));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -142,9 +140,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Some_Member", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)));
|
||||
Factory.Span(SpanKind.Code, "Some_Member", markup: false).AsDirectiveToken(descriptor.Tokens[0])));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -165,9 +161,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "BaseNamespace", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)));
|
||||
Factory.Span(SpanKind.Code, "BaseNamespace", markup: false).AsDirectiveToken(descriptor.Tokens[0])));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -188,9 +182,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "BaseNamespace.Foo.Bar", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)));
|
||||
Factory.Span(SpanKind.Code, "BaseNamespace.Foo.Bar", markup: false).AsDirectiveToken(descriptor.Tokens[0])));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -211,9 +203,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"AString\"", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)));
|
||||
Factory.Span(SpanKind.Code, "\"AString\"", markup: false).AsDirectiveToken(descriptor.Tokens[0])));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -336,19 +326,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
|
||||
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "System.Text.Encoding.ASCIIEncoding", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "System.Text.Encoding.ASCIIEncoding", markup: false).AsDirectiveToken(descriptor.Tokens[0]),
|
||||
|
||||
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Some_Member", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[1]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Some_Member", markup: false).AsDirectiveToken(descriptor.Tokens[1]),
|
||||
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"AString\"", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[2]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)));
|
||||
Factory.Span(SpanKind.Code, "\"AString\"", markup: false).AsDirectiveToken(descriptor.Tokens[2])));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -369,9 +353,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"Header\"", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"Header\"", markup: false).AsDirectiveToken(descriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{")
|
||||
.AutoCompleteWith(null, atEndOfSpan: true)
|
||||
|
|
@ -405,9 +387,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"Name\"", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"Name\"", markup: false).AsDirectiveToken(descriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{")
|
||||
.AutoCompleteWith(null, atEndOfSpan: true)
|
||||
|
|
@ -435,14 +415,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
|
||||
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "System.Text.Encoding.ASCIIEncoding", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "System.Text.Encoding.ASCIIEncoding", markup: false).AsDirectiveToken(descriptor.Tokens[0]),
|
||||
|
||||
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Some_Member", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[1]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Some_Member", markup: false).AsDirectiveToken(descriptor.Tokens[1]),
|
||||
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false)
|
||||
.Accepts(AcceptedCharacters.WhiteSpace)));
|
||||
|
|
@ -492,9 +468,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"hello\"", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"hello\"", markup: false).AsDirectiveToken(descriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ; ", markup: false).Accepts(AcceptedCharacters.WhiteSpace)));
|
||||
}
|
||||
|
||||
|
|
@ -521,9 +495,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"hello\"", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"hello\"", markup: false).AsDirectiveToken(descriptor.Tokens[0]),
|
||||
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace)),
|
||||
expectedErorr);
|
||||
|
|
@ -552,9 +524,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"Hello\"", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"Hello\"", markup: false).AsDirectiveToken(descriptor.Tokens[0]),
|
||||
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.AllWhiteSpace)),
|
||||
expectedErorr);
|
||||
|
|
@ -583,9 +553,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"Hello\"", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)),
|
||||
Factory.Span(SpanKind.Code, "\"Hello\"", markup: false).AsDirectiveToken(descriptor.Tokens[0])),
|
||||
expectedErorr);
|
||||
}
|
||||
|
||||
|
|
@ -612,9 +580,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"Hello\"", markup: false)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens[0]))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"Hello\"", markup: false).AsDirectiveToken(descriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{")
|
||||
.AutoCompleteWith("}", atEndOfSpan: true)
|
||||
|
|
@ -935,9 +901,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "System.Web.WebPages.WebPage", markup: false)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First()))));
|
||||
Factory.Span(SpanKind.Code, "System.Web.WebPages.WebPage", markup: false).AsDirectiveToken(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First())));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -948,9 +912,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "string[[]][]", markup: false)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First()))));
|
||||
Factory.Span(SpanKind.Code, "string[[]][]", markup: false).AsDirectiveToken(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First())));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -962,8 +924,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "System.Web.Mvc.WebViewPage<IEnumerable<MvcApplication2.Models.RegisterModel>>", markup: false)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First()))));
|
||||
.AsDirectiveToken(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First())));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -975,8 +936,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "string", markup: false)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First()))));
|
||||
.AsDirectiveToken(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First())));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -1014,8 +974,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Header", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
.AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First()),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -1059,8 +1018,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
DirectiveKind.SingleLine,
|
||||
b => b.AddOptionalStringToken());
|
||||
|
||||
var chunkGenerator = new DirectiveTokenChunkGenerator(descriptor.Tokens.First());
|
||||
|
||||
// Act & Assert
|
||||
ParseCodeBlockTest(
|
||||
"@custom \"simple-value\"",
|
||||
|
|
@ -1071,8 +1028,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"simple-value\"", markup: false)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(chunkGenerator)));
|
||||
.AsDirectiveToken(descriptor.Tokens[0])));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -1084,8 +1040,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
DirectiveKind.SingleLine,
|
||||
b => b.AddOptionalStringToken());
|
||||
|
||||
var chunkGenerator = new DirectiveTokenChunkGenerator(descriptor.Tokens.First());
|
||||
|
||||
// Act & Assert
|
||||
ParseCodeBlockTest(
|
||||
"@custom \"{formaction}?/{id}?\"",
|
||||
|
|
@ -1096,8 +1050,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"{formaction}?/{id}?\"", markup: false)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(chunkGenerator)));
|
||||
.AsDirectiveToken(descriptor.Tokens[0])));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -1118,13 +1071,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("custom").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Markup, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "\"{formaction}?/{id}?\"", markup: false)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "\"{formaction}?/{id}?\"", markup: false).AsDirectiveToken(descriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "System.String", markup: false)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens.Last()))));
|
||||
Factory.Span(SpanKind.Code, "System.String", markup: false).AsDirectiveToken(descriptor.Tokens.Last())));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
@ -1165,9 +1114,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("TestDirective").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", markup: false).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "PropertyName", markup: false)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor.Tokens.First()))));
|
||||
Factory.Span(SpanKind.Code, "PropertyName", markup: false).AsDirectiveToken(descriptor.Tokens[0])));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
|
|||
|
|
@ -35,9 +35,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " " + Environment.NewLine + " ", markup: false).Accepts(AcceptedCharacters.AllWhiteSpace)),
|
||||
Factory.EmptyHtml()),
|
||||
new RazorError(
|
||||
|
|
@ -110,9 +108,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First()))),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0])),
|
||||
Factory.Markup("-bar { "),
|
||||
new MarkupTagBlock(
|
||||
Factory.Markup("<p>")),
|
||||
|
|
@ -136,9 +132,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -147,9 +141,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "bar", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "bar", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -180,9 +172,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -207,9 +197,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -230,9 +218,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -265,9 +251,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Test", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "Test", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, Environment.NewLine, CSharpSymbolType.NewLine).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -299,9 +283,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " " + Environment.NewLine, markup: false).Accepts(AcceptedCharacters.AllWhiteSpace)),
|
||||
Factory.EmptyHtml()),
|
||||
new RazorError(
|
||||
|
|
@ -328,9 +310,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " " + string.Format("{0}{0}{0}{0}{0}{0}", Environment.NewLine), markup: false).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -355,9 +335,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -382,9 +360,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
Factory.Markup(" "),
|
||||
|
|
@ -408,9 +384,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -435,9 +409,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -465,9 +437,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -492,9 +462,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -517,9 +485,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -538,9 +504,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -561,9 +525,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -583,9 +545,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -608,9 +568,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -635,9 +593,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
factory.CodeTransition(),
|
||||
factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -662,9 +618,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
factory.CodeTransition(),
|
||||
factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
factory.Span(SpanKind.Code, "s", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
|
|||
|
|
@ -27,9 +27,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor),
|
||||
Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Foo.Bar<Biz<Qux>, string, int>.Baz", markup: false)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First()))));
|
||||
Factory.Span(SpanKind.Code, "Foo.Bar<Biz<Qux>, string, int>.Baz", markup: false).AsDirectiveToken(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens[0])));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
|
|
|
|||
|
|
@ -113,9 +113,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -478,9 +476,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
|
|||
|
|
@ -295,9 +295,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -398,9 +396,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
@ -426,9 +422,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
Factory.CodeTransition(),
|
||||
Factory.MetaCode("section").Accepts(AcceptedCharacters.None),
|
||||
Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier)
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace)
|
||||
.With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())),
|
||||
Factory.Span(SpanKind.Code, "Foo", CSharpSymbolType.Identifier).AsDirectiveToken(CSharpCodeParser.SectionDirectiveDescriptor.Tokens[0]),
|
||||
Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace),
|
||||
Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None),
|
||||
new MarkupBlock(
|
||||
|
|
|
|||
|
|
@ -153,6 +153,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
.Accepts(AcceptedCharacters.AnyExceptNewline);
|
||||
}
|
||||
|
||||
public static SpanConstructor AsDirectiveToken(this SpanConstructor self, DirectiveTokenDescriptor descriptor)
|
||||
{
|
||||
return self
|
||||
.With(new DirectiveTokenChunkGenerator(descriptor))
|
||||
.With(new DirectiveTokenEditHandler((content) => SpanConstructor.TestTokenizer(content)))
|
||||
.Accepts(AcceptedCharacters.NonWhiteSpace);
|
||||
}
|
||||
|
||||
public static SourceLocation GetLocationAndAdvance(this SourceLocationTracker self, string content)
|
||||
{
|
||||
var ret = self.CurrentLocation;
|
||||
|
|
|
|||
Loading…
Reference in New Issue