From 5a1090f3240aa50bf1930a6f928d755047ef279e Mon Sep 17 00:00:00 2001 From: Ryan Nowak Date: Wed, 17 May 2017 22:02:08 -0700 Subject: [PATCH] Api Cleanup for language services Created internal + public versions of - BlockKind - SpanKind - AcceptedCharacters That way these types are only exposed through the VS apis and not through the runtime API surface. Also deleted RazorEditorParser. Yep. It's going to take significant work to just port it to the language services assembly. Let's reevaluate this when we get closer to the next foundational update. --- .../DefaultDirectiveSyntaxTreePass.cs | 2 +- .../Legacy/AcceptedCharactersInternal.cs | 22 + .../Legacy/AutoCompleteEditHandler.cs | 2 +- .../Legacy/BackgroundParser.cs | 447 ----- .../Legacy/Block.cs | 4 +- .../Legacy/BlockBuilder.cs | 2 +- .../Legacy/BlockKindInternal.cs | 24 + .../Legacy/CSharpCodeParser.cs | 150 +- .../Legacy/DocumentParseCompleteEventArgs.cs | 31 - .../Legacy/HtmlMarkupParser.cs | 146 +- .../Legacy/ITextBuffer.cs | 2 +- .../Legacy/ImplicitExpressionEditHandler.cs | 2 +- .../Legacy/MarkupRewriter.cs | 2 +- .../Legacy/PartialParseResult.cs | 2 +- .../Legacy/RazorEditorParser.cs | 268 --- .../Legacy/Span.cs | 2 +- .../Legacy/SpanBuilder.cs | 2 +- .../Legacy/SpanEditHandler.cs | 8 +- .../Legacy/SpanKindInternal.cs | 14 + .../Legacy/SyntaxTreeBuilder.cs | 6 +- .../Legacy/TagHelperBlockBuilder.cs | 4 +- .../Legacy/TagHelperBlockRewriter.cs | 14 +- .../Legacy/TagHelperParseTreeRewriter.cs | 12 +- .../Legacy/TextChange.cs | 248 --- .../Legacy/TokenizerBackedParser.cs | 24 +- .../Legacy/WhiteSpaceRewriter.cs | 2 +- .../LineMapping.cs | 6 +- .../RequiredAttributeDescriptorComparer.cs | 0 .../AcceptedCharacters.cs | 2 +- .../BlockKind.cs | 2 +- .../DefaultRazorSyntaxFactsService.cs | 12 +- .../SpanKind.cs | 2 +- .../HtmlNodeOptimizationPassTest.cs | 2 +- .../Legacy/BlockFactory.cs | 10 +- .../Legacy/BlockTest.cs | 10 +- .../Legacy/BlockTypes.cs | 16 +- .../Legacy/CSharpAutoCompleteTest.cs | 42 +- .../Legacy/CSharpBlockTest.cs | 384 ++--- .../Legacy/CSharpDirectivesTest.cs | 340 ++-- .../Legacy/CSharpErrorTest.cs | 96 +- .../Legacy/CSharpExplicitExpressionTest.cs | 38 +- .../Legacy/CSharpImplicitExpressionTest.cs | 46 +- .../Legacy/CSharpNestedStatementsTest.cs | 24 +- .../Legacy/CSharpRazorCommentsTest.cs | 176 +- .../Legacy/CSharpReservedWordsTest.cs | 4 +- .../Legacy/CSharpSectionTest.cs | 330 ++-- .../Legacy/CSharpSpecialBlockTest.cs | 62 +- .../Legacy/CSharpStatementTest.cs | 32 +- .../Legacy/CSharpTemplateTest.cs | 72 +- .../Legacy/CSharpToMarkupSwitchTest.cs | 248 +-- .../Legacy/CSharpVerbatimBlockTest.cs | 34 +- .../Legacy/CSharpWhitespaceHandlingTest.cs | 8 +- .../Legacy/CodeParserTestBase.cs | 22 +- .../Legacy/HtmlAttributeTest.cs | 66 +- .../Legacy/HtmlBlockTest.cs | 216 +-- .../Legacy/HtmlDocumentTest.cs | 192 +-- .../Legacy/HtmlErrorTest.cs | 20 +- .../Legacy/HtmlParserTestUtils.cs | 6 +- .../Legacy/HtmlTagsTest.cs | 46 +- .../Legacy/HtmlToCodeSwitchTest.cs | 164 +- .../Legacy/MarkupParserTestBase.cs | 2 +- .../Legacy/ParserTestBase.cs | 28 +- .../Legacy/RazorEditorParserTest.cs | 1452 ----------------- .../Legacy/RazorParserTest.cs | 4 +- .../Legacy/TagHelperBlockRewriterTest.cs | 58 +- .../Legacy/TagHelperParseTreeRewriterTest.cs | 222 +-- .../Legacy/TestSpanBuilder.cs | 80 +- .../Legacy/TextChangeTest.cs | 274 ---- .../RazorSyntaxTreeTest.cs | 2 +- 69 files changed, 1817 insertions(+), 4477 deletions(-) create mode 100644 src/Microsoft.AspNetCore.Razor.Language/Legacy/AcceptedCharactersInternal.cs delete mode 100644 src/Microsoft.AspNetCore.Razor.Language/Legacy/BackgroundParser.cs create mode 100644 src/Microsoft.AspNetCore.Razor.Language/Legacy/BlockKindInternal.cs delete mode 100644 src/Microsoft.AspNetCore.Razor.Language/Legacy/DocumentParseCompleteEventArgs.cs delete mode 100644 src/Microsoft.AspNetCore.Razor.Language/Legacy/RazorEditorParser.cs create mode 100644 src/Microsoft.AspNetCore.Razor.Language/Legacy/SpanKindInternal.cs delete mode 100644 src/Microsoft.AspNetCore.Razor.Language/Legacy/TextChange.cs rename src/Microsoft.AspNetCore.Razor.Language/{Legacy => }/RequiredAttributeDescriptorComparer.cs (100%) rename src/{Microsoft.AspNetCore.Razor.Language => Microsoft.VisualStudio.LanguageServices.Razor}/AcceptedCharacters.cs (89%) rename src/{Microsoft.AspNetCore.Razor.Language => Microsoft.VisualStudio.LanguageServices.Razor}/BlockKind.cs (88%) rename src/{Microsoft.AspNetCore.Razor.Language => Microsoft.VisualStudio.LanguageServices.Razor}/SpanKind.cs (83%) delete mode 100644 test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/RazorEditorParserTest.cs delete mode 100644 test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TextChangeTest.cs diff --git a/src/Microsoft.AspNetCore.Razor.Language/DefaultDirectiveSyntaxTreePass.cs b/src/Microsoft.AspNetCore.Razor.Language/DefaultDirectiveSyntaxTreePass.cs index fe2c6e92b2..69869f6492 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/DefaultDirectiveSyntaxTreePass.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/DefaultDirectiveSyntaxTreePass.cs @@ -54,7 +54,7 @@ namespace Microsoft.AspNetCore.Razor.Language { if (_nestedLevel > 0) { - var directiveStart = block.Children.First(child => !child.IsBlock && ((Span)child).Kind == SpanKind.Transition).Start; + var directiveStart = block.Children.First(child => !child.IsBlock && ((Span)child).Kind == SpanKindInternal.Transition).Start; var errorLength = /* @ */ 1 + CSharpCodeParser.SectionDirectiveDescriptor.Name.Length; _errorSink.OnError( directiveStart, diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/AcceptedCharactersInternal.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/AcceptedCharactersInternal.cs new file mode 100644 index 0000000000..f6b658f769 --- /dev/null +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/AcceptedCharactersInternal.cs @@ -0,0 +1,22 @@ +// 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 +{ + [Flags] + internal enum AcceptedCharactersInternal + { + None = 0, + NewLine = 1, + WhiteSpace = 2, + + NonWhiteSpace = 4, + + AllWhiteSpace = NewLine | WhiteSpace, + Any = AllWhiteSpace | NonWhiteSpace, + + AnyExceptNewline = NonWhiteSpace | WhiteSpace + } +} diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/AutoCompleteEditHandler.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/AutoCompleteEditHandler.cs index 48bfa5dbc1..ae4291f987 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/AutoCompleteEditHandler.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/AutoCompleteEditHandler.cs @@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy AutoCompleteAtEndOfSpan = autoCompleteAtEndOfSpan; } - public AutoCompleteEditHandler(Func> tokenizer, AcceptedCharacters accepted) + public AutoCompleteEditHandler(Func> tokenizer, AcceptedCharactersInternal accepted) : base(tokenizer, accepted) { } diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/BackgroundParser.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/BackgroundParser.cs deleted file mode 100644 index bc9a97a43f..0000000000 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/BackgroundParser.cs +++ /dev/null @@ -1,447 +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; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Threading; - -namespace Microsoft.AspNetCore.Razor.Language.Legacy -{ - internal class BackgroundParser : IDisposable - { - private MainThreadState _main; - private BackgroundThread _bg; - - public BackgroundParser(RazorTemplateEngine templateEngine, string fileName) - { - _main = new MainThreadState(fileName); - _bg = new BackgroundThread(_main, templateEngine, fileName); - - _main.ResultsReady += (sender, args) => OnResultsReady(args); - } - - /// - /// Fired on the main thread. - /// - public event EventHandler ResultsReady; - - public bool IsIdle - { - get { return _main.IsIdle; } - } - - public void Start() - { - _bg.Start(); - } - - public void Cancel() - { - _main.Cancel(); - } - -#pragma warning disable CS0612 // Type or member is obsolete - public void QueueChange(TextChange change) -#pragma warning restore CS0612 // Type or member is obsolete - { - _main.QueueChange(change); - } - - public void Dispose() - { - _main.Cancel(); - } - - public IDisposable SynchronizeMainThreadState() - { - return _main.Lock(); - } - - protected virtual void OnResultsReady(DocumentParseCompleteEventArgs args) - { - var handler = ResultsReady; - if (handler != null) - { - handler(this, args); - } - } - -#pragma warning disable CS0612 // Type or member is obsolete - internal static bool TreesAreDifferent(RazorSyntaxTree leftTree, RazorSyntaxTree rightTree, IEnumerable changes, CancellationToken cancelToken) -#pragma warning restore CS0612 // Type or member is obsolete - { - return TreesAreDifferent(leftTree.Root, rightTree.Root, changes, cancelToken); - } - -#pragma warning disable CS0612 // Type or member is obsolete - internal static bool TreesAreDifferent(Block leftTree, Block rightTree, IEnumerable changes) -#pragma warning restore CS0612 // Type or member is obsolete - { - return TreesAreDifferent(leftTree, rightTree, changes, CancellationToken.None); - } - -#pragma warning disable CS0612 // Type or member is obsolete - internal static bool TreesAreDifferent(Block leftTree, Block rightTree, IEnumerable changes, CancellationToken cancelToken) -#pragma warning restore CS0612 // Type or member is obsolete - { - // Apply all the pending changes to the original tree - // PERF: If this becomes a bottleneck, we can probably do it the other way around, - // i.e. visit the tree and find applicable changes for each node. -#pragma warning disable CS0612 // Type or member is obsolete - foreach (var change in changes) -#pragma warning restore CS0612 // Type or member is obsolete - { - cancelToken.ThrowIfCancellationRequested(); - - var sourceChange = change.AsSourceChange(); - var changeOwner = leftTree.LocateOwner(sourceChange); - - // Apply the change to the tree - if (changeOwner == null) - { - return true; - } - - var result = changeOwner.EditHandler.ApplyChange(changeOwner, sourceChange, force: true); - changeOwner.ReplaceWith(result.EditedSpan); - } - - // Now compare the trees - var treesDifferent = !leftTree.EquivalentTo(rightTree); - return treesDifferent; - } - - private abstract class ThreadStateBase - { -#if DEBUG - private int _id = -1; -#endif - protected ThreadStateBase() - { - } - - [Conditional("DEBUG")] - protected void SetThreadId(int id) - { -#if DEBUG - _id = id; -#endif - } - - [Conditional("DEBUG")] - protected void EnsureOnThread() - { -#if DEBUG - Debug.Assert(_id != -1, "SetThreadId was never called!"); - Debug.Assert(Thread.CurrentThread.ManagedThreadId == _id, "Called from an unexpected thread!"); -#endif - } - - [Conditional("DEBUG")] - protected void EnsureNotOnThread() - { -#if DEBUG - Debug.Assert(_id != -1, "SetThreadId was never called!"); - Debug.Assert(Thread.CurrentThread.ManagedThreadId != _id, "Called from an unexpected thread!"); -#endif - } - } - - private class MainThreadState : ThreadStateBase, IDisposable - { - private readonly CancellationTokenSource _cancelSource = new CancellationTokenSource(); - private readonly ManualResetEventSlim _hasParcel = new ManualResetEventSlim(false); - private CancellationTokenSource _currentParcelCancelSource; - - private string _fileName; - private readonly object _stateLock = new object(); -#pragma warning disable CS0612 // Type or member is obsolete - private IList _changes = new List(); -#pragma warning restore CS0612 // Type or member is obsolete - - public MainThreadState(string fileName) - { - _fileName = fileName; - - SetThreadId(Thread.CurrentThread.ManagedThreadId); - } - - public event EventHandler ResultsReady; - - public CancellationToken CancelToken - { - get { return _cancelSource.Token; } - } - - public bool IsIdle - { - get - { - lock (_stateLock) - { - return _currentParcelCancelSource == null; - } - } - } - - public void Cancel() - { - EnsureOnThread(); - _cancelSource.Cancel(); - } - - public IDisposable Lock() - { - Monitor.Enter(_stateLock); - return new DisposableAction(() => Monitor.Exit(_stateLock)); - } - -#pragma warning disable CS0612 // Type or member is obsolete - public void QueueChange(TextChange change) -#pragma warning restore CS0612 // Type or member is obsolete - { - EnsureOnThread(); - lock (_stateLock) - { - // CurrentParcel token source is not null ==> There's a parse underway - if (_currentParcelCancelSource != null) - { - _currentParcelCancelSource.Cancel(); - } - - _changes.Add(change); - _hasParcel.Set(); - } - } - - public WorkParcel GetParcel() - { - EnsureNotOnThread(); // Only the background thread can get a parcel - _hasParcel.Wait(_cancelSource.Token); - _hasParcel.Reset(); - lock (_stateLock) - { - // Create a cancellation source for this parcel - _currentParcelCancelSource = new CancellationTokenSource(); - - var changes = _changes; -#pragma warning disable CS0612 // Type or member is obsolete - _changes = new List(); -#pragma warning restore CS0612 // Type or member is obsolete - return new WorkParcel(changes, _currentParcelCancelSource.Token); - } - } - - public void ReturnParcel(DocumentParseCompleteEventArgs args) - { - lock (_stateLock) - { - // Clear the current parcel cancellation source - if (_currentParcelCancelSource != null) - { - _currentParcelCancelSource.Dispose(); - _currentParcelCancelSource = null; - } - - // If there are things waiting to be parsed, just don't fire the event because we're already out of date - if (_changes.Any()) - { - return; - } - } - var handler = ResultsReady; - if (handler != null) - { - handler(this, args); - } - } - - public void Dispose() - { - Dispose(true); - GC.SuppressFinalize(this); - } - - protected virtual void Dispose(bool disposing) - { - if (disposing) - { - if (_currentParcelCancelSource != null) - { - _currentParcelCancelSource.Dispose(); - _currentParcelCancelSource = null; - } - _cancelSource.Dispose(); - _hasParcel.Dispose(); - } - } - } - - private class BackgroundThread : ThreadStateBase - { - private MainThreadState _main; - private Thread _backgroundThread; - private CancellationToken _shutdownToken; - private RazorTemplateEngine _templateEngine; - private string _fileName; - private RazorSyntaxTree _currentSyntaxTree; -#pragma warning disable CS0612 // Type or member is obsolete - private IList _previouslyDiscarded = new List(); -#pragma warning restore CS0612 // Type or member is obsolete - - public BackgroundThread(MainThreadState main, RazorTemplateEngine templateEngine, string fileName) - { - // Run on MAIN thread! - _main = main; - _shutdownToken = _main.CancelToken; - _templateEngine = templateEngine; - _fileName = fileName; - - _backgroundThread = new Thread(WorkerLoop); - SetThreadId(_backgroundThread.ManagedThreadId); - } - - // **** ANY THREAD **** - public void Start() - { - _backgroundThread.Start(); - } - - // **** BACKGROUND THREAD **** - private void WorkerLoop() - { - var fileNameOnly = Path.GetFileName(_fileName); - - try - { - EnsureOnThread(); - -#if NETSTANDARD1_3 - var spinWait = new SpinWait(); -#endif - - while (!_shutdownToken.IsCancellationRequested) - { - // Grab the parcel of work to do - var parcel = _main.GetParcel(); - if (parcel.Changes.Any()) - { - try - { - DocumentParseCompleteEventArgs args = null; - using (var linkedCancel = CancellationTokenSource.CreateLinkedTokenSource(_shutdownToken, parcel.CancelToken)) - { - if (!linkedCancel.IsCancellationRequested) - { - // Collect ALL changes -#pragma warning disable CS0612 // Type or member is obsolete - List allChanges; -#pragma warning restore CS0612 // Type or member is obsolete - - if (_previouslyDiscarded != null) - { - allChanges = Enumerable.Concat(_previouslyDiscarded, parcel.Changes).ToList(); - } - else - { - allChanges = parcel.Changes.ToList(); - } - - var finalChange = allChanges.Last(); - - var results = ParseChange(finalChange.NewBuffer, linkedCancel.Token); - - if (results != null && !linkedCancel.IsCancellationRequested) - { - // Clear discarded changes list - _previouslyDiscarded = null; - - var treeStructureChanged = _currentSyntaxTree == null || TreesAreDifferent(_currentSyntaxTree, results.GetSyntaxTree(), allChanges, parcel.CancelToken); - _currentSyntaxTree = results.GetSyntaxTree(); - - // Build Arguments - args = new DocumentParseCompleteEventArgs() - { - GeneratorResults = results, - SourceChange = finalChange, - TreeStructureChanged = treeStructureChanged - }; - } - else - { - // Parse completed but we were cancelled in the mean time. Add these to the discarded changes set - _previouslyDiscarded = allChanges; - } - } - } - if (args != null) - { - _main.ReturnParcel(args); - } - } - catch (OperationCanceledException) - { - } - } - else - { -#if NETSTANDARD1_3 - // This does the equivalent of thread.yield under the covers. - spinWait.SpinOnce(); -#else - // No Yield in CoreCLR - - Thread.Yield(); -#endif - } - } - } - catch (OperationCanceledException) - { - // Do nothing. Just shut down. - } - finally - { - // Clean up main thread resources - _main.Dispose(); - } - } - - private RazorCodeDocument ParseChange(ITextBuffer buffer, CancellationToken token) - { - EnsureOnThread(); - - // Seek the buffer to the beginning - buffer.Position = 0; - - var sourceDocument = LegacySourceDocument.Create(buffer, _fileName); - var imports = _templateEngine.GetImports(_fileName); - - var codeDocument = RazorCodeDocument.Create(sourceDocument, imports); - - _templateEngine.GenerateCode(codeDocument); - return codeDocument; - } - } - - private class WorkParcel - { -#pragma warning disable CS0612 // Type or member is obsolete - public WorkParcel(IList changes, CancellationToken cancelToken) -#pragma warning restore CS0612 // Type or member is obsolete - { - Changes = changes; - CancelToken = cancelToken; - } - - public CancellationToken CancelToken { get; private set; } -#pragma warning disable CS0612 // Type or member is obsolete - public IList Changes { get; private set; } -#pragma warning restore CS0612 // Type or member is obsolete - } - } -} -#pragma warning restore CS0618 diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/Block.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/Block.cs index 39fc09ea9e..781a6e0b5b 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/Block.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/Block.cs @@ -17,7 +17,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy source.Reset(); } - protected Block(BlockKind? type, IReadOnlyList children, IParentChunkGenerator generator) + protected Block(BlockKindInternal? type, IReadOnlyList children, IParentChunkGenerator generator) { if (type == null) { @@ -36,7 +36,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy } public IParentChunkGenerator ChunkGenerator { get; } - public BlockKind Type { get; } + public BlockKindInternal Type { get; } public IReadOnlyList Children { get; } diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/BlockBuilder.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/BlockBuilder.cs index 29046df7e0..3e3905c4a7 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/BlockBuilder.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/BlockBuilder.cs @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy public IParentChunkGenerator ChunkGenerator { get; set; } - public BlockKind? Type { get; set; } + public BlockKindInternal? Type { get; set; } public List Children { get; private set; } diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/BlockKindInternal.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/BlockKindInternal.cs new file mode 100644 index 0000000000..d5b384a956 --- /dev/null +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/BlockKindInternal.cs @@ -0,0 +1,24 @@ +// 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. + +namespace Microsoft.AspNetCore.Razor.Language.Legacy +{ + public enum BlockKindInternal + { + // Code + Statement, + Directive, + Functions, + Expression, + Helper, + + // Markup + Markup, + Section, + Template, + + // Special + Comment, + Tag + } +} diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/CSharpCodeParser.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/CSharpCodeParser.cs index e48004e4e6..3d575bb71d 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/CSharpCodeParser.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/CSharpCodeParser.cs @@ -190,7 +190,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Span.Start = CurrentLocation; // Unless changed, the block is a statement block - using (Context.Builder.StartBlock(BlockKind.Statement)) + using (Context.Builder.StartBlock(BlockKindInternal.Statement)) { NextToken(); @@ -218,7 +218,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { if (Span.Symbols.Count > 0) { - Output(SpanKind.Code); + Output(SpanKindInternal.Code); } AtTransition(current); } @@ -228,7 +228,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy AfterTransition(); } - Output(SpanKind.Code); + Output(SpanKindInternal.Code); } } } @@ -243,11 +243,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { Debug.Assert(current.Type == CSharpSymbolType.Transition); Accept(current); - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; Span.ChunkGenerator = SpanChunkGenerator.Null; // Output the "@" span and continue here - Output(SpanKind.Transition); + Output(SpanKindInternal.Transition); AfterTransition(); } @@ -263,7 +263,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { if (CurrentSymbol.Type == CSharpSymbolType.LeftParenthesis) { - Context.Builder.CurrentBlock.Type = BlockKind.Expression; + Context.Builder.CurrentBlock.Type = BlockKindInternal.Expression; Context.Builder.CurrentBlock.ChunkGenerator = new ExpressionChunkGenerator(); ExplicitExpression(); return; @@ -290,7 +290,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy CurrentSymbol.Content.Length); } - Context.Builder.CurrentBlock.Type = BlockKind.Expression; + Context.Builder.CurrentBlock.Type = BlockKindInternal.Expression; Context.Builder.CurrentBlock.ChunkGenerator = new ExpressionChunkGenerator(); ImplicitExpression(); return; @@ -318,7 +318,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy } // Invalid character - Context.Builder.CurrentBlock.Type = BlockKind.Expression; + Context.Builder.CurrentBlock.Type = BlockKindInternal.Expression; Context.Builder.CurrentBlock.ChunkGenerator = new ExpressionChunkGenerator(); AddMarkerSymbolIfNecessary(); Span.ChunkGenerator = new ExpressionChunkGenerator(); @@ -327,7 +327,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy CurrentKeywords, acceptTrailingDot: IsNested) { - AcceptedCharacters = AcceptedCharacters.NonWhiteSpace + AcceptedCharacters = AcceptedCharactersInternal.NonWhiteSpace }; if (At(CSharpSymbolType.WhiteSpace) || At(CSharpSymbolType.NewLine)) { @@ -367,9 +367,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy AcceptAndMoveNext(); // Set up the "{" span and output - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.MetaCode); + Output(SpanKindInternal.MetaCode); // Set up auto-complete and parse the code block var editHandler = new AutoCompleteEditHandler(Language.TokenizeString); @@ -382,12 +382,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { editHandler.AutoCompleteString = "}"; } - Output(SpanKind.Code); + Output(SpanKindInternal.Code); if (Optional(CSharpSymbolType.RightBrace)) { // Set up the "}" span - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; Span.ChunkGenerator = SpanChunkGenerator.Null; } @@ -401,24 +401,24 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy } } - Output(SpanKind.MetaCode); + Output(SpanKindInternal.MetaCode); } private void ImplicitExpression() { - ImplicitExpression(AcceptedCharacters.NonWhiteSpace); + ImplicitExpression(AcceptedCharactersInternal.NonWhiteSpace); } // Async implicit expressions include the "await" keyword and therefore need to allow spaces to // separate the "await" and the following code. private void AsyncImplicitExpression() { - ImplicitExpression(AcceptedCharacters.AnyExceptNewline); + ImplicitExpression(AcceptedCharactersInternal.AnyExceptNewline); } - private void ImplicitExpression(AcceptedCharacters acceptedCharacters) + private void ImplicitExpression(AcceptedCharactersInternal acceptedCharacters) { - Context.Builder.CurrentBlock.Type = BlockKind.Expression; + Context.Builder.CurrentBlock.Type = BlockKindInternal.Expression; Context.Builder.CurrentBlock.ChunkGenerator = new ExpressionChunkGenerator(); using (PushSpanConfig(span => @@ -441,11 +441,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy while (MethodCallOrArrayIndex(acceptedCharacters)); PutCurrentBack(); - Output(SpanKind.Code); + Output(SpanKindInternal.Code); } } - private bool MethodCallOrArrayIndex(AcceptedCharacters acceptedCharacters) + private bool MethodCallOrArrayIndex(AcceptedCharactersInternal acceptedCharacters) { if (!EndOfFile) { @@ -453,7 +453,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy CurrentSymbol.Type == CSharpSymbolType.LeftBracket) { // If we end within "(", whitespace is fine - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any; CSharpSymbolType right; bool success; @@ -461,7 +461,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy using (PushSpanConfig((span, prev) => { prev(span); - span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any; + span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any; })) { right = Language.FlipBracket(CurrentSymbol.Type); @@ -555,7 +555,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy protected void CompleteBlock(bool insertMarkerIfNecessary, bool captureWhitespaceToEndOfLine) { - if (insertMarkerIfNecessary && Context.Builder.LastAcceptedCharacters != AcceptedCharacters.Any) + if (insertMarkerIfNecessary && Context.Builder.LastAcceptedCharacters != AcceptedCharactersInternal.Any) { AddMarkerSymbolIfNecessary(); } @@ -565,7 +565,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // Read whitespace, but not newlines // If we're not inserting a marker span, we don't need to capture whitespace if (!Context.WhiteSpaceIsSignificantToAncestorBlock && - Context.Builder.CurrentBlock.Type != BlockKind.Expression && + Context.Builder.CurrentBlock.Type != BlockKindInternal.Expression && captureWhitespaceToEndOfLine && !Context.DesignTimeMode && !IsNested) @@ -605,9 +605,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var block = new Block(LegacyResources.BlockName_ExplicitExpression, CurrentStart); Assert(CSharpSymbolType.LeftParenthesis); AcceptAndMoveNext(); - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.MetaCode); + Output(SpanKindInternal.MetaCode); using (PushSpanConfig(ConfigureExplicitExpressionSpan)) { var success = Balance( @@ -634,30 +634,30 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy } // Output the content span and then capture the ")" - Output(SpanKind.Code); + Output(SpanKindInternal.Code); } Optional(CSharpSymbolType.RightParenthesis); if (!EndOfFile) { PutCurrentBack(); } - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; Span.ChunkGenerator = SpanChunkGenerator.Null; CompleteBlock(insertMarkerIfNecessary: false); - Output(SpanKind.MetaCode); + Output(SpanKindInternal.MetaCode); } private void Template() { - if (Context.Builder.ActiveBlocks.Any(block => block.Type == BlockKind.Template)) + if (Context.Builder.ActiveBlocks.Any(block => block.Type == BlockKindInternal.Template)) { Context.ErrorSink.OnError( CurrentStart, LegacyResources.ParseError_InlineMarkup_Blocks_Cannot_Be_Nested, length: 1 /* @ */); } - Output(SpanKind.Code); - using (Context.Builder.StartBlock(BlockKind.Template)) + Output(SpanKindInternal.Code); + using (Context.Builder.StartBlock(BlockKindInternal.Template)) { Context.Builder.CurrentBlock.ChunkGenerator = new TemplateBlockChunkGenerator(); PutCurrentBack(); @@ -677,7 +677,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy private void NestedBlock() { - Output(SpanKind.Code); + Output(SpanKindInternal.Code); var wasNested = IsNested; IsNested = true; @@ -759,18 +759,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy LegacyResources.FormatParseError_ReservedWord(CurrentSymbol.Content), CurrentSymbol.Content.Length); AcceptAndMoveNext(); - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; Span.ChunkGenerator = SpanChunkGenerator.Null; - Context.Builder.CurrentBlock.Type = BlockKind.Directive; + Context.Builder.CurrentBlock.Type = BlockKindInternal.Directive; CompleteBlock(); - Output(SpanKind.MetaCode); + Output(SpanKindInternal.MetaCode); } private void KeywordBlock(bool topLevel) { HandleKeyword(topLevel, () => { - Context.Builder.CurrentBlock.Type = BlockKind.Expression; + Context.Builder.CurrentBlock.Type = BlockKindInternal.Expression; Context.Builder.CurrentBlock.ChunkGenerator = new ExpressionChunkGenerator(); ImplicitExpression(); }); @@ -799,7 +799,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy private void WhileClause() { - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any; var whitespace = SkipToNextImportantToken(); if (At(CSharpKeyword.While)) @@ -810,7 +810,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy AcceptWhile(IsSpacingToken(includeNewLines: true, includeComments: true)); if (AcceptCondition() && Optional(CSharpSymbolType.Semicolon)) { - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; } } else @@ -858,7 +858,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy private void UsingDeclaration() { // Set block type to directive - Context.Builder.CurrentBlock.Type = BlockKind.Directive; + Context.Builder.CurrentBlock.Type = BlockKindInternal.Directive; var start = CurrentStart; if (At(CSharpSymbolType.Identifier)) @@ -892,7 +892,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy NamespaceOrTypeName(); } - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.AnyExceptNewline; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.AnyExceptNewline; Span.ChunkGenerator = new AddImportChunkGenerator(new LocationTagged( string.Concat(Span.Symbols.Skip(1).Select(s => s.Content)), start)); @@ -1028,7 +1028,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // Return whitespace and end the block PutCurrentBack(); PutBack(whitespace); - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any; } } @@ -1049,7 +1049,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // No else, return whitespace PutCurrentBack(); PutBack(whitespace); - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any; } } @@ -1190,7 +1190,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy private void Statement(Block block) { - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any; // Accept whitespace but always keep the last whitespace node so we can put it back if necessary var lastWhitespace = AcceptWhiteSpaceInLines(); @@ -1249,7 +1249,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy } // Markup block - Output(SpanKind.Code); + Output(SpanKindInternal.Code); if (Context.DesignTimeMode && CurrentSymbol != null && (CurrentSymbol.Type == CSharpSymbolType.LessThan || CurrentSymbol.Type == CSharpSymbolType.Transition)) { @@ -1269,7 +1269,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy switch (type) { case CSharpSymbolType.RazorCommentTransition: - Output(SpanKind.Code); + Output(SpanKindInternal.Code); RazorComment(); Statement(block); break; @@ -1310,12 +1310,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy if (At(CSharpSymbolType.Transition)) { // Escaped "@" - Output(SpanKind.Code); + Output(SpanKindInternal.Code); // Output "@" as hidden span Accept(transition); Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.Code); + Output(SpanKindInternal.Code); Assert(CSharpSymbolType.Transition); AcceptAndMoveNext(); @@ -1376,7 +1376,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy else if (At(CSharpSymbolType.Transition) && (NextIs(CSharpSymbolType.LessThan, CSharpSymbolType.Colon))) { Accept(read); - Output(SpanKind.Code); + Output(SpanKindInternal.Code); Template(); } else if (At(CSharpSymbolType.RazorCommentTransition)) @@ -1430,7 +1430,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy else if (acceptTerminatingBrace) { Assert(CSharpSymbolType.RightBrace); - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; AcceptAndMoveNext(); } } @@ -1456,7 +1456,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy if (At(CSharpSymbolType.RazorCommentTransition)) { Accept(whitespace); - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any; RazorComment(); } else @@ -1471,7 +1471,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy protected override void OutputSpanBeforeRazorComment() { AddMarkerSymbolIfNecessary(); - Output(SpanKind.Code); + Output(SpanKindInternal.Code); } private void SetUpExpressions() @@ -1521,12 +1521,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy private void HandleDirective(DirectiveDescriptor descriptor) { - Context.Builder.CurrentBlock.Type = BlockKind.Directive; + Context.Builder.CurrentBlock.Type = BlockKindInternal.Directive; Context.Builder.CurrentBlock.ChunkGenerator = new DirectiveChunkGenerator(descriptor); AssertDirective(descriptor.Name); AcceptAndMoveNext(); - Output(SpanKind.MetaCode, AcceptedCharacters.None); + Output(SpanKindInternal.MetaCode, AcceptedCharactersInternal.None); for (var i = 0; i < descriptor.Tokens.Count; i++) { @@ -1538,12 +1538,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy tokenDescriptor.Kind == DirectiveTokenKind.Type) { Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.Code, AcceptedCharacters.WhiteSpace); + Output(SpanKindInternal.Code, AcceptedCharactersInternal.WhiteSpace); } else { Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.Markup, AcceptedCharacters.WhiteSpace); + Output(SpanKindInternal.Markup, AcceptedCharactersInternal.WhiteSpace); } if (tokenDescriptor.Optional && (EndOfFile || At(CSharpSymbolType.NewLine))) @@ -1559,7 +1559,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return; } - var outputKind = SpanKind.Markup; + var outputKind = SpanKindInternal.Markup; switch (tokenDescriptor.Kind) { case DirectiveTokenKind.Type: @@ -1573,7 +1573,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return; } - outputKind = SpanKind.Code; + outputKind = SpanKindInternal.Code; break; case DirectiveTokenKind.Namespace: @@ -1587,7 +1587,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return; } - outputKind = SpanKind.Code; + outputKind = SpanKindInternal.Code; break; case DirectiveTokenKind.Member: @@ -1604,7 +1604,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return; } - outputKind = SpanKind.Code; + outputKind = SpanKindInternal.Code; break; case DirectiveTokenKind.String: @@ -1624,7 +1624,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy } Span.ChunkGenerator = new DirectiveTokenChunkGenerator(tokenDescriptor); - Output(outputKind, AcceptedCharacters.NonWhiteSpace); + Output(outputKind, AcceptedCharactersInternal.NonWhiteSpace); } AcceptWhile(IsSpacingToken(includeNewLines: false, includeComments: true)); @@ -1648,11 +1648,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy CurrentSymbol.Content.Length); } - Output(SpanKind.Markup, AcceptedCharacters.WhiteSpace); + Output(SpanKindInternal.Markup, AcceptedCharactersInternal.WhiteSpace); break; case DirectiveKind.RazorBlock: AcceptWhile(IsSpacingToken(includeNewLines: true, includeComments: true)); - Output(SpanKind.Markup, AcceptedCharacters.AllWhiteSpace); + Output(SpanKindInternal.Markup, AcceptedCharactersInternal.AllWhiteSpace); ParseDirectiveBlock(descriptor, parseChildren: (startingBraceLocation) => { @@ -1677,14 +1677,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy break; case DirectiveKind.CodeBlock: AcceptWhile(IsSpacingToken(includeNewLines: true, includeComments: true)); - Output(SpanKind.Markup, AcceptedCharacters.AllWhiteSpace); + Output(SpanKindInternal.Markup, AcceptedCharactersInternal.AllWhiteSpace); ParseDirectiveBlock(descriptor, parseChildren: (startingBraceLocation) => { NextToken(); Balance(BalancingModes.NoErrorOnFailure, CSharpSymbolType.LeftBrace, CSharpSymbolType.RightBrace, startingBraceLocation); Span.ChunkGenerator = new StatementChunkGenerator(); - Output(SpanKind.Code); + Output(SpanKindInternal.Code); }); break; } @@ -1713,7 +1713,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var startingBraceLocation = CurrentStart; Accept(CurrentSymbol); Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.MetaCode, AcceptedCharacters.None); + Output(SpanKindInternal.MetaCode, AcceptedCharactersInternal.None); parseChildren(startingBraceLocation); @@ -1728,11 +1728,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy } else { - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; } CompleteBlock(insertMarkerIfNecessary: false, captureWhitespaceToEndOfLine: true); Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.MetaCode, AcceptedCharacters.None); + Output(SpanKindInternal.MetaCode, AcceptedCharactersInternal.None); } } @@ -1769,7 +1769,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var keywordStartLocation = Span.Start; // Set the block type - Context.Builder.CurrentBlock.Type = BlockKind.Directive; + Context.Builder.CurrentBlock.Type = BlockKindInternal.Directive; var keywordLength = Span.End.AbsoluteIndex - Span.Start.AbsoluteIndex; @@ -1778,10 +1778,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy if (Span.Symbols.Count > 1) { - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; } - Output(SpanKind.MetaCode); + Output(SpanKindInternal.MetaCode); if (remainingWhitespace != null) { @@ -1814,7 +1814,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // Output the span and finish the block CompleteBlock(); - Output(SpanKind.Code, AcceptedCharacters.AnyExceptNewline); + Output(SpanKindInternal.Code, AcceptedCharactersInternal.AnyExceptNewline); } private void TagHelperDirective(string keyword, Func chunkGeneratorFactory) @@ -1826,7 +1826,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy AcceptAndMoveNext(); // Set the block type - Context.Builder.CurrentBlock.Type = BlockKind.Directive; + Context.Builder.CurrentBlock.Type = BlockKindInternal.Directive; var keywordLength = Span.End.AbsoluteIndex - Span.Start.AbsoluteIndex; @@ -1835,7 +1835,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // If we found whitespace then any content placed within the whitespace MAY cause a destructive change // to the document. We can't accept it. - Output(SpanKind.MetaCode, foundWhitespace ? AcceptedCharacters.None : AcceptedCharacters.AnyExceptNewline); + Output(SpanKindInternal.MetaCode, foundWhitespace ? AcceptedCharactersInternal.None : AcceptedCharactersInternal.AnyExceptNewline); ISpanChunkGenerator chunkGenerator; if (EndOfFile || At(CSharpSymbolType.NewLine)) @@ -1876,7 +1876,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // Output the span and finish the block CompleteBlock(); - Output(SpanKind.Code, AcceptedCharacters.AnyExceptNewline); + Output(SpanKindInternal.Code, AcceptedCharactersInternal.AnyExceptNewline); } protected class Block diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/DocumentParseCompleteEventArgs.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/DocumentParseCompleteEventArgs.cs deleted file mode 100644 index 3a8d1e09fe..0000000000 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/DocumentParseCompleteEventArgs.cs +++ /dev/null @@ -1,31 +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 -{ - /// - /// Arguments for the DocumentParseComplete event in RazorEditorParser - /// - public class DocumentParseCompleteEventArgs : EventArgs - { - /// - /// Indicates if the tree structure has actually changed since the previous re-parse. - /// - public bool TreeStructureChanged { get; set; } - - /// - /// The result of the parsing and code generation. - /// - public RazorCodeDocument GeneratorResults { get; set; } - - - /// - /// The TextChange which triggered the re-parse - /// -#pragma warning disable CS0612 // Type or member is obsolete - public TextChange SourceChange { get; set; } -#pragma warning restore CS0612 // Type or member is obsolete - } -} diff --git a/src/Microsoft.AspNetCore.Razor.Language/Legacy/HtmlMarkupParser.cs b/src/Microsoft.AspNetCore.Razor.Language/Legacy/HtmlMarkupParser.cs index 8b35853989..4ac8b37773 100644 --- a/src/Microsoft.AspNetCore.Razor.Language/Legacy/HtmlMarkupParser.cs +++ b/src/Microsoft.AspNetCore.Razor.Language/Legacy/HtmlMarkupParser.cs @@ -60,14 +60,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy public override void BuildSpan(SpanBuilder span, SourceLocation start, string content) { - span.Kind = SpanKind.Markup; + span.Kind = SpanKindInternal.Markup; span.ChunkGenerator = new MarkupChunkGenerator(); base.BuildSpan(span, start, content); } protected override void OutputSpanBeforeRazorComment() { - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); } protected void SkipToAndParseCode(HtmlSymbolType type) @@ -91,7 +91,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy AcceptAndMoveNext(); } - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); } else if (At(HtmlSymbolType.NewLine)) { @@ -116,10 +116,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Accept(last); last = null; } - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); Accept(transition); Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); AcceptAndMoveNext(); continue; // while } @@ -161,7 +161,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { AddMarkerSymbolIfNecessary(); // Output the symbols that may have been accepted prior to the whitespace. - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); Span.ChunkGenerator = SpanChunkGenerator.Null; } @@ -171,7 +171,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy } AddMarkerSymbolIfNecessary(); - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); RazorComment(); @@ -183,7 +183,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy AcceptWhile(IsSpacingToken(includeNewLines: false)); AcceptAndMoveNext(); Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); } } else @@ -218,7 +218,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy private void OtherParserBlock() { AddMarkerSymbolIfNecessary(); - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); using (PushSpanConfig()) { @@ -251,7 +251,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { if (IsBangEscape(lookahead: 0)) { - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); // Accept the parser escape character '!'. Assert(HtmlSymbolType.Bang); @@ -259,7 +259,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // Setup the metacode span that we will be outputing. Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.MetaCode, AcceptedCharacters.None); + Output(SpanKindInternal.MetaCode, AcceptedCharactersInternal.None); } } @@ -272,7 +272,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy using (PushSpanConfig(DefaultMarkupSpan)) { - using (Context.Builder.StartBlock(BlockKind.Markup)) + using (Context.Builder.StartBlock(BlockKindInternal.Markup)) { Span.Start = CurrentLocation; @@ -291,19 +291,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy else if (CurrentSymbol.Type == HtmlSymbolType.Transition) { // "@" => Explicit Tag/Single Line Block OR Template - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); // Definitely have a transition span Assert(HtmlSymbolType.Transition); AcceptAndMoveNext(); - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.Transition); + Output(SpanKindInternal.Transition); if (At(HtmlSymbolType.Transition)) { Span.ChunkGenerator = SpanChunkGenerator.Null; AcceptAndMoveNext(); - Output(SpanKind.MetaCode); + Output(SpanKindInternal.MetaCode); } AfterTransition(); } @@ -314,7 +314,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy LegacyResources.ParseError_MarkupBlock_Must_Start_With_Tag, CurrentSymbol.Content.Length); } - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); } } } @@ -322,7 +322,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy private void DefaultMarkupSpan(SpanBuilder span) { span.ChunkGenerator = new MarkupChunkGenerator(); - span.EditHandler = new SpanEditHandler(Language.TokenizeString, AcceptedCharacters.Any); + span.EditHandler = new SpanEditHandler(Language.TokenizeString, AcceptedCharactersInternal.Any); } private void AfterTransition() @@ -336,7 +336,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // The first part (left) is added to this span and we return a MetaCode span Accept(split.Item1); Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.MetaCode); + Output(SpanKindInternal.MetaCode); if (split.Item2 != null) { Accept(split.Item2); @@ -361,11 +361,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy if (!EndOfFile && CurrentSymbol.Type == HtmlSymbolType.NewLine) { AcceptAndMoveNext(); - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; } PutCurrentBack(); Context.WhiteSpaceIsSignificantToAncestorBlock = old; - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); } private void TagBlock(Stack> tags) @@ -377,7 +377,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy SkipToAndParseCode(HtmlSymbolType.OpenAngle); // Output everything prior to the OpenAngle into a markup span - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); // Do not want to start a new tag block if we're at the end of the file. IDisposable tagBlockWrapper = null; @@ -388,7 +388,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy if (!EndOfFile && !atSpecialTag) { // Start a Block tag. This is used to wrap things like

or etc. - tagBlockWrapper = Context.Builder.StartBlock(BlockKind.Tag); + tagBlockWrapper = Context.Builder.StartBlock(BlockKindInternal.Tag); } if (EndOfFile) @@ -416,11 +416,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy if (complete) { // Completed tags have no accepted characters inside of blocks. - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; } // Output the contents of the tag into its own markup span. - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); } finally { @@ -498,7 +498,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { AcceptAndMoveNext(); - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any; while (!EndOfFile) { SkipToAndParseCode(HtmlSymbolType.DoubleHyphen); @@ -638,17 +638,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy LegacyResources.ParseError_TextTagCannotContainAttributes, length: 4 /* text */); - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.Any; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.Any; RecoverTextTag(); } else { - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; } Span.ChunkGenerator = SpanChunkGenerator.Null; - CompleteTagBlockWithSpan(tagBlockWrapper, Span.EditHandler.AcceptedCharacters, SpanKind.Transition); + CompleteTagBlockWithSpan(tagBlockWrapper, Span.EditHandler.AcceptedCharacters, SpanKindInternal.Transition); return seenCloseAngle; } @@ -765,13 +765,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // Output anything prior to the attribute, in most cases this will be the tag name: // |. If in-between other attributes this will noop or output malformed attribute // content (if the previous attribute was malformed). - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); - using (Context.Builder.StartBlock(BlockKind.Markup)) + using (Context.Builder.StartBlock(BlockKindInternal.Markup)) { Accept(whitespace); Accept(name); - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); } return; @@ -779,10 +779,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // Not a minimized attribute, parse as if it were well-formed (if attribute turns out to be malformed we // will go into recovery). - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); // Start a new markup block for the attribute - using (Context.Builder.StartBlock(BlockKind.Markup)) + using (Context.Builder.StartBlock(BlockKindInternal.Markup)) { AttributePrefix(whitespace, name, whitespaceAfterAttributeName); } @@ -828,7 +828,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy if (attributeCanBeConditional) { Span.ChunkGenerator = SpanChunkGenerator.Null; // The block chunk generator will render the prefix - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); // Read the attribute value only if the value is quoted // or if there is no whitespace between '=' and the unquoted value. @@ -853,7 +853,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { // Again, block chunk generator will render the suffix Span.ChunkGenerator = SpanChunkGenerator.Null; - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); } // Create the block chunk generator @@ -863,7 +863,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy else { // Output the attribute name, the equals and optional quote. Ex: foo=" - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); if (quote == HtmlSymbolType.Unknown && whitespaceAfterEquals.Any()) { @@ -874,13 +874,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy SkipToAndParseCode(sym => IsEndOfAttributeValue(quote, sym)); // Output the attribute value (will include everything in-between the attribute's quotes). - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); if (quote != HtmlSymbolType.Unknown) { Optional(quote); } - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); } } @@ -894,7 +894,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy if (NextIs(HtmlSymbolType.Transition)) { // Wrapping this in a block so that the ConditionalAttributeCollapser doesn't rewrite it. - using (Context.Builder.StartBlock(BlockKind.Markup)) + using (Context.Builder.StartBlock(BlockKindInternal.Markup)) { Accept(prefix); @@ -903,11 +903,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new LocationTagged(string.Concat(prefix.Select(s => s.Content)), prefixStart), new LocationTagged(CurrentSymbol.Content, CurrentStart)); AcceptAndMoveNext(); - Output(SpanKind.Markup, AcceptedCharacters.None); + Output(SpanKindInternal.Markup, AcceptedCharactersInternal.None); Span.ChunkGenerator = SpanChunkGenerator.Null; AcceptAndMoveNext(); - Output(SpanKind.Markup, AcceptedCharacters.None); + Output(SpanKindInternal.Markup, AcceptedCharactersInternal.None); } } else @@ -920,7 +920,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Span.ChunkGenerator = SpanChunkGenerator.Null; // Dynamic value, start a new block and set the chunk generator - using (Context.Builder.StartBlock(BlockKind.Markup)) + using (Context.Builder.StartBlock(BlockKindInternal.Markup)) { Context.Builder.CurrentBlock.ChunkGenerator = new DynamicAttributeBlockChunkGenerator( @@ -952,7 +952,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new LocationTagged(string.Concat(prefix.Select(s => s.Content)), prefixStart), new LocationTagged(string.Concat(value.Select(s => s.Content)), valueStart)); } - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); } private bool IsEndOfAttributeValue(HtmlSymbolType quote, HtmlSymbol sym) @@ -1063,7 +1063,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // tags are treated like any other escaped HTML start tag. string.Equals(tag.Item1.Content, SyntaxConstants.TextTagName, StringComparison.OrdinalIgnoreCase)) { - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); Span.ChunkGenerator = SpanChunkGenerator.Null; Accept(_bufferedOpenAngle); @@ -1098,7 +1098,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy else { Accept(tokens); - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; } if (!empty) @@ -1106,7 +1106,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy tags.Push(tag); } - CompleteTagBlockWithSpan(tagBlockWrapper, Span.EditHandler.AcceptedCharacters, SpanKind.Transition); + CompleteTagBlockWithSpan(tagBlockWrapper, Span.EditHandler.AcceptedCharacters, SpanKindInternal.Transition); return true; } @@ -1154,7 +1154,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var tagName = tag.Item1.Content.Trim(); if (VoidElements.Contains(tagName)) { - CompleteTagBlockWithSpan(tagBlockWrapper, AcceptedCharacters.None, SpanKind.Markup); + CompleteTagBlockWithSpan(tagBlockWrapper, AcceptedCharactersInternal.None, SpanKindInternal.Markup); // Technically, void elements like "meta" are not allowed to have end tags. Just in case they do, // we need to look ahead at the next set of tokens. If we see "<", "/", tag name, accept it and the ">" following it @@ -1176,9 +1176,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { // Accept up to here Accept(whiteSpace); - Output(SpanKind.Markup); // Output the whitespace + Output(SpanKindInternal.Markup); // Output the whitespace - using (Context.Builder.StartBlock(BlockKind.Tag)) + using (Context.Builder.StartBlock(BlockKindInternal.Tag)) { Accept(openAngle); Accept(solidus); @@ -1191,11 +1191,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy if (complete) { - Span.EditHandler.AcceptedCharacters = AcceptedCharacters.None; + Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None; } // Output the closing void element - Output(SpanKind.Markup); + Output(SpanKindInternal.Markup); return complete; } @@ -1210,9 +1210,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { if (!CurrentScriptTagExpectsHtml()) { - CompleteTagBlockWithSpan(tagBlockWrapper, AcceptedCharacters.None, SpanKind.Markup); + CompleteTagBlockWithSpan(tagBlockWrapper, AcceptedCharactersInternal.None, SpanKindInternal.Markup); - SkipToEndScriptAndParseCode(endTagAcceptedCharacters: AcceptedCharacters.None); + SkipToEndScriptAndParseCode(endTagAcceptedCharacters: AcceptedCharactersInternal.None); } else { @@ -1230,7 +1230,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return seenClose; } - private void SkipToEndScriptAndParseCode(AcceptedCharacters endTagAcceptedCharacters = AcceptedCharacters.Any) + private void SkipToEndScriptAndParseCode(AcceptedCharactersInternal endTagAcceptedCharacters = AcceptedCharactersInternal.Any) { // Special case for ")), Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } @@ -433,22 +433,22 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), new MarkupBlock( Factory.Markup(" I really want to render a close brace, so here I go: "), new ExpressionBlock( Factory.CodeTransition(), - Factory.MetaCode("(").Accepts(AcceptedCharacters.None), + Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None), Factory.Code("\"}\"").AsExpression(), - Factory.MetaCode(")").Accepts(AcceptedCharacters.None)), + Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None)), Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } @@ -463,20 +463,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), new MarkupBlock( Factory.Markup(Environment.NewLine), new StatementBlock( Factory.CodeTransition(), Factory.Code($"if(true) {{{Environment.NewLine}}}{Environment.NewLine}").AsStatement() )), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } @@ -490,20 +490,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), new MarkupBlock( Factory.Markup(Environment.NewLine), new StatementBlock( Factory.CodeTransition(), Factory.Code($"if(true) {{{Environment.NewLine}}}").AsStatement() )), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } @@ -515,16 +515,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), new MarkupBlock( Factory.Markup("something")), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } @@ -536,16 +536,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), new MarkupBlock( Factory.Markup("")), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } @@ -559,16 +559,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), new MarkupBlock( Factory.Markup("")), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } @@ -581,19 +581,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + 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.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } @@ -606,16 +606,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), new MarkupBlock( Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } @@ -633,13 +633,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagBlock( factory.Markup("(" foo='", 17, 0, 17), new LocationTagged("'", 25, 0, 25)), factory.Markup(" foo='").With(SpanChunkGenerator.Null), new MarkupBlock( - factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 23, 0, 23), new LocationTagged("@", 23, 0, 23))).Accepts(AcceptedCharacters.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)), + factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 23, 0, 23), new LocationTagged("@", 23, 0, 23))).Accepts(AcceptedCharactersInternal.None), + factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), factory.Markup("'").With(SpanChunkGenerator.Null)), factory.Markup(" />"))), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()) }, { @@ -660,13 +660,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + factory.Span(SpanKindInternal.Code, "s", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagBlock( factory.Markup("(" ", 36, 0, 36), new LocationTagged("@", 37, 0, 37))).Accepts(AcceptedCharacters.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)), + factory.Markup(" @").With(new LiteralAttributeChunkGenerator(new LocationTagged(" ", 36, 0, 36), new LocationTagged("@", 37, 0, 37))).Accepts(AcceptedCharactersInternal.None), + factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), factory.Markup("'").With(SpanChunkGenerator.Null)), factory.Markup(" />"))), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()) }, }; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpSpecialBlockTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpSpecialBlockTest.cs index 1e157145d1..7e95b373f6 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpSpecialBlockTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpSpecialBlockTest.cs @@ -14,7 +14,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("inherits", new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor), - Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("inherits").Accepts(AcceptedCharactersInternal.None)), new RazorError( LegacyResources.FormatUnexpectedEOFAfterDirective(CSharpCodeParser.InheritsDirectiveDescriptor.Name, "type"), new SourceLocation(8, 0, 8), 1)); @@ -25,10 +25,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("inherits Foo.Bar, string, int>.Baz", 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, string, int>.Baz", markup: false) - .Accepts(AcceptedCharacters.NonWhiteSpace) + Factory.MetaCode("inherits").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "Foo.Bar, string, int>.Baz", markup: false) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor.Tokens.First())))); } @@ -37,8 +37,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("inherits " + Environment.NewLine + "foo", new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.InheritsDirectiveDescriptor), - Factory.MetaCode("inherits").Accepts(AcceptedCharacters.None), - Factory.Span(SpanKind.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.WhiteSpace)), + Factory.MetaCode("inherits").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace)), new RazorError(LegacyResources.FormatDirectiveExpectsTypeName(CSharpCodeParser.InheritsDirectiveDescriptor.Name), 24, 0, 24, Environment.NewLine.Length)); } @@ -47,11 +47,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("{ using Foo.Bar.Baz; var foo = bar; }", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" using Foo.Bar.Baz; var foo = bar; ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) ), new RazorError( LegacyResources.ParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock, @@ -64,11 +64,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("{ using Foo = Bar.Baz; var foo = bar; }", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" using Foo = Bar.Baz; var foo = bar; ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) ), new RazorError( LegacyResources.ParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock, @@ -81,11 +81,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("{ functions Foo; }", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" functions Foo; ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) )); } @@ -96,11 +96,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + " List photos = gallery.Photo.ToList();" + Environment.NewLine + "}", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code($"{Environment.NewLine} List photos = gallery.Photo.ToList();{Environment.NewLine}") .AsStatement() .AutoCompleteWith(autoCompleteString: null), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) )); } @@ -113,11 +113,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // Act/Assert ParseBlockTest("{" + code + "}", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(code) .AsStatement() .AutoCompleteWith(autoCompleteString: null), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) )); } @@ -130,9 +130,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy // Act/Assert ParseBlockTest("(" + code + ")", new ExpressionBlock( - Factory.MetaCode("(").Accepts(AcceptedCharacters.None), + Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None), Factory.Code(code).AsExpression(), - Factory.MetaCode(")").Accepts(AcceptedCharacters.None) + Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None) )); } @@ -142,11 +142,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy const string code = " foo(); \"bar}baz\" "; ParseBlockTest("functions {" + code + "} zoop", new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.FunctionsDirectiveDescriptor), - Factory.MetaCode("functions").Accepts(AcceptedCharacters.None), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + Factory.MetaCode("functions").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), Factory.Code(code).AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None))); + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None))); } [Fact] @@ -154,9 +154,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("functions { { { { { } zoop", new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.FunctionsDirectiveDescriptor), - Factory.MetaCode("functions").Accepts(AcceptedCharacters.None), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharacters.None), + Factory.MetaCode("functions").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + Factory.MetaCode("{").AutoCompleteWith("}", atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), Factory.Code(" { { { { } zoop").AsStatement()), new RazorError( LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("functions", "}", "{"), @@ -171,7 +171,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new ExpressionBlock( Factory.Code("Functions") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))); + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))); } [Fact] @@ -182,7 +182,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.EmptyCSharp() .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), new RazorError( LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS("/"), new SourceLocation(1, 0, 1), @@ -201,11 +201,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.Markup("\t"), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("A real tag!"), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)), + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)), Factory.Code("}").AsStatement() )); } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpStatementTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpStatementTest.cs index 4bc87575eb..490d252688 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpStatementTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpStatementTest.cs @@ -25,7 +25,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("for(int i = 0; i++; i < length) { foo(); }") .AsStatement() - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) )); } @@ -37,7 +37,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("foreach(var foo in bar) { foo(); }") .AsStatement() - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) )); } @@ -49,7 +49,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("while(true) { foo(); }") .AsStatement() - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) )); } @@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("switch(foo) { foo(); }") .AsStatement() - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) )); } @@ -73,7 +73,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("lock(baz) { foo(); }") .AsStatement() - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) )); } @@ -107,7 +107,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("if(true) { foo(); } else { foo(); }") .AsStatement() - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) )); } @@ -157,7 +157,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory .Code("try { A(); } catch(Exception) when (true) { B(); } finally { C(); }") .AsStatement() - .Accepts(AcceptedCharacters.None)) + .Accepts(AcceptedCharactersInternal.None)) }, { "@try { A(); } catch(Exception) when (true) { B(); } catch(IOException) when (false) { C(); }", @@ -188,12 +188,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy "@{try { someMethod(); } catch(Exception) when (true) { handleIO(); }}", new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), factory .Code("try { someMethod(); } catch(Exception) when (true) { handleIO(); }") .AsStatement() .AutoCompleteWith(autoCompleteString: null), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)) + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)) }, // Partial exception filter data @@ -308,7 +308,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("try { foo(); } finally { Dispose(); }") .AsStatement() - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) )); } @@ -322,7 +322,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code(code) .AsNamespaceImport(import) - .Accepts(AcceptedCharacters.AnyExceptNewline)); + .Accepts(AcceptedCharactersInternal.AnyExceptNewline)); // document, expectedResult return new TheoryData @@ -369,7 +369,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("using(var foo = new Foo()) { foo.Bar(); }") .AsStatement() - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) )); } @@ -381,7 +381,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("using StringDictionary = System.Collections.Generic.Dictionary") .AsNamespaceImport(" StringDictionary = System.Collections.Generic.Dictionary") - .Accepts(AcceptedCharacters.AnyExceptNewline) + .Accepts(AcceptedCharactersInternal.AnyExceptNewline) )); } @@ -393,7 +393,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("using System.Text.Encoding.ASCIIEncoding") .AsNamespaceImport(" System.Text.Encoding.ASCIIEncoding") - .Accepts(AcceptedCharacters.AnyExceptNewline) + .Accepts(AcceptedCharactersInternal.AnyExceptNewline) )); } @@ -405,7 +405,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("do { foo(); } while(true);") .AsStatement() - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) )); } @@ -417,7 +417,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("is") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) )); } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpTemplateTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpTemplateTest.cs index 48b51260a4..775f2a3c4f 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpTemplateTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpTemplateTest.cs @@ -16,16 +16,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.MarkupTransition(), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("Foo #"), new ExpressionBlock( Factory.CodeTransition(), Factory.Code("item") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) ), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)) ) ); } @@ -38,7 +38,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.MarkupTransition(), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("Foo #"), new ExpressionBlock( Factory.CodeTransition(), @@ -48,24 +48,24 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.MarkupTransition(), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml(), new ExpressionBlock( Factory.CodeTransition(), Factory.Code("item") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) ), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)) ) ), Factory.Code(")") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) ), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)) ) ); } @@ -76,7 +76,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("{ var foo = @: bar" + Environment.NewLine + "; }", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" var foo = ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), @@ -86,11 +86,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.MetaMarkup(":", HtmlSymbolType.Colon), Factory.Markup(" bar" + Environment.NewLine) .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString)) - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) ) ), Factory.Code("; ").AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) )); } @@ -100,7 +100,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("{i@: bar" + Environment.NewLine + "}", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code("i") .AsStatement() .AutoCompleteWith(autoCompleteString: null), @@ -110,11 +110,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.MetaMarkup(":", HtmlSymbolType.Colon), Factory.Markup(" bar" + Environment.NewLine) .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString)) - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) ) ), Factory.EmptyCSharp().AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) )); } @@ -123,11 +123,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("(Html.Repeat(10," + TestTemplateCode + "))", new ExpressionBlock( - Factory.MetaCode("(").Accepts(AcceptedCharacters.None), + Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None), Factory.Code("Html.Repeat(10, ").AsExpression(), TestTemplate(), Factory.Code(")").AsExpression(), - Factory.MetaCode(")").Accepts(AcceptedCharacters.None) + Factory.MetaCode(")").Accepts(AcceptedCharactersInternal.None) )); } @@ -141,7 +141,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy TestTemplate(), Factory.Code(")") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) )); } @@ -157,7 +157,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy .AsImplicitExpression(CSharpCodeParser.DefaultKeywords), TestTemplate(), Factory.Code(")") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace) + .AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace) )); } @@ -171,7 +171,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy TestNestedTemplate(), Factory.Code(")") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) ), GetNestedTemplateError(42)); } @@ -185,7 +185,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy TestTemplate(), Factory.Code("); }") .AsStatement() - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) )); } @@ -200,7 +200,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy TestTemplate(), Factory.Code("); }") .AsStatement() - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) )); } @@ -214,7 +214,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy TestNestedTemplate(), Factory.Code("); }") .AsStatement() - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) ), GetNestedTemplateError(74)); } @@ -224,13 +224,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("{ var foo = bar; Html.ExecuteTemplate(foo," + TestTemplateCode + "); }", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" var foo = bar; Html.ExecuteTemplate(foo, ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), TestTemplate(), Factory.Code("); ").AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) )); } @@ -239,7 +239,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("{ var foo = bar; Html.ExecuteTemplate(foo," + TestTemplateCode + "," + TestTemplateCode + "); }", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" var foo = bar; Html.ExecuteTemplate(foo, ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), @@ -247,7 +247,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.Code(", ").AsStatement(), TestTemplate(), Factory.Code("); ").AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) )); } @@ -256,13 +256,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("{ var foo = bar; Html.ExecuteTemplate(foo," + TestNestedTemplateCode + "); }", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" var foo = bar; Html.ExecuteTemplate(foo, ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), TestNestedTemplate(), Factory.Code("); ").AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) ), GetNestedTemplateError(69)); } @@ -283,30 +283,30 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new AttributeBlockChunkGenerator("foo", new LocationTagged(" foo='", 46, 0, 46), new LocationTagged("'", 54, 0, 54)), Factory.Markup(" foo='").With(SpanChunkGenerator.Null), new MarkupBlock( - Factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 52, 0, 52), new LocationTagged("@", 52, 0, 52))).Accepts(AcceptedCharacters.None), - Factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)), + Factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 52, 0, 52), new LocationTagged("@", 52, 0, 52))).Accepts(AcceptedCharactersInternal.None), + Factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(">").Accepts(AcceptedCharacters.None)), + Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("Foo #"), new ExpressionBlock( Factory.CodeTransition(), Factory.Code("item") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) ), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)) ) ); var expected = new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" var foo = bar; Html.ExecuteTemplate(foo, ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), testTemplateWithDoubleTransition, Factory.Code("); ").AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)); + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)); // Act & Assert ParseBlockTest("{ var foo = bar; Html.ExecuteTemplate(foo," + testTemplateWithDoubleTransitionCode + "); }", expected); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpToMarkupSwitchTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpToMarkupSwitchTest.cs index ec39c5faea..c1dbed5b11 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpToMarkupSwitchTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpToMarkupSwitchTest.cs @@ -13,11 +13,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("{ List< }", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" List< ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None))); + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None))); } [Fact] @@ -27,20 +27,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new ExpressionBlock( Factory.Code("Foo( ") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.Any), + .Accepts(AcceptedCharactersInternal.Any), new TemplateBlock( new MarkupBlock( Factory.MarkupTransition(), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)) ) ), Factory.Code(" )") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) ), designTime: true); } @@ -57,12 +57,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.MarkupTransition(), Factory.MetaMarkup(":", HtmlSymbolType.Colon), Factory.Markup("

Foo

" + Environment.NewLine) - .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None)) + .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None)) ) ), Factory.Code(")") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) ), designTime: true); } @@ -73,19 +73,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + "

Foo

" + Environment.NewLine + "}", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(Environment.NewLine + " ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), new MarkupBlock( new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)) ), Factory.Code(" " + Environment.NewLine).AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) ), designTime: true); } @@ -96,20 +96,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + " @

Foo

" + Environment.NewLine + "}", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(Environment.NewLine + " ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), new MarkupBlock( Factory.MarkupTransition(), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)) ), Factory.Code(" " + Environment.NewLine).AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) ), true, new RazorError( LegacyResources.ParseError_AtInCode_Must_Be_Followed_By_Colon_Paren_Or_Identifier_Start, @@ -124,7 +124,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + " @:

Foo

" + Environment.NewLine + "}", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(Environment.NewLine + " ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), @@ -132,10 +132,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.MarkupTransition(), Factory.MetaMarkup(":", HtmlSymbolType.Colon), Factory.Markup("

Foo

" + Environment.NewLine) - .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None)) + .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None)) ), Factory.EmptyCSharp().AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) ), designTime: true); } @@ -156,19 +156,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString)), new StatementBlock( Factory.CodeTransition(), - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.EmptyCSharp() .AsStatement() .AutoCompleteWith(autoCompleteString: null), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) ), Factory.Markup(Environment.NewLine) - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) ) ), Factory.Code(")") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) )); } @@ -189,27 +189,27 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.MarkupTransition(), Factory.MetaMarkup(":", HtmlSymbolType.Colon), Factory.Markup("Baz" + Environment.NewLine) - .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None)) + .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None)) ), new MarkupBlock( new MarkupTagBlock( - Factory.Markup("
").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("
").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), new MarkupBlock( new MarkupTagBlock( - Factory.Markup("
").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("Foo"), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)), new MarkupBlock( Factory.MarkupTransition(), Factory.MetaMarkup(":", HtmlSymbolType.Colon), Factory.Markup("Bar" + Environment.NewLine) - .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None)) + .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None)) ), - Factory.Code("}").AsStatement().Accepts(AcceptedCharacters.None) + Factory.Code("}").AsStatement().Accepts(AcceptedCharactersInternal.None) )); } @@ -232,23 +232,23 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), Factory.Markup($"{Environment.NewLine} Foo{Environment.NewLine}"), new ExpressionBlock( Factory.Code(" ").AsStatement(), Factory.CodeTransition(), - Factory.Code("bar").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace) + Factory.Code("bar").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace) ), Factory.Markup(Environment.NewLine + " "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), new MarkupBlock( Factory.Markup(" "), Factory.MarkupTransition(), Factory.MetaMarkup(":", HtmlSymbolType.Colon), - Factory.Markup("Hello!" + Environment.NewLine).With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None)) + Factory.Markup("Hello!" + Environment.NewLine).With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None)) ), Factory.Code($" var biz = boz;{Environment.NewLine}}}").AsStatement())); } @@ -262,33 +262,33 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(" ").Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None) ), Factory.Code("} else if(bar) {").AsStatement(), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(" ").Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None) ), Factory.Code("} else {").AsStatement(), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(" ").Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None) ), - Factory.Code("}").AsStatement().Accepts(AcceptedCharacters.None) + Factory.Code("}").AsStatement().Accepts(AcceptedCharactersInternal.None) )); } @@ -297,41 +297,41 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("{ if(foo) {

Bar

} else if(bar) {

Baz

} else {

Boz

} }", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" if(foo) {") .AsStatement() .AutoCompleteWith(autoCompleteString: null), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(" ").Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None) ), Factory.Code("} else if(bar) {").AsStatement(), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(" ").Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None) ), Factory.Code("} else {").AsStatement(), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(" ").Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None) ), Factory.Code("} ").AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None) + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None) )); } @@ -359,21 +359,21 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), Factory.Code($" break;{Environment.NewLine} case 1:{Environment.NewLine}").AsStatement(), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), Factory.Code( $" return;{Environment.NewLine} case 2:{Environment.NewLine}" + @@ -381,32 +381,32 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), Factory.Code($" }}{Environment.NewLine} default:{Environment.NewLine}").AsStatement(), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), - Factory.Code("}").AsStatement().Accepts(AcceptedCharacters.None))); + Factory.Code("}").AsStatement().Accepts(AcceptedCharactersInternal.None))); } [Fact] @@ -429,28 +429,28 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + "

Biz

" + Environment.NewLine + "} }", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code($" switch(foo) {{{Environment.NewLine} case 0:{Environment.NewLine}") .AsStatement() .AutoCompleteWith(autoCompleteString: null), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), Factory.Code($" break;{Environment.NewLine} case 1:{Environment.NewLine}").AsStatement(), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), Factory.Code( $" return;{Environment.NewLine} case 2:{Environment.NewLine}" + @@ -458,33 +458,33 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), Factory.Code($" }}{Environment.NewLine} default:{Environment.NewLine}").AsStatement(), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), Factory.Code("} ").AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None))); + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None))); } [Fact] @@ -496,13 +496,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(" ").Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None) ), - Factory.Code("}").AsStatement().Accepts(AcceptedCharacters.None) + Factory.Code("}").AsStatement().Accepts(AcceptedCharactersInternal.None) )); } @@ -511,21 +511,21 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("{ for(int i = 0; i < 10; i++) {

Foo

} }", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" for(int i = 0; i < 10; i++) {") .AsStatement() .AutoCompleteWith(autoCompleteString: null), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

").Accepts(AcceptedCharacters.None)), - Factory.Markup(" ").Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None) ), Factory.Code("} ").AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None))); + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None))); } [Fact] @@ -541,7 +541,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.MarkupTransition(), Factory.MetaMarkup(":", HtmlSymbolType.Colon), Factory.Markup("Bar" + Environment.NewLine) - .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None)) + .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None)) ), Factory.Code("}").AsStatement())); } @@ -559,7 +559,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.MarkupTransition(), Factory.MetaMarkup(":", HtmlSymbolType.Colon), Factory.Markup(":Sometext" + Environment.NewLine) - .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None)) + .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None)) ), Factory.Code("}").AsStatement())); } @@ -578,7 +578,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.MarkupTransition(), Factory.MetaMarkup(":", HtmlSymbolType.Colon), Factory.Markup("::Sometext" + Environment.NewLine) - .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None)) + .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None)) ), Factory.Code("}").AsStatement())); } @@ -590,7 +590,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("{ if(foo) { @:Bar" + Environment.NewLine + "} } zoop", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" if(foo) {") .AsStatement() .AutoCompleteWith(autoCompleteString: null), @@ -598,11 +598,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.Markup(" "), Factory.MarkupTransition(), Factory.MetaMarkup(":", HtmlSymbolType.Colon), - Factory.Markup("Bar" + Environment.NewLine).Accepts(AcceptedCharacters.None) - .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None)) + Factory.Markup("Bar" + Environment.NewLine).Accepts(AcceptedCharactersInternal.None) + .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None)) ), Factory.Code("} ").AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None))); + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None))); } [Fact(Skip = "Fails due to https://github.com/aspnet/Razor/issues/897")] @@ -613,10 +613,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.Code("if (i > 0) {").AsStatement(), new MarkupBlock( new MarkupTagBlock( - Factory.MarkupTransition("").Accepts(AcceptedCharacters.None)), - Factory.Markup(";").Accepts(AcceptedCharacters.None), + Factory.MarkupTransition("").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(";").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - Factory.MarkupTransition("").Accepts(AcceptedCharacters.None))), + Factory.MarkupTransition("").Accepts(AcceptedCharactersInternal.None))), Factory.Code(" }").AsStatement())); } @@ -625,18 +625,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("{ if (i > 0) { ; } }", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(" if (i > 0) {") .AsStatement() .AutoCompleteWith(autoCompleteString: null), new MarkupBlock( new MarkupTagBlock( - Factory.MarkupTransition("").Accepts(AcceptedCharacters.None)), - Factory.Markup(";").Accepts(AcceptedCharacters.None), + Factory.MarkupTransition("").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(";").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - Factory.MarkupTransition("").Accepts(AcceptedCharacters.None))), + Factory.MarkupTransition("").Accepts(AcceptedCharactersInternal.None))), Factory.Code(" } ").AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None))); + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None))); } [Fact(Skip = "Fails due to https://github.com/aspnet/Razor/issues/897")] @@ -654,7 +654,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + " }" + Environment.NewLine + "}", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code($"{Environment.NewLine} if(true) {{{Environment.NewLine}") .AsStatement() .AutoCompleteWith(autoCompleteString: null), @@ -663,31 +663,31 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.MarkupTransition(), Factory.MetaMarkup(":", HtmlSymbolType.Colon), Factory.Markup("Single Line Markup" + Environment.NewLine) - .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None)) + .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None)) ), Factory.Code($" }}{Environment.NewLine} foreach (var p in Enumerable.Range(1, 10)) {{{Environment.NewLine}").AsStatement(), new MarkupBlock( new MarkupTagBlock( - Factory.MarkupTransition("").Accepts(AcceptedCharacters.None)), - Factory.Markup("The number is ").Accepts(AcceptedCharacters.None), + Factory.MarkupTransition("").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup("The number is ").Accepts(AcceptedCharactersInternal.None), new ExpressionBlock( Factory.CodeTransition(), - Factory.Code("p").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace) + Factory.Code("p").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace) ), new MarkupTagBlock( - Factory.MarkupTransition("").Accepts(AcceptedCharacters.None))), + Factory.MarkupTransition("").Accepts(AcceptedCharactersInternal.None))), Factory.Code($"{Environment.NewLine} }}{Environment.NewLine} if(!false) {{{Environment.NewLine}").AsStatement(), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("A real tag!"), new MarkupTagBlock( - Factory.Markup("

").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None) + Factory.Markup("

").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None) ), Factory.Code(" }" + Environment.NewLine).AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None))); + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None))); } } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpVerbatimBlockTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpVerbatimBlockTest.cs index b8d0863e94..dde4e6e58c 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpVerbatimBlockTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpVerbatimBlockTest.cs @@ -17,12 +17,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new StatementBlock( Factory.CodeTransition(), Factory.MetaCode("{") - .Accepts(AcceptedCharacters.None), + .Accepts(AcceptedCharactersInternal.None), Factory.Code(" foo(); ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), Factory.MetaCode("}") - .Accepts(AcceptedCharacters.None) + .Accepts(AcceptedCharactersInternal.None) )); } @@ -31,16 +31,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("{@}", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.EmptyCSharp() .AsStatement() .AutoCompleteWith(autoCompleteString: null), new ExpressionBlock( Factory.CodeTransition(), - Factory.EmptyCSharp().AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharacters.NonWhiteSpace) + Factory.EmptyCSharp().AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharactersInternal.NonWhiteSpace) ), Factory.EmptyCSharp().AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), designTime: true, expectedErrors: new[] { @@ -56,16 +56,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("{@.}", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.EmptyCSharp() .AsStatement() .AutoCompleteWith(autoCompleteString: null), new ExpressionBlock( Factory.CodeTransition(), - Factory.EmptyCSharp().AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharacters.NonWhiteSpace) + Factory.EmptyCSharp().AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharactersInternal.NonWhiteSpace) ), Factory.Code(".").AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), designTime: true, expectedErrors: new[] { @@ -83,16 +83,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + " @" + Environment.NewLine + "}", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(Environment.NewLine + " ") .AsStatement() .AutoCompleteWith(autoCompleteString: null), new ExpressionBlock( Factory.CodeTransition(), - Factory.EmptyCSharp().AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharacters.NonWhiteSpace) + Factory.EmptyCSharp().AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharactersInternal.NonWhiteSpace) ), Factory.Code(Environment.NewLine).AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), /* designTimeParser */ true, new RazorError( LegacyResources.ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS, @@ -106,15 +106,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("{@foo." + Environment.NewLine + "}", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.EmptyCSharp() .AsStatement() .AutoCompleteWith(autoCompleteString: null), new ExpressionBlock( Factory.CodeTransition(), - Factory.Code("foo.").AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharacters.NonWhiteSpace)), + Factory.Code("foo.").AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharactersInternal.NonWhiteSpace)), Factory.Code(Environment.NewLine).AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None))); + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None))); } [Fact] @@ -123,15 +123,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("{@foo." + Environment.NewLine + "}", new StatementBlock( - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.EmptyCSharp() .AsStatement() .AutoCompleteWith(autoCompleteString: null), new ExpressionBlock( Factory.CodeTransition(), - Factory.Code("foo.").AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharacters.NonWhiteSpace)), + Factory.Code("foo.").AsImplicitExpression(KeywordSet, acceptTrailingDot: true).Accepts(AcceptedCharactersInternal.NonWhiteSpace)), Factory.Code(Environment.NewLine).AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), designTime: true); } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpWhitespaceHandlingTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpWhitespaceHandlingTest.cs index f83c8b0e3f..d33ad7d8c7 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpWhitespaceHandlingTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CSharpWhitespaceHandlingTest.cs @@ -15,20 +15,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy + "}", new MarkupBlock( Factory.MarkupTransition() - .Accepts(AcceptedCharacters.None), + .Accepts(AcceptedCharactersInternal.None), Factory.MetaMarkup(":", HtmlSymbolType.Colon), Factory.Markup(" ") .With(new SpanEditHandler( CSharpLanguageCharacteristics.Instance.TokenizeString, - AcceptedCharacters.Any)), + AcceptedCharactersInternal.Any)), new StatementBlock( Factory.CodeTransition() - .Accepts(AcceptedCharacters.None), + .Accepts(AcceptedCharactersInternal.None), Factory.Code("if (true) { }") .AsStatement() ), Factory.Markup(Environment.NewLine) - .Accepts(AcceptedCharacters.None))); + .Accepts(AcceptedCharactersInternal.None))); } } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CodeParserTestBase.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CodeParserTestBase.cs index d90cfe3574..8d04c156a0 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CodeParserTestBase.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/CodeParserTestBase.cs @@ -16,51 +16,51 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy internal void ImplicitExpressionTest(string input, params RazorError[] errors) { - ImplicitExpressionTest(input, AcceptedCharacters.NonWhiteSpace, errors); + ImplicitExpressionTest(input, AcceptedCharactersInternal.NonWhiteSpace, errors); } - internal void ImplicitExpressionTest(string input, AcceptedCharacters acceptedCharacters, params RazorError[] errors) + internal void ImplicitExpressionTest(string input, AcceptedCharactersInternal acceptedCharacters, params RazorError[] errors) { ImplicitExpressionTest(input, input, acceptedCharacters, errors); } internal void ImplicitExpressionTest(string input, string expected, params RazorError[] errors) { - ImplicitExpressionTest(input, expected, AcceptedCharacters.NonWhiteSpace, errors); + ImplicitExpressionTest(input, expected, AcceptedCharactersInternal.NonWhiteSpace, errors); } - internal override void SingleSpanBlockTest(string document, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters = AcceptedCharacters.Any) + internal override void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any) { SingleSpanBlockTest(document, blockKind, spanType, acceptedCharacters, expectedError: null); } - internal override void SingleSpanBlockTest(string document, string spanContent, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters = AcceptedCharacters.Any) + internal override void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any) { SingleSpanBlockTest(document, spanContent, blockKind, spanType, acceptedCharacters, expectedErrors: null); } - internal override void SingleSpanBlockTest(string document, BlockKind blockKind, SpanKind spanType, params RazorError[] expectedError) + internal override void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, params RazorError[] expectedError) { SingleSpanBlockTest(document, document, blockKind, spanType, expectedError); } - internal override void SingleSpanBlockTest(string document, string spanContent, BlockKind blockKind, SpanKind spanType, params RazorError[] expectedErrors) + internal override void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, params RazorError[] expectedErrors) { - SingleSpanBlockTest(document, spanContent, blockKind, spanType, AcceptedCharacters.Any, expectedErrors ?? new RazorError[0]); + SingleSpanBlockTest(document, spanContent, blockKind, spanType, AcceptedCharactersInternal.Any, expectedErrors ?? new RazorError[0]); } - internal override void SingleSpanBlockTest(string document, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters, params RazorError[] expectedError) + internal override void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorError[] expectedError) { SingleSpanBlockTest(document, document, blockKind, spanType, acceptedCharacters, expectedError); } - internal override void SingleSpanBlockTest(string document, string spanContent, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters, params RazorError[] expectedErrors) + internal override void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorError[] expectedErrors) { var b = CreateSimpleBlockAndSpan(spanContent, blockKind, spanType, acceptedCharacters); ParseBlockTest(document, b, expectedErrors ?? new RazorError[0]); } - internal void ImplicitExpressionTest(string input, string expected, AcceptedCharacters acceptedCharacters, params RazorError[] errors) + internal void ImplicitExpressionTest(string input, string expected, AcceptedCharactersInternal acceptedCharacters, params RazorError[] errors) { var factory = CreateSpanFactory(); ParseBlockTest(SyntaxConstants.TransitionString + input, diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlAttributeTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlAttributeTest.cs index 9558541edd..e074835fd1 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlAttributeTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlAttributeTest.cs @@ -85,7 +85,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, valueLocation2), value: new LocationTagged("Bar", valueLocation2))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Theory] @@ -147,7 +147,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, valueLocation2), value: new LocationTagged("Bar", valueLocation2))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Theory] @@ -175,7 +175,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, valueLocation, 0, valueLocation), value: new LocationTagged("Foo", valueLocation, 0, valueLocation))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -193,7 +193,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new LiteralAttributeChunkGenerator( prefix: new LocationTagged(string.Empty, 9, 0, 9), value: new LocationTagged("Foo", 9, 0, 9))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -213,7 +213,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new LiteralAttributeChunkGenerator( prefix: new LocationTagged(string.Empty, 16, 2, 1), value: new LocationTagged("Foo", 16, 2, 1))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -234,9 +234,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("Foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -252,7 +252,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.Markup(" Bar").With(new LiteralAttributeChunkGenerator(prefix: new LocationTagged(" ", 12, 0, 12), value: new LocationTagged("Bar", 13, 0, 13))), Factory.Markup(" Baz").With(new LiteralAttributeChunkGenerator(prefix: new LocationTagged(" ", 16, 0, 16), value: new LocationTagged("Baz", 17, 0, 17))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -268,7 +268,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.Markup(" Bar").With(new LiteralAttributeChunkGenerator(prefix: new LocationTagged(" ", 12, 0, 12), value: new LocationTagged("Bar", 13, 0, 13))), Factory.Markup(" Baz").With(new LiteralAttributeChunkGenerator(prefix: new LocationTagged(" ", 16, 0, 16), value: new LocationTagged("Baz", 17, 0, 17))), Factory.Markup("\"").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -289,7 +289,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, 10, 1, 6), value: new LocationTagged("Foo", 10, 1, 6))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -320,7 +320,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, 21, 2, 6), value: new LocationTagged("Bar", 21, 2, 6))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -341,7 +341,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, 12, 1, 6), value: new LocationTagged("Foo", 12, 1, 6))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -356,7 +356,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.Markup("Foo").With(new LiteralAttributeChunkGenerator(prefix: new LocationTagged(string.Empty, 8, 0, 8), value: new LocationTagged("Foo", 8, 0, 8)))), new MarkupBlock(Factory.Markup(" Bar")), new MarkupBlock(Factory.Markup(" Baz")), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -373,9 +373,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -392,7 +392,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), Factory.Markup(" bar").With(new LiteralAttributeChunkGenerator(new LocationTagged(" ", 13, 0, 13), new LocationTagged("bar", 14, 0, 14))), new MarkupBlock(new DynamicAttributeBlockChunkGenerator(new LocationTagged(" ", 17, 0, 17), 18, 0, 18), Factory.Markup(" ").With(SpanChunkGenerator.Null), @@ -400,9 +400,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("baz") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -419,13 +419,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), Factory.Markup(" ~/Foo/Bar") .With(new LiteralAttributeChunkGenerator( new LocationTagged(" ", 13, 0, 13), new LocationTagged("~/Foo/Bar", 14, 0, 14))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -442,8 +442,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)))), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)))), + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -460,7 +460,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)))), Factory.Markup(" />")))); } @@ -481,8 +481,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new AttributeBlockChunkGenerator("foo", new LocationTagged(" foo='", 5, 0, 5), new LocationTagged("'", 13, 0, 13)), Factory.Markup(" foo='").With(SpanChunkGenerator.Null), new MarkupBlock( - Factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 11, 0, 11), new LocationTagged("@", 11, 0, 11))).Accepts(AcceptedCharacters.None), - Factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)), + Factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 11, 0, 11), new LocationTagged("@", 11, 0, 11))).Accepts(AcceptedCharactersInternal.None), + Factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), Factory.Markup("'").With(SpanChunkGenerator.Null)), Factory.Markup(" />")))); } @@ -572,11 +572,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), Factory.Markup("'")), - Factory.Markup(">").Accepts(AcceptedCharacters.None)), + Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -592,11 +592,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), Factory.Markup("'")), - Factory.Markup(">").Accepts(AcceptedCharacters.None)), + Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -612,7 +612,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), Factory.Markup("'")), Factory.Markup(">")), new MarkupTagBlock( @@ -632,7 +632,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), Factory.Markup(" >")), new MarkupTagBlock( Factory.Markup("")))); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlBlockTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlBlockTest.cs index e6ebf158b4..f0cf332e1f 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlBlockTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlBlockTest.cs @@ -19,14 +19,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new StatementBlock( Factory.CodeTransition(), - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(Environment.NewLine).AsStatement().AutoCompleteWith(null), new MarkupBlock( Factory.Markup(" "), - Factory.Markup("").Accepts(AcceptedCharacters.None), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None), + Factory.Markup(Environment.NewLine).Accepts(AcceptedCharactersInternal.None)), Factory.EmptyCSharp().AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml()), new RazorError[0]); } @@ -40,7 +40,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new StatementBlock( Factory.CodeTransition(), - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(Environment.NewLine) .AsStatement() .AutoCompleteWith("}"), @@ -64,7 +64,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new StatementBlock( Factory.CodeTransition(), - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), Factory.Code(Environment.NewLine) .AsStatement() .AutoCompleteWith("}"), @@ -74,7 +74,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ), new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)) + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)) ), Factory.EmptyCSharp().AsStatement() ) @@ -114,14 +114,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("
  • Foo

  • ", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("
  • ").Accepts(AcceptedCharacters.None)), + Factory.Markup("
  • ").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("

    ").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

    ").Accepts(AcceptedCharacters.None)), + Factory.Markup("

    ").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("
  • ").Accepts(AcceptedCharacters.None)) + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)) )); } @@ -134,7 +134,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.MarkupTransition(), Factory.MetaMarkup(":", HtmlSymbolType.Colon), Factory.Markup("
  • Foo Bar Baz" + Environment.NewLine) - .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharacters.None)) + .With(new SpanEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString, AcceptedCharactersInternal.None)) )); } @@ -156,13 +156,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)) + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)) )); } @@ -172,17 +172,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)) + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)) )); } @@ -192,13 +192,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)) + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)) )); } @@ -208,7 +208,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)) + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)) )); } @@ -218,11 +218,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)) + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)) )); } @@ -237,19 +237,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.Markup(" bar=\"").With(SpanChunkGenerator.Null), Factory.Markup("baz").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 10, 0, 10), new LocationTagged("baz", 10, 0, 10))), Factory.Markup("\"").With(SpanChunkGenerator.Null)), - Factory.Markup(">").Accepts(AcceptedCharacters.None)), + Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( Factory.Markup("(" zoop=", 24, 0, 24), new LocationTagged(string.Empty, 34, 0, 34)), Factory.Markup(" zoop=").With(SpanChunkGenerator.Null), Factory.Markup("zork").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 30, 0, 30), new LocationTagged("zork", 30, 0, 30)))), - Factory.Markup("/>").Accepts(AcceptedCharacters.None)), + Factory.Markup("/>").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -258,16 +258,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("\" />", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( Factory.Markup("(" baz=\"", 9, 0, 9), new LocationTagged("\"", 16, 0, 16)), Factory.Markup(" baz=\"").With(SpanChunkGenerator.Null), Factory.Markup(">").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 15, 0, 15), new LocationTagged(">", 15, 0, 15))), Factory.Markup("\"").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)), + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -276,16 +276,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("\' />", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( Factory.Markup("(" baz='", 9, 0, 9), new LocationTagged("'", 16, 0, 16)), Factory.Markup(" baz='").With(SpanChunkGenerator.Null), Factory.Markup(">").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 15, 0, 15), new LocationTagged(">", 15, 0, 15))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)), + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -294,18 +294,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( Factory.Markup("(" baz=\"", 9, 0, 9), new LocationTagged("\"", 16, 0, 16)), Factory.Markup(" baz=\"").With(SpanChunkGenerator.Null), Factory.Markup("/").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 15, 0, 15), new LocationTagged("/", 15, 0, 15))), Factory.Markup("\"").With(SpanChunkGenerator.Null)), - Factory.Markup(">").Accepts(AcceptedCharacters.None)), + Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -314,18 +314,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( Factory.Markup("(" baz='", 9, 0, 9), new LocationTagged("'", 16, 0, 16)), Factory.Markup(" baz='").With(SpanChunkGenerator.Null), Factory.Markup("/").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 15, 0, 15), new LocationTagged("/", 15, 0, 15))), Factory.Markup("'").With(SpanChunkGenerator.Null)), - Factory.Markup(">").Accepts(AcceptedCharacters.None)), + Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -334,7 +334,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None))), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None))), new RazorError( LegacyResources.FormatParseError_MissingEndTag("foo"), new SourceLocation(1, 0, 1), @@ -344,7 +344,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy [Fact] public void ParseBlockSupportsCommentAsBlock() { - SingleSpanBlockTest("", BlockKind.Markup, SpanKind.Markup, acceptedCharacters: AcceptedCharacters.None); + SingleSpanBlockTest("", BlockKindInternal.Markup, SpanKindInternal.Markup, acceptedCharacters: AcceptedCharactersInternal.None); } [Fact] @@ -353,12 +353,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("barbaz", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("bar"), - Factory.Markup("").Accepts(AcceptedCharacters.None), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None), Factory.Markup("baz"), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } public static TheoryData HtmlCommentSupportsMultipleDashesData @@ -373,37 +373,37 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy "
    ", new MarkupBlock( new MarkupTagBlock( - factory.Markup("
    ").Accepts(AcceptedCharacters.None)), - factory.Markup("").Accepts(AcceptedCharacters.None), + factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None)), + factory.Markup("").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - factory.Markup("
    ").Accepts(AcceptedCharacters.None))) + factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None))) }, { "
    ", new MarkupBlock( new MarkupTagBlock( - factory.Markup("
    ").Accepts(AcceptedCharacters.None)), - factory.Markup("").Accepts(AcceptedCharacters.None), + factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None)), + factory.Markup("").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - factory.Markup("
    ").Accepts(AcceptedCharacters.None))) + factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None))) }, { "
    ", new MarkupBlock( new MarkupTagBlock( - factory.Markup("
    ").Accepts(AcceptedCharacters.None)), - factory.Markup("").Accepts(AcceptedCharacters.None), + factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None)), + factory.Markup("").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - factory.Markup("
    ").Accepts(AcceptedCharacters.None))) + factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None))) }, { "
    ", new MarkupBlock( new MarkupTagBlock( - factory.Markup("
    ").Accepts(AcceptedCharacters.None)), - factory.Markup("").Accepts(AcceptedCharacters.None), + factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None)), + factory.Markup("").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - factory.Markup("
    ").Accepts(AcceptedCharacters.None))) + factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None))) }, }; } @@ -421,19 +421,19 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy [Fact] public void ParseBlockProperlyBalancesCommentStartAndEndTags() { - SingleSpanBlockTest("", BlockKind.Markup, SpanKind.Markup, acceptedCharacters: AcceptedCharacters.None); + SingleSpanBlockTest("", BlockKindInternal.Markup, SpanKindInternal.Markup, acceptedCharacters: AcceptedCharactersInternal.None); } [Fact] public void ParseBlockTerminatesAtEOFWhenParsingComment() { - SingleSpanBlockTest("", BlockKind.Markup, SpanKind.Markup, acceptedCharacters: AcceptedCharacters.None); + SingleSpanBlockTest("", BlockKindInternal.Markup, SpanKindInternal.Markup, acceptedCharacters: AcceptedCharactersInternal.None); } [Fact] @@ -442,11 +442,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("-->", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), - Factory.Markup("").Accepts(AcceptedCharacters.None), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None), Factory.Markup("-->"), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -455,9 +455,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None))), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None))), new RazorError( LegacyResources.FormatParseError_MissingEndTag("foo"), new SourceLocation(1, 0, 1), @@ -471,10 +471,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), - Factory.Markup("").Accepts(AcceptedCharacters.None), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -483,11 +483,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest(" baz>", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), - Factory.Markup("").Accepts(AcceptedCharacters.None), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None), Factory.Markup(" baz>"), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -496,10 +496,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), - Factory.Markup("").Accepts(AcceptedCharacters.None), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -508,11 +508,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest(" baz", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), - Factory.Markup("").Accepts(AcceptedCharacters.None), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None), Factory.Markup(" baz"), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -521,10 +521,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest(" baz?>", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), - Factory.Markup(" baz?>").Accepts(AcceptedCharacters.None), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), + Factory.Markup(" baz?>").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -533,10 +533,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest(@"", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -545,10 +545,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest(@"", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -568,9 +568,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( new MarkupTagBlock( Factory.MarkupTransition("")), - Factory.Markup("Foo Bar ").Accepts(AcceptedCharacters.None), + Factory.Markup("Foo Bar ").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), Factory.Markup(" Baz"), new MarkupTagBlock( Factory.MarkupTransition("")))); @@ -584,13 +584,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupTagBlock( Factory.MarkupTransition("")), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("Foo Bar "), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), Factory.Markup(" Baz"), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( Factory.MarkupTransition("")))); } @@ -601,15 +601,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)) + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)) )); } @@ -632,14 +632,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("
    Foo @if(true) {} Bar
    ", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("
    ").Accepts(AcceptedCharacters.None)), + Factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("Foo "), new StatementBlock( Factory.CodeTransition(), Factory.Code("if(true) {}").AsStatement()), Factory.Markup(" Bar"), new MarkupTagBlock( - Factory.Markup("
    ").Accepts(AcceptedCharacters.None)))); + Factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -648,16 +648,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest(@"", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlDocumentTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlDocumentTest.cs index 00fe7ca003..d5d0df8678 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlDocumentTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/HtmlDocumentTest.cs @@ -25,16 +25,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.Code("if(false) {").AsStatement(), new MarkupBlock( Factory.Markup(" "), - BlockFactory.MarkupTagBlock("
    ", AcceptedCharacters.None), + BlockFactory.MarkupTagBlock("
    ", AcceptedCharactersInternal.None), Factory.EmptyHtml(), new ExpressionBlock( Factory.CodeTransition(), Factory.Code("something") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: false) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), Factory.Markup("."), - BlockFactory.MarkupTagBlock("
    ", AcceptedCharacters.None), - Factory.Markup(" ").Accepts(AcceptedCharacters.None)), + BlockFactory.MarkupTagBlock("
    ", AcceptedCharactersInternal.None), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)), Factory.Code("}").AsStatement()), Factory.Code(" }").AsStatement()))); } @@ -48,7 +48,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy [Fact] public void ParseDocumentOutputsWhitespaceOnlyContentAsSingleWhitespaceMarkupSpan() { - SingleSpanDocumentTest(" ", BlockKind.Markup, SpanKind.Markup); + SingleSpanDocumentTest(" ", BlockKindInternal.Markup, SpanKindInternal.Markup); } [Fact] @@ -61,7 +61,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.EmptyCSharp() .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), Factory.EmptyHtml()), new RazorError( LegacyResources.ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock, @@ -111,26 +111,26 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), new MarkupBlock( Factory.Markup(Environment.NewLine + " "), BlockFactory.MarkupTagBlock(""), BlockFactory.MarkupTagBlock(""), Factory.Markup(Environment.NewLine)), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } [Fact] public void ParseDocumentParsesWholeContentAsOneSpanIfNoSwapCharacterEncountered() { - SingleSpanDocumentTest("foo baz", BlockKind.Markup, SpanKind.Markup); + SingleSpanDocumentTest("foo baz", BlockKindInternal.Markup, SpanKindInternal.Markup); } [Fact] @@ -143,7 +143,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("bar") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), Factory.Markup(" baz"))); } @@ -157,7 +157,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.EmptyCSharp() .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), Factory.EmptyHtml()), new RazorError( LegacyResources.ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock, @@ -175,14 +175,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("bar") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), Factory.EmptyHtml())); } [Fact] public void ParseDocumentDoesNotSwitchToCodeOnEmailAddressInText() { - SingleSpanDocumentTest("anurse@microsoft.com", BlockKind.Markup, SpanKind.Markup); + SingleSpanDocumentTest("anurse@microsoft.com", BlockKindInternal.Markup, SpanKindInternal.Markup); } [Fact] @@ -218,7 +218,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy [Fact] public void ParseDocumentReturnsOneMarkupSegmentIfNoCodeBlocksEncountered() { - SingleSpanDocumentTest("Foo BazBarBar Bar", new MarkupBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None), - Factory.Markup(" ").Accepts(AcceptedCharacters.None))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None))); } [Fact] @@ -71,8 +71,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest(" foo", new MarkupBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None), - Factory.Markup(" ").Accepts(AcceptedCharacters.None))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None))); } [Fact] @@ -80,8 +80,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest(" foo", new MarkupBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None), - Factory.Markup(" ").Accepts(AcceptedCharacters.None))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None))); } [Fact] @@ -89,10 +89,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("

    Foo

    Bar", new MarkupBlock( - BlockFactory.MarkupTagBlock("

    ", AcceptedCharacters.None), + BlockFactory.MarkupTagBlock("

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

    ", AcceptedCharacters.None), - Factory.Markup(" ").Accepts(AcceptedCharacters.None))); + BlockFactory.MarkupTagBlock("

    ", AcceptedCharactersInternal.None), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None))); } [Fact] @@ -102,7 +102,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( new MarkupTagBlock( Factory.MarkupTransition("")), - Factory.Markup("Foo").Accepts(AcceptedCharacters.None), + Factory.Markup("Foo").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( Factory.MarkupTransition("")))); } @@ -112,8 +112,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest(" Bar", new MarkupBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None), - Factory.Markup(" ").Accepts(AcceptedCharacters.None))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None), + Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None))); } [Fact] @@ -172,7 +172,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("<" + tagName + ">foo", new MarkupBlock( - BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharacters.None))); + BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharactersInternal.None))); } [Theory] @@ -181,7 +181,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("<" + tagName + ">foo", new MarkupBlock( - BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharacters.None))); + BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharactersInternal.None))); } [Theory] @@ -190,9 +190,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("<" + tagName + "> foo", new MarkupBlock( - BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharacters.None), + BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharactersInternal.None), Factory.Markup(" "), - BlockFactory.MarkupTagBlock("", AcceptedCharacters.None))); + BlockFactory.MarkupTagBlock("", AcceptedCharactersInternal.None))); } [Theory] @@ -201,7 +201,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { ParseBlockTest("<" + tagName + ">", AcceptedCharacters.None), + BlockFactory.MarkupTagBlock("<" + tagName + ">", AcceptedCharactersInternal.None), BlockFactory.MarkupTagBlock("foo#@i

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

    ").Accepts(AcceptedCharacters.None)), + Factory.Markup("

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

    ").Accepts(AcceptedCharacters.None)))); + Factory.Markup("

    ").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -35,8 +35,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("bar") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -53,9 +53,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("baz") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), Factory.Markup("\"").With(SpanChunkGenerator.Null)), - Factory.Markup(" />").Accepts(AcceptedCharacters.None)))); + Factory.Markup(" />").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -64,25 +64,25 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("@bar@boz", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml(), new ExpressionBlock( Factory.CodeTransition(), Factory.Code("bar") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml(), new ExpressionBlock( Factory.CodeTransition(), Factory.Code("boz") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -99,9 +99,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("Bar") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), Factory.Markup(" Baz" + Environment.NewLine) - .Accepts(AcceptedCharacters.None))); + .Accepts(AcceptedCharactersInternal.None))); } [Fact] @@ -110,16 +110,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("").Accepts(AcceptedCharacters.None), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), + Factory.Markup(" -->").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -128,16 +128,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("").Accepts(AcceptedCharacters.None), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), + Factory.Markup(" baz>").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -146,16 +146,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("").Accepts(AcceptedCharacters.None), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), + Factory.Markup(" baz]]>").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -164,16 +164,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("").Accepts(AcceptedCharacters.None), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), + Factory.Markup(" baz?>").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -182,10 +182,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy ParseBlockTest("anurse@microsoft.com", new MarkupBlock( new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("anurse@microsoft.com"), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -200,10 +200,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy 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(AcceptedCharacters.None)), + Factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("Email me"), new MarkupTagBlock( - Factory.Markup("").Accepts(AcceptedCharacters.None)))); + Factory.Markup("").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -217,7 +217,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("
      ").Accepts(AcceptedCharacters.None)), + Factory.Markup("
        ").Accepts(AcceptedCharactersInternal.None)), Factory.Markup(Environment.NewLine), new StatementBlock( Factory.Code(" ").AsStatement(), @@ -226,20 +226,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("
      • ").Accepts(AcceptedCharacters.None)), + Factory.Markup("
      • ").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("Product: "), new ExpressionBlock( Factory.CodeTransition(), Factory.Code("p.Name") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), new MarkupTagBlock( - Factory.Markup("
      • ").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)), - Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharacters.None)), + 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(AcceptedCharacters.None)))); + Factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None)))); } [Fact] @@ -262,17 +262,17 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("
  • ").Accepts(AcceptedCharacters.None)), + Factory.Markup("
  • ").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("Product: "), new ExpressionBlock( Factory.CodeTransition(), Factory.Code("p.Name") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), new MarkupTagBlock( - Factory.Markup("
  • ").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)), - Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharacters.None)), + 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("")))); @@ -293,13 +293,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "foo", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + 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( @@ -312,22 +312,22 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("
  • ").Accepts(AcceptedCharacters.None)), + Factory.Markup("
  • ").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("Product: "), new ExpressionBlock( Factory.CodeTransition(), Factory.Code("p.Name") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), new MarkupTagBlock( - Factory.Markup("
  • ").Accepts(AcceptedCharacters.None)), - Factory.Markup(Environment.NewLine).Accepts(AcceptedCharacters.None)), - Factory.Code(" }" + Environment.NewLine).AsStatement().Accepts(AcceptedCharacters.None)), + 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(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } @@ -342,24 +342,24 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( - Factory.Markup("
      ").Accepts(AcceptedCharacters.None)), + 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(AcceptedCharacters.None)), + Factory.Markup("
      • ").Accepts(AcceptedCharactersInternal.None)), Factory.Markup("Product: "), new ExpressionBlock( Factory.CodeTransition(), - Factory.Code("p.Name").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), + Factory.Code("p.Name").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharactersInternal.NonWhiteSpace)), new MarkupTagBlock( - Factory.Markup("
      • ").Accepts(AcceptedCharacters.None))), - Factory.Code(Environment.NewLine + " }").AsStatement().Accepts(AcceptedCharacters.None)), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None))), + Factory.Code(Environment.NewLine + " }").AsStatement().Accepts(AcceptedCharactersInternal.None)), Factory.Markup(Environment.NewLine + " "), new MarkupTagBlock( - Factory.Markup("
      ").Accepts(AcceptedCharacters.None))), + Factory.Markup("
    ").Accepts(AcceptedCharactersInternal.None))), designTime: true); } @@ -379,13 +379,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy [Fact] public void ParseDocumentTreatsTwoAtSignsAsEscapeSequence() { - HtmlParserTestUtils.RunSingleAtEscapeTest(ParseDocumentTest, lastSpanAcceptedCharacters: AcceptedCharacters.Any); + HtmlParserTestUtils.RunSingleAtEscapeTest(ParseDocumentTest, lastSpanAcceptedCharacters: AcceptedCharactersInternal.Any); } [Fact] public void ParseDocumentTreatsPairsOfAtSignsAsEscapeSequence() { - HtmlParserTestUtils.RunMultiAtEscapeTest(ParseDocumentTest, lastSpanAcceptedCharacters: AcceptedCharacters.Any); + HtmlParserTestUtils.RunMultiAtEscapeTest(ParseDocumentTest, lastSpanAcceptedCharacters: AcceptedCharactersInternal.Any); } [Fact] @@ -396,13 +396,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( @@ -412,7 +412,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupTagBlock( Factory.Markup("")), Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } @@ -424,13 +424,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.EmptyHtml(), new DirectiveBlock(new DirectiveChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor), 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) + Factory.MetaCode("section").Accepts(AcceptedCharactersInternal.None), + Factory.Span(SpanKindInternal.Code, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.WhiteSpace), + Factory.Span(SpanKindInternal.Code, "Foo", CSharpSymbolType.Identifier) + .Accepts(AcceptedCharactersInternal.NonWhiteSpace) .With(new DirectiveTokenChunkGenerator(CSharpCodeParser.SectionDirectiveDescriptor.Tokens.First())), - Factory.Span(SpanKind.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharacters.AllWhiteSpace), - Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharacters.None), + Factory.Span(SpanKindInternal.Markup, " ", CSharpSymbolType.WhiteSpace).Accepts(AcceptedCharactersInternal.AllWhiteSpace), + Factory.MetaCode("{").AutoCompleteWith(null, atEndOfSpan: true).Accepts(AcceptedCharactersInternal.None), new MarkupBlock( Factory.Markup(" "), new MarkupTagBlock( @@ -443,11 +443,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.CodeTransition(), Factory.Code("bar") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), new MarkupTagBlock( Factory.Markup("")), Factory.Markup(" ")), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml())); } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/MarkupParserTestBase.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/MarkupParserTestBase.cs index 6296911831..b4a0d1c00b 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/MarkupParserTestBase.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/MarkupParserTestBase.cs @@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return ParseHtmlBlock(document, designTime); } - internal virtual void SingleSpanDocumentTest(string document, BlockKind blockKind, SpanKind spanType) + internal virtual void SingleSpanDocumentTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType) { var b = CreateSimpleBlockAndSpan(document, blockKind, spanType); ParseDocumentTest(document, b); diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/ParserTestBase.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/ParserTestBase.cs index 0fcc36b259..92b29759a8 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/ParserTestBase.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/ParserTestBase.cs @@ -190,38 +190,38 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy } } - internal virtual void SingleSpanBlockTest(string document, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters = AcceptedCharacters.Any) + internal virtual void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any) { SingleSpanBlockTest(document, blockKind, spanType, acceptedCharacters, expectedError: null); } - internal virtual void SingleSpanBlockTest(string document, string spanContent, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters = AcceptedCharacters.Any) + internal virtual void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any) { SingleSpanBlockTest(document, spanContent, blockKind, spanType, acceptedCharacters, expectedErrors: null); } - internal virtual void SingleSpanBlockTest(string document, BlockKind blockKind, SpanKind spanType, params RazorError[] expectedError) + internal virtual void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, params RazorError[] expectedError) { SingleSpanBlockTest(document, document, blockKind, spanType, expectedError); } - internal virtual void SingleSpanBlockTest(string document, string spanContent, BlockKind blockKind, SpanKind spanType, params RazorError[] expectedErrors) + internal virtual void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, params RazorError[] expectedErrors) { - SingleSpanBlockTest(document, spanContent, blockKind, spanType, AcceptedCharacters.Any, expectedErrors ?? new RazorError[0]); + SingleSpanBlockTest(document, spanContent, blockKind, spanType, AcceptedCharactersInternal.Any, expectedErrors ?? new RazorError[0]); } - internal virtual void SingleSpanBlockTest(string document, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters, params RazorError[] expectedError) + internal virtual void SingleSpanBlockTest(string document, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorError[] expectedError) { SingleSpanBlockTest(document, document, blockKind, spanType, acceptedCharacters, expectedError); } - internal virtual void SingleSpanBlockTest(string document, string spanContent, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters, params RazorError[] expectedErrors) + internal virtual void SingleSpanBlockTest(string document, string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters, params RazorError[] expectedErrors) { var result = ParseBlock(document, designTime: false); var builder = new BlockBuilder(); builder.Type = blockKind; - var expected = ConfigureAndAddSpanToBlock(builder, Factory.Span(spanType, spanContent, spanType == SpanKind.Markup).Accepts(acceptedCharacters)); + var expected = ConfigureAndAddSpanToBlock(builder, Factory.Span(spanType, spanContent, spanType == SpanKindInternal.Markup).Accepts(acceptedCharacters)); if (FixupSpans) { @@ -552,9 +552,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Trace.WriteLine(string.Format(format, args)); } - internal virtual Block CreateSimpleBlockAndSpan(string spanContent, BlockKind blockKind, SpanKind spanType, AcceptedCharacters acceptedCharacters = AcceptedCharacters.Any) + internal virtual Block CreateSimpleBlockAndSpan(string spanContent, BlockKindInternal blockKind, SpanKindInternal spanType, AcceptedCharactersInternal acceptedCharacters = AcceptedCharactersInternal.Any) { - var span = Factory.Span(spanType, spanContent, spanType == SpanKind.Markup).Accepts(acceptedCharacters); + var span = Factory.Span(spanType, spanContent, spanType == SpanKindInternal.Markup).Accepts(acceptedCharacters); var b = new BlockBuilder() { Type = blockKind @@ -566,13 +566,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { switch (block.Type) { - case BlockKind.Markup: + case BlockKindInternal.Markup: span.With(new MarkupChunkGenerator()); break; - case BlockKind.Statement: + case BlockKindInternal.Statement: span.With(new StatementChunkGenerator()); break; - case BlockKind.Expression: + case BlockKindInternal.Expression: block.ChunkGenerator = new ExpressionChunkGenerator(); span.With(new ExpressionChunkGenerator()); break; @@ -583,7 +583,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy private class IgnoreOutputBlock : Block { - public IgnoreOutputBlock() : base(BlockKind.Template, new SyntaxTreeNode[0], null) { } + public IgnoreOutputBlock() : base(BlockKindInternal.Template, new SyntaxTreeNode[0], null) { } } // Corrects the parents and previous/next information for spans diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/RazorEditorParserTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/RazorEditorParserTest.cs deleted file mode 100644 index 75fd55b0eb..0000000000 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/RazorEditorParserTest.cs +++ /dev/null @@ -1,1452 +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; -using System.Collections.Generic; -using System.Threading; -using Microsoft.AspNetCore.Testing; -using Xunit; - -#pragma warning disable CS0612 // Type or member is obsolete -namespace Microsoft.AspNetCore.Razor.Language.Legacy -{ - public class RazorEditorParserTest - { - private static readonly TestFile SimpleCSHTMLDocument = TestFile.Create("TestFiles/DesignTime/Simple.cshtml", typeof(RazorEditorParserTest)); - private static readonly TestFile SimpleCSHTMLDocumentGenerated = TestFile.Create("TestFiles/DesignTime/Simple.txt", typeof(RazorEditorParserTest)); - private const string TestLinePragmaFileName = "C:\\This\\Path\\Is\\Just\\For\\Line\\Pragmas.cshtml"; - - public static TheoryData TagHelperPartialParseRejectData - { - get - { - // change, (Block)expectedDocument - return new TheoryData - { - { - CreateInsertionChange("

    ", 2, " "), - new MarkupBlock( - new MarkupTagHelperBlock("p")) - }, - { - CreateInsertionChange("

    ", 6, " "), - new MarkupBlock( - new MarkupTagHelperBlock("p")) - }, - { - CreateInsertionChange("

    ", 12, " "), - new MarkupBlock( - new MarkupTagHelperBlock( - "p", - attributes: new List - { - new TagHelperAttributeNode( - "some-attr", - value: null, - valueStyle: HtmlAttributeValueStyle.Minimized) - })) - }, - { - CreateInsertionChange("

    ", 12, "ibute"), - new MarkupBlock( - new MarkupTagHelperBlock( - "p", - attributes: new List - { - new TagHelperAttributeNode( - "some-attribute", - value: null, - valueStyle: HtmlAttributeValueStyle.Minimized) - })) - }, - { - CreateInsertionChange("

    ", 2, " before"), - new MarkupBlock( - new MarkupTagHelperBlock( - "p", - attributes: new List - { - new TagHelperAttributeNode( - "before", - value: null, - valueStyle: HtmlAttributeValueStyle.Minimized), - new TagHelperAttributeNode( - "some-attr", - value: null, - valueStyle: HtmlAttributeValueStyle.Minimized) - })) - }, - }; - } - } - - [Theory] - [MemberData(nameof(TagHelperPartialParseRejectData))] - public void TagHelperTagBodiesRejectPartialChanges(TextChange change, object expectedDocument) - { - // Arrange - var descriptors = new[] - { - TagHelperDescriptorBuilder.Create("PTagHelper", "TestAssembly") - .TagMatchingRule(rule => rule.RequireTagName("p")) - .Build() - }; - - var parser = new RazorEditorParser(CreateTemplateEngine(@"C:\This\Is\A\Test\Path"), @"C:\This\Is\A\Test\Path"); - - using (var manager = new TestParserManager(parser)) - { - manager.InitializeWithDocument(change.OldBuffer); - - // Act - var result = manager.CheckForStructureChangesAndWait(change); - - // Assert - Assert.Equal(PartialParseResult.Rejected, result); - Assert.Equal(2, manager.ParseCount); - } - } - - public static TheoryData TagHelperAttributeAcceptData - { - get - { - var factory = new SpanFactory(); - - // change, (Block)expectedDocument, partialParseResult - return new TheoryData - { - { - CreateInsertionChange("

    ", 22, "."), - new MarkupBlock( - new MarkupTagHelperBlock( - "p", - attributes: new List - { - new TagHelperAttributeNode( - "str-attr", - new MarkupBlock( - new MarkupBlock( - new ExpressionBlock( - factory.CodeTransition(), - factory - .Code("DateTime.") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)))), - HtmlAttributeValueStyle.SingleQuotes) - })), - PartialParseResult.Accepted | PartialParseResult.Provisional - }, - { - CreateInsertionChange("

    ", 21, "."), - new MarkupBlock( - new MarkupTagHelperBlock( - "p", - attributes: new List - { - new TagHelperAttributeNode( - "obj-attr", - factory.CodeMarkup("DateTime."), - HtmlAttributeValueStyle.SingleQuotes) - })), - PartialParseResult.Accepted - }, - { - CreateInsertionChange("

    ", 25, "."), - new MarkupBlock( - new MarkupTagHelperBlock( - "p", - attributes: new List - { - new TagHelperAttributeNode( - "obj-attr", - factory.CodeMarkup("1 + DateTime."), - HtmlAttributeValueStyle.SingleQuotes) - })), - PartialParseResult.Accepted - }, - { - CreateInsertionChange("

    ", 34, "."), - new MarkupBlock( - new MarkupTagHelperBlock( - "p", - attributes: new List - { - new TagHelperAttributeNode( - "before-attr", - value: null, - valueStyle: HtmlAttributeValueStyle.Minimized), - new TagHelperAttributeNode( - "str-attr", - new MarkupBlock( - new MarkupBlock( - new ExpressionBlock( - factory.CodeTransition(), - factory - .Code("DateTime.") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)))), - HtmlAttributeValueStyle.SingleQuotes), - new TagHelperAttributeNode( - "after-attr", - value: null, - valueStyle: HtmlAttributeValueStyle.Minimized), - })), - PartialParseResult.Accepted | PartialParseResult.Provisional - }, - { - CreateInsertionChange("

    ", 29, "."), - new MarkupBlock( - new MarkupTagHelperBlock( - "p", - attributes: new List - { - new TagHelperAttributeNode( - "str-attr", - new MarkupBlock( - factory.Markup("before"), - new MarkupBlock( - factory.Markup(" "), - new ExpressionBlock( - factory.CodeTransition(), - factory - .Code("DateTime.") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), - factory.Markup(" after")), - HtmlAttributeValueStyle.SingleQuotes) - })), - PartialParseResult.Accepted | PartialParseResult.Provisional - }, - }; - } - } - - [Theory] - [MemberData(nameof(TagHelperAttributeAcceptData))] - public void TagHelperAttributesAreLocatedAndAcceptChangesCorrectly( - TextChange change, - object expectedDocument, - PartialParseResult partialParseResult) - { - // Arrange - var descriptors = new[] - { - TagHelperDescriptorBuilder.Create("PTagHelper", "Test") - .TagMatchingRule(rule => rule.RequireTagName("p")) - .BindAttribute(attribute => attribute - .Name("obj-attr") - .TypeName(typeof(object).FullName) - .PropertyName("ObjectAttribute")) - .BindAttribute(attribute => attribute - .Name("str-attr") - .TypeName(typeof(string).FullName) - .PropertyName("StringAttribute")) - .Build() - }; - - var parser = new RazorEditorParser(CreateTemplateEngine(@"C:\This\Is\A\Test\Path", descriptors), @"C:\This\Is\A\Test\Path"); - - using (var manager = new TestParserManager(parser)) - { - manager.InitializeWithDocument(change.OldBuffer); - - // Act - var result = manager.CheckForStructureChangesAndWait(change); - - // Assert - Assert.Equal(partialParseResult, result); - Assert.Equal(1, manager.ParseCount); - } - } - - [Fact] - public void ConstructorRequiresNonNullPhysicalPath() - { - Assert.Throws("sourceFileName", () => new RazorEditorParser(CreateTemplateEngine(), null)); - } - - [Fact] - public void ConstructorRequiresNonEmptyPhysicalPath() - { - Assert.Throws("sourceFileName", () => new RazorEditorParser(CreateTemplateEngine(), string.Empty)); - } - - [Theory] - [InlineData(" ")] - [InlineData("\r\n")] - [InlineData("abcdefg")] - [InlineData("\f\r\n abcd \t")] - public void TreesAreDifferentReturnsFalseForAddedContent(string content) - { - // Arrange - var factory = new SpanFactory(); - var blockFactory = new BlockFactory(factory); - var original = new MarkupBlock( - blockFactory.MarkupTagBlock("

    "), - blockFactory.TagHelperBlock( - tagName: "div", - tagMode: TagMode.StartTagAndEndTag, - start: new SourceLocation(3, 0, 3), - startTag: blockFactory.MarkupTagBlock("

    "), - children: new SyntaxTreeNode[] - { - factory.Markup($"{Environment.NewLine}{Environment.NewLine}") - }, - endTag: blockFactory.MarkupTagBlock("
    ")), - blockFactory.MarkupTagBlock("

    ")); - - factory.Reset(); - - var modified = new MarkupBlock( - blockFactory.MarkupTagBlock("

    "), - blockFactory.TagHelperBlock( - tagName: "div", - tagMode: TagMode.StartTagAndEndTag, - start: new SourceLocation(3, 0, 3), - startTag: blockFactory.MarkupTagBlock("

    "), - children: new SyntaxTreeNode[] - { - factory.Markup($"{Environment.NewLine}{content}{Environment.NewLine}") - }, - endTag: blockFactory.MarkupTagBlock("
    ")), - blockFactory.MarkupTagBlock("

    ")); - original.LinkNodes(); - modified.LinkNodes(); - - var oldBuffer = new StringTextBuffer($"

    {Environment.NewLine}{Environment.NewLine}

    "); - var newBuffer = new StringTextBuffer( - $"

    {Environment.NewLine}{content}{Environment.NewLine}

    "); - - // Act - var treesAreDifferent = BackgroundParser.TreesAreDifferent( - original, - modified, - new[] - { - new TextChange( - position: 8 + Environment.NewLine.Length, - oldLength: 0, - oldBuffer: oldBuffer, - newLength: content.Length, - newBuffer: newBuffer) - }); - - // Assert - Assert.False(treesAreDifferent); - } - - [Fact] - public void TreesAreDifferentReturnsTrueIfTreeStructureIsDifferent() - { - var factory = new SpanFactory(); - var original = new MarkupBlock( - factory.Markup("

    "), - new ExpressionBlock( - factory.CodeTransition()), - factory.Markup("

    ")); - var modified = new MarkupBlock( - factory.Markup("

    "), - new ExpressionBlock( - factory.CodeTransition("@"), - factory.Code("f") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: false)), - factory.Markup("

    ")); - var oldBuffer = new StringTextBuffer("

    @

    "); - var newBuffer = new StringTextBuffer("

    @f

    "); - Assert.True(BackgroundParser.TreesAreDifferent( - original, - modified, - new[] - { - new TextChange(position: 4, oldLength: 0, oldBuffer: oldBuffer, newLength: 1, newBuffer: newBuffer) - })); - } - - [Fact] - public void TreesAreDifferentReturnsFalseIfTreeStructureIsSame() - { - var factory = new SpanFactory(); - var original = new MarkupBlock( - factory.Markup("

    "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("f") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: false)), - factory.Markup("

    ")); - factory.Reset(); - var modified = new MarkupBlock( - factory.Markup("

    "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("foo") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: false)), - factory.Markup("

    ")); - original.LinkNodes(); - modified.LinkNodes(); - var oldBuffer = new StringTextBuffer("

    @f

    "); - var newBuffer = new StringTextBuffer("

    @foo

    "); - Assert.False(BackgroundParser.TreesAreDifferent( - original, - modified, - new[] - { - new TextChange(position: 5, oldLength: 0, oldBuffer: oldBuffer, newLength: 2, newBuffer: newBuffer) - })); - } - - [Fact] - [ReplaceCulture] - public void CheckForStructureChangesStartsReparseAndFiresDocumentParseCompletedEventIfNoAdditionalChangesQueued() - { - // Arrange - using (var parser = new RazorEditorParser(CreateTemplateEngine(), TestLinePragmaFileName)) - { - var input = new StringTextBuffer(SimpleCSHTMLDocument.ReadAllText()); - - DocumentParseCompleteEventArgs capturedArgs = null; - var parseComplete = new ManualResetEventSlim(false); - - parser.DocumentParseComplete += (sender, args) => - { - capturedArgs = args; - parseComplete.Set(); - }; - - // Act - parser.CheckForStructureChanges(new TextChange(0, 0, new StringTextBuffer(string.Empty), input.Length, input)); - - // Assert - MiscUtils.DoWithTimeoutIfNotDebugging(parseComplete.Wait); - - Assert.Equal( - SimpleCSHTMLDocumentGenerated.ReadAllText().Replace("\r\n", "\n"), - capturedArgs.GeneratorResults.GetCSharpDocument().GeneratedCode.Replace("\r\n", "\n")); - } - } - - [Fact] - public void CheckForStructureChangesStartsFullReparseIfChangeOverlapsMultipleSpans() - { - // Arrange - using (var parser = new RazorEditorParser(CreateTemplateEngine(), TestLinePragmaFileName)) - { - var original = new StringTextBuffer("Foo @bar Baz"); - var changed = new StringTextBuffer("Foo @bap Daz"); - var change = new TextChange(7, 3, original, 3, changed); - - var parseComplete = new ManualResetEventSlim(); - var parseCount = 0; - parser.DocumentParseComplete += (sender, args) => - { - Interlocked.Increment(ref parseCount); - parseComplete.Set(); - }; - - Assert.Equal(PartialParseResult.Rejected, parser.CheckForStructureChanges(new TextChange(0, 0, new StringTextBuffer(string.Empty), 12, original))); - MiscUtils.DoWithTimeoutIfNotDebugging(parseComplete.Wait); // Wait for the parse to finish - parseComplete.Reset(); - - // Act - var result = parser.CheckForStructureChanges(change); - - // Assert - Assert.Equal(PartialParseResult.Rejected, result); - MiscUtils.DoWithTimeoutIfNotDebugging(parseComplete.Wait); - Assert.Equal(2, parseCount); - } - } - - [Fact] - public void AwaitPeriodInsertionAcceptedProvisionally() - { - // Arrange - var factory = new SpanFactory(); - var changed = new StringTextBuffer("foo @await Html. baz"); - var old = new StringTextBuffer("foo @await Html baz"); - - // Act and Assert - RunPartialParseTest(new TextChange(15, 0, old, 1, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("await Html.").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.WhiteSpace | AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz")), additionalFlags: PartialParseResult.Provisional); - } - - [Fact] - public void ImplicitExpressionAcceptsInnerInsertionsInStatementBlock() - { - // Arrange - var factory = new SpanFactory(); - var changed = new StringTextBuffer("@{" + Environment.NewLine - + " @DateTime..Now" + Environment.NewLine - + "}"); - var old = new StringTextBuffer("@{" + Environment.NewLine - + " @DateTime.Now" + Environment.NewLine - + "}"); - - // Act and Assert - RunPartialParseTest(new TextChange(17, 0, old, 1, changed), - new MarkupBlock( - factory.EmptyHtml(), - new StatementBlock( - factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), - factory.Code(Environment.NewLine + " ") - .AsStatement() - .AutoCompleteWith(autoCompleteString: null), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("DateTime..Now") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Code(Environment.NewLine).AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), - factory.EmptyHtml())); - } - - [Fact] - public void ImplicitExpressionAcceptsInnerInsertions() - { - // Arrange - var factory = new SpanFactory(); - var changed = new StringTextBuffer("foo @DateTime..Now baz"); - var old = new StringTextBuffer("foo @DateTime.Now baz"); - - // Act and Assert - RunPartialParseTest(new TextChange(13, 0, old, 1, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("DateTime..Now").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz")), additionalFlags: PartialParseResult.Provisional); - } - - [Fact] - public void ImplicitExpressionAcceptsWholeIdentifierReplacement() - { - // Arrange - var factory = new SpanFactory(); - var old = new StringTextBuffer("foo @date baz"); - var changed = new StringTextBuffer("foo @DateTime baz"); - - // Act and Assert - RunPartialParseTest(new TextChange(5, 4, old, 8, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("DateTime").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz"))); - } - - [Fact] - public void ImplicitExpressionRejectsWholeIdentifierReplacementToKeyword() - { - // Arrange - var parser = new RazorEditorParser(CreateTemplateEngine(@"C:\This\Is\A\Test\Path"), @"C:\This\Is\A\Test\Path"); - - using (var manager = new TestParserManager(parser)) - { - var old = new StringTextBuffer("foo @date baz"); - var changed = new StringTextBuffer("foo @if baz"); - var textChange = new TextChange(5, 4, old, 2, changed); - manager.InitializeWithDocument(old); - - // Act - var result = manager.CheckForStructureChangesAndWait(textChange); - - // Assert - Assert.Equal(PartialParseResult.Rejected, result); - Assert.Equal(2, manager.ParseCount); - } - } - - [Fact] - public void ImplicitExpressionRejectsWholeIdentifierReplacementToDirective() - { - // Arrange - var parser = new RazorEditorParser(CreateTemplateEngine(@"C:\This\Is\A\Test\Path"), @"C:\This\Is\A\Test\Path"); - - using (var manager = new TestParserManager(parser)) - { - var old = new StringTextBuffer("foo @date baz"); - var changed = new StringTextBuffer("foo @inherits baz"); - var textChange = new TextChange(5, 4, old, 8, changed); - manager.InitializeWithDocument(old); - - // Act - var result = manager.CheckForStructureChangesAndWait(textChange); - - // Assert - Assert.Equal(PartialParseResult.Rejected | PartialParseResult.SpanContextChanged, result); - Assert.Equal(2, manager.ParseCount); - } - } - - [Fact] - public void ImplicitExpressionAcceptsPrefixIdentifierReplacements_SingleSymbol() - { - // Arrange - var factory = new SpanFactory(); - var old = new StringTextBuffer("foo @dTime baz"); - var changed = new StringTextBuffer("foo @DateTime baz"); - - // Act and Assert - RunPartialParseTest(new TextChange(5, 1, old, 4, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("DateTime").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz"))); - } - - [Fact] - public void ImplicitExpressionAcceptsPrefixIdentifierReplacements_MultipleSymbols() - { - // Arrange - var factory = new SpanFactory(); - var old = new StringTextBuffer("foo @dTime.Now baz"); - var changed = new StringTextBuffer("foo @DateTime.Now baz"); - - // Act and Assert - RunPartialParseTest(new TextChange(5, 1, old, 4, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("DateTime.Now").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz"))); - } - - [Fact] - public void ImplicitExpressionAcceptsSuffixIdentifierReplacements_SingleSymbol() - { - // Arrange - var factory = new SpanFactory(); - var old = new StringTextBuffer("foo @Datet baz"); - var changed = new StringTextBuffer("foo @DateTime baz"); - - // Act and Assert - RunPartialParseTest(new TextChange(9, 1, old, 4, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("DateTime").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz"))); - } - - [Fact] - public void ImplicitExpressionAcceptsSuffixIdentifierReplacements_MultipleSymbols() - { - // Arrange - var factory = new SpanFactory(); - var old = new StringTextBuffer("foo @DateTime.n baz"); - var changed = new StringTextBuffer("foo @DateTime.Now baz"); - - // Act and Assert - RunPartialParseTest(new TextChange(14, 1, old, 3, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("DateTime.Now").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz"))); - } - - [Fact] - public void ImplicitExpressionAcceptsSurroundedIdentifierReplacements() - { - // Arrange - var factory = new SpanFactory(); - var old = new StringTextBuffer("foo @DateTime.n.ToString() baz"); - var changed = new StringTextBuffer("foo @DateTime.Now.ToString() baz"); - - // Act and Assert - RunPartialParseTest(new TextChange(14, 1, old, 3, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("DateTime.Now.ToString()").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz"))); - } - - [Fact] - public void ImplicitExpressionAcceptsDotlessCommitInsertionsInStatementBlockAfterIdentifiers() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("@{" + Environment.NewLine - + " @DateTime." + Environment.NewLine - + "}"); - var old = new StringTextBuffer("@{" + Environment.NewLine - + " @DateTime" + Environment.NewLine - + "}"); - - var textChange = new TextChange(15 + Environment.NewLine.Length, 0, old, 1, changed); - using (var manager = CreateParserManager()) - { - Action applyAndVerifyPartialChange = (changeToApply, expectedResult, expectedCode) => - { - var result = manager.CheckForStructureChangesAndWait(textChange); - - // Assert - Assert.Equal(expectedResult, result); - Assert.Equal(1, manager.ParseCount); - ParserTestBase.EvaluateParseTree(manager.Parser.CurrentSyntaxTree.Root, new MarkupBlock( - factory.EmptyHtml(), - new StatementBlock( - factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), - factory.Code(Environment.NewLine + " ") - .AsStatement() - .AutoCompleteWith(autoCompleteString: null), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code(expectedCode) - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Code(Environment.NewLine).AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), - factory.EmptyHtml())); - }; - - manager.InitializeWithDocument(textChange.OldBuffer); - - // This is the process of a dotless commit when doing "." insertions to commit intellisense changes. - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted, "DateTime."); - - old = changed; - changed = new StringTextBuffer("@{" + Environment.NewLine - + " @DateTime.." + Environment.NewLine - + "}"); - textChange = new TextChange(16 + Environment.NewLine.Length, 0, old, 1, changed); - - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted, "DateTime.."); - - old = changed; - changed = new StringTextBuffer("@{" + Environment.NewLine - + " @DateTime.Now." + Environment.NewLine - + "}"); - textChange = new TextChange(16 + Environment.NewLine.Length, 0, old, 3, changed); - - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted, "DateTime.Now."); - } - } - - [Fact] - public void ImplicitExpressionAcceptsDotlessCommitInsertionsInStatementBlock() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("@{" + Environment.NewLine - + " @DateT." + Environment.NewLine - + "}"); - var old = new StringTextBuffer("@{" + Environment.NewLine - + " @DateT" + Environment.NewLine - + "}"); - - var textChange = new TextChange(12 + Environment.NewLine.Length, 0, old, 1, changed); - using (var manager = CreateParserManager()) - { - Action applyAndVerifyPartialChange = (changeToApply, expectedResult, expectedCode) => - { - var result = manager.CheckForStructureChangesAndWait(textChange); - - // Assert - Assert.Equal(expectedResult, result); - Assert.Equal(1, manager.ParseCount); - ParserTestBase.EvaluateParseTree(manager.Parser.CurrentSyntaxTree.Root, new MarkupBlock( - factory.EmptyHtml(), - new StatementBlock( - factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), - factory.Code(Environment.NewLine + " ") - .AsStatement() - .AutoCompleteWith(autoCompleteString: null), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code(expectedCode) - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Code(Environment.NewLine).AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), - factory.EmptyHtml())); - }; - - manager.InitializeWithDocument(textChange.OldBuffer); - - // This is the process of a dotless commit when doing "." insertions to commit intellisense changes. - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted, "DateT."); - - old = changed; - changed = new StringTextBuffer("@{" + Environment.NewLine - + " @DateTime." + Environment.NewLine - + "}"); - textChange = new TextChange(12 + Environment.NewLine.Length, 0, old, 3, changed); - - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted, "DateTime."); - } - } - - [Fact] - public void ImplicitExpressionProvisionallyAcceptsDotlessCommitInsertions() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("foo @DateT. baz"); - var old = new StringTextBuffer("foo @DateT baz"); - var textChange = new TextChange(10, 0, old, 1, changed); - using (var manager = CreateParserManager()) - { - Action applyAndVerifyPartialChange = (changeToApply, expectedResult, expectedCode) => - { - var result = manager.CheckForStructureChangesAndWait(textChange); - - // Assert - Assert.Equal(expectedResult, result); - Assert.Equal(1, manager.ParseCount); - - ParserTestBase.EvaluateParseTree(manager.Parser.CurrentSyntaxTree.Root, new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code(expectedCode).AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz"))); - }; - - manager.InitializeWithDocument(textChange.OldBuffer); - - // This is the process of a dotless commit when doing "." insertions to commit intellisense changes. - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted | PartialParseResult.Provisional, "DateT."); - - old = changed; - changed = new StringTextBuffer("foo @DateTime. baz"); - textChange = new TextChange(10, 0, old, 3, changed); - - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted | PartialParseResult.Provisional, "DateTime."); - } - } - - [Fact] - public void ImplicitExpressionProvisionallyAcceptsDotlessCommitInsertionsAfterIdentifiers() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("foo @DateTime. baz"); - var old = new StringTextBuffer("foo @DateTime baz"); - var textChange = new TextChange(13, 0, old, 1, changed); - using (var manager = CreateParserManager()) - { - Action applyAndVerifyPartialChange = (changeToApply, expectedResult, expectedCode) => - { - var result = manager.CheckForStructureChangesAndWait(textChange); - - // Assert - Assert.Equal(expectedResult, result); - Assert.Equal(1, manager.ParseCount); - - ParserTestBase.EvaluateParseTree(manager.Parser.CurrentSyntaxTree.Root, new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code(expectedCode).AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz"))); - }; - - manager.InitializeWithDocument(textChange.OldBuffer); - - // This is the process of a dotless commit when doing "." insertions to commit intellisense changes. - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted | PartialParseResult.Provisional, "DateTime."); - - old = changed; - changed = new StringTextBuffer("foo @DateTime.. baz"); - textChange = new TextChange(14, 0, old, 1, changed); - - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted | PartialParseResult.Provisional, "DateTime.."); - - old = changed; - changed = new StringTextBuffer("foo @DateTime.Now. baz"); - textChange = new TextChange(14, 0, old, 3, changed); - - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted | PartialParseResult.Provisional, "DateTime.Now."); - } - } - - [Fact] - public void ImplicitExpressionProvisionallyAcceptsCaseInsensitiveDotlessCommitInsertions_NewRoslynIntegration() - { - var factory = new SpanFactory(); - var old = new StringTextBuffer("foo @date baz"); - var changed = new StringTextBuffer("foo @date. baz"); - var textChange = new TextChange(9, 0, old, 1, changed); - using (var manager = CreateParserManager()) - { - Action applyAndVerifyPartialChange = (changeToApply, expectedResult, expectedCode) => - { - var result = manager.CheckForStructureChangesAndWait(textChange); - - // Assert - Assert.Equal(expectedResult, result); - Assert.Equal(1, manager.ParseCount); - - ParserTestBase.EvaluateParseTree(manager.Parser.CurrentSyntaxTree.Root, new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code(expectedCode).AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz"))); - }; - - manager.InitializeWithDocument(textChange.OldBuffer); - - // This is the process of a dotless commit when doing "." insertions to commit intellisense changes. - - // @date => @date. - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted | PartialParseResult.Provisional, "date."); - - old = changed; - changed = new StringTextBuffer("foo @date baz"); - textChange = new TextChange(9, 1, old, 0, changed); - - // @date. => @date - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted, "date"); - - old = changed; - changed = new StringTextBuffer("foo @DateTime baz"); - textChange = new TextChange(5, 4, old, 8, changed); - - // @date => @DateTime - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted, "DateTime"); - - old = changed; - changed = new StringTextBuffer("foo @DateTime. baz"); - textChange = new TextChange(13, 0, old, 1, changed); - - // @DateTime => @DateTime. - applyAndVerifyPartialChange(textChange, PartialParseResult.Accepted | PartialParseResult.Provisional, "DateTime."); - } - } - - [Fact] - public void ImplicitExpressionProvisionallyAcceptsDeleteOfIdentifierPartsIfDotRemains() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("foo @User. baz"); - var old = new StringTextBuffer("foo @User.Name baz"); - RunPartialParseTest(new TextChange(10, 4, old, 0, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("User.").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz")), - additionalFlags: PartialParseResult.Provisional); - } - - [Fact] - public void ImplicitExpressionAcceptsDeleteOfIdentifierPartsIfSomeOfIdentifierRemains() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("foo @Us baz"); - var old = new StringTextBuffer("foo @User baz"); - RunPartialParseTest(new TextChange(7, 2, old, 0, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("Us").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz"))); - } - - [Fact] - public void ImplicitExpressionProvisionallyAcceptsMultipleInsertionIfItCausesIdentifierExpansionAndTrailingDot() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("foo @User. baz"); - var old = new StringTextBuffer("foo @U baz"); - RunPartialParseTest(new TextChange(6, 0, old, 4, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("User.").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz")), - additionalFlags: PartialParseResult.Provisional); - } - - [Fact] - public void ImplicitExpressionAcceptsMultipleInsertionIfItOnlyCausesIdentifierExpansion() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("foo @barbiz baz"); - var old = new StringTextBuffer("foo @bar baz"); - RunPartialParseTest(new TextChange(8, 0, old, 3, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("barbiz").AsImplicitExpression(CSharpCodeParser.DefaultKeywords).Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" baz"))); - } - - [Fact] - public void ImplicitExpressionAcceptsIdentifierExpansionAtEndOfNonWhitespaceCharacters() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("@{" + Environment.NewLine - + " @food" + Environment.NewLine - + "}"); - var old = new StringTextBuffer("@{" + Environment.NewLine - + " @foo" + Environment.NewLine - + "}"); - RunPartialParseTest(new TextChange(10 + Environment.NewLine.Length, 0, old, 1, changed), - new MarkupBlock( - factory.EmptyHtml(), - new StatementBlock( - factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), - factory.Code(Environment.NewLine + " ") - .AsStatement() - .AutoCompleteWith(autoCompleteString: null), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("food") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Code(Environment.NewLine).AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), - factory.EmptyHtml())); - } - - [Fact] - public void ImplicitExpressionAcceptsIdentifierAfterDotAtEndOfNonWhitespaceCharacters() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("@{" + Environment.NewLine - + " @foo.d" + Environment.NewLine - + "}"); - var old = new StringTextBuffer("@{" + Environment.NewLine - + " @foo." + Environment.NewLine - + "}"); - RunPartialParseTest(new TextChange(11 + Environment.NewLine.Length, 0, old, 1, changed), - new MarkupBlock( - factory.EmptyHtml(), - new StatementBlock( - factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), - factory.Code(Environment.NewLine + " ") - .AsStatement() - .AutoCompleteWith(autoCompleteString: null), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("foo.d") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Code(Environment.NewLine).AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), - factory.EmptyHtml())); - } - - [Fact] - public void ImplicitExpressionAcceptsDotAtEndOfNonWhitespaceCharacters() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("@{" + Environment.NewLine - + " @foo." + Environment.NewLine - + "}"); - var old = new StringTextBuffer("@{" + Environment.NewLine - + " @foo" + Environment.NewLine - + "}"); - RunPartialParseTest(new TextChange(10 + Environment.NewLine.Length, 0, old, 1, changed), - new MarkupBlock( - factory.EmptyHtml(), - new StatementBlock( - factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), - factory.Code(Environment.NewLine + " ") - .AsStatement() - .AutoCompleteWith(autoCompleteString: null), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code(@"foo.") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Code(Environment.NewLine).AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), - factory.EmptyHtml())); - } - - [Fact] - public void ImplicitExpressionRejectsChangeWhichWouldHaveBeenAcceptedIfLastChangeWasProvisionallyAcceptedOnDifferentSpan() - { - var factory = new SpanFactory(); - - // Arrange - var dotTyped = new TextChange(8, 0, new StringTextBuffer("foo @foo @bar"), 1, new StringTextBuffer("foo @foo. @bar")); - var charTyped = new TextChange(14, 0, new StringTextBuffer("foo @foo. @bar"), 1, new StringTextBuffer("foo @foo. @barb")); - using (var manager = CreateParserManager()) - { - manager.InitializeWithDocument(dotTyped.OldBuffer); - - // Apply the dot change - Assert.Equal(PartialParseResult.Provisional | PartialParseResult.Accepted, manager.CheckForStructureChangesAndWait(dotTyped)); - - // Act (apply the identifier start char change) - var result = manager.CheckForStructureChangesAndWait(charTyped); - - // Assert - Assert.Equal(PartialParseResult.Rejected, result); - Assert.False(manager.Parser.LastResultProvisional, "LastResultProvisional flag should have been cleared but it was not"); - ParserTestBase.EvaluateParseTree(manager.Parser.CurrentSyntaxTree.Root, - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("foo") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(". "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("barb") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.EmptyHtml())); - } - } - - [Fact] - public void ImplicitExpressionAcceptsIdentifierTypedAfterDotIfLastChangeWasProvisionalAcceptanceOfDot() - { - var factory = new SpanFactory(); - - // Arrange - var dotTyped = new TextChange(8, 0, new StringTextBuffer("foo @foo bar"), 1, new StringTextBuffer("foo @foo. bar")); - var charTyped = new TextChange(9, 0, new StringTextBuffer("foo @foo. bar"), 1, new StringTextBuffer("foo @foo.b bar")); - using (var manager = CreateParserManager()) - { - manager.InitializeWithDocument(dotTyped.OldBuffer); - - // Apply the dot change - Assert.Equal(PartialParseResult.Provisional | PartialParseResult.Accepted, manager.CheckForStructureChangesAndWait(dotTyped)); - - // Act (apply the identifier start char change) - var result = manager.CheckForStructureChangesAndWait(charTyped); - - // Assert - Assert.Equal(PartialParseResult.Accepted, result); - Assert.False(manager.Parser.LastResultProvisional, "LastResultProvisional flag should have been cleared but it was not"); - ParserTestBase.EvaluateParseTree(manager.Parser.CurrentSyntaxTree.Root, - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("foo.b") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" bar"))); - } - } - - [Fact] - public void ImplicitExpressionProvisionallyAcceptsDotAfterIdentifierInMarkup() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("foo @foo. bar"); - var old = new StringTextBuffer("foo @foo bar"); - RunPartialParseTest(new TextChange(8, 0, old, 1, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("foo.") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" bar")), - additionalFlags: PartialParseResult.Provisional); - } - - [Fact] - public void ImplicitExpressionAcceptsAdditionalIdentifierCharactersIfEndOfSpanIsIdentifier() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("foo @foob bar"); - var old = new StringTextBuffer("foo @foo bar"); - RunPartialParseTest(new TextChange(8, 0, old, 1, changed), - new MarkupBlock( - factory.Markup("foo "), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("foob") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.Markup(" bar"))); - } - - [Fact] - public void ImplicitExpressionAcceptsAdditionalIdentifierStartCharactersIfEndOfSpanIsDot() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("@{@foo.b}"); - var old = new StringTextBuffer("@{@foo.}"); - RunPartialParseTest(new TextChange(7, 0, old, 1, changed), - new MarkupBlock( - factory.EmptyHtml(), - new StatementBlock( - factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), - factory.EmptyCSharp() - .AsStatement() - .AutoCompleteWith(autoCompleteString: null), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("foo.b") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), - factory.EmptyHtml())); - } - - [Fact] - public void ImplicitExpressionAcceptsDotIfTrailingDotsAreAllowed() - { - var factory = new SpanFactory(); - var changed = new StringTextBuffer("@{@foo.}"); - var old = new StringTextBuffer("@{@foo}"); - RunPartialParseTest(new TextChange(6, 0, old, 1, changed), - new MarkupBlock( - factory.EmptyHtml(), - new StatementBlock( - factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), - factory.EmptyCSharp() - .AsStatement() - .AutoCompleteWith(autoCompleteString: null), - new ExpressionBlock( - factory.CodeTransition(), - factory.Code("foo.") - .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true) - .Accepts(AcceptedCharacters.NonWhiteSpace)), - factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), - factory.EmptyHtml())); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfIfKeywordTyped() - { - RunTypeKeywordTest("if"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfDoKeywordTyped() - { - RunTypeKeywordTest("do"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfTryKeywordTyped() - { - RunTypeKeywordTest("try"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfForKeywordTyped() - { - RunTypeKeywordTest("for"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfForEachKeywordTyped() - { - RunTypeKeywordTest("foreach"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfWhileKeywordTyped() - { - RunTypeKeywordTest("while"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfSwitchKeywordTyped() - { - RunTypeKeywordTest("switch"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfLockKeywordTyped() - { - RunTypeKeywordTest("lock"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfUsingKeywordTyped() - { - RunTypeKeywordTest("using"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfSectionKeywordTyped() - { - RunTypeKeywordTest("section"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfInheritsKeywordTyped() - { - RunTypeKeywordTest("inherits"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfFunctionsKeywordTyped() - { - RunTypeKeywordTest("functions"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfNamespaceKeywordTyped() - { - RunTypeKeywordTest("namespace"); - } - - [Fact] - public void ImplicitExpressionCorrectlyTriggersReparseIfClassKeywordTyped() - { - RunTypeKeywordTest("class"); - } - - private static TextChange CreateInsertionChange(string initialText, int insertionLocation, string insertionText) - { - var changedText = initialText.Insert(insertionLocation, insertionText); - - var original = new StringTextBuffer(initialText); - var changed = new StringTextBuffer(changedText); - return new TextChange(insertionLocation, 0, original, insertionText.Length, changed); - } - - private static void RunFullReparseTest(TextChange change, PartialParseResult additionalFlags = (PartialParseResult)0) - { - // Arrange - using (var manager = CreateParserManager()) - { - manager.InitializeWithDocument(change.OldBuffer); - - // Act - var result = manager.CheckForStructureChangesAndWait(change); - - // Assert - Assert.Equal(PartialParseResult.Rejected | additionalFlags, result); - Assert.Equal(2, manager.ParseCount); - } - } - - private static void RunPartialParseTest(TextChange change, Block newTreeRoot, PartialParseResult additionalFlags = (PartialParseResult)0) - { - // Arrange - using (var manager = CreateParserManager()) - { - manager.InitializeWithDocument(change.OldBuffer); - - // Act - var result = manager.CheckForStructureChangesAndWait(change); - - // Assert - Assert.Equal(PartialParseResult.Accepted | additionalFlags, result); - Assert.Equal(1, manager.ParseCount); - ParserTestBase.EvaluateParseTree(manager.Parser.CurrentSyntaxTree.Root, newTreeRoot); - } - } - - private static TestParserManager CreateParserManager() - { - var parser = new RazorEditorParser(CreateTemplateEngine(), TestLinePragmaFileName); - return new TestParserManager(parser); - } - - private static RazorTemplateEngine CreateTemplateEngine( - string path = TestLinePragmaFileName, - IEnumerable tagHelpers = null) - { - var engine = RazorEngine.CreateDesignTime(b => - { - if (tagHelpers != null) - { - b.AddTagHelpers(tagHelpers); - } - }); - - // GetImports on RazorTemplateEngine will at least check that the item exists, so we need to pretend - // that it does. - var items = new List(); - items.Add(new TestRazorProjectItem(path)); - - var project = new TestRazorProject(items); - - var templateEngine = new RazorTemplateEngine(engine, project); - templateEngine.Options.DefaultImports = RazorSourceDocument.Create("@addTagHelper *, Test", "_TestImports.cshtml"); - return templateEngine; - } - - private static void RunTypeKeywordTest(string keyword) - { - var before = "@" + keyword.Substring(0, keyword.Length - 1); - var after = "@" + keyword; - var changed = new StringTextBuffer(after); - var old = new StringTextBuffer(before); - RunFullReparseTest(new TextChange(keyword.Length, 0, old, 1, changed), additionalFlags: PartialParseResult.SpanContextChanged); - } - - private class TestParserManager : IDisposable - { - public int ParseCount; - - private readonly ManualResetEventSlim _parserComplete; - - public TestParserManager(RazorEditorParser parser) - { - _parserComplete = new ManualResetEventSlim(); - ParseCount = 0; - Parser = parser; - parser.DocumentParseComplete += (sender, args) => - { - Interlocked.Increment(ref ParseCount); - _parserComplete.Set(); - }; - } - - public RazorEditorParser Parser { get; } - - public void InitializeWithDocument(ITextBuffer startDocument) - { - CheckForStructureChangesAndWait(new TextChange(0, 0, new StringTextBuffer(string.Empty), startDocument.Length, startDocument)); - } - - public PartialParseResult CheckForStructureChangesAndWait(TextChange change) - { - var result = Parser.CheckForStructureChanges(change); - if (result.HasFlag(PartialParseResult.Rejected)) - { - WaitForParse(); - } - return result; - } - - public void WaitForParse() - { - MiscUtils.DoWithTimeoutIfNotDebugging(_parserComplete.Wait); // Wait for the parse to finish - _parserComplete.Reset(); - } - - public void Dispose() - { - Parser.Dispose(); - } - } - } -} -#pragma warning restore CS0612 // Type or member is obsolete diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/RazorParserTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/RazorParserTest.cs index 9351779a28..186937a9ad 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/RazorParserTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/RazorParserTest.cs @@ -34,7 +34,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("bar") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), factory.Markup(" baz"))); } @@ -57,7 +57,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("bar") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), factory.Markup(" baz"))); } } diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperBlockRewriterTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperBlockRewriterTest.cs index 1edf21fdb5..f63b14f6d1 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperBlockRewriterTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperBlockRewriterTest.cs @@ -664,7 +664,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)))), HtmlAttributeValueStyle.DoubleQuotes) })), new [] @@ -956,7 +956,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))); + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))); return new TheoryData { @@ -1074,9 +1074,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeMarkup(" ?").With(new ExpressionChunkGenerator()), new MarkupBlock( factory.CodeMarkup(" @").With(new ExpressionChunkGenerator()) - .As(SpanKind.Code), + .As(SpanKindInternal.Code), factory.CodeMarkup("@").With(SpanChunkGenerator.Null) - .As(SpanKind.Code)), + .As(SpanKindInternal.Code)), factory.CodeMarkup("DateTime").With(new ExpressionChunkGenerator()), factory.CodeMarkup(" :").With(new ExpressionChunkGenerator()), new MarkupBlock( @@ -1121,10 +1121,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( factory.Markup("Time:"), new MarkupBlock( - factory.Markup(" @").Accepts(AcceptedCharacters.None), + factory.Markup(" @").Accepts(AcceptedCharactersInternal.None), factory.Markup("@") .With(SpanChunkGenerator.Null) - .Accepts(AcceptedCharacters.None)), + .Accepts(AcceptedCharactersInternal.None)), dateTimeNow)) })) }, @@ -1143,10 +1143,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy "name", new MarkupBlock( new MarkupBlock( - factory.Markup("@").Accepts(AcceptedCharacters.None), + factory.Markup("@").Accepts(AcceptedCharactersInternal.None), factory.Markup("@") .With(SpanChunkGenerator.Null) - .Accepts(AcceptedCharacters.None)), + .Accepts(AcceptedCharactersInternal.None)), factory.Markup("BoundStringAttribute"))) })) }, @@ -1166,7 +1166,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( factory.EmptyHtml() .AsCodeMarkup().With(new ExpressionChunkGenerator()) - .As(SpanKind.Code), + .As(SpanKindInternal.Code), new ExpressionBlock( factory.CSharpCodeMarkup("@").With(new ExpressionChunkGenerator()), factory.CSharpCodeMarkup("(").With(new ExpressionChunkGenerator()), @@ -1252,7 +1252,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)))), HtmlAttributeValueStyle.DoubleQuotes), new TagHelperAttributeNode("style", factory.Markup("color:red;")) }, @@ -1439,7 +1439,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))))); + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))))); var doWhileString = "@do { var foo = bar; Foo foo++; } while (foo);"; var doWhile = new Func(index => new MarkupBlock( @@ -1455,13 +1455,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( new MarkupTagBlock( factory.MarkupTransition("")), - factory.Markup("Foo").Accepts(AcceptedCharacters.None), + factory.Markup("Foo").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( factory.MarkupTransition(""))), factory .Code(" foo++; } while (foo);") .AsStatement() - .Accepts(AcceptedCharacters.None))))); + .Accepts(AcceptedCharactersInternal.None))))); var currentFormattedString = "

    "; yield return new object[] @@ -1579,7 +1579,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), factory.Markup("\"").With(SpanChunkGenerator.Null)), factory.Markup(">")), factory.Markup("inside of strong tag"), @@ -1608,7 +1608,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)); + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)); var doWhileString = "@do { var foo = bar;

    Foo

    foo++; } while (foo);"; var doWhile = new StatementBlock( factory.CodeTransition(), @@ -1617,10 +1617,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.Markup(" "), new MarkupTagHelperBlock("p", factory.Markup("Foo")), - factory.Markup(" ").Accepts(AcceptedCharacters.None)), + factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)), factory.Code("foo++; } while (foo);") .AsStatement() - .Accepts(AcceptedCharacters.None)); + .Accepts(AcceptedCharactersInternal.None)); var currentFormattedString = "

    {0}

    "; yield return new object[] @@ -1722,7 +1722,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)); + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)); return new TheoryData { @@ -2348,8 +2348,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy "class", new MarkupBlock( new MarkupBlock( - factory.Markup("@").Accepts(AcceptedCharacters.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)), + factory.Markup("@").Accepts(AcceptedCharactersInternal.None), + factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), factory.Markup("foo@bar.com"))), new TagHelperAttributeNode("style", factory.Markup("color:red;")) }), @@ -2458,7 +2458,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))))); + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))))); yield return new object[] { @@ -2499,8 +2499,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupBlock( factory.Markup("color"), new MarkupBlock( - factory.Markup("@").Accepts(AcceptedCharacters.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)), + factory.Markup("@").Accepts(AcceptedCharactersInternal.None), + factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), factory.Markup(":red;")), HtmlAttributeValueStyle.DoubleQuotes) }, @@ -2709,7 +2709,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)); + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)); // documentContent, expectedOutput return new TheoryData @@ -2836,10 +2836,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), insideBuilder(), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()); }; @@ -2889,7 +2889,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), factory.Markup(" +") .With(new LiteralAttributeChunkGenerator( prefix: new LocationTagged(" ", index + 13, 0, index + 13), @@ -3524,10 +3524,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), insideBuilder(), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()); }; Action updateDynamicChunkGenerators = (block) => diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperParseTreeRewriterTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperParseTreeRewriterTest.cs index 4ee7811163..d453b957e6 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperParseTreeRewriterTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TagHelperParseTreeRewriterTest.cs @@ -58,7 +58,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy var rootBlock = Assert.IsType(document); var child = Assert.Single(rootBlock.Children); var tagBlock = Assert.IsType(child); - Assert.Equal(BlockKind.Tag, tagBlock.Type); + Assert.Equal(BlockKindInternal.Tag, tagBlock.Type); Assert.Empty(errorSink.Errors); // Act @@ -1210,7 +1210,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))))); + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))))); // documentContent, expectedOutput return new TheoryData @@ -1543,8 +1543,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new TagHelperAttributeNode("catchAll", new MarkupBlock( new MarkupBlock( - factory.Markup("@").Accepts(AcceptedCharacters.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)), + factory.Markup("@").Accepts(AcceptedCharactersInternal.None), + factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), factory.Markup("hi"))), }, children: factory.Markup("words and spaces"))) @@ -1633,7 +1633,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)))); + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)))); // documentContent, expectedOutput return new TheoryData @@ -2219,7 +2219,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true) - .Accepts(AcceptedCharacters.AnyExceptNewline))))) + .Accepts(AcceptedCharactersInternal.AnyExceptNewline))))) } })), availableDescriptorsColon @@ -2264,10 +2264,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), insideBuilder(), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()); }; @@ -2280,7 +2280,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagBlock( factory.Markup("<"), @@ -2297,7 +2297,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, 16, 0, 16), value: new LocationTagged("btn", 16, 0, 16))), factory.Markup("\"").With(SpanChunkGenerator.Null)), - factory.Markup(">").Accepts(AcceptedCharacters.None)), + factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), factory.Markup("}")))), new [] { @@ -2328,8 +2328,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, 16, 0, 16), value: new LocationTagged("btn", 16, 0, 16))), factory.Markup("\"").With(SpanChunkGenerator.Null)), - factory.Markup(">").Accepts(AcceptedCharacters.None)), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, { @@ -2351,9 +2351,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, 16, 0, 16), value: new LocationTagged("btn", 16, 0, 16))), factory.Markup("\"").With(SpanChunkGenerator.Null)), - factory.Markup(">").Accepts(AcceptedCharacters.None)), + factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), factory.Markup("words with spaces"), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, { @@ -2389,8 +2389,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new LiteralAttributeChunkGenerator( prefix: new LocationTagged(string.Empty, 34, 0, 34), value: new LocationTagged("btn", 34, 0, 34)))), - factory.Markup(">").Accepts(AcceptedCharacters.None)), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, { @@ -2419,14 +2419,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), factory.Markup(" btn2").With( new LiteralAttributeChunkGenerator( prefix: new LocationTagged(" ", 34, 0, 34), value: new LocationTagged("btn2", 35, 0, 35))), factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(">").Accepts(AcceptedCharacters.None)), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, }; @@ -2459,10 +2459,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), insideBuilder(), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()); }; @@ -2475,9 +2475,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharacters.None), + blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharactersInternal.None), factory.Markup("}")))), new [] { @@ -2493,7 +2493,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy "@{}", buildStatementBlock( () => new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new [] { new RazorError( @@ -2505,25 +2505,25 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy "@{}", buildStatementBlock( () => new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharacters.None), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharactersInternal.None), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, { "@{words and spaces}", buildStatementBlock( () => new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharacters.None), + blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharactersInternal.None), factory.Markup("words and spaces"), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, { "@{}", buildStatementBlock( () => new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharacters.None), - blockFactory.MarkupTagBlock("", AcceptedCharacters.None))), + blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharactersInternal.None), + blockFactory.MarkupTagBlock("", AcceptedCharactersInternal.None))), new [] { new RazorError( @@ -2540,9 +2540,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy () => new MarkupBlock( new MarkupTagBlock(factory.MarkupTransition("")), new MarkupTagBlock( - factory.Markup("").Accepts(AcceptedCharacters.None)))), + factory.Markup("text>").Accepts(AcceptedCharactersInternal.None)))), new [] { new RazorError( @@ -2554,9 +2554,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy "@{}", buildStatementBlock( () => new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharacters.None), + blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharactersInternal.None), new MarkupTagHelperBlock("text"), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, { @@ -2565,14 +2565,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagBlock(factory.MarkupTransition("")), new MarkupTagBlock( - factory.Markup("<").Accepts(AcceptedCharacters.None), + factory.Markup("<").Accepts(AcceptedCharactersInternal.None), factory.BangEscape(), - factory.Markup("text>").Accepts(AcceptedCharacters.None)), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None), + factory.Markup("text>").Accepts(AcceptedCharactersInternal.None)), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None), factory.Markup("}")))), new [] { @@ -2590,14 +2590,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharacters.None), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None)), + blockFactory.EscapedMarkupTagBlock("<", "text>", AcceptedCharactersInternal.None), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None)), new MarkupBlock( - blockFactory.MarkupTagBlock("", AcceptedCharacters.None)), + blockFactory.MarkupTagBlock("", AcceptedCharactersInternal.None)), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()), new [] { @@ -2646,7 +2646,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), insideBuilder())); }; @@ -2840,7 +2840,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), insideBuilder())); }; @@ -2965,8 +2965,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, 13, 0, 13), value: new LocationTagged("btn", 13, 0, 13))), new MarkupBlock( - factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 16, 0, 16), new LocationTagged("@", 16, 0, 16))).Accepts(AcceptedCharacters.None), - factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharacters.None)), + factory.Markup("@").With(new LiteralAttributeChunkGenerator(new LocationTagged(string.Empty, 16, 0, 16), new LocationTagged("@", 16, 0, 16))).Accepts(AcceptedCharactersInternal.None), + factory.Markup("@").With(SpanChunkGenerator.Null).Accepts(AcceptedCharactersInternal.None)), factory.Markup("}").With( new LiteralAttributeChunkGenerator( prefix: new LocationTagged(string.Empty, 18, 0, 18), @@ -3192,10 +3192,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), insideBuilder(), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()); }; @@ -3208,9 +3208,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None), + blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None), factory.Markup("}")))), new [] { @@ -3226,7 +3226,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy "@{}", buildStatementBlock( () => new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new [] { new RazorError( @@ -3238,25 +3238,25 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy "@{}", buildStatementBlock( () => new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, { "@{words and spaces}", buildStatementBlock( () => new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None), + blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None), factory.Markup("words and spaces"), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, { "@{

    }", buildStatementBlock( () => new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None), - blockFactory.MarkupTagBlock("

    ", AcceptedCharacters.None))), + blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None), + blockFactory.MarkupTagBlock("

    ", AcceptedCharactersInternal.None))), new [] { new RazorError( @@ -3272,7 +3272,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy buildStatementBlock( () => new MarkupBlock( new MarkupTagHelperBlock("p", - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None)))), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None)))), new [] { new RazorError( @@ -3288,8 +3288,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy buildStatementBlock( () => new MarkupBlock( new MarkupTagHelperBlock("p", - blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None)))), + blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None)))), new RazorError[0] }, { @@ -3298,11 +3298,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagHelperBlock("p", - blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None), + blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None), factory.Markup("}"))))), new [] { @@ -3323,14 +3323,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None)), + blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None)), new MarkupBlock( - blockFactory.MarkupTagBlock("

    ", AcceptedCharacters.None)), + blockFactory.MarkupTagBlock("

    ", AcceptedCharactersInternal.None)), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()), new [] { @@ -3348,14 +3348,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagHelperBlock("strong", - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new MarkupBlock( - blockFactory.MarkupTagBlock("", AcceptedCharacters.None)), + blockFactory.MarkupTagBlock("", AcceptedCharactersInternal.None)), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()), new [] { @@ -3379,14 +3379,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagHelperBlock("strong")), new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None)), + blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None)), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()), new RazorError[0] }, @@ -3396,18 +3396,18 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagHelperBlock("p", new MarkupTagHelperBlock("strong", - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None)))), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None)))), new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharacters.None), - blockFactory.MarkupTagBlock("", AcceptedCharacters.None)), + blockFactory.EscapedMarkupTagBlock("<", "p>", AcceptedCharactersInternal.None), + blockFactory.MarkupTagBlock("", AcceptedCharactersInternal.None)), new MarkupBlock( - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None)), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None)), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()), new [] { @@ -3455,10 +3455,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), insideBuilder(), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()); }; @@ -3471,7 +3471,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagBlock( factory.Markup("<"), @@ -3488,7 +3488,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, 13, 0, 13), value: new LocationTagged("btn", 13, 0, 13))), factory.Markup("\"").With(SpanChunkGenerator.Null)), - factory.Markup(">").Accepts(AcceptedCharacters.None)), + factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), factory.Markup("}")))), new [] { @@ -3519,8 +3519,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, 13, 0, 13), value: new LocationTagged("btn", 13, 0, 13))), factory.Markup("\"").With(SpanChunkGenerator.Null)), - factory.Markup(">").Accepts(AcceptedCharacters.None)), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, { @@ -3542,9 +3542,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy prefix: new LocationTagged(string.Empty, 13, 0, 13), value: new LocationTagged("btn", 13, 0, 13))), factory.Markup("\"").With(SpanChunkGenerator.Null)), - factory.Markup(">").Accepts(AcceptedCharacters.None)), + factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), factory.Markup("words with spaces"), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, { @@ -3580,8 +3580,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new LiteralAttributeChunkGenerator( prefix: new LocationTagged(string.Empty, 31, 0, 31), value: new LocationTagged("btn", 31, 0, 31)))), - factory.Markup(">").Accepts(AcceptedCharacters.None)), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, { @@ -3610,14 +3610,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), factory.Markup(" btn2").With( new LiteralAttributeChunkGenerator( prefix: new LocationTagged(" ", 31, 0, 31), value: new LocationTagged("btn2", 32, 0, 32))), factory.Markup("'").With(SpanChunkGenerator.Null)), - factory.Markup(">").Accepts(AcceptedCharacters.None)), - blockFactory.EscapedMarkupTagBlock("", AcceptedCharacters.None))), + factory.Markup(">").Accepts(AcceptedCharactersInternal.None)), + blockFactory.EscapedMarkupTagBlock("", AcceptedCharactersInternal.None))), new RazorError[0] }, }; @@ -3906,7 +3906,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("DateTime.Now") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace))), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace))), factory.Markup(" btn2").With( new LiteralAttributeChunkGenerator( prefix: new LocationTagged(" ", 29, 0, 29), @@ -3952,15 +3952,15 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagBlock( factory.MarkupTransition("")), - factory.Markup("Hello World").Accepts(AcceptedCharacters.None), + factory.Markup("Hello World").Accepts(AcceptedCharactersInternal.None), new MarkupTagBlock( factory.MarkupTransition(""))), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()) }; yield return new object[] @@ -3970,7 +3970,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagBlock( factory.MarkupTransition("")), @@ -3979,7 +3979,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy new MarkupTagBlock( factory.MarkupTransition(""))), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()) }; yield return new object[] @@ -3989,13 +3989,13 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.EmptyHtml(), new StatementBlock( factory.CodeTransition(), - factory.MetaCode("{").Accepts(AcceptedCharacters.None), + factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagHelperBlock("p", new MarkupTagHelperBlock("text", factory.Markup("Hello World")))), factory.EmptyCSharp().AsStatement(), - factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), factory.EmptyHtml()) }; } @@ -4037,7 +4037,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), factory.Markup(" -->"), new MarkupTagBlock( factory.Markup(""))) @@ -4063,7 +4063,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), factory.Markup(" ?>"), new MarkupTagBlock( factory.Markup(""))) @@ -4079,7 +4079,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), factory.Markup(" >"), new MarkupTagBlock( factory.Markup(""))) @@ -4115,7 +4115,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy factory.CodeTransition(), factory.Code("foo") .AsImplicitExpression(CSharpCodeParser.DefaultKeywords) - .Accepts(AcceptedCharacters.NonWhiteSpace)), + .Accepts(AcceptedCharactersInternal.NonWhiteSpace)), factory.Markup(" ]]>"), new MarkupTagBlock( factory.Markup(""))) @@ -4203,12 +4203,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy Factory.Markup("
    ")), new StatementBlock( Factory.CodeTransition(), - Factory.MetaCode("{").Accepts(AcceptedCharacters.None), + Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None), new MarkupBlock( new MarkupTagBlock( - Factory.Markup("
    ").Accepts(AcceptedCharacters.None))), + Factory.Markup("").Accepts(AcceptedCharactersInternal.None))), Factory.EmptyCSharp().AsStatement(), - Factory.MetaCode("}").Accepts(AcceptedCharacters.None)), + Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)), Factory.EmptyHtml()); var expectedErrors = new[] { diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TestSpanBuilder.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TestSpanBuilder.cs index 38419d279d..4ac533e007 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TestSpanBuilder.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TestSpanBuilder.cs @@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { return new UnclassifiedCodeSpanConstructor( self.Span( - SpanKind.Code, + SpanKindInternal.Code, new CSharpSymbol(string.Empty, CSharpSymbolType.Unknown))); } @@ -21,7 +21,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { return self .Span( - SpanKind.Markup, + SpanKindInternal.Markup, new HtmlSymbol(string.Empty, HtmlSymbolType.Unknown)) .With(new MarkupChunkGenerator()); } @@ -29,109 +29,109 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy public static UnclassifiedCodeSpanConstructor Code(this SpanFactory self, string content) { return new UnclassifiedCodeSpanConstructor( - self.Span(SpanKind.Code, content, markup: false)); + self.Span(SpanKindInternal.Code, content, markup: false)); } public static SpanConstructor CodeTransition(this SpanFactory self) { return self - .Span(SpanKind.Transition, SyntaxConstants.TransitionString, markup: false) - .Accepts(AcceptedCharacters.None); + .Span(SpanKindInternal.Transition, SyntaxConstants.TransitionString, markup: false) + .Accepts(AcceptedCharactersInternal.None); } public static SpanConstructor CodeTransition(this SpanFactory self, string content) { - return self.Span(SpanKind.Transition, content, markup: false).Accepts(AcceptedCharacters.None); + return self.Span(SpanKindInternal.Transition, content, markup: false).Accepts(AcceptedCharactersInternal.None); } public static SpanConstructor CodeTransition(this SpanFactory self, CSharpSymbolType type) { return self - .Span(SpanKind.Transition, SyntaxConstants.TransitionString, type) - .Accepts(AcceptedCharacters.None); + .Span(SpanKindInternal.Transition, SyntaxConstants.TransitionString, type) + .Accepts(AcceptedCharactersInternal.None); } public static SpanConstructor CodeTransition(this SpanFactory self, string content, CSharpSymbolType type) { - return self.Span(SpanKind.Transition, content, type).Accepts(AcceptedCharacters.None); + return self.Span(SpanKindInternal.Transition, content, type).Accepts(AcceptedCharactersInternal.None); } public static SpanConstructor MarkupTransition(this SpanFactory self) { return self - .Span(SpanKind.Transition, SyntaxConstants.TransitionString, markup: true) - .Accepts(AcceptedCharacters.None); + .Span(SpanKindInternal.Transition, SyntaxConstants.TransitionString, markup: true) + .Accepts(AcceptedCharactersInternal.None); } public static SpanConstructor MarkupTransition(this SpanFactory self, string content) { - return self.Span(SpanKind.Transition, content, markup: true).Accepts(AcceptedCharacters.None); + return self.Span(SpanKindInternal.Transition, content, markup: true).Accepts(AcceptedCharactersInternal.None); } public static SpanConstructor MarkupTransition(this SpanFactory self, HtmlSymbolType type) { return self - .Span(SpanKind.Transition, SyntaxConstants.TransitionString, type) - .Accepts(AcceptedCharacters.None); + .Span(SpanKindInternal.Transition, SyntaxConstants.TransitionString, type) + .Accepts(AcceptedCharactersInternal.None); } public static SpanConstructor MarkupTransition(this SpanFactory self, string content, HtmlSymbolType type) { - return self.Span(SpanKind.Transition, content, type).Accepts(AcceptedCharacters.None); + return self.Span(SpanKindInternal.Transition, content, type).Accepts(AcceptedCharactersInternal.None); } public static SpanConstructor MetaCode(this SpanFactory self, string content) { - return self.Span(SpanKind.MetaCode, content, markup: false); + return self.Span(SpanKindInternal.MetaCode, content, markup: false); } public static SpanConstructor MetaCode(this SpanFactory self, string content, CSharpSymbolType type) { - return self.Span(SpanKind.MetaCode, content, type); + return self.Span(SpanKindInternal.MetaCode, content, type); } public static SpanConstructor MetaMarkup(this SpanFactory self, string content) { - return self.Span(SpanKind.MetaCode, content, markup: true); + return self.Span(SpanKindInternal.MetaCode, content, markup: true); } public static SpanConstructor MetaMarkup(this SpanFactory self, string content, HtmlSymbolType type) { - return self.Span(SpanKind.MetaCode, content, type); + return self.Span(SpanKindInternal.MetaCode, content, type); } public static SpanConstructor Comment(this SpanFactory self, string content, CSharpSymbolType type) { - return self.Span(SpanKind.Comment, content, type); + return self.Span(SpanKindInternal.Comment, content, type); } public static SpanConstructor Comment(this SpanFactory self, string content, HtmlSymbolType type) { - return self.Span(SpanKind.Comment, content, type); + return self.Span(SpanKindInternal.Comment, content, type); } public static SpanConstructor BangEscape(this SpanFactory self) { return self - .Span(SpanKind.MetaCode, "!", markup: true) + .Span(SpanKindInternal.MetaCode, "!", markup: true) .With(SpanChunkGenerator.Null) - .Accepts(AcceptedCharacters.None); + .Accepts(AcceptedCharactersInternal.None); } public static SpanConstructor Markup(this SpanFactory self, string content) { - return self.Span(SpanKind.Markup, content, markup: true).With(new MarkupChunkGenerator()); + return self.Span(SpanKindInternal.Markup, content, markup: true).With(new MarkupChunkGenerator()); } public static SpanConstructor Markup(this SpanFactory self, params string[] content) { - return self.Span(SpanKind.Markup, content, markup: true).With(new MarkupChunkGenerator()); + return self.Span(SpanKindInternal.Markup, content, markup: true).With(new MarkupChunkGenerator()); } public static SpanConstructor CodeMarkup(this SpanFactory self, params string[] content) { return self - .Span(SpanKind.Code, content, markup: true) + .Span(SpanKindInternal.Code, content, markup: true) .AsCodeMarkup(); } @@ -150,7 +150,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy CSharpCodeParser.DefaultKeywords, acceptTrailingDot: true)) .With(new MarkupChunkGenerator()) - .Accepts(AcceptedCharacters.AnyExceptNewline); + .Accepts(AcceptedCharactersInternal.AnyExceptNewline); } public static SourceLocation GetLocationAndAdvance(this SourceLocationTracker self, string content) @@ -176,27 +176,27 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy public SourceLocationTracker LocationTracker { get; } - public SpanConstructor Span(SpanKind kind, string content, CSharpSymbolType type) + public SpanConstructor Span(SpanKindInternal kind, string content, CSharpSymbolType type) { return CreateSymbolSpan(kind, content, () => new CSharpSymbol(content, type)); } - public SpanConstructor Span(SpanKind kind, string content, HtmlSymbolType type) + public SpanConstructor Span(SpanKindInternal kind, string content, HtmlSymbolType type) { return CreateSymbolSpan(kind, content, () => new HtmlSymbol(content, type)); } - public SpanConstructor Span(SpanKind kind, string content, bool markup) + public SpanConstructor Span(SpanKindInternal kind, string content, bool markup) { return new SpanConstructor(kind, LocationTracker.CurrentLocation, Tokenize(new[] { content }, markup)); } - public SpanConstructor Span(SpanKind kind, string[] content, bool markup) + public SpanConstructor Span(SpanKindInternal kind, string[] content, bool markup) { return new SpanConstructor(kind, LocationTracker.CurrentLocation, Tokenize(content, markup)); } - public SpanConstructor Span(SpanKind kind, params ISymbol[] symbols) + public SpanConstructor Span(SpanKindInternal kind, params ISymbol[] symbols) { var start = LocationTracker.CurrentLocation; foreach (var symbol in symbols) @@ -207,7 +207,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return new SpanConstructor(kind, start, symbols); } - private SpanConstructor CreateSymbolSpan(SpanKind kind, string content, Func ctor) + private SpanConstructor CreateSymbolSpan(SpanKindInternal kind, string content, Func ctor) { var start = LocationTracker.CurrentLocation; LocationTracker.UpdateLocation(content); @@ -255,7 +255,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy internal static class SpanConstructorExtensions { - public static SpanConstructor Accepts(this SpanConstructor self, AcceptedCharacters accepted) + public static SpanConstructor Accepts(this SpanConstructor self, AcceptedCharactersInternal accepted) { return self.With(eh => eh.AcceptedCharacters = accepted); } @@ -290,7 +290,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy public SpanConstructor AsMetaCode() { - _self.Builder.Kind = SpanKind.MetaCode; + _self.Builder.Kind = SpanKindInternal.MetaCode; return _self; } @@ -330,21 +330,21 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy { return _self .With(new AddTagHelperChunkGenerator(lookupText)) - .Accepts(AcceptedCharacters.AnyExceptNewline); + .Accepts(AcceptedCharactersInternal.AnyExceptNewline); } public SpanConstructor AsRemoveTagHelper(string lookupText) { return _self .With(new RemoveTagHelperChunkGenerator(lookupText)) - .Accepts(AcceptedCharacters.AnyExceptNewline); + .Accepts(AcceptedCharactersInternal.AnyExceptNewline); } public SpanConstructor AsTagHelperPrefixDirective(string prefix) { return _self .With(new TagHelperPrefixDirectiveChunkGenerator(prefix)) - .Accepts(AcceptedCharacters.AnyExceptNewline); + .Accepts(AcceptedCharactersInternal.AnyExceptNewline); } public SpanConstructor As(ISpanChunkGenerator chunkGenerator) @@ -362,7 +362,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy yield return new RawTextSymbol(SourceLocation.Zero, str); } - public SpanConstructor(SpanKind kind, SourceLocation location, IEnumerable symbols) + public SpanConstructor(SpanKindInternal kind, SourceLocation location, IEnumerable symbols) { Builder = new SpanBuilder(location); Builder.Kind = kind; @@ -378,7 +378,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy return Builder.Build(); } - public SpanConstructor As(SpanKind spanKind) + public SpanConstructor As(SpanKindInternal spanKind) { Builder.Kind = spanKind; return this; diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TextChangeTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TextChangeTest.cs deleted file mode 100644 index 1328b9bf9f..0000000000 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/Legacy/TextChangeTest.cs +++ /dev/null @@ -1,274 +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; -using Moq; -using Xunit; - -#pragma warning disable CS0612 // Type or member is obsolete -namespace Microsoft.AspNetCore.Razor.Language.Legacy -{ - public class TextChangeTest - { - [Fact] - public void ConstructorRequiresNonNegativeOldPosition() - { - var parameterName = "oldPosition"; - var exception = Assert.Throws(parameterName, () => new TextChange(-1, 0, new Mock().Object, 0, 0, new Mock().Object)); - ExceptionHelpers.ValidateArgumentException(parameterName, "Value must be greater than or equal to 0.", exception); - } - - [Fact] - public void ConstructorRequiresNonNegativeNewPosition() - { - var parameterName = "newPosition"; - var exception = Assert.Throws(parameterName, () => new TextChange(0, 0, new Mock().Object, -1, 0, new Mock().Object)); - ExceptionHelpers.ValidateArgumentException(parameterName, "Value must be greater than or equal to 0.", exception); - } - - [Fact] - public void ConstructorRequiresNonNegativeOldLength() - { - var parameterName = "oldLength"; - var exception = Assert.Throws(parameterName, () => new TextChange(0, -1, new Mock().Object, 0, 0, new Mock().Object)); - ExceptionHelpers.ValidateArgumentException(parameterName, "Value must be greater than or equal to 0.", exception); - } - - [Fact] - public void ConstructorRequiresNonNegativeNewLength() - { - var parameterName = "newLength"; - var exception = Assert.Throws(parameterName, () => new TextChange(0, 0, new Mock().Object, 0, -1, new Mock().Object)); - ExceptionHelpers.ValidateArgumentException(parameterName, "Value must be greater than or equal to 0.", exception); - } - - [Fact] - public void ConstructorInitializesProperties() - { - // Act - var oldBuffer = new Mock().Object; - var newBuffer = new Mock().Object; - var change = new TextChange(42, 24, oldBuffer, 1337, newBuffer); - - // Assert - Assert.Equal(42, change.OldPosition); - Assert.Equal(24, change.OldLength); - Assert.Equal(1337, change.NewLength); - Assert.Same(newBuffer, change.NewBuffer); - Assert.Same(oldBuffer, change.OldBuffer); - } - - [Fact] - public void TestIsDelete() - { - // Arrange - var oldBuffer = new Mock().Object; - var newBuffer = new Mock().Object; - var change = new TextChange(0, 1, oldBuffer, 0, newBuffer); - - // Assert - Assert.True(change.IsDelete); - } - - [Fact] - public void TestDeleteCreatesTheRightSizeChange() - { - // Arrange - var oldBuffer = new Mock().Object; - var newBuffer = new Mock().Object; - var change = new TextChange(0, 1, oldBuffer, 0, newBuffer); - - // Assert - Assert.Equal(0, change.NewText.Length); - Assert.Equal(1, change.OldText.Length); - } - - [Fact] - public void TestIsInsert() - { - // Arrange - var oldBuffer = new Mock().Object; - var newBuffer = new Mock().Object; - var change = new TextChange(0, 0, oldBuffer, 35, newBuffer); - - // Assert - Assert.True(change.IsInsert); - } - - [Fact] - public void TestInsertCreateTheRightSizeChange() - { - // Arrange - var oldBuffer = new Mock().Object; - var newBuffer = new Mock().Object; - var change = new TextChange(0, 0, oldBuffer, 1, newBuffer); - - // Assert - Assert.Equal(1, change.NewText.Length); - Assert.Equal(0, change.OldText.Length); - } - - [Fact] - public void TestIsReplace() - { - // Arrange - var oldBuffer = new Mock().Object; - var newBuffer = new Mock().Object; - var change = new TextChange(0, 5, oldBuffer, 10, newBuffer); - - // Assert - Assert.True(change.IsReplace); - } - - [Fact] - public void ReplaceCreatesTheRightSizeChange() - { - // Arrange - var oldBuffer = new Mock().Object; - var newBuffer = new Mock().Object; - var change = new TextChange(0, 5, oldBuffer, 10, newBuffer); - - // Assert - Assert.Equal(10, change.NewText.Length); - Assert.Equal(5, change.OldText.Length); - } - - [Fact] - public void ReplaceCreatesTheRightSizeChange1() - { - // Arrange - var oldBuffer = new Mock().Object; - var newBuffer = new Mock().Object; - var change = new TextChange(0, 5, oldBuffer, 1, newBuffer); - - // Assert - Assert.Equal(1, change.NewText.Length); - Assert.Equal(5, change.OldText.Length); - } - - [Fact] - public void OldTextReturnsOldSpanFromOldBuffer() - { - // Arrange - var newBuffer = new StringTextBuffer("test"); - var oldBuffer = new StringTextBuffer("text"); - var textChange = new TextChange(2, 1, oldBuffer, 1, newBuffer); - - // Act - var text = textChange.OldText; - - // Assert - Assert.Equal("x", text); - } - - [Fact] - public void OldTextReturnsOldSpanFromOldBuffer2() - { - // Arrange - var newBuffer = new StringTextBuffer("test"); - var oldBuffer = new StringTextBuffer("text"); - var textChange = new TextChange(2, 2, oldBuffer, 1, newBuffer); - - // Act - var text = textChange.OldText; - - // Assert - Assert.Equal("xt", text); - } - - [Fact] - public void NewTextWithInsertReturnsChangedTextFromBuffer() - { - // Arrange - var newBuffer = new StringTextBuffer("test"); - var oldBuffer = new StringTextBuffer(""); - var textChange = new TextChange(0, 0, oldBuffer, 3, newBuffer); - - // Act - var text = textChange.NewText; - var oldText = textChange.OldText; - - // Assert - Assert.Equal("tes", text); - Assert.Equal("", oldText); - } - - [Fact] - public void NewTextWithDeleteReturnsEmptyString() - { - // Arrange - var newBuffer = new StringTextBuffer("test"); - var oldBuffer = new StringTextBuffer(""); - var textChange = new TextChange(1, 1, oldBuffer, 0, newBuffer); - - // Act - var text = textChange.NewText; - - // Assert - Assert.Equal(string.Empty, text); - } - - [Fact] - public void NewTextWithReplaceReturnsChangedTextFromBuffer() - { - // Arrange - var newBuffer = new StringTextBuffer("test"); - var oldBuffer = new StringTextBuffer("tebb"); - var textChange = new TextChange(2, 2, oldBuffer, 1, newBuffer); - - // Act - var newText = textChange.NewText; - var oldText = textChange.OldText; - - // Assert - Assert.Equal("s", newText); - Assert.Equal("bb", oldText); - } - - [Fact] - public void NormalizeFixesUpIntelliSenseStyleReplacements() - { - // Arrange - var newBuffer = new StringTextBuffer("Date."); - var oldBuffer = new StringTextBuffer("Date"); - var original = new TextChange(0, 4, oldBuffer, 5, newBuffer); - - // Act - var normalized = original.Normalize(); - - // Assert - Assert.Equal(new TextChange(4, 0, oldBuffer, 1, newBuffer), normalized); - } - - [Fact] - public void NormalizeDoesntAffectChangesWithoutCommonPrefixes() - { - // Arrange - var newBuffer = new StringTextBuffer("DateTime."); - var oldBuffer = new StringTextBuffer("Date."); - var original = new TextChange(0, 5, oldBuffer, 9, newBuffer); - - // Act - var normalized = original.Normalize(); - - // Assert - Assert.Equal(original, normalized); - } - - [Fact] - public void NormalizeDoesntAffectShrinkingReplacements() - { - // Arrange - var newBuffer = new StringTextBuffer("D"); - var oldBuffer = new StringTextBuffer("DateTime"); - var original = new TextChange(0, 8, oldBuffer, 1, newBuffer); - - // Act - var normalized = original.Normalize(); - - // Assert - Assert.Equal(original, normalized); - } - } -} -#pragma warning restore CS0612 // Type or member is obsolete \ No newline at end of file diff --git a/test/Microsoft.AspNetCore.Razor.Language.Test/RazorSyntaxTreeTest.cs b/test/Microsoft.AspNetCore.Razor.Language.Test/RazorSyntaxTreeTest.cs index f34b761db9..55480e00e0 100644 --- a/test/Microsoft.AspNetCore.Razor.Language.Test/RazorSyntaxTreeTest.cs +++ b/test/Microsoft.AspNetCore.Razor.Language.Test/RazorSyntaxTreeTest.cs @@ -72,7 +72,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Test Assert.NotNull(syntaxTree); Assert.Equal(6, syntaxTree.Root.Children.Count); var block = Assert.IsType(syntaxTree.Root.Children[4]); - Assert.Equal(BlockKind.Directive, block.Type); + Assert.Equal(BlockKindInternal.Directive, block.Type); Assert.Empty(syntaxTree.Diagnostics); } }