Make ErrorSink and Tokenizer depend on RazorDiagnostic instead of RazorError
This commit is contained in:
parent
6bbd063e26
commit
085838e83a
|
|
@ -58,9 +58,8 @@ namespace Microsoft.AspNetCore.Razor.Language
|
||||||
var root = syntaxTree.Root;
|
var root = syntaxTree.Root;
|
||||||
root = rewriter.Rewrite(root, errorSink);
|
root = rewriter.Rewrite(root, errorSink);
|
||||||
|
|
||||||
// Temporary code while we're still using legacy diagnostics in the SyntaxTree.
|
|
||||||
var errorList = new List<RazorDiagnostic>();
|
var errorList = new List<RazorDiagnostic>();
|
||||||
errorList.AddRange(errorSink.Errors.Select(error => RazorDiagnostic.Create(error)));
|
errorList.AddRange(errorSink.Errors);
|
||||||
|
|
||||||
errorList.AddRange(descriptors.SelectMany(d => d.GetAllDiagnostics()));
|
errorList.AddRange(descriptors.SelectMany(d => d.GetAllDiagnostics()));
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1840,8 +1840,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
{
|
{
|
||||||
if (directiveErrorSink.Errors.Count > 0)
|
if (directiveErrorSink.Errors.Count > 0)
|
||||||
{
|
{
|
||||||
var directiveDiagnostics = directiveErrorSink.Errors.Select(error => RazorDiagnostic.Create(error));
|
directiveChunkGenerator.Diagnostics.AddRange(directiveErrorSink.Errors);
|
||||||
directiveChunkGenerator.Diagnostics.AddRange(directiveDiagnostics);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Context.ErrorSink = savedErrorSink;
|
Context.ErrorSink = savedErrorSink;
|
||||||
|
|
@ -2223,17 +2222,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
}
|
}
|
||||||
finally
|
finally
|
||||||
{
|
{
|
||||||
List<RazorDiagnostic> directiveErrors;
|
Span.ChunkGenerator = chunkGeneratorFactory(directiveValue, directiveErrorSink.Errors.ToList());
|
||||||
if (directiveErrorSink.Errors.Count > 0)
|
|
||||||
{
|
|
||||||
directiveErrors = directiveErrorSink.Errors.Select(RazorDiagnostic.Create).ToList();
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
directiveErrors = new List<RazorDiagnostic>();
|
|
||||||
}
|
|
||||||
|
|
||||||
Span.ChunkGenerator = chunkGeneratorFactory(directiveValue, directiveErrors);
|
|
||||||
Context.ErrorSink = savedErrorSink;
|
Context.ErrorSink = savedErrorSink;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -74,7 +74,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
return new CSharpTokenizer(source);
|
return new CSharpTokenizer(source);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override CSharpSymbol CreateSymbol(string content, CSharpSymbolType type, IReadOnlyList<RazorError> errors)
|
protected override CSharpSymbol CreateSymbol(string content, CSharpSymbolType type, IReadOnlyList<RazorDiagnostic> errors)
|
||||||
{
|
{
|
||||||
return new CSharpSymbol(content, type, errors);
|
return new CSharpSymbol(content, type, errors);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -11,7 +11,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
public CSharpSymbol(
|
public CSharpSymbol(
|
||||||
string content,
|
string content,
|
||||||
CSharpSymbolType type)
|
CSharpSymbolType type)
|
||||||
: base(content, type, RazorError.EmptyArray)
|
: base(content, type, RazorDiagnostic.EmptyArray)
|
||||||
{
|
{
|
||||||
if (content == null)
|
if (content == null)
|
||||||
{
|
{
|
||||||
|
|
@ -22,7 +22,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
public CSharpSymbol(
|
public CSharpSymbol(
|
||||||
string content,
|
string content,
|
||||||
CSharpSymbolType type,
|
CSharpSymbolType type,
|
||||||
IReadOnlyList<RazorError> errors)
|
IReadOnlyList<RazorDiagnostic> errors)
|
||||||
: base(content, type, errors)
|
: base(content, type, errors)
|
||||||
{
|
{
|
||||||
if (content == null)
|
if (content == null)
|
||||||
|
|
|
||||||
|
|
@ -343,7 +343,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
return base.GetSymbolContent(type);
|
return base.GetSymbolContent(type);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override CSharpSymbol CreateSymbol(string content, CSharpSymbolType type, IReadOnlyList<RazorError> errors)
|
protected override CSharpSymbol CreateSymbol(string content, CSharpSymbolType type, IReadOnlyList<RazorDiagnostic> errors)
|
||||||
{
|
{
|
||||||
return new CSharpSymbol(content, type, errors);
|
return new CSharpSymbol(content, type, errors);
|
||||||
}
|
}
|
||||||
|
|
@ -547,10 +547,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
else if (EndOfFile)
|
else if (EndOfFile)
|
||||||
{
|
{
|
||||||
CurrentErrors.Add(
|
CurrentErrors.Add(
|
||||||
new RazorError(
|
RazorDiagnostic.Create(
|
||||||
LegacyResources.ParseError_Unterminated_String_Literal,
|
new RazorError(
|
||||||
CurrentStart,
|
LegacyResources.ParseError_Unterminated_String_Literal,
|
||||||
length: 1 /* end of file */));
|
CurrentStart,
|
||||||
|
length: 1 /* end of file */)));
|
||||||
}
|
}
|
||||||
return Transition(CSharpTokenizerState.Data, EndSymbol(CSharpSymbolType.StringLiteral));
|
return Transition(CSharpTokenizerState.Data, EndSymbol(CSharpSymbolType.StringLiteral));
|
||||||
}
|
}
|
||||||
|
|
@ -576,10 +577,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
else if (EndOfFile || ParserHelpers.IsNewLine(CurrentCharacter))
|
else if (EndOfFile || ParserHelpers.IsNewLine(CurrentCharacter))
|
||||||
{
|
{
|
||||||
CurrentErrors.Add(
|
CurrentErrors.Add(
|
||||||
new RazorError(
|
RazorDiagnostic.Create(new RazorError(
|
||||||
LegacyResources.ParseError_Unterminated_String_Literal,
|
LegacyResources.ParseError_Unterminated_String_Literal,
|
||||||
CurrentStart,
|
CurrentStart,
|
||||||
length: 1 /* " */));
|
length: 1 /* " */)));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
@ -595,10 +596,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
if (EndOfFile)
|
if (EndOfFile)
|
||||||
{
|
{
|
||||||
CurrentErrors.Add(
|
CurrentErrors.Add(
|
||||||
new RazorError(
|
RazorDiagnostic.Create(new RazorError(
|
||||||
LegacyResources.ParseError_BlockComment_Not_Terminated,
|
LegacyResources.ParseError_BlockComment_Not_Terminated,
|
||||||
CurrentStart,
|
CurrentStart,
|
||||||
length: 1 /* end of file */));
|
length: 1 /* end of file */)));
|
||||||
return Transition(CSharpTokenizerState.Data, EndSymbol(CSharpSymbolType.Comment));
|
return Transition(CSharpTokenizerState.Data, EndSymbol(CSharpSymbolType.Comment));
|
||||||
}
|
}
|
||||||
if (CurrentCharacter == '*')
|
if (CurrentCharacter == '*')
|
||||||
|
|
|
||||||
|
|
@ -6,40 +6,41 @@ using System.Collections.Generic;
|
||||||
namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Used to manage <see cref="RazorError"/>s encountered during the Razor parsing phase.
|
/// Used to manage <see cref="RazorDiagnostic"/>s encountered during the Razor parsing phase.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
internal class ErrorSink
|
internal class ErrorSink
|
||||||
{
|
{
|
||||||
private readonly List<RazorError> _errors;
|
private readonly List<RazorDiagnostic> _errors;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Instantiates a new instance of <see cref="ErrorSink"/>.
|
/// Instantiates a new instance of <see cref="ErrorSink"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public ErrorSink()
|
public ErrorSink()
|
||||||
{
|
{
|
||||||
_errors = new List<RazorError>();
|
_errors = new List<RazorDiagnostic>();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// <see cref="RazorError"/>s collected.
|
/// <see cref="RazorDiagnostic"/>s collected.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public IReadOnlyList<RazorError> Errors => _errors;
|
public IReadOnlyList<RazorDiagnostic> Errors => _errors;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Tracks the given <paramref name="error"/>.
|
/// Tracks the given <paramref name="error"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="error">The <see cref="RazorError"/> to track.</param>
|
/// <param name="error">The <see cref="RazorError"/> to track.</param>
|
||||||
public void OnError(RazorError error) =>_errors.Add(error);
|
public void OnError(RazorDiagnostic error) =>_errors.Add(error);
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Creates and tracks a new <see cref="RazorError"/>.
|
/// Creates and tracks a new <see cref="RazorDiagnostic"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="location"><see cref="SourceLocation"/> of the error.</param>
|
/// <param name="location"><see cref="SourceLocation"/> of the error.</param>
|
||||||
/// <param name="message">A message describing the error.</param>
|
/// <param name="message">A message describing the error.</param>
|
||||||
/// <param name="length">The length of the error.</param>
|
/// <param name="length">The length of the error.</param>
|
||||||
|
/// <remarks>This is temporary. It will be removed once we get rid of <see cref="LegacyRazorDiagnostic"/>.</remarks>
|
||||||
public void OnError(SourceLocation location, string message, int length)
|
public void OnError(SourceLocation location, string message, int length)
|
||||||
{
|
{
|
||||||
var error = new RazorError(message, location, length);
|
var error = RazorDiagnostic.Create(new RazorError(message, location, length));
|
||||||
_errors.Add(error);
|
_errors.Add(error);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override HtmlSymbol CreateSymbol(string content, HtmlSymbolType type, IReadOnlyList<RazorError> errors)
|
protected override HtmlSymbol CreateSymbol(string content, HtmlSymbolType type, IReadOnlyList<RazorDiagnostic> errors)
|
||||||
{
|
{
|
||||||
return new HtmlSymbol(content, type, errors);
|
return new HtmlSymbol(content, type, errors);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
internal class HtmlSymbol : SymbolBase<HtmlSymbolType>
|
internal class HtmlSymbol : SymbolBase<HtmlSymbolType>
|
||||||
{
|
{
|
||||||
public HtmlSymbol(string content, HtmlSymbolType type)
|
public HtmlSymbol(string content, HtmlSymbolType type)
|
||||||
: base(content, type, RazorError.EmptyArray)
|
: base(content, type, RazorDiagnostic.EmptyArray)
|
||||||
{
|
{
|
||||||
if (content == null)
|
if (content == null)
|
||||||
{
|
{
|
||||||
|
|
@ -20,7 +20,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
public HtmlSymbol(
|
public HtmlSymbol(
|
||||||
string content,
|
string content,
|
||||||
HtmlSymbolType type,
|
HtmlSymbolType type,
|
||||||
IReadOnlyList<RazorError> errors)
|
IReadOnlyList<RazorDiagnostic> errors)
|
||||||
: base(content, type, errors)
|
: base(content, type, errors)
|
||||||
{
|
{
|
||||||
if (content == null)
|
if (content == null)
|
||||||
|
|
|
||||||
|
|
@ -36,7 +36,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
get { return HtmlSymbolType.RazorCommentStar; }
|
get { return HtmlSymbolType.RazorCommentStar; }
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override HtmlSymbol CreateSymbol(string content, HtmlSymbolType type, IReadOnlyList<RazorError> errors)
|
protected override HtmlSymbol CreateSymbol(string content, HtmlSymbolType type, IReadOnlyList<RazorDiagnostic> errors)
|
||||||
{
|
{
|
||||||
return new HtmlSymbol(content, type, errors);
|
return new HtmlSymbol(content, type, errors);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -86,7 +86,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
|
|
||||||
public virtual Tuple<TSymbol, TSymbol> SplitSymbol(TSymbol symbol, int splitAt, TSymbolType leftType)
|
public virtual Tuple<TSymbol, TSymbol> SplitSymbol(TSymbol symbol, int splitAt, TSymbolType leftType)
|
||||||
{
|
{
|
||||||
var left = CreateSymbol(symbol.Content.Substring(0, splitAt), leftType, RazorError.EmptyArray);
|
var left = CreateSymbol(symbol.Content.Substring(0, splitAt), leftType, RazorDiagnostic.EmptyArray);
|
||||||
|
|
||||||
TSymbol right = null;
|
TSymbol right = null;
|
||||||
if (splitAt < symbol.Content.Length)
|
if (splitAt < symbol.Content.Length)
|
||||||
|
|
@ -104,6 +104,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
return type == KnownSymbolType.Unknown || !Equals(GetKnownSymbolType(type), GetKnownSymbolType(KnownSymbolType.Unknown));
|
return type == KnownSymbolType.Unknown || !Equals(GetKnownSymbolType(type), GetKnownSymbolType(KnownSymbolType.Unknown));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract TSymbol CreateSymbol(string content, TSymbolType type, IReadOnlyList<RazorError> errors);
|
protected abstract TSymbol CreateSymbol(string content, TSymbolType type, IReadOnlyList<RazorDiagnostic> errors);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -43,8 +43,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
|
|
||||||
var root = context.Builder.Build();
|
var root = context.Builder.Build();
|
||||||
|
|
||||||
// Temporary code while we're still using legacy diagnostics in the SyntaxTree.
|
var diagnostics = context.ErrorSink.Errors;
|
||||||
var diagnostics = context.ErrorSink.Errors.Select(error => RazorDiagnostic.Create(error));
|
|
||||||
|
|
||||||
return RazorSyntaxTree.Create(root, source, diagnostics, Options);
|
return RazorSyntaxTree.Create(root, source, diagnostics, Options);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -13,7 +13,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
protected SymbolBase(
|
protected SymbolBase(
|
||||||
string content,
|
string content,
|
||||||
TType type,
|
TType type,
|
||||||
IReadOnlyList<RazorError> errors)
|
IReadOnlyList<RazorDiagnostic> errors)
|
||||||
{
|
{
|
||||||
if (content == null)
|
if (content == null)
|
||||||
{
|
{
|
||||||
|
|
@ -27,7 +27,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
|
|
||||||
public Span Parent { get; set; }
|
public Span Parent { get; set; }
|
||||||
|
|
||||||
public IReadOnlyList<RazorError> Errors { get; }
|
public IReadOnlyList<RazorDiagnostic> Errors { get; }
|
||||||
|
|
||||||
public string Content { get; }
|
public string Content { get; }
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,11 +21,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
|
|
||||||
Source = source;
|
Source = source;
|
||||||
Buffer = new StringBuilder();
|
Buffer = new StringBuilder();
|
||||||
CurrentErrors = new List<RazorError>();
|
CurrentErrors = new List<RazorDiagnostic>();
|
||||||
StartSymbol();
|
StartSymbol();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected List<RazorError> CurrentErrors { get; }
|
protected List<RazorDiagnostic> CurrentErrors { get; }
|
||||||
|
|
||||||
protected abstract int StartState { get; }
|
protected abstract int StartState { get; }
|
||||||
|
|
||||||
|
|
@ -64,7 +64,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
|
|
||||||
public SourceLocation CurrentStart { get; private set; }
|
public SourceLocation CurrentStart { get; private set; }
|
||||||
|
|
||||||
protected abstract TSymbol CreateSymbol(string content, TSymbolType type, IReadOnlyList<RazorError> errors);
|
protected abstract TSymbol CreateSymbol(string content, TSymbolType type, IReadOnlyList<RazorDiagnostic> errors);
|
||||||
|
|
||||||
protected abstract StateResult Dispatch();
|
protected abstract StateResult Dispatch();
|
||||||
|
|
||||||
|
|
@ -205,7 +205,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
if (HaveContent)
|
if (HaveContent)
|
||||||
{
|
{
|
||||||
// Perf: Don't allocate a new errors array unless necessary.
|
// Perf: Don't allocate a new errors array unless necessary.
|
||||||
var errors = CurrentErrors.Count == 0 ? RazorError.EmptyArray : new RazorError[CurrentErrors.Count];
|
var errors = CurrentErrors.Count == 0 ? RazorDiagnostic.EmptyArray : new RazorDiagnostic[CurrentErrors.Count];
|
||||||
for (var i = 0; i < CurrentErrors.Count; i++)
|
for (var i = 0; i < CurrentErrors.Count; i++)
|
||||||
{
|
{
|
||||||
errors[i] = CurrentErrors[i];
|
errors[i] = CurrentErrors[i];
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
||||||
{
|
{
|
||||||
public abstract class RazorDiagnostic : IEquatable<RazorDiagnostic>, IFormattable
|
public abstract class RazorDiagnostic : IEquatable<RazorDiagnostic>, IFormattable
|
||||||
{
|
{
|
||||||
|
internal static readonly RazorDiagnostic[] EmptyArray = new RazorDiagnostic[0];
|
||||||
internal static readonly object[] EmptyArgs = new object[0];
|
internal static readonly object[] EmptyArgs = new object[0];
|
||||||
|
|
||||||
public abstract string Id { get; }
|
public abstract string Id { get; }
|
||||||
|
|
|
||||||
|
|
@ -63,7 +63,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
|
|
||||||
var actualTree = parseTreeRewriter.Rewrite(syntaxTree.Root, errorSink);
|
var actualTree = parseTreeRewriter.Rewrite(syntaxTree.Root, errorSink);
|
||||||
|
|
||||||
var allErrors = syntaxTree.Diagnostics.Concat(errorSink.Errors.Select(error => RazorDiagnostic.Create(error)));
|
var allErrors = syntaxTree.Diagnostics.Concat(errorSink.Errors);
|
||||||
var actualErrors = allErrors
|
var actualErrors = allErrors
|
||||||
.OrderBy(error => error.Span.AbsoluteIndex)
|
.OrderBy(error => error.Span.AbsoluteIndex)
|
||||||
.ToList();
|
.ToList();
|
||||||
|
|
|
||||||
|
|
@ -106,7 +106,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
protected override CSharpSymbol CreateSymbol(
|
protected override CSharpSymbol CreateSymbol(
|
||||||
string content,
|
string content,
|
||||||
CSharpSymbolType type,
|
CSharpSymbolType type,
|
||||||
IReadOnlyList<RazorError> errors)
|
IReadOnlyList<RazorDiagnostic> errors)
|
||||||
{
|
{
|
||||||
throw new NotImplementedException();
|
throw new NotImplementedException();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -60,7 +60,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
markupParser.ParseDocument();
|
markupParser.ParseDocument();
|
||||||
|
|
||||||
var root = context.Builder.Build();
|
var root = context.Builder.Build();
|
||||||
var diagnostics = context.ErrorSink.Errors?.Select(error => RazorDiagnostic.Create(error));
|
var diagnostics = context.ErrorSink.Errors;
|
||||||
|
|
||||||
var codeDocument = RazorCodeDocument.Create(source);
|
var codeDocument = RazorCodeDocument.Create(source);
|
||||||
|
|
||||||
|
|
@ -90,7 +90,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
parser.ParseBlock();
|
parser.ParseBlock();
|
||||||
|
|
||||||
var root = context.Builder.Build();
|
var root = context.Builder.Build();
|
||||||
var diagnostics = context.ErrorSink.Errors?.Select(error => RazorDiagnostic.Create(error));
|
var diagnostics = context.ErrorSink.Errors;
|
||||||
|
|
||||||
return RazorSyntaxTree.Create(root, source, diagnostics, options);
|
return RazorSyntaxTree.Create(root, source, diagnostics, options);
|
||||||
}
|
}
|
||||||
|
|
@ -120,7 +120,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||||
parser.ParseBlock();
|
parser.ParseBlock();
|
||||||
|
|
||||||
var root = context.Builder.Build();
|
var root = context.Builder.Build();
|
||||||
var diagnostics = context.ErrorSink.Errors?.Select(error => RazorDiagnostic.Create(error));
|
var diagnostics = context.ErrorSink.Errors;
|
||||||
|
|
||||||
return RazorSyntaxTree.Create(root, source, diagnostics, options);
|
return RazorSyntaxTree.Create(root, source, diagnostics, options);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue