Moved CSharpCodeParser out of LegacyRazorDiagnostic

This commit is contained in:
Ajay Bhargav Baaskaran 2017-12-18 12:06:25 -08:00
parent 926dae0d88
commit 808f539297
57 changed files with 779 additions and 940 deletions

View File

@ -3,7 +3,6 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
namespace Microsoft.AspNetCore.Razor.Language

View File

@ -296,10 +296,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
StringComparison.Ordinal))
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.FormatParseError_HelperDirectiveNotAvailable(
SyntaxConstants.CSharp.HelperKeyword),
CurrentSymbol.Content.Length);
RazorDiagnosticFactory.CreateParsing_HelperDirectiveNotAvailable(
new SourceSpan(CurrentStart, CurrentSymbol.Content.Length)));
}
Context.Builder.CurrentBlock.Type = BlockKindInternal.Expression;
@ -344,24 +342,21 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (At(CSharpSymbolType.WhiteSpace) || At(CSharpSymbolType.NewLine))
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS,
CurrentSymbol.Content.Length);
RazorDiagnosticFactory.CreateParsing_UnexpectedWhiteSpaceAtStartOfCodeBlock(
new SourceSpan(CurrentStart, CurrentSymbol.Content.Length)));
}
else if (EndOfFile)
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock,
length: 1 /* end of file */);
RazorDiagnosticFactory.CreateParsing_UnexpectedEndOfFileAtStartOfCodeBlock(
new SourceSpan(CurrentStart, contentLength: 1 /* end of file */)));
}
else
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS(
CurrentSymbol.Content),
CurrentSymbol.Content.Length);
RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
new SourceSpan(CurrentStart, CurrentSymbol.Content.Length),
CurrentSymbol.Content));
}
}
finally
@ -634,9 +629,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
AcceptUntil(CSharpSymbolType.LessThan);
Context.ErrorSink.OnError(
block.Start,
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(block.Name, ")", "("),
length: 1 /* ( */);
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(block.Start, contentLength: 1 /* ( */), block.Name, ")", "("));
}
// If necessary, put an empty-content marker symbol here
@ -664,9 +658,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (Context.Builder.ActiveBlocks.Any(block => block.Type == BlockKindInternal.Template))
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.ParseError_InlineMarkup_Blocks_Cannot_Be_Nested,
length: 1 /* @ */);
RazorDiagnosticFactory.CreateParsing_InlineMarkupBlocksCannotBeNested(
new SourceSpan(CurrentStart, contentLength: 1 /* @ */)));
}
Output(SpanKindInternal.Code);
using (Context.Builder.StartBlock(BlockKindInternal.Template))
@ -767,9 +760,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
protected virtual void ReservedDirective(bool topLevel)
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.FormatParseError_ReservedWord(CurrentSymbol.Content),
CurrentSymbol.Content.Length);
RazorDiagnosticFactory.CreateParsing_ReservedWord(
new SourceSpan(CurrentStart, CurrentSymbol.Content.Length), CurrentSymbol.Content));
AcceptAndMoveNext();
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
Span.ChunkGenerator = SpanChunkGenerator.Null;
@ -850,9 +843,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (!topLevel)
{
Context.ErrorSink.OnError(
block.Start,
LegacyResources.ParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock,
block.Name.Length);
RazorDiagnosticFactory.CreateParsing_NamespaceImportAndTypeAliasCannotExistWithinCodeBlock(
new SourceSpan(block.Start, block.Name.Length)));
StandardStatement();
}
else
@ -1170,11 +1162,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (!At(CSharpSymbolType.LeftBrace))
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.FormatParseError_SingleLine_ControlFlowStatements_Not_Allowed(
RazorDiagnosticFactory.CreateParsing_SingleLineControlFlowStatementsNotAllowed(
new SourceSpan(CurrentStart, CurrentSymbol.Content.Length),
Language.GetSample(CSharpSymbolType.LeftBrace),
CurrentSymbol.Content),
CurrentSymbol.Content.Length);
CurrentSymbol.Content));
}
// Parse the statement and then we're done
@ -1333,9 +1324,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (type == CSharpSymbolType.Transition && !isSingleLineMarkup)
{
Context.ErrorSink.OnError(
loc,
LegacyResources.ParseError_AtInCode_Must_Be_Followed_By_Colon_Paren_Or_Identifier_Start,
length: 1 /* @ */);
RazorDiagnosticFactory.CreateParsing_AtInCodeMustBeFollowedByColonParenOrIdentifierStart(
new SourceSpan(loc, contentLength: 1 /* @ */)));
}
// Markup block
@ -1417,9 +1407,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (At(CSharpSymbolType.LeftBrace))
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.ParseError_Unexpected_Nested_CodeBlock,
length: 1 /* { */);
RazorDiagnosticFactory.CreateParsing_UnexpectedNestedCodeBlock(
new SourceSpan(CurrentStart, contentLength: 1 /* { */)));
}
// @( or @foo - Nested expression, parse a child block
@ -1513,9 +1502,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (EndOfFile)
{
Context.ErrorSink.OnError(
block.Start,
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(block.Name, '}', '{'),
length: 1 /* { OR } */);
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(block.Start, contentLength: 1 /* { OR } */), block.Name, "}", "{"));
}
else if (acceptTerminatingBrace)
{
@ -1624,9 +1612,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var currentDirective = CurrentSymbol.Content;
Context.ErrorSink.OnError(
CurrentStart,
Resources.FormatDirectiveMustAppearAtStartOfLine(currentDirective),
length: currentDirective.Length);
RazorDiagnosticFactory.CreateParsing_DirectiveMustAppearAtStartOfLine(
new SourceSpan(CurrentStart, currentDirective.Length), currentDirective));
break;
}
}
@ -1662,9 +1649,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
!EndOfFile)
{
Context.ErrorSink.OnError(
CurrentStart,
Resources.FormatDirectiveTokensMustBeSeparatedByWhitespace(descriptor.Directive),
length: CurrentSymbol.Content.Length);
RazorDiagnosticFactory.CreateParsing_DirectiveTokensMustBeSeparatedByWhitespace(
new SourceSpan(CurrentStart, CurrentSymbol.Content.Length), descriptor.Directive));
return;
}
@ -1700,9 +1686,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
else if (EndOfFile)
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.FormatUnexpectedEOFAfterDirective(descriptor.Directive, tokenDescriptor.Kind.ToString().ToLowerInvariant()),
length: 1);
RazorDiagnosticFactory.CreateParsing_UnexpectedEOFAfterDirective(
new SourceSpan(CurrentStart, contentLength: 1),
descriptor.Directive,
tokenDescriptor.Kind.ToString().ToLowerInvariant()));
return;
}
@ -1712,9 +1699,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (!NamespaceOrTypeName())
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.FormatDirectiveExpectsTypeName(descriptor.Directive),
CurrentSymbol.Content.Length);
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsTypeName(
new SourceSpan(CurrentStart, CurrentSymbol.Content.Length), descriptor.Directive));
return;
}
@ -1724,9 +1710,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (!QualifiedIdentifier(out var identifierLength))
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.FormatDirectiveExpectsNamespace(descriptor.Directive),
identifierLength);
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsNamespace(
new SourceSpan(CurrentStart, identifierLength), descriptor.Directive));
return;
}
@ -1740,9 +1725,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
else
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.FormatDirectiveExpectsIdentifier(descriptor.Directive),
CurrentSymbol.Content.Length);
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsIdentifier(
new SourceSpan(CurrentStart, CurrentSymbol.Content.Length), descriptor.Directive));
return;
}
break;
@ -1755,9 +1739,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
else
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.FormatDirectiveExpectsQuotedStringLiteral(descriptor.Directive),
CurrentSymbol.Content.Length);
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsQuotedStringLiteral(
new SourceSpan(CurrentStart, CurrentSymbol.Content.Length), descriptor.Directive));
return;
}
break;
@ -1789,9 +1772,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
else if (!EndOfFile)
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.FormatUnexpectedDirectiveLiteral(descriptor.Directive, LegacyResources.ErrorComponent_Newline),
CurrentSymbol.Content.Length);
RazorDiagnosticFactory.CreateParsing_UnexpectedDirectiveLiteral(
new SourceSpan(CurrentStart, CurrentSymbol.Content.Length),
descriptor.Directive,
LegacyResources.ErrorComponent_Newline));
}
Span.ChunkGenerator = SpanChunkGenerator.Null;
@ -1854,18 +1838,16 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
if (Context.SeenDirectives.Contains(descriptor.Directive))
{
UsageError(Resources.FormatDuplicateDirective(descriptor.Directive));
// There will always be at least 1 child because of the `@` transition.
var directiveStart = Context.Builder.CurrentBlock.Children.First().Start;
var errorLength = /* @ */ 1 + descriptor.Directive.Length;
Context.ErrorSink.OnError(
RazorDiagnosticFactory.CreateParsing_DuplicateDirective(
new SourceSpan(directiveStart, errorLength), descriptor.Directive));
return;
}
}
void UsageError(string message)
{
// There wil always be at least 1 child because of the `@` transition.
var directiveStart = Context.Builder.CurrentBlock.Children.First().Start;
var errorLength = /* @ */ 1 + descriptor.Directive.Length;
Context.ErrorSink.OnError(directiveStart, message, errorLength);
}
}
private void ParseDirectiveBlock(DirectiveDescriptor descriptor, Action<SourceLocation> parseChildren)
@ -1873,16 +1855,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (EndOfFile)
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.FormatUnexpectedEOFAfterDirective(descriptor.Directive, "{"),
length: 1 /* { */);
RazorDiagnosticFactory.CreateParsing_UnexpectedEOFAfterDirective(
new SourceSpan(CurrentStart, contentLength: 1 /* { */), descriptor.Directive, "{"));
}
else if (!At(CSharpSymbolType.LeftBrace))
{
Context.ErrorSink.OnError(
CurrentStart,
LegacyResources.FormatUnexpectedDirectiveLiteral(descriptor.Directive, "{"),
CurrentSymbol.Content.Length);
RazorDiagnosticFactory.CreateParsing_UnexpectedDirectiveLiteral(
new SourceSpan(CurrentStart, CurrentSymbol.Content.Length), descriptor.Directive, "{"));
}
else
{
@ -1900,9 +1880,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
editHandler.AutoCompleteString = "}";
Context.ErrorSink.OnError(
startingBraceLocation,
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(descriptor.Directive, "}", "{"),
length: 1 /* } */);
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(startingBraceLocation, contentLength: 1 /* } */), descriptor.Directive, "}", "{"));
}
else
{
@ -1923,8 +1902,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var directiveStart = Context.Builder.CurrentBlock.Children.First().Start;
var errorLength = /* @ */ 1 + SyntaxConstants.CSharp.TagHelperPrefixKeyword.Length;
duplicateDiagnostic = RazorDiagnosticFactory.CreateParsing_DuplicateDirective(
SyntaxConstants.CSharp.TagHelperPrefixKeyword,
new SourceSpan(directiveStart, errorLength));
new SourceSpan(directiveStart, errorLength),
SyntaxConstants.CSharp.TagHelperPrefixKeyword);
}
TagHelperDirective(
@ -1957,11 +1936,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (char.IsWhiteSpace(character) || InvalidNonWhitespaceNameCharacters.Contains(character))
{
diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
Resources.FormatInvalidTagHelperPrefixValue(SyntaxConstants.CSharp.TagHelperPrefixKeyword, character, prefix),
directiveLocation,
prefix.Length)));
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperPrefixValue(
new SourceSpan(directiveLocation, prefix.Length),
SyntaxConstants.CSharp.TagHelperPrefixKeyword,
character,
prefix));
return;
}
@ -2036,11 +2015,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
text.EndsWith("'"))
{
errors.Add(
RazorDiagnostic.Create(
new RazorError(
Resources.FormatInvalidTagHelperLookupText(text),
directiveLocation,
Math.Max(text.Length, 1))));
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(directiveLocation, Math.Max(text.Length, 1)), text));
return directive;
}
@ -2099,59 +2075,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Debug.Assert(string.Equals(CurrentSymbol.Content, directive, StringComparison.Ordinal));
}
protected void BaseTypeDirective(string noTypeNameError, Func<string, SpanChunkGenerator> createChunkGenerator)
{
var keywordStartLocation = Span.Start;
// Set the block type
Context.Builder.CurrentBlock.Type = BlockKindInternal.Directive;
var keywordLength = Span.End.AbsoluteIndex - Span.Start.AbsoluteIndex;
// Accept whitespace
var remainingWhitespace = AcceptSingleWhiteSpaceCharacter();
if (Span.Symbols.Count > 1)
{
Span.EditHandler.AcceptedCharacters = AcceptedCharactersInternal.None;
}
Output(SpanKindInternal.MetaCode);
if (remainingWhitespace != null)
{
Accept(remainingWhitespace);
}
AcceptWhile(IsSpacingToken(includeNewLines: false, includeComments: true));
if (EndOfFile || At(CSharpSymbolType.WhiteSpace) || At(CSharpSymbolType.NewLine))
{
Context.ErrorSink.OnError(
keywordStartLocation,
noTypeNameError,
keywordLength);
}
// Parse to the end of the line
AcceptUntil(CSharpSymbolType.NewLine);
if (!Context.DesignTimeMode)
{
// We want the newline to be treated as code, but it causes issues at design-time.
Optional(CSharpSymbolType.NewLine);
}
// Pull out the type name
var baseType = string.Concat(Span.Symbols.Select(s => s.Content));
// Set up chunk generation
Span.ChunkGenerator = createChunkGenerator(baseType.Trim());
// Output the span and finish the block
CompleteBlock();
Output(SpanKindInternal.Code, AcceptedCharactersInternal.AnyExceptNewline);
}
private void TagHelperDirective(string keyword, Func<string, List<RazorDiagnostic>, ISpanChunkGenerator> chunkGeneratorFactory)
{
AssertDirective(keyword);
@ -2189,9 +2112,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (EndOfFile || At(CSharpSymbolType.NewLine))
{
Context.ErrorSink.OnError(
keywordStartLocation,
LegacyResources.FormatParseError_DirectiveMustHaveValue(keyword),
keywordLength);
RazorDiagnosticFactory.CreateParsing_DirectiveMustHaveValue(
new SourceSpan(keywordStartLocation, keywordLength), keyword));
directiveValue = string.Empty;
}
@ -2212,9 +2134,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
if (startsWithQuote != endsWithQuote)
{
Context.ErrorSink.OnError(
startLocation,
LegacyResources.FormatParseError_IncompleteQuotesAroundDirective(keyword),
rawValue.Length);
RazorDiagnosticFactory.CreateParsing_IncompleteQuotesAroundDirective(
new SourceSpan(startLocation, rawValue.Length), keyword));
}
directiveValue = rawValue;

View File

@ -224,9 +224,10 @@
<data name="ParseError_AtInCode_Must_Be_Followed_By_Colon_Paren_Or_Identifier_Start" xml:space="preserve">
<value>The "@" character must be followed by a ":", "(", or a C# identifier. If you intended to switch to markup, use an HTML start tag, for example:
@if(isLoggedIn) {
@if(isLoggedIn) {{
&lt;p&gt;Hello, @user!&lt;/p&gt;
}</value>
}}</value>
<comment>"{{" is an escape sequence for string.Format, when outputted to the user it will be displayed as "{"</comment>
</data>
<data name="ParseError_BlockComment_Not_Terminated" xml:space="preserve">
<value>End of file was reached before the end of the block comment. All comments started with "/*" sequence must be terminated with a matching "*/" sequence.</value>
@ -272,9 +273,10 @@
<value>Namespace imports and type aliases cannot be placed within code blocks. They must immediately follow an "@" character in markup. It is recommended that you put them at the top of the page, as in the following example:
@using System.Drawing;
@{
@{{
// OK here to use types from System.Drawing in the page.
}</value>
}}</value>
<comment>"{{" is an escape sequence for string.Format, when outputted to the user it will be displayed as "{"</comment>
</data>
<data name="ParseError_OuterTagMissingName" xml:space="preserve">
<value>Outer tag is missing a name. The first character of a markup block must be an HTML tag with a valid name.</value>
@ -321,10 +323,12 @@ Instead, wrap the contents of the block in "{{}}":
<value>End-of-file was found after the "@" character. "@" must be followed by a valid code block. If you want to output an "@", escape it using the sequence: "@@"</value>
</data>
<data name="ParseError_Unexpected_Nested_CodeBlock" xml:space="preserve">
<value>Unexpected "{" after "@" character. Once inside the body of a code block (@if {}, @{}, etc.) you do not need to use "@{" to switch to code.</value>
<value>Unexpected "{{" after "@" character. Once inside the body of a code block (@if {{}}, @{{}}, etc.) you do not need to use "@{{" to switch to code.</value>
<comment>"{{" is an escape sequence for string.Format, when outputted to the user it will be displayed as "{"</comment>
</data>
<data name="ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS" xml:space="preserve">
<value>A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following "@" with no space in between.</value>
<value>A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{{" are valid at the start of a code block and they must occur immediately following "@" with no space in between.</value>
<comment>"{{" is an escape sequence for string.Format, when outputted to the user it will be displayed as "{"</comment>
</data>
<data name="ParseError_UnfinishedTag" xml:space="preserve">
<value>End of file or an unexpected character was reached before the "{0}" tag could be parsed. Elements inside markup blocks must be complete. They must either be self-closing ("&lt;br /&gt;") or have matching end tags ("&lt;p&gt;Hello&lt;/p&gt;"). If you intended to display a "&lt;" character, use the "&amp;lt;" HTML entity.</value>

View File

@ -489,9 +489,9 @@ namespace Microsoft.AspNetCore.Razor.Language
/// <summary>
/// The "@" character must be followed by a ":", "(", or a C# identifier. If you intended to switch to markup, use an HTML start tag, for example:
///
/// @if(isLoggedIn) {
/// @if(isLoggedIn) {{
/// &lt;p&gt;Hello, @user!&lt;/p&gt;
/// }
/// }}
/// </summary>
internal static string ParseError_AtInCode_Must_Be_Followed_By_Colon_Paren_Or_Identifier_Start
{
@ -501,9 +501,9 @@ namespace Microsoft.AspNetCore.Razor.Language
/// <summary>
/// The "@" character must be followed by a ":", "(", or a C# identifier. If you intended to switch to markup, use an HTML start tag, for example:
///
/// @if(isLoggedIn) {
/// @if(isLoggedIn) {{
/// &lt;p&gt;Hello, @user!&lt;/p&gt;
/// }
/// }}
/// </summary>
internal static string FormatParseError_AtInCode_Must_Be_Followed_By_Colon_Paren_Or_Identifier_Start()
=> GetString("ParseError_AtInCode_Must_Be_Followed_By_Colon_Paren_Or_Identifier_Start");
@ -688,9 +688,9 @@ namespace Microsoft.AspNetCore.Razor.Language
/// Namespace imports and type aliases cannot be placed within code blocks. They must immediately follow an "@" character in markup. It is recommended that you put them at the top of the page, as in the following example:
///
/// @using System.Drawing;
/// @{
/// @{{
/// // OK here to use types from System.Drawing in the page.
/// }
/// }}
/// </summary>
internal static string ParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock
{
@ -701,9 +701,9 @@ namespace Microsoft.AspNetCore.Razor.Language
/// Namespace imports and type aliases cannot be placed within code blocks. They must immediately follow an "@" character in markup. It is recommended that you put them at the top of the page, as in the following example:
///
/// @using System.Drawing;
/// @{
/// @{{
/// // OK here to use types from System.Drawing in the page.
/// }
/// }}
/// </summary>
internal static string FormatParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock()
=> GetString("ParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock");
@ -881,7 +881,7 @@ namespace Microsoft.AspNetCore.Razor.Language
=> GetString("ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock1");
/// <summary>
/// Unexpected "{" after "@" character. Once inside the body of a code block (@if {}, @{}, etc.) you do not need to use "@{" to switch to code.
/// Unexpected "{{" after "@" character. Once inside the body of a code block (@if {{}}, @{{}}, etc.) you do not need to use "@{{" to switch to code.
/// </summary>
internal static string ParseError_Unexpected_Nested_CodeBlock
{
@ -889,13 +889,13 @@ namespace Microsoft.AspNetCore.Razor.Language
}
/// <summary>
/// Unexpected "{" after "@" character. Once inside the body of a code block (@if {}, @{}, etc.) you do not need to use "@{" to switch to code.
/// Unexpected "{{" after "@" character. Once inside the body of a code block (@if {{}}, @{{}}, etc.) you do not need to use "@{{" to switch to code.
/// </summary>
internal static string FormatParseError_Unexpected_Nested_CodeBlock()
=> GetString("ParseError_Unexpected_Nested_CodeBlock");
/// <summary>
/// A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following "@" with no space in between.
/// A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{{" are valid at the start of a code block and they must occur immediately following "@" with no space in between.
/// </summary>
internal static string ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS
{
@ -903,7 +903,7 @@ namespace Microsoft.AspNetCore.Razor.Language
}
/// <summary>
/// A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following "@" with no space in between.
/// A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{{" are valid at the start of a code block and they must occur immediately following "@" with no space in between.
/// </summary>
internal static string FormatParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS()
=> GetString("ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS");

View File

@ -2,6 +2,7 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.AspNetCore.Razor.Language.Legacy;
namespace Microsoft.AspNetCore.Razor.Language
{
@ -49,6 +50,206 @@ namespace Microsoft.AspNetCore.Razor.Language
return RazorDiagnostic.Create(Parsing_BlockCommentNotTerminated, location);
}
internal static readonly RazorDiagnosticDescriptor Parsing_HelperDirectiveNotAvailable =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1002",
() => LegacyResources.ParseError_HelperDirectiveNotAvailable,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_HelperDirectiveNotAvailable(SourceSpan location)
{
return RazorDiagnostic.Create(Parsing_HelperDirectiveNotAvailable, location, SyntaxConstants.CSharp.HelperKeyword);
}
internal static readonly RazorDiagnosticDescriptor Parsing_UnexpectedWhiteSpaceAtStartOfCodeBlock =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1003",
() => LegacyResources.ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_UnexpectedWhiteSpaceAtStartOfCodeBlock(SourceSpan location)
{
return RazorDiagnostic.Create(Parsing_UnexpectedWhiteSpaceAtStartOfCodeBlock, location);
}
internal static readonly RazorDiagnosticDescriptor Parsing_UnexpectedEndOfFileAtStartOfCodeBlock =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1004",
() => LegacyResources.ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_UnexpectedEndOfFileAtStartOfCodeBlock(SourceSpan location)
{
return RazorDiagnostic.Create(Parsing_UnexpectedEndOfFileAtStartOfCodeBlock, location);
}
internal static readonly RazorDiagnosticDescriptor Parsing_UnexpectedCharacterAtStartOfCodeBlock =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1005",
() => LegacyResources.ParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(SourceSpan location, string content)
{
return RazorDiagnostic.Create(Parsing_UnexpectedCharacterAtStartOfCodeBlock, location, content);
}
internal static readonly RazorDiagnosticDescriptor Parsing_ExpectedEndOfBlockBeforeEOF =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1006",
() => LegacyResources.ParseError_Expected_EndOfBlock_Before_EOF,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_ExpectedEndOfBlockBeforeEOF(SourceSpan location, string blockName, string closeBlock, string openBlock)
{
return RazorDiagnostic.Create(Parsing_ExpectedEndOfBlockBeforeEOF, location, blockName, closeBlock, openBlock);
}
internal static readonly RazorDiagnosticDescriptor Parsing_ReservedWord =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1007",
() => LegacyResources.ParseError_ReservedWord,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_ReservedWord(SourceSpan location, string content)
{
return RazorDiagnostic.Create(Parsing_ReservedWord, location, content);
}
internal static readonly RazorDiagnosticDescriptor Parsing_SingleLineControlFlowStatementsNotAllowed =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1008",
() => LegacyResources.ParseError_SingleLine_ControlFlowStatements_Not_Allowed,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_SingleLineControlFlowStatementsNotAllowed(SourceSpan location, string expected, string actual)
{
return RazorDiagnostic.Create(Parsing_SingleLineControlFlowStatementsNotAllowed, location, expected, actual);
}
internal static readonly RazorDiagnosticDescriptor Parsing_AtInCodeMustBeFollowedByColonParenOrIdentifierStart =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1009",
() => LegacyResources.ParseError_AtInCode_Must_Be_Followed_By_Colon_Paren_Or_Identifier_Start,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_AtInCodeMustBeFollowedByColonParenOrIdentifierStart(SourceSpan location)
{
return RazorDiagnostic.Create(Parsing_AtInCodeMustBeFollowedByColonParenOrIdentifierStart, location);
}
internal static readonly RazorDiagnosticDescriptor Parsing_UnexpectedNestedCodeBlock =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1010",
() => LegacyResources.ParseError_Unexpected_Nested_CodeBlock,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_UnexpectedNestedCodeBlock(SourceSpan location)
{
return RazorDiagnostic.Create(Parsing_UnexpectedNestedCodeBlock, location);
}
internal static readonly RazorDiagnosticDescriptor Parsing_DirectiveTokensMustBeSeparatedByWhitespace =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1011",
() => Resources.DirectiveTokensMustBeSeparatedByWhitespace,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_DirectiveTokensMustBeSeparatedByWhitespace(SourceSpan location, string directiveName)
{
return RazorDiagnostic.Create(Parsing_DirectiveTokensMustBeSeparatedByWhitespace, location, directiveName);
}
internal static readonly RazorDiagnosticDescriptor Parsing_UnexpectedEOFAfterDirective =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1012",
() => LegacyResources.UnexpectedEOFAfterDirective,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_UnexpectedEOFAfterDirective(SourceSpan location, string directiveName, string expectedToken)
{
return RazorDiagnostic.Create(Parsing_UnexpectedEOFAfterDirective, location, directiveName, expectedToken);
}
internal static readonly RazorDiagnosticDescriptor Parsing_DirectiveExpectsTypeName =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1013",
() => LegacyResources.DirectiveExpectsTypeName,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_DirectiveExpectsTypeName(SourceSpan location, string directiveName)
{
return RazorDiagnostic.Create(Parsing_DirectiveExpectsTypeName, location, directiveName);
}
internal static readonly RazorDiagnosticDescriptor Parsing_DirectiveExpectsNamespace =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1014",
() => LegacyResources.DirectiveExpectsNamespace,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_DirectiveExpectsNamespace(SourceSpan location, string directiveName)
{
return RazorDiagnostic.Create(Parsing_DirectiveExpectsNamespace, location, directiveName);
}
internal static readonly RazorDiagnosticDescriptor Parsing_DirectiveExpectsIdentifier =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1015",
() => LegacyResources.DirectiveExpectsIdentifier,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_DirectiveExpectsIdentifier(SourceSpan location, string directiveName)
{
return RazorDiagnostic.Create(Parsing_DirectiveExpectsIdentifier, location, directiveName);
}
internal static readonly RazorDiagnosticDescriptor Parsing_DirectiveExpectsQuotedStringLiteral =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1016",
() => LegacyResources.DirectiveExpectsQuotedStringLiteral,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_DirectiveExpectsQuotedStringLiteral(SourceSpan location, string directiveName)
{
return RazorDiagnostic.Create(Parsing_DirectiveExpectsQuotedStringLiteral, location, directiveName);
}
internal static readonly RazorDiagnosticDescriptor Parsing_UnexpectedDirectiveLiteral =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1017",
() => LegacyResources.UnexpectedDirectiveLiteral,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_UnexpectedDirectiveLiteral(SourceSpan location, string directiveName, string expected)
{
return RazorDiagnostic.Create(Parsing_UnexpectedDirectiveLiteral, location, directiveName, expected);
}
internal static readonly RazorDiagnosticDescriptor Parsing_DirectiveMustHaveValue =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1018",
() => LegacyResources.ParseError_DirectiveMustHaveValue,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_DirectiveMustHaveValue(SourceSpan location, string directiveName)
{
return RazorDiagnostic.Create(Parsing_DirectiveMustHaveValue, location, directiveName);
}
internal static readonly RazorDiagnosticDescriptor Parsing_IncompleteQuotesAroundDirective =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1019",
() => LegacyResources.ParseError_IncompleteQuotesAroundDirective,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_IncompleteQuotesAroundDirective(SourceSpan location, string directiveName)
{
return RazorDiagnostic.Create(Parsing_IncompleteQuotesAroundDirective, location, directiveName);
}
internal static readonly RazorDiagnosticDescriptor Parsing_InvalidTagHelperPrefixValue =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1020",
() => Resources.InvalidTagHelperPrefixValue,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_InvalidTagHelperPrefixValue(SourceSpan location, string directiveName, char character, string prefix)
{
return RazorDiagnostic.Create(Parsing_InvalidTagHelperPrefixValue, location, directiveName, character, prefix);
}
internal static readonly RazorDiagnosticDescriptor Parsing_InvalidTagHelperLookupText =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}1020",
() => Resources.InvalidTagHelperLookupText,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_InvalidTagHelperLookupText(SourceSpan location, string lookupText)
{
return RazorDiagnostic.Create(Parsing_InvalidTagHelperLookupText, location, lookupText);
}
#endregion
#region Semantic Errors
@ -70,7 +271,7 @@ namespace Microsoft.AspNetCore.Razor.Language
$"{DiagnosticPrefix}2001",
() => Resources.DuplicateDirective,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_DuplicateDirective(string directive, SourceSpan location)
public static RazorDiagnostic CreateParsing_DuplicateDirective(SourceSpan location, string directive)
{
return RazorDiagnostic.Create(Parsing_DuplicateDirective, location, directive);
}
@ -85,9 +286,39 @@ namespace Microsoft.AspNetCore.Razor.Language
return RazorDiagnostic.Create(Parsing_SectionsCannotBeNested, location, LegacyResources.SectionExample_CS);
}
internal static readonly RazorDiagnosticDescriptor TagHelper_CodeBlocksNotSupportedInAttributes =
internal static readonly RazorDiagnosticDescriptor Parsing_InlineMarkupBlocksCannotBeNested =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}2003",
() => LegacyResources.ParseError_InlineMarkup_Blocks_Cannot_Be_Nested,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_InlineMarkupBlocksCannotBeNested(SourceSpan location)
{
return RazorDiagnostic.Create(Parsing_InlineMarkupBlocksCannotBeNested, location);
}
internal static readonly RazorDiagnosticDescriptor Parsing_NamespaceImportAndTypeAliasCannotExistWithinCodeBlock =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}2004",
() => LegacyResources.ParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_NamespaceImportAndTypeAliasCannotExistWithinCodeBlock(SourceSpan location)
{
return RazorDiagnostic.Create(Parsing_NamespaceImportAndTypeAliasCannotExistWithinCodeBlock, location);
}
internal static readonly RazorDiagnosticDescriptor Parsing_DirectiveMustAppearAtStartOfLine =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}2005",
() => Resources.DirectiveMustAppearAtStartOfLine,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateParsing_DirectiveMustAppearAtStartOfLine(SourceSpan location, string directiveName)
{
return RazorDiagnostic.Create(Parsing_DirectiveMustAppearAtStartOfLine, location, directiveName);
}
internal static readonly RazorDiagnosticDescriptor TagHelper_CodeBlocksNotSupportedInAttributes =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}2006",
() => LegacyResources.TagHelpers_CodeBlocks_NotSupported_InAttributes,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateTagHelper_CodeBlocksNotSupportedInAttributes(SourceSpan location)
@ -98,7 +329,7 @@ namespace Microsoft.AspNetCore.Razor.Language
internal static readonly RazorDiagnosticDescriptor TagHelper_InlineMarkupBlocksNotSupportedInAttributes =
new RazorDiagnosticDescriptor(
$"{DiagnosticPrefix}2004",
$"{DiagnosticPrefix}2007",
() => LegacyResources.TagHelpers_InlineMarkupBlocks_NotSupported_InAttributes,
RazorDiagnosticSeverity.Error);
public static RazorDiagnostic CreateTagHelper_InlineMarkupBlocksNotSupportedInAttributes(string expectedTypeName, SourceSpan location)

View File

@ -1,12 +1,12 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,1): Error RZ9999: The 'page' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,1): Error RZ9999: The 'page' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,7): Error RZ9999: The 'page' directive expects a string surrounded by double quotes.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,7): Error RZ9999: The 'model' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,1): Error RZ9999: The 'model' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,8): Error RZ9999: The 'model' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(10,8): Error RZ9999: The 'inject' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(11,9): Error RZ9999: The 'inject' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(12,26): Error RZ9999: The 'inject' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(14,11): Error RZ9999: The 'namespace' directive expects a namespace name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(15,1): Error RZ9999: The 'namespace' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(15,12): Error RZ9999: The 'namespace' directive expects a namespace name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,1): Error RZ2001: The 'page' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,1): Error RZ2001: The 'page' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,7): Error RZ1016: The 'page' directive expects a string surrounded by double quotes.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,7): Error RZ1013: The 'model' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,1): Error RZ2001: The 'model' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,8): Error RZ1013: The 'model' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(10,8): Error RZ1013: The 'inject' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(11,9): Error RZ1013: The 'inject' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(12,26): Error RZ1015: The 'inject' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(14,11): Error RZ1014: The 'namespace' directive expects a namespace name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(15,1): Error RZ2001: The 'namespace' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(15,12): Error RZ1014: The 'namespace' directive expects a namespace name.

View File

@ -1,12 +1,12 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,1): Error RZ9999: The 'page' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,1): Error RZ9999: The 'page' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,7): Error RZ9999: The 'page' directive expects a string surrounded by double quotes.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,7): Error RZ9999: The 'model' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,1): Error RZ9999: The 'model' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,8): Error RZ9999: The 'model' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(10,8): Error RZ9999: The 'inject' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(11,9): Error RZ9999: The 'inject' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(12,26): Error RZ9999: The 'inject' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(14,11): Error RZ9999: The 'namespace' directive expects a namespace name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(15,1): Error RZ9999: The 'namespace' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(15,12): Error RZ9999: The 'namespace' directive expects a namespace name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,1): Error RZ2001: The 'page' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,1): Error RZ2001: The 'page' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,7): Error RZ1016: The 'page' directive expects a string surrounded by double quotes.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,7): Error RZ1013: The 'model' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,1): Error RZ2001: The 'model' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,8): Error RZ1013: The 'model' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(10,8): Error RZ1013: The 'inject' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(11,9): Error RZ1013: The 'inject' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(12,26): Error RZ1015: The 'inject' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(14,11): Error RZ1014: The 'namespace' directive expects a namespace name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(15,1): Error RZ2001: The 'namespace' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(15,12): Error RZ1014: The 'namespace' directive expects a namespace name.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InvalidNamespaceAtEOF.cshtml(1,12): Error RZ9999: The 'namespace' directive expects a namespace name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InvalidNamespaceAtEOF.cshtml(1,12): Error RZ1014: The 'namespace' directive expects a namespace name.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InvalidNamespaceAtEOF.cshtml(1,12): Error RZ9999: The 'namespace' directive expects a namespace name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InvalidNamespaceAtEOF.cshtml(1,12): Error RZ1014: The 'namespace' directive expects a namespace name.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/MalformedPageDirective.cshtml(1,7): Error RZ9999: The 'page' directive expects a string surrounded by double quotes.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/MalformedPageDirective.cshtml(1,7): Error RZ1016: The 'page' directive expects a string surrounded by double quotes.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/MalformedPageDirective.cshtml(1,7): Error RZ9999: The 'page' directive expects a string surrounded by double quotes.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/MalformedPageDirective.cshtml(1,7): Error RZ1016: The 'page' directive expects a string surrounded by double quotes.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/MultipleModels.cshtml(2,1): Error RZ9999: The 'model' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/MultipleModels.cshtml(2,1): Error RZ2001: The 'model' directive may only occur once per document.

View File

@ -1,6 +1,6 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(3,7): Error RZ9999: The 'model' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,1): Error RZ9999: The 'model' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,8): Error RZ9999: The 'model' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(6,8): Error RZ9999: The 'inject' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,9): Error RZ9999: The 'inject' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,26): Error RZ9999: The 'inject' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(3,7): Error RZ1013: The 'model' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,1): Error RZ2001: The 'model' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,8): Error RZ1013: The 'model' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(6,8): Error RZ1013: The 'inject' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,9): Error RZ1013: The 'inject' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,26): Error RZ1015: The 'inject' directive expects an identifier.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InvalidNamespaceAtEOF.cshtml(1,2): Error RZ9999: "namespace" is a reserved word and cannot be used in implicit expressions. An explicit expression ("@()") must be used.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InvalidNamespaceAtEOF.cshtml(1,2): Error RZ1007: "namespace" is a reserved word and cannot be used in implicit expressions. An explicit expression ("@()") must be used.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/MultipleModels.cshtml(2,1): Error RZ9999: The 'model' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/MultipleModels.cshtml(2,1): Error RZ2001: The 'model' directive may only occur once per document.

View File

@ -29,11 +29,8 @@ namespace Microsoft.AspNetCore.Razor.Language
{
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
new SourceSpan(new SourceLocation(14 + Environment.NewLine.Length, 1, 14), contentLength: 1)),
RazorDiagnostic.Create(
new RazorError(
Resources.FormatInvalidTagHelperLookupText("\""),
new SourceLocation(14 + Environment.NewLine.Length, 1, 14),
length: 1))
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(14 + Environment.NewLine.Length, 1, 14), contentLength: 1), "\"")
};
var content =
@ -71,11 +68,8 @@ namespace Microsoft.AspNetCore.Razor.Language
{
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
new SourceSpan(new SourceLocation(17 + Environment.NewLine.Length, 1, 17), contentLength: 1)),
RazorDiagnostic.Create(
new RazorError(
Resources.FormatInvalidTagHelperLookupText("\""),
new SourceLocation(17 + Environment.NewLine.Length, 1, 17),
length: 1))
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(17 + Environment.NewLine.Length, 1, 17), contentLength: 1), "\"")
};
var content =
@ -113,11 +107,8 @@ namespace Microsoft.AspNetCore.Razor.Language
{
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
new SourceSpan(new SourceLocation(17 + Environment.NewLine.Length, 1, 17), contentLength: 1)),
RazorDiagnostic.Create(
new RazorError(
Resources.FormatInvalidTagHelperPrefixValue("tagHelperPrefix", "\"", "\""),
new SourceLocation(17 + Environment.NewLine.Length, 1, 17),
length: 1))
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperPrefixValue(
new SourceSpan(new SourceLocation(17 + Environment.NewLine.Length, 1, 17), contentLength: 1), "tagHelperPrefix", '\"', "\""),
};
var content =

View File

@ -80,10 +80,9 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests
var document = RazorCodeDocument.Create(TestRazorSourceDocument.Create("@!!!", fileName: "test.cshtml"));
var expected = RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS("!"),
new SourceLocation("test.cshtml", 1, 0, 1),
length: 1));
var expected = RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
new SourceSpan(new SourceLocation("test.cshtml", 1, 0, 1), contentLength: 1),
"!");
// Act
engine.Process(document);
@ -102,10 +101,8 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests
var document = RazorCodeDocument.Create(TestRazorSourceDocument.Create("@{", fileName: "test.cshtml"));
var expected = RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(LegacyResources.BlockName_Code, "}", "{"),
new SourceLocation("test.cshtml", 1, 0, 1),
length: 1));
var expected = RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation("test.cshtml", 1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{");
// Act
engine.Process(document);

View File

@ -16,11 +16,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(FunctionsDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(FunctionsDirective.Directive.Directive, "}", "{"),
new SourceLocation(10, 0, 10),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(10, 0, 10), contentLength: 1), FunctionsDirective.Directive.Directive, "}", "{"));
// Act & Assert
ParseBlockTest(
@ -38,11 +35,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("section", "}", "{"),
new SourceLocation(16, 0, 16),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(16, 0, 16), contentLength: 1), "section", "}", "{"));
// Act & Assert
ParseBlockTest(
@ -71,11 +65,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.AsStatement()
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = "}" })
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(
LegacyResources.BlockName_Code, "}", "{"),
new SourceLocation(1, 0, 1),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"));
}
[Fact]
@ -84,11 +75,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(FunctionsDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("functions", "}", "{"),
new SourceLocation(10, 0, 10),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(10, 0, 10), contentLength: 1), "functions", "}", "{"));
// Act & Assert
ParseBlockTest(
@ -107,11 +95,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("section", "}", "{"),
new SourceLocation(16, 0, 16),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(16, 0, 16), contentLength: 1), "section", "}", "{"));
// Act & Assert
ParseBlockTest(
@ -152,11 +137,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Span(SpanKindInternal.Code, new CSharpSymbol(string.Empty, CSharpSymbolType.Unknown))
.With(new StatementChunkGenerator())
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(
LegacyResources.BlockName_Code, "}", "{"),
new SourceLocation(1, 0, 1),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"));
}
}
}

View File

@ -499,10 +499,8 @@ while(true);", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedChara
document,
BlockKindInternal.Statement,
SpanKindInternal.Code,
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("foreach", '}', '{'),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), "foreach", "}", "{"));
}
[Fact]
@ -516,10 +514,8 @@ while(true);", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedChara
SpanKindInternal.Code,
RazorDiagnosticFactory.CreateParsing_BlockCommentNotTerminated(
new SourceSpan(new SourceLocation(24, 0, 24), contentLength: 1)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("foreach", '}', '{'),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), "foreach", "}", "{"));
}
[Fact]
@ -531,10 +527,8 @@ while(true);", BlockKindInternal.Statement, SpanKindInternal.Code, acceptedChara
document,
BlockKindInternal.Statement,
SpanKindInternal.Code,
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("foreach", '}', '{'),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), "foreach", "}", "{"));
}
[Fact]
@ -1155,10 +1149,8 @@ catch(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code);
@"End of file or an unexpected character was reached before the ""span"" tag could be parsed. Elements inside markup blocks must be complete. They must either be self-closing (""<br />"") or have matching end tags (""<p>Hello</p>""). If you intended to display a ""<"" character, use the ""&lt;"" HTML entity.",
new SourceLocation(2, 0, 2),
length: 4)),
RazorDiagnostic.Create(new RazorError(
@"The code block is missing a closing ""}"" character. Make sure you have a matching ""}"" character for all the ""{"" characters within this block, and that none of the ""}"" characters are being interpreted as markup.",
SourceLocation.Zero,
length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
};
// Act & Assert
@ -1194,14 +1186,11 @@ catch(bar) { baz(); }", BlockKindInternal.Statement, SpanKindInternal.Code);
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None));
var expectedErrors = new RazorDiagnostic[]
{
RazorDiagnostic.Create(new RazorError(
@"A space or line break was encountered after the ""@"" character. Only valid identifiers, keywords, comments, ""("" and ""{"" are valid at the start of a code block and they must occur immediately following ""@"" with no space in between.",
new SourceLocation(13, 0, 13),
length: 1)),
RazorDiagnostic.Create(new RazorError(
@"""' />}"" is not valid at the start of a code block. Only identifiers, keywords, comments, ""("" and ""{"" are valid.",
new SourceLocation(15, 0, 15),
length: 5)),
RazorDiagnosticFactory.CreateParsing_UnexpectedWhiteSpaceAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(13, 0, 13), contentLength: 1)),
RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(15, 0, 15), contentLength: 5),
"' />}"),
};
// Act & Assert

View File

@ -60,10 +60,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
});
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
Resources.FormatDuplicateDirective("custom"),
42 + Environment.NewLine.Length, 1, 0, 7)));
RazorDiagnosticFactory.CreateParsing_DuplicateDirective(
new SourceSpan(new SourceLocation(42 + Environment.NewLine.Length, 1, 0), 7), "custom"));
// Act & Assert
ParseDocumentTest(
@ -202,10 +200,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddStringToken().AddStringToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
Resources.FormatDirectiveTokensMustBeSeparatedByWhitespace("custom"),
17, 0, 17, 9)));
RazorDiagnosticFactory.CreateParsing_DirectiveTokensMustBeSeparatedByWhitespace(
new SourceSpan(new SourceLocation(17, 0, 17), 9), "custom"));
// Act & Assert
ParseCodeBlockTest(
@ -228,10 +224,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddNamespaceToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsNamespace("custom"),
8, 0, 8, 7)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsNamespace(
new SourceSpan(new SourceLocation(8, 0, 8), 7), "custom"));
// Act & Assert
ParseCodeBlockTest(
@ -253,10 +247,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddNamespaceToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsNamespace("custom"),
8, 0, 8, 7)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsNamespace(
new SourceSpan(new SourceLocation(8, 0, 8), 7), "custom"));
// Act & Assert
ParseCodeBlockTest(
@ -277,10 +269,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddNamespaceToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsNamespace("custom"),
8, 0, 8, 7)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsNamespace(
new SourceSpan(new SourceLocation(8, 0, 8), 7), "custom"));
// Act & Assert
ParseCodeBlockTest(
@ -302,10 +292,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddNamespaceToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsNamespace("custom"),
8, 0, 8, 7)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsNamespace(
new SourceSpan(new SourceLocation(8, 0, 8), 7), "custom"));
// Act & Assert
ParseCodeBlockTest(
@ -386,7 +374,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
"*, Foo",
"*",
"Foo",
RazorDiagnostic.Create(new RazorError(Resources.FormatDirectiveMustAppearAtStartOfLine("addTagHelper"), new SourceLocation(4, 0, 4), 12)))),
RazorDiagnosticFactory.CreateParsing_DirectiveMustAppearAtStartOfLine(
new SourceSpan(new SourceLocation(4, 0, 4), 12), "addTagHelper"))),
Factory.Code(Environment.NewLine).AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)));
}
@ -401,11 +390,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddTypeToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
Resources.FormatDirectiveMustAppearAtStartOfLine("custom"),
new SourceLocation(4, 0, 4),
6)));
RazorDiagnosticFactory.CreateParsing_DirectiveMustAppearAtStartOfLine(
new SourceSpan(new SourceLocation(4, 0, 4), contentLength: 6), "custom"));
// Act & Assert
ParseCodeBlockTest(
@ -541,11 +527,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddStringToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsQuotedStringLiteral("custom"),
new SourceLocation(8, 0, 8),
length: 7)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsQuotedStringLiteral(
new SourceSpan(new SourceLocation(8, 0, 8), contentLength: 7), "custom"));
// Act & Assert
ParseCodeBlockTest(
@ -567,11 +550,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddStringToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsQuotedStringLiteral("custom"),
new SourceLocation(8, 0, 8),
length: 1)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsQuotedStringLiteral(
new SourceSpan(new SourceLocation(8, 0, 8), contentLength: 1), "custom"));
// Act & Assert
ParseCodeBlockTest(
@ -593,11 +573,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddStringToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsQuotedStringLiteral("custom"),
new SourceLocation(8, 0, 8),
length: 9)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsQuotedStringLiteral(
new SourceSpan(new SourceLocation(8, 0, 8), contentLength: 9), "custom"));
// Act & Assert
ParseCodeBlockTest(
@ -619,11 +596,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddStringToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsQuotedStringLiteral("custom"),
new SourceLocation(8, 0, 8),
length: 7)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsQuotedStringLiteral(
new SourceSpan(new SourceLocation(8, 0, 8), contentLength: 7), "custom"));
// Act & Assert
ParseCodeBlockTest(
@ -761,11 +735,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddMemberToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsIdentifier("custom"),
new SourceLocation(8, 0, 8),
length: 1)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsIdentifier(
new SourceSpan(new SourceLocation(8, 0, 8), contentLength: 1), "custom"));
// Act & Assert
ParseCodeBlockTest(
@ -887,11 +858,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddStringToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatUnexpectedDirectiveLiteral("custom", "line break"),
new SourceLocation(16, 0, 16),
length: 7)));
RazorDiagnosticFactory.CreateParsing_UnexpectedDirectiveLiteral(
new SourceSpan(new SourceLocation(16, 0, 16), contentLength: 7), "custom", "line break"));
// Act & Assert
ParseCodeBlockTest(
@ -916,11 +884,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddStringToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatUnexpectedDirectiveLiteral("custom", "{"),
new SourceLocation(16, 0, 16),
length: 5)));
RazorDiagnosticFactory.CreateParsing_UnexpectedDirectiveLiteral(
new SourceSpan(new SourceLocation(16, 0, 16), contentLength: 5), "custom", "{"));
// Act & Assert
ParseCodeBlockTest(
@ -945,11 +910,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddStringToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatUnexpectedEOFAfterDirective("custom", "{"),
new SourceLocation(15, 0, 15),
length: 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedEOFAfterDirective(
new SourceSpan(new SourceLocation(15, 0, 15), contentLength: 1), "custom", "{"));
// Act & Assert
ParseCodeBlockTest(
@ -972,11 +934,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
b => b.AddStringToken());
var chunkGenerator = new DirectiveChunkGenerator(descriptor);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("custom", "}", "{"),
new SourceLocation(16, 0, 16),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(16, 0, 16), contentLength: 1), "custom", "}", "{"));
// Act & Assert
ParseCodeBlockTest(
@ -998,8 +957,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
// Arrange
var expectedDiagnostic = RazorDiagnosticFactory.CreateParsing_DuplicateDirective(
"tagHelperPrefix",
new SourceSpan(null, 22 + Environment.NewLine.Length, 1, 0, 16));
new SourceSpan(null, 22 + Environment.NewLine.Length, 1, 0, 16), "tagHelperPrefix");
// Act
var document = ParseDocument(
@ -1068,9 +1026,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
public void TagHelperPrefixDirective_RequiresValue()
{
// Arrange
var expectedError = RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_DirectiveMustHaveValue(SyntaxConstants.CSharp.TagHelperPrefixKeyword),
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 15));
var expectedError = RazorDiagnosticFactory.CreateParsing_DirectiveMustHaveValue(
new SourceSpan(filePath: null, absoluteIndex: 1, lineIndex: 0, characterIndex: 1, length: 15), SyntaxConstants.CSharp.TagHelperPrefixKeyword);
// Act & Assert
ParseBlockTest("@tagHelperPrefix ",
@ -1095,12 +1052,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
new SourceSpan(filePath: null, absoluteIndex: 17, lineIndex: 0, characterIndex: 17, length: 1)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_IncompleteQuotesAroundDirective(SyntaxConstants.CSharp.TagHelperPrefixKeyword),
absoluteIndex: 17, lineIndex: 0, columnIndex: 17, length: 4)),
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperPrefixValue(SyntaxConstants.CSharp.TagHelperPrefixKeyword, '"', "\"Foo"),
absoluteIndex: 17, lineIndex: 0, columnIndex: 17, length: 4))
RazorDiagnosticFactory.CreateParsing_IncompleteQuotesAroundDirective(
new SourceSpan(filePath: null, absoluteIndex: 17, lineIndex: 0, characterIndex: 17, length: 4), SyntaxConstants.CSharp.TagHelperPrefixKeyword),
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperPrefixValue(
new SourceSpan(filePath: null, absoluteIndex: 17, lineIndex: 0, characterIndex: 17, length: 4), SyntaxConstants.CSharp.TagHelperPrefixKeyword, '"', "\"Foo"),
};
// Act & Assert
@ -1125,12 +1080,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
new SourceSpan(filePath: null, absoluteIndex: 23, lineIndex: 0, characterIndex: 23, length: 1)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_IncompleteQuotesAroundDirective(SyntaxConstants.CSharp.TagHelperPrefixKeyword),
absoluteIndex: 17, lineIndex: 0, columnIndex: 17, length: 7)),
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperPrefixValue(SyntaxConstants.CSharp.TagHelperPrefixKeyword, ' ', "Foo \""),
absoluteIndex: 17, lineIndex: 0, columnIndex: 17, length: 7))
RazorDiagnosticFactory.CreateParsing_IncompleteQuotesAroundDirective(
new SourceSpan(filePath: null, absoluteIndex: 17, lineIndex: 0, characterIndex: 17, length: 7), SyntaxConstants.CSharp.TagHelperPrefixKeyword),
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperPrefixValue(
new SourceSpan(filePath: null, absoluteIndex: 17, lineIndex: 0, characterIndex: 17, length: 7), SyntaxConstants.CSharp.TagHelperPrefixKeyword, ' ', "Foo \""),
};
// Act & Assert
@ -1152,10 +1105,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var expectedErrors = new[]
{
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText(string.Empty),
new SourceLocation(18, 0, 18),
length: 1))
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(18, 0, 18), contentLength: 1), string.Empty)
};
ParseBlockTest("@removeTagHelper \"\"",
@ -1179,10 +1130,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var expectedErrors = new[]
{
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText("Foo"),
new SourceLocation(17, 0, 17),
length: 3))
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(17, 0, 17), contentLength: 3), "Foo")
};
ParseBlockTest("@removeTagHelper Foo",
@ -1206,10 +1155,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var expectedErrors = new[]
{
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText("'*, Foo'"),
new SourceLocation(17, 0, 17),
length: 8))
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(17, 0, 17), contentLength: 8), "'*, Foo'")
};
ParseBlockTest("@removeTagHelper '*, Foo'",
@ -1231,10 +1178,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var expectedErrors = new[]
{
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText("Foo"),
new SourceLocation(18, 0, 18),
length: 3))
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(18, 0, 18), contentLength: 3), "Foo")
};
ParseBlockTest("@removeTagHelper \"Foo\"",
@ -1278,13 +1223,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var expectedErrors = new[]
{
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_DirectiveMustHaveValue(SyntaxConstants.CSharp.RemoveTagHelperKeyword),
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 15)),
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText(string.Empty),
new SourceLocation(17, 0, 17),
length: 1)),
RazorDiagnosticFactory.CreateParsing_DirectiveMustHaveValue(
new SourceSpan(filePath: null, absoluteIndex: 1, lineIndex: 0, characterIndex: 1, length: 15), SyntaxConstants.CSharp.RemoveTagHelperKeyword),
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(17, 0, 17), contentLength: 1), string.Empty),
};
// Act & Assert
@ -1308,13 +1250,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
new SourceSpan(filePath: null, absoluteIndex: 17, lineIndex: 0, characterIndex: 17, length: 1)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_IncompleteQuotesAroundDirective(SyntaxConstants.CSharp.RemoveTagHelperKeyword),
absoluteIndex: 17, lineIndex: 0, columnIndex: 17, length: 4)),
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText("\"Foo"),
new SourceLocation(17, 0, 17),
length: 4)),
RazorDiagnosticFactory.CreateParsing_IncompleteQuotesAroundDirective(
new SourceSpan(filePath: null, absoluteIndex: 17, lineIndex: 0, characterIndex: 17, length: 4), SyntaxConstants.CSharp.RemoveTagHelperKeyword),
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(17, 0, 17), contentLength: 4), "\"Foo"),
};
// Act & Assert
@ -1339,13 +1278,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
new SourceSpan(new SourceLocation(absoluteIndex: 20, lineIndex: 0, characterIndex: 20), contentLength: 1)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_IncompleteQuotesAroundDirective(SyntaxConstants.CSharp.RemoveTagHelperKeyword),
absoluteIndex: 17, lineIndex: 0, columnIndex: 17, length: 4)),
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText("Foo\""),
new SourceLocation(17, 0, 17),
length: 4)),
RazorDiagnosticFactory.CreateParsing_IncompleteQuotesAroundDirective(
new SourceSpan(filePath: null, absoluteIndex: 17, lineIndex: 0, characterIndex: 17, length: 4), SyntaxConstants.CSharp.RemoveTagHelperKeyword),
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(17, 0, 17), contentLength: 4), "Foo\""),
};
// Act & Assert
@ -1368,10 +1304,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var expectedErrors = new[]
{
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText(string.Empty),
new SourceLocation(15, 0, 15),
length: 1))
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(15, 0, 15), contentLength: 1), string.Empty),
};
ParseBlockTest("@addTagHelper \"\"",
@ -1395,10 +1329,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var expectedErrors = new[]
{
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText("Foo"),
new SourceLocation(14, 0, 14),
length: 3))
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(14, 0, 14), contentLength: 3), "Foo"),
};
ParseBlockTest("@addTagHelper Foo",
@ -1420,10 +1352,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var expectedErrors = new[]
{
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText("Foo"),
new SourceLocation(15, 0, 15),
length: 3))
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(15, 0, 15), contentLength: 3), "Foo")
};
ParseBlockTest("@addTagHelper \"Foo\"",
@ -1447,10 +1377,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var expectedErrors = new[]
{
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText("'*, Foo'"),
new SourceLocation(14, 0, 14),
length: 8))
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(14, 0, 14), contentLength: 8), "'*, Foo'")
};
ParseBlockTest("@addTagHelper '*, Foo'",
@ -1494,13 +1422,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var expectedErrors = new[]
{
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_DirectiveMustHaveValue(SyntaxConstants.CSharp.AddTagHelperKeyword),
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 12)),
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText(string.Empty),
new SourceLocation(14, 0, 14),
length: 1)),
RazorDiagnosticFactory.CreateParsing_DirectiveMustHaveValue(
new SourceSpan(filePath: null, absoluteIndex: 1, lineIndex: 0, characterIndex: 1, length: 12), SyntaxConstants.CSharp.AddTagHelperKeyword),
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(14, 0, 14), contentLength: 1), string.Empty),
};
// Act & Assert
@ -1526,13 +1451,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
new SourceSpan(filePath: null, absoluteIndex: 14, lineIndex: 0, characterIndex: 14, length: 1)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_IncompleteQuotesAroundDirective(SyntaxConstants.CSharp.AddTagHelperKeyword),
absoluteIndex: 14, lineIndex: 0, columnIndex: 14, length: 4)),
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText("\"Foo"),
new SourceLocation(14, 0, 14),
length: 4)),
RazorDiagnosticFactory.CreateParsing_IncompleteQuotesAroundDirective(
new SourceSpan(filePath: null, absoluteIndex: 14, lineIndex: 0, characterIndex: 14, length: 4), SyntaxConstants.CSharp.AddTagHelperKeyword),
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(14, 0, 14), contentLength: 4), "\"Foo"),
};
// Act & Assert
@ -1557,13 +1479,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
new SourceSpan(filePath: null, absoluteIndex: 17, lineIndex: 0, characterIndex: 17, length: 1)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_IncompleteQuotesAroundDirective(SyntaxConstants.CSharp.AddTagHelperKeyword),
absoluteIndex: 14, lineIndex: 0, columnIndex: 14, length: 4)),
RazorDiagnostic.Create(new RazorError(
Resources.FormatInvalidTagHelperLookupText("Foo\""),
new SourceLocation(14, 0, 14),
length: 4)),
RazorDiagnosticFactory.CreateParsing_IncompleteQuotesAroundDirective(
new SourceSpan(filePath: null, absoluteIndex: 14, lineIndex: 0, characterIndex: 14, length: 4), SyntaxConstants.CSharp.AddTagHelperKeyword),
RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(14, 0, 14), contentLength: 4), "Foo\""),
};
// Act & Assert
@ -1859,24 +1778,20 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var directiveLocation = new SourceLocation(1, 2, 3);
var invalidTagHelperPrefixValueError =
"Invalid tag helper directive '{0}' value. '{1}' is not allowed in prefix '{2}'.";
RazorDiagnostic InvalidPrefixError(int length, char character, string prefix)
{
return RazorDiagnosticFactory.CreateParsing_InvalidTagHelperPrefixValue(
new SourceSpan(directiveLocation, length), SyntaxConstants.CSharp.TagHelperPrefixKeyword, character, prefix);
}
return new TheoryData<string, SourceLocation, IEnumerable<RazorError>>
return new TheoryData<string, SourceLocation, IEnumerable<RazorDiagnostic>>
{
{
"th ",
directiveLocation,
new[]
{
new RazorError(
string.Format(
invalidTagHelperPrefixValueError,
SyntaxConstants.CSharp.TagHelperPrefixKeyword,
' ',
"th "),
directiveLocation,
length: 3)
InvalidPrefixError(3, ' ', "th "),
}
},
{
@ -1884,14 +1799,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
directiveLocation,
new[]
{
new RazorError(
string.Format(
invalidTagHelperPrefixValueError,
SyntaxConstants.CSharp.TagHelperPrefixKeyword,
'\t',
"th\t"),
directiveLocation,
length: 3)
InvalidPrefixError(3, '\t', "th\t"),
}
},
{
@ -1899,14 +1807,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
directiveLocation,
new[]
{
new RazorError(
string.Format(
invalidTagHelperPrefixValueError,
SyntaxConstants.CSharp.TagHelperPrefixKeyword,
Environment.NewLine[0],
"th" + Environment.NewLine),
directiveLocation,
length: 2 + Environment.NewLine.Length)
InvalidPrefixError(2 + Environment.NewLine.Length, Environment.NewLine[0], "th" + Environment.NewLine),
}
},
{
@ -1914,14 +1815,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
directiveLocation,
new[]
{
new RazorError(
string.Format(
invalidTagHelperPrefixValueError,
SyntaxConstants.CSharp.TagHelperPrefixKeyword,
' ',
" th "),
directiveLocation,
length: 4)
InvalidPrefixError(4, ' ', " th "),
}
},
{
@ -1929,14 +1823,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
directiveLocation,
new[]
{
new RazorError(
string.Format(
invalidTagHelperPrefixValueError,
SyntaxConstants.CSharp.TagHelperPrefixKeyword,
'@',
"@"),
directiveLocation,
length: 1)
InvalidPrefixError(1, '@', "@"),
}
},
{
@ -1944,14 +1831,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
directiveLocation,
new[]
{
new RazorError(
string.Format(
invalidTagHelperPrefixValueError,
SyntaxConstants.CSharp.TagHelperPrefixKeyword,
'@',
"t@h"),
directiveLocation,
length: 3)
InvalidPrefixError(3, '@', "t@h"),
}
},
{
@ -1959,14 +1839,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
directiveLocation,
new[]
{
new RazorError(
string.Format(
invalidTagHelperPrefixValueError,
SyntaxConstants.CSharp.TagHelperPrefixKeyword,
'!',
"!"),
directiveLocation,
length: 1)
InvalidPrefixError(1, '!', "!"),
}
},
{
@ -1974,14 +1847,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
directiveLocation,
new[]
{
new RazorError(
string.Format(
invalidTagHelperPrefixValueError,
SyntaxConstants.CSharp.TagHelperPrefixKeyword,
'!',
"!th"),
directiveLocation,
length: 3)
InvalidPrefixError(3, '!', "!th"),
}
},
};
@ -1996,7 +1862,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
object expectedErrors)
{
// Arrange
var expectedDiagnostics = ((IEnumerable<RazorError>)expectedErrors).Select(RazorDiagnostic.Create);
var expectedDiagnostics = (IEnumerable<RazorDiagnostic>)expectedErrors;
var source = TestRazorSourceDocument.Create();
var options = RazorParserOptions.CreateDefault();
var context = new ParserContext(source, options);
@ -2066,22 +1932,14 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var parser = new CSharpCodeParser(context);
var expectedErrorMessage = string.Format(
"Invalid tag helper directive look up text '{0}'. The correct look up text " +
"format is: \"name, assemblyName\".",
directiveText);
var directive = new CSharpCodeParser.ParsedDirective()
{
DirectiveText = directiveText
};
var diagnostics = new List<RazorDiagnostic>();
var expectedError = RazorDiagnostic.Create(
new RazorError(
expectedErrorMessage,
new SourceLocation(1, 2, 3),
errorLength));
var expectedError = RazorDiagnosticFactory.CreateParsing_InvalidTagHelperLookupText(
new SourceSpan(new SourceLocation(1, 2, 3), errorLength), directiveText);
// Act
var result = parser.ParseAddOrRemoveDirective(directive, new SourceLocation(1, 2, 3), diagnostics);

View File

@ -19,10 +19,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.AsImplicitExpression(KeywordSet)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS('"'),
new SourceLocation(1, 0, 1),
length: 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1),
"\""));
}
[Fact]
@ -34,10 +33,31 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Code("helper")
.AsImplicitExpression(KeywordSet)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_HelperDirectiveNotAvailable(SyntaxConstants.CSharp.HelperKeyword),
new SourceLocation(1, 0, 1),
length: 6)));
RazorDiagnosticFactory.CreateParsing_HelperDirectiveNotAvailable(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 6)));
}
[Fact]
public void ParseBlockWithNestedCodeBlockProducesError()
{
ParseBlockTest("@if { @{} }",
new StatementBlock(
Factory.CodeTransition(),
Factory.Code("if { ")
.AsStatement()
.Accepts(AcceptedCharactersInternal.Any),
new StatementBlock(
Factory.CodeTransition(),
Factory.MetaCode("{").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp()
.AsStatement()
.AutoCompleteWith(autoCompleteString: null),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
Factory.Code(" }")
.AsStatement()
.Accepts(AcceptedCharactersInternal.Any)),
RazorDiagnosticFactory.CreateParsing_UnexpectedNestedCodeBlock(
new SourceSpan(new SourceLocation(7, 0, 7), contentLength: 1)));
}
[Fact]
@ -60,10 +80,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.AsStatement()
.With(new AutoCompleteEditHandler(CSharpLanguageCharacteristics.Instance.TokenizeString) { AutoCompleteString = "}" })
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(LegacyResources.BlockName_Code, "}", "{"),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), LegacyResources.BlockName_Code, "}", "{"));
}
[Fact]
@ -88,10 +106,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyCSharp()
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS,
new SourceLocation(1, 0, 1),
Environment.NewLine.Length)));
RazorDiagnosticFactory.CreateParsing_UnexpectedWhiteSpaceAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(1, 0, 1), Environment.NewLine.Length)));
}
[Fact]
@ -113,10 +129,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Code(" {}" + Environment.NewLine).AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS,
new SourceLocation(6 + Environment.NewLine.Length, 1, 5),
length: 3)));
RazorDiagnosticFactory.CreateParsing_UnexpectedWhiteSpaceAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(6 + Environment.NewLine.Length, 1, 5), contentLength: 3)));
}
[Fact]
@ -136,13 +150,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.EmptyCSharp().AsStatement()
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock,
6 + Environment.NewLine.Length, 1, 5, length: 1)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(LegacyResources.BlockName_Code, "}", "{"),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedEndOfFileAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(6 + Environment.NewLine.Length, 1, 5), contentLength: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), LegacyResources.BlockName_Code, "}", "{"));
}
[Fact]
@ -154,10 +165,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyCSharp()
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS("!"),
new SourceLocation(1, 0, 1),
length: 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1),
"!"));
}
[Fact]
@ -169,10 +179,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code($"foo bar{Environment.NewLine}baz").AsExpression()
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(LegacyResources.BlockName_ExplicitExpression, ')', '('),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), LegacyResources.BlockName_ExplicitExpression, ")", "("));
}
[Fact]
@ -186,10 +194,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.Code($"foo bar{Environment.NewLine}").AsExpression()
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(LegacyResources.BlockName_ExplicitExpression, ')', '('),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), LegacyResources.BlockName_ExplicitExpression, ")", "("));
}
[Fact]
@ -289,11 +295,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Code(" var foo = bar; if(foo != null) { bar(); } ")
.AsStatement()
.AutoCompleteWith("}")),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(
LegacyResources.BlockName_Code, '}', '{'),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), LegacyResources.BlockName_Code, "}", "{"));
}
[Fact]
@ -302,10 +305,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(FunctionsDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("functions", '}', '{'),
new SourceLocation(10, 0, 10),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(10, 0, 10), contentLength: 1), "functions", "}", "{"));
// Act & Assert
ParseBlockTest(
@ -331,10 +332,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new StatementBlock(
Factory.Code("if(foo) { baz(); } else { var foo = bar; if(foo != null) { bar(); } ").AsStatement()
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("else", '}', '{'),
new SourceLocation(19, 0, 19),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(19, 0, 19), contentLength: 1), "else", "}", "{"));
}
[Fact]
@ -344,10 +343,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new StatementBlock(
Factory.Code("if(foo) { baz(); } else if { var foo = bar; if(foo != null) { bar(); } ").AsStatement()
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("else if", '}', '{'),
new SourceLocation(19, 0, 19),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(19, 0, 19), contentLength: 1), "else if", "}", "{"));
}
[Fact]
@ -357,10 +354,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new StatementBlock(
Factory.Code("do { var foo = bar; if(foo != null) { bar(); } ").AsStatement()
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("do", '}', '{'),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), "do", "}", "{"));
}
[Fact]
@ -370,10 +365,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new StatementBlock(
Factory.Code("try { var foo = bar; if(foo != null) { bar(); } ").AsStatement()
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("try", '}', '{'),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), "try", "}", "{"));
}
[Fact]
@ -383,10 +376,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new StatementBlock(
Factory.Code("try { baz(); } catch(Foo) { var foo = bar; if(foo != null) { bar(); } ").AsStatement()
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("catch", '}', '{'),
new SourceLocation(15, 0, 15),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(15, 0, 15), contentLength: 1), "catch", "}", "{"));
}
[Fact]
@ -396,10 +387,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new StatementBlock(
Factory.Code("try { baz(); } finally { var foo = bar; if(foo != null) { bar(); } ").AsStatement()
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("finally", '}', '{'),
new SourceLocation(15, 0, 15),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(15, 0, 15), contentLength: 1), "finally", "}", "{"));
}
[Fact]
@ -463,9 +452,12 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
BlockFactory.MarkupTagBlock("</p>", AcceptedCharactersInternal.None)),
Factory.EmptyCSharp().AsStatement()
),
RazorDiagnostic.Create(new RazorError(expectedMessage, 8, 0, 8, 1)),
RazorDiagnostic.Create(new RazorError(expectedMessage, 32, 0, 32, 1)),
RazorDiagnostic.Create(new RazorError(expectedMessage, 48, 0, 48, 1)));
RazorDiagnosticFactory.CreateParsing_SingleLineControlFlowStatementsNotAllowed(
new SourceSpan(new SourceLocation(8, 0, 8), contentLength: 1), "{", "<"),
RazorDiagnosticFactory.CreateParsing_SingleLineControlFlowStatementsNotAllowed(
new SourceSpan(new SourceLocation(32, 0, 32), contentLength: 1), "{", "<"),
RazorDiagnosticFactory.CreateParsing_SingleLineControlFlowStatementsNotAllowed(
new SourceSpan(new SourceLocation(48, 0, 48), contentLength: 1), "{", "<"));
}
[Fact]
@ -475,10 +467,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new StatementBlock(
Factory.Code("if(foo)) { var bar = foo; }").AsStatement()
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_SingleLine_ControlFlowStatements_Not_Allowed("{", ")"),
new SourceLocation(7, 0, 7),
length: 1)));
RazorDiagnosticFactory.CreateParsing_SingleLineControlFlowStatementsNotAllowed(
new SourceSpan(new SourceLocation(7, 0, 7), contentLength: 1), "{", ")"));
}
[Fact]
@ -496,10 +486,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup(" ").Accepts(AcceptedCharactersInternal.None)),
Factory.Code("}").AsStatement()
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.ParseError_AtInCode_Must_Be_Followed_By_Colon_Paren_Or_Identifier_Start,
new SourceLocation(10, 0, 10),
length: 1)));
RazorDiagnosticFactory.CreateParsing_AtInCodeMustBeFollowedByColonParenOrIdentifierStart(
new SourceSpan(new SourceLocation(10, 0, 10), contentLength: 1)));
}
[Fact]
@ -597,10 +585,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
SingleSpanBlockTest("if(foo) { var foo = \"blah blah blah blah blah", BlockKindInternal.Statement, SpanKindInternal.Code,
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
new SourceSpan(new SourceLocation(20, 0, 20), contentLength: 1)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("if", '}', '{'),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), "if", "}", "{"));
}
[Fact]
@ -614,10 +600,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
BlockKindInternal.Statement, SpanKindInternal.Code,
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
new SourceSpan(new SourceLocation(20, 0, 20), contentLength: 1)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("if", '}', '{'),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), "if", "}", "{"));
}
[Fact]
@ -685,10 +669,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
keyword + " (foo) { var foo = bar; if(foo != null) { bar(); } ",
BlockKindInternal.Statement,
SpanKindInternal.Code,
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(keyword, '}', '{'),
SourceLocation.Zero,
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(SourceLocation.Zero, contentLength: 1), keyword, "}", "{"));
}
}
}

View File

@ -29,11 +29,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.MetaCode("(").Accepts(AcceptedCharactersInternal.None),
Factory.EmptyCSharp().AsExpression()
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(
LegacyResources.BlockName_ExplicitExpression, ")", "("),
new SourceLocation(1, 0, 1),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1),
LegacyResources.BlockName_ExplicitExpression,
")",
"("));
}
[Fact]

View File

@ -135,10 +135,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyCSharp()
.AsImplicitExpression(KeywordSet)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS("/"),
new SourceLocation(1, 0, 1),
length: 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1),
"/"));
}
[Fact]
@ -150,10 +149,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyCSharp()
.AsImplicitExpression(KeywordSet)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock,
new SourceLocation(1, 0, 1),
length: 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedEndOfFileAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1)));
}
[Fact]

View File

@ -157,10 +157,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
LegacyResources.FormatParseError_MissingEndTag("text"),
new SourceLocation(7 + Environment.NewLine.Length, 1, 5),
length: 4)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(LegacyResources.BlockName_Code, "}", "{"),
new SourceLocation(1, 0, 1),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"));
}
[Fact]
@ -186,11 +184,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
LegacyResources.ParseError_RazorComment_Not_Terminated,
new SourceLocation(2, 0, 2),
length: 2)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(
LegacyResources.BlockName_Code, "}", "{"),
new SourceLocation(1, 0, 1),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"));
}
[Fact]

View File

@ -16,10 +16,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new DirectiveBlock(
Factory.MetaCode(word).Accepts(AcceptedCharactersInternal.None)
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_ReservedWord(word),
SourceLocation.Zero,
word.Length)));
RazorDiagnosticFactory.CreateParsing_ReservedWord(
new SourceSpan(SourceLocation.Zero, word.Length), word));
}
[Theory]

View File

@ -2,7 +2,6 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Linq;
using Microsoft.AspNetCore.Razor.Language.Extensions;
using Xunit;
@ -16,11 +15,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsIdentifier(SectionDirective.Directive.Directive),
new SourceLocation(8, 0, 8),
length: Environment.NewLine.Length)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsIdentifier(
new SourceSpan(new SourceLocation(8, 0, 8), contentLength: Environment.NewLine.Length), SectionDirective.Directive.Directive));
// Act & Assert
ParseDocumentTest(
@ -42,11 +38,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatUnexpectedEOFAfterDirective(SectionDirective.Directive.Directive, "{"),
new SourceLocation(25 + Environment.NewLine.Length, 0, 25 + Environment.NewLine.Length),
length: 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedEOFAfterDirective(
new SourceSpan(new SourceLocation(25 + Environment.NewLine.Length, 1, 4), contentLength: 1),
SectionDirective.Directive.Directive,
"{"));
// Act & Assert
ParseDocumentTest(
@ -69,11 +64,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsIdentifier(SectionDirective.Directive.Directive),
new SourceLocation(17, 0, 17),
length: Environment.NewLine.Length)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsIdentifier(
new SourceSpan(new SourceLocation(17, 0, 17), contentLength: Environment.NewLine.Length), SectionDirective.Directive.Directive));
// Act & Assert
ParseDocumentTest(
@ -113,11 +105,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsIdentifier(SectionDirective.Directive.Directive),
new SourceLocation(9, 0, 9),
length: 1)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsIdentifier(
new SourceSpan(new SourceLocation(9, 0, 9), contentLength: 1), SectionDirective.Directive.Directive));
// Act & Assert
ParseDocumentTest(
@ -144,11 +133,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatUnexpectedDirectiveLiteral(SectionDirective.Directive.Directive, "{"),
new SourceLocation(12, 0, 12),
length: 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedDirectiveLiteral(
new SourceSpan(new SourceLocation(12, 0, 12), contentLength: 1),
SectionDirective.Directive.Directive,
"{"));
// Act & Assert
ParseDocumentTest(
@ -176,11 +164,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var erroredChunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
erroredChunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
Resources.FormatDirectiveMustAppearAtStartOfLine("section"),
new SourceLocation(16, 0, 16),
7)));
RazorDiagnosticFactory.CreateParsing_DirectiveMustAppearAtStartOfLine(
new SourceSpan(new SourceLocation(16, 0, 16), contentLength: 7), "section"));
erroredChunkGenerator.Diagnostics.Add(
RazorDiagnosticFactory.CreateParsing_SectionsCannotBeNested(
new SourceSpan(new SourceLocation(15, 0, 15), 8)));
@ -227,11 +212,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(SectionDirective.Directive.Directive, "}", "{"),
new SourceLocation(13, 0, 13),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(13, 0, 13), contentLength: 1), SectionDirective.Directive.Directive, "}", "{"));
// Act & Assert
ParseDocumentTest(
@ -260,11 +242,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("section", "}", "{"),
new SourceLocation(13, 0, 13),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(13, 0, 13), contentLength: 1), "section", "}", "{"));
// Act & Assert
ParseDocumentTest(
@ -289,11 +268,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("section", "}", "{"),
new SourceLocation(13, 0, 13),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(13, 0, 13), contentLength: 1), "section", "}", "{"));
// Act & Assert
ParseDocumentTest(
@ -325,11 +301,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var newLine = Environment.NewLine;
var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("section", "}", "{"),
new SourceLocation(13 + newLine.Length, 1, 0),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(13 + newLine.Length, 1, 0), contentLength: 1), "section", "}", "{"));
var spaces = " ";
// Act & Assert
@ -369,11 +342,10 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(SectionDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatUnexpectedEOFAfterDirective(SectionDirective.Directive.Directive, "{"),
new SourceLocation(18 + Environment.NewLine.Length, 0, 18 + Environment.NewLine.Length),
length: 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedEOFAfterDirective(
new SourceSpan(new SourceLocation(18 + Environment.NewLine.Length, 1, 0), contentLength: 1),
SectionDirective.Directive.Directive,
"{"));
// Act & Assert
ParseDocumentTest(

View File

@ -15,10 +15,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(InheritsDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatUnexpectedEOFAfterDirective(InheritsDirective.Directive.Directive, "type"),
new SourceLocation(9, 0, 9), 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedEOFAfterDirective(
new SourceSpan(new SourceLocation(9, 0, 9), 1), InheritsDirective.Directive.Directive, "type"));
// Act & Assert
ParseDocumentTest(
@ -56,10 +54,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(InheritsDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatDirectiveExpectsTypeName(InheritsDirective.Directive.Directive),
25, 0, 25, Environment.NewLine.Length)));
RazorDiagnosticFactory.CreateParsing_DirectiveExpectsTypeName(
new SourceSpan(new SourceLocation(25, 0, 25), Environment.NewLine.Length),
InheritsDirective.Directive.Directive));
// Act & Assert
ParseDocumentTest(
@ -87,10 +84,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.AutoCompleteWith(autoCompleteString: null),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.ParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock,
new SourceLocation(2, 0, 2),
length: 5)));
RazorDiagnosticFactory.CreateParsing_NamespaceImportAndTypeAliasCannotExistWithinCodeBlock(
new SourceSpan(new SourceLocation(2, 0, 2), contentLength: 5)));
}
[Fact]
@ -104,10 +99,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.AutoCompleteWith(autoCompleteString: null),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
),
RazorDiagnostic.Create(new RazorError(
LegacyResources.ParseError_NamespaceImportAndTypeAlias_Cannot_Exist_Within_CodeBlock,
new SourceLocation(2, 0, 2),
length: 5)));
RazorDiagnosticFactory.CreateParsing_NamespaceImportAndTypeAliasCannotExistWithinCodeBlock(
new SourceSpan(new SourceLocation(2, 0, 2), contentLength: 5)));
}
[Fact]
@ -191,11 +184,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
// Arrange
var chunkGenerator = new DirectiveChunkGenerator(FunctionsDirective.Directive);
chunkGenerator.Diagnostics.Add(
RazorDiagnostic.Create(
new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("functions", "}", "{"),
new SourceLocation(10, 0, 10),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(10, 0, 10), contentLength: 1), "functions", "}", "{"));
// Act & Assert
ParseBlockTest(
@ -227,10 +217,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.EmptyCSharp()
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS("/"),
new SourceLocation(1, 0, 1),
length: 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1),
"/"));
}
[Fact]

View File

@ -249,9 +249,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var factory = new SpanFactory();
var unbalancedParenErrorString = "An opening \"(\" is missing the corresponding closing \")\".";
var unbalancedBracketCatchErrorString = "The catch block is missing a closing \"}\" character. " +
"Make sure you have a matching \"}\" character for all the \"{\" characters within this block, " +
"and that none of the \"}\" characters are being interpreted as markup.";
// document, expectedStatement, expectedErrors
return new TheoryData<string, StatementBlock, RazorDiagnostic[]>
@ -281,7 +278,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory
.Code("try { someMethod(); } catch(Exception) when (true) {")
.AsStatement()),
new[] { RazorDiagnostic.Create(new RazorError(unbalancedBracketCatchErrorString, 23, 0, 23, 1)) }
new[]
{
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(23, 0, 23), contentLength: 1), "catch", "}", "{")
}
},
};
}

View File

@ -314,10 +314,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
private static RazorDiagnostic GetNestedTemplateError(int characterIndex)
{
return RazorDiagnostic.Create(new RazorError(
LegacyResources.ParseError_InlineMarkup_Blocks_Cannot_Be_Nested,
new SourceLocation(characterIndex, 0, characterIndex),
length: 1));
return RazorDiagnosticFactory.CreateParsing_InlineMarkupBlocksCannotBeNested(
new SourceSpan(new SourceLocation(characterIndex, 0, characterIndex), contentLength: 1));
}
}
}

View File

@ -111,10 +111,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Code(" " + Environment.NewLine).AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)
), true,
RazorDiagnostic.Create(new RazorError(
LegacyResources.ParseError_AtInCode_Must_Be_Followed_By_Colon_Paren_Or_Identifier_Start,
new SourceLocation(5 + Environment.NewLine.Length, 1, 4),
length: 1)));
RazorDiagnosticFactory.CreateParsing_AtInCodeMustBeFollowedByColonParenOrIdentifierStart(
new SourceSpan(new SourceLocation(5 + Environment.NewLine.Length, 1, 4), contentLength: 1)));
}
[Fact]

View File

@ -44,10 +44,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
designTime: true,
expectedErrors: new[]
{
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS("}"),
new SourceLocation(2, 0, 2),
length: 1))
RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(2, 0, 2), contentLength: 1),
"}")
});
}
@ -69,10 +68,9 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
designTime: true,
expectedErrors: new[]
{
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Unexpected_Character_At_Start_Of_CodeBlock_CS("."),
new SourceLocation(2, 0, 2),
length: 1))
RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(2, 0, 2), contentLength: 1),
".")
});
}
@ -94,10 +92,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Code(Environment.NewLine).AsStatement(),
Factory.MetaCode("}").Accepts(AcceptedCharactersInternal.None)),
/* designTimeParser */ true,
RazorDiagnostic.Create(new RazorError(
LegacyResources.ParseError_Unexpected_WhiteSpace_At_Start_Of_CodeBlock_CS,
new SourceLocation(6 + Environment.NewLine.Length, 1, 5),
Environment.NewLine.Length)));
RazorDiagnosticFactory.CreateParsing_UnexpectedWhiteSpaceAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(6 + Environment.NewLine.Length, 1, 5), Environment.NewLine.Length)));
}
[Fact]

View File

@ -47,11 +47,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(
new MarkupTagBlock(
Factory.Markup("<"))))),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF(
LegacyResources.BlockName_Code, "}", "{"),
new SourceLocation(1, 0, 1),
length: 1)));
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"));
}
[Fact]
@ -86,10 +83,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
LegacyResources.FormatParseError_UnexpectedEndTag("html"),
new SourceLocation(5 + Environment.NewLine.Length * 2, 2, 2),
length: 4)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("code", "}", "{"),
new SourceLocation(1, 0, 1),
length: 1))
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
});
}

View File

@ -64,10 +64,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.EmptyHtml()),
RazorDiagnostic.Create(new RazorError(
LegacyResources.ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock,
new SourceLocation(1, 0, 1),
length: 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedEndOfFileAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1)));
}
[Fact]
@ -159,10 +157,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
.AsImplicitExpression(CSharpCodeParser.DefaultKeywords)
.Accepts(AcceptedCharactersInternal.NonWhiteSpace)),
Factory.EmptyHtml()),
RazorDiagnostic.Create(new RazorError(
LegacyResources.ParseError_Unexpected_EndOfFile_At_Start_Of_CodeBlock,
new SourceLocation(5, 0, 5),
length: 1)));
RazorDiagnosticFactory.CreateParsing_UnexpectedEndOfFileAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(5, 0, 5), contentLength: 1)));
}
[Fact]
@ -788,14 +784,11 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
Factory.Markup(" />")));
var expectedErrors = new RazorDiagnostic[]
{
RazorDiagnostic.Create(new RazorError(
@"A space or line break was encountered after the ""@"" character. Only valid identifiers, keywords, comments, ""("" and ""{"" are valid at the start of a code block and they must occur immediately following ""@"" with no space in between.",
new SourceLocation(12, 0, 12),
length: 1)),
RazorDiagnostic.Create(new RazorError(
@"""' />"" is not valid at the start of a code block. Only identifiers, keywords, comments, ""("" and ""{"" are valid.",
new SourceLocation(14, 0, 14),
length: 4)),
RazorDiagnosticFactory.CreateParsing_UnexpectedWhiteSpaceAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(12, 0, 12), contentLength: 1)),
RazorDiagnosticFactory.CreateParsing_UnexpectedCharacterAtStartOfCodeBlock(
new SourceSpan(new SourceLocation(14, 0, 14), contentLength: 4),
"' />"),
};
// Act & Assert

View File

@ -695,9 +695,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("do", "}", "{"),
absoluteIndex: 11, lineIndex: 0, columnIndex: 11, length: 1))
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(11, 0, 11), contentLength: 1), "do", "}", "{"),
}
},
{
@ -718,9 +717,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
string.Format(CultureInfo.InvariantCulture, errorFormatUnclosed, "p"),
new SourceLocation(1, 0, 1),
length: 1)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("do", "}", "{"),
absoluteIndex: 11, lineIndex: 0, columnIndex: 11, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(11, 0, 11), contentLength: 1), "do", "}", "{"),
RazorDiagnosticFactory.CreateParsing_UnterminatedStringLiteral(
new SourceSpan(filePath: null, absoluteIndex: 15, lineIndex: 0, characterIndex: 15, length: 1))
}
@ -742,9 +740,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
RazorDiagnostic.Create(new RazorError(
string.Format(CultureInfo.InvariantCulture, errorFormatNoCSharp, "p"),
absoluteIndex: 3, lineIndex: 0 , columnIndex: 3, length: 30)),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_Expected_EndOfBlock_Before_EOF("do", "}", "{"),
absoluteIndex: 4, lineIndex: 0, columnIndex: 4, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(4, 0, 4), contentLength: 1), "do", "}", "{"),
RazorDiagnostic.Create(new RazorError(
LegacyResources.FormatParseError_UnexpectedEndTag("p"),
absoluteIndex: 31, lineIndex: 0, columnIndex: 31, length: 1))

View File

@ -2346,10 +2346,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var errorFormatNormalUnclosed =
"The \"{0}\" element was not closed. All elements must be either self-closing or have a " +
"matching end tag.";
var errorMatchingBrace =
"The code block is missing a closing \"}\" character. Make sure you have a matching \"}\" " +
"character for all the \"{\" characters within this block, and that none of the \"}\" " +
"characters are being interpreted as markup.";
Func<Func<MarkupBlock>, MarkupBlock> buildStatementBlock = (insideBuilder) =>
{
@ -2394,9 +2390,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup("}")))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNormalUnclosed, "!text"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 5))
@ -2541,10 +2536,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var errorFormatNormalNotStarted =
"Encountered end tag \"{0}\" with no matching start tag. Are your start/end tags properly " +
"balanced?";
var errorMatchingBrace =
"The code block is missing a closing \"}\" character. Make sure you have a matching \"}\" " +
"character for all the \"{\" characters within this block, and that none of the \"}\" " +
"characters are being interpreted as markup.";
Func<Func<MarkupBlock>, MarkupBlock> buildStatementBlock = (insideBuilder) =>
{
@ -2574,9 +2565,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup("}")))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNormalUnclosed, "!text", CultureInfo.InvariantCulture),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 5)),
@ -2669,9 +2659,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup("}")))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNormalUnclosed, "text", CultureInfo.InvariantCulture),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 4))
@ -2723,10 +2712,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
var errorMatchingBrace =
"The code block is missing a closing \"}\" character. Make sure you have a matching \"}\" " +
"character for all the \"{\" characters within this block, and that none of the \"}\" " +
"characters are being interpreted as markup.";
var errorEOFMatchingBrace =
"End of file or an unexpected character was reached before the \"{0}\" tag could be parsed. " +
"Elements inside markup blocks must be complete. They must either be self-closing " +
@ -2752,9 +2737,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
() => new MarkupBlock(blockFactory.EscapedMarkupTagBlock("<", "text}"))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!text}"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 6))
@ -2770,9 +2754,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(factory.Markup("}"))))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!text"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 5))
@ -2798,9 +2781,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
value: new LocationTagged<string>("}", 15, 0, 15))))))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!text"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 5))
@ -2826,9 +2808,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
value: new LocationTagged<string>("btn}", 16, 0, 16))))))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!text"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 5))
@ -2857,9 +2838,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(factory.Markup("}"))))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!text"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 5))
@ -2889,9 +2869,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(factory.Markup("}"))))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!text"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 5))
@ -2917,10 +2896,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
{
var factory = new SpanFactory();
var blockFactory = new BlockFactory(factory);
var errorMatchingBrace =
"The code block is missing a closing \"}\" character. Make sure you have a matching \"}\" " +
"character for all the \"{\" characters within this block, and that none of the \"}\" " +
"characters are being interpreted as markup.";
var errorEOFMatchingBrace =
"End of file or an unexpected character was reached before the \"{0}\" tag could be parsed. " +
"Elements inside markup blocks must be complete. They must either be self-closing " +
@ -2946,9 +2921,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
() => new MarkupBlock(blockFactory.EscapedMarkupTagBlock("<", "}"))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!}"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 2))
@ -2960,9 +2934,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
() => new MarkupBlock(blockFactory.EscapedMarkupTagBlock("<", "p}"))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!p}"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 3))
@ -2975,9 +2948,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
blockFactory.EscapedMarkupTagBlock("<", "p /", new MarkupBlock(factory.Markup("}"))))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!p"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 2))
@ -3003,9 +2975,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
value: new LocationTagged<string>("}", 12, 0, 12))))))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!p"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 2))
@ -3031,9 +3002,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
value: new LocationTagged<string>("btn}", 13, 0, 13))))))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!p"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 2))
@ -3066,9 +3036,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
value: new LocationTagged<string>("}", 18, 0, 18))))))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!p"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 2))
@ -3097,9 +3066,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
new MarkupBlock(factory.Markup("}"))))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!p"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 2))
@ -3130,9 +3098,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup("}"))))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorEOFMatchingBrace, "!p"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 2))
@ -3274,10 +3241,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var errorFormatNormalNotStarted =
"Encountered end tag \"{0}\" with no matching start tag. Are your start/end tags properly " +
"balanced?";
var errorMatchingBrace =
"The code block is missing a closing \"}\" character. Make sure you have a matching \"}\" " +
"character for all the \"{\" characters within this block, and that none of the \"}\" " +
"characters are being interpreted as markup.";
Func<Func<MarkupBlock>, MarkupBlock> buildStatementBlock = (insideBuilder) =>
{
@ -3307,9 +3270,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup("}")))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNormalUnclosed, "!p", CultureInfo.InvariantCulture),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 2)),
@ -3399,9 +3361,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup("}"))))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNormalUnclosed, "p", CultureInfo.InvariantCulture),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 1)),
@ -3537,10 +3498,6 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
var errorFormatNormalUnclosed =
"The \"{0}\" element was not closed. All elements must be either self-closing or have a " +
"matching end tag.";
var errorMatchingBrace =
"The code block is missing a closing \"}\" character. Make sure you have a matching \"}\" " +
"character for all the \"{\" characters within this block, and that none of the \"}\" " +
"characters are being interpreted as markup.";
Func<Func<MarkupBlock>, MarkupBlock> buildStatementBlock = (insideBuilder) =>
{
@ -3585,9 +3542,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
factory.Markup("}")))),
new []
{
RazorDiagnostic.Create(new RazorError(
errorMatchingBrace,
absoluteIndex: 1, lineIndex: 0, columnIndex: 1, length: 1)),
RazorDiagnosticFactory.CreateParsing_ExpectedEndOfBlockBeforeEOF(
new SourceSpan(new SourceLocation(1, 0, 1), contentLength: 1), LegacyResources.BlockName_Code, "}", "{"),
RazorDiagnostic.Create(new RazorError(
string.Format(errorFormatNormalUnclosed, "!p"),
absoluteIndex: 3, lineIndex: 0, columnIndex: 3, length: 2))

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CodeBlockAtEOF.cshtml(1,2): Error RZ9999: The code block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CodeBlockAtEOF.cshtml(1,2): Error RZ1006: The code block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CodeBlockAtEOF.cshtml(1,2): Error RZ9999: The code block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CodeBlockAtEOF.cshtml(1,2): Error RZ1006: The code block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/EmptyImplicitExpressionInCode.cshtml(2,6): Error RZ9999: A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following "@" with no space in between.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/EmptyImplicitExpressionInCode.cshtml(2,6): Error RZ1003: A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following "@" with no space in between.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/EmptyImplicitExpressionInCode.cshtml(2,6): Error RZ9999: A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following "@" with no space in between.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/EmptyImplicitExpressionInCode.cshtml(2,6): Error RZ1003: A space or line break was encountered after the "@" character. Only valid identifiers, keywords, comments, "(" and "{" are valid at the start of a code block and they must occur immediately following "@" with no space in between.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/EmptyImplicitExpression.cshtml(3,2): Error RZ9999: "!" is not valid at the start of a code block. Only identifiers, keywords, comments, "(" and "{" are valid.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/EmptyImplicitExpression.cshtml(3,2): Error RZ1005: "!" is not valid at the start of a code block. Only identifiers, keywords, comments, "(" and "{" are valid.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/EmptyImplicitExpression.cshtml(3,2): Error RZ9999: "!" is not valid at the start of a code block. Only identifiers, keywords, comments, "(" and "{" are valid.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/EmptyImplicitExpression.cshtml(3,2): Error RZ1005: "!" is not valid at the start of a code block. Only identifiers, keywords, comments, "(" and "{" are valid.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ExplicitExpressionAtEOF.cshtml(3,2): Error RZ9999: The explicit expression block is missing a closing ")" character. Make sure you have a matching ")" character for all the "(" characters within this block, and that none of the ")" characters are being interpreted as markup.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ExplicitExpressionAtEOF.cshtml(3,2): Error RZ1006: The explicit expression block is missing a closing ")" character. Make sure you have a matching ")" character for all the "(" characters within this block, and that none of the ")" characters are being interpreted as markup.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ExplicitExpressionAtEOF.cshtml(3,2): Error RZ9999: The explicit expression block is missing a closing ")" character. Make sure you have a matching ")" character for all the "(" characters within this block, and that none of the ")" characters are being interpreted as markup.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ExplicitExpressionAtEOF.cshtml(3,2): Error RZ1006: The explicit expression block is missing a closing ")" character. Make sure you have a matching ")" character for all the "(" characters within this block, and that none of the ")" characters are being interpreted as markup.

View File

@ -1,2 +1,2 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ExplicitExpressionWithMarkup.cshtml(1,11): Error RZ9999: Encountered end tag "div" with no matching start tag. Are your start/end tags properly balanced?
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ExplicitExpressionWithMarkup.cshtml(1,7): Error RZ9999: The explicit expression block is missing a closing ")" character. Make sure you have a matching ")" character for all the "(" characters within this block, and that none of the ")" characters are being interpreted as markup.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ExplicitExpressionWithMarkup.cshtml(1,7): Error RZ1006: The explicit expression block is missing a closing ")" character. Make sure you have a matching ")" character for all the "(" characters within this block, and that none of the ")" characters are being interpreted as markup.

View File

@ -1,2 +1,2 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ExplicitExpressionWithMarkup.cshtml(1,11): Error RZ9999: Encountered end tag "div" with no matching start tag. Are your start/end tags properly balanced?
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ExplicitExpressionWithMarkup.cshtml(1,7): Error RZ9999: The explicit expression block is missing a closing ")" character. Make sure you have a matching ")" character for all the "(" characters within this block, and that none of the ")" characters are being interpreted as markup.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ExplicitExpressionWithMarkup.cshtml(1,7): Error RZ1006: The explicit expression block is missing a closing ")" character. Make sure you have a matching ")" character for all the "(" characters within this block, and that none of the ")" characters are being interpreted as markup.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ImplicitExpressionAtEOF.cshtml(3,2): Error RZ9999: End-of-file was found after the "@" character. "@" must be followed by a valid code block. If you want to output an "@", escape it using the sequence: "@@"
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ImplicitExpressionAtEOF.cshtml(3,2): Error RZ1004: End-of-file was found after the "@" character. "@" must be followed by a valid code block. If you want to output an "@", escape it using the sequence: "@@"

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ImplicitExpressionAtEOF.cshtml(3,2): Error RZ9999: End-of-file was found after the "@" character. "@" must be followed by a valid code block. If you want to output an "@", escape it using the sequence: "@@"
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ImplicitExpressionAtEOF.cshtml(3,2): Error RZ1004: End-of-file was found after the "@" character. "@" must be followed by a valid code block. If you want to output an "@", escape it using the sequence: "@@"

View File

@ -1,27 +1,27 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(3,2): Error RZ9999: Directive 'addTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(3,14): Error RZ9999: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,2): Error RZ9999: Directive 'addTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,15): Error RZ9999: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(3,2): Error RZ1018: Directive 'addTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(3,14): Error RZ1020: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,2): Error RZ1018: Directive 'addTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,15): Error RZ1020: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,15): Error RZ1000: Unterminated string literal. Strings that start with a quotation mark (") must be terminated before the end of the line. However, strings that start with @ and a quotation mark (@") can span multiple lines.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,15): Error RZ9999: Invalid tag helper directive look up text '"'. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,2): Error RZ9999: Directive 'removeTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,17): Error RZ9999: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,2): Error RZ9999: Directive 'removeTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,18): Error RZ9999: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,15): Error RZ1020: Invalid tag helper directive look up text '"'. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,2): Error RZ1018: Directive 'removeTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,17): Error RZ1020: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,2): Error RZ1018: Directive 'removeTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,18): Error RZ1020: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(9,18): Error RZ1000: Unterminated string literal. Strings that start with a quotation mark (") must be terminated before the end of the line. However, strings that start with @ and a quotation mark (@") can span multiple lines.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(9,18): Error RZ9999: Invalid tag helper directive look up text '"'. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(11,2): Error RZ9999: Directive 'tagHelperPrefix' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(12,2): Error RZ9999: Directive 'tagHelperPrefix' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(9,18): Error RZ1020: Invalid tag helper directive look up text '"'. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(11,2): Error RZ1018: Directive 'tagHelperPrefix' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(12,2): Error RZ1018: Directive 'tagHelperPrefix' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(12,1): Error RZ2001: The 'tagHelperPrefix' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(13,18): Error RZ1000: Unterminated string literal. Strings that start with a quotation mark (") must be terminated before the end of the line. However, strings that start with @ and a quotation mark (@") can span multiple lines.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(13,1): Error RZ2001: The 'tagHelperPrefix' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(13,18): Error RZ9999: Invalid tag helper directive 'tagHelperPrefix' value. '"' is not allowed in prefix '"'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(15,10): Error RZ9999: The 'inherits' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(16,1): Error RZ9999: The 'inherits' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(16,11): Error RZ9999: The 'inherits' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(19,1): Error RZ9999: Unexpected literal following the 'functions' directive. Expected '{'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(21,1): Error RZ9999: Unexpected literal following the 'functions' directive. Expected '{'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(21,9): Error RZ9999: The 'section' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(22,10): Error RZ9999: The 'section' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(24,10): Error RZ9999: The 'section' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(25,12): Error RZ9999: The functions block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(13,18): Error RZ1020: Invalid tag helper directive 'tagHelperPrefix' value. '"' is not allowed in prefix '"'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(15,10): Error RZ1013: The 'inherits' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(16,1): Error RZ2001: The 'inherits' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(16,11): Error RZ1013: The 'inherits' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(19,1): Error RZ1017: Unexpected literal following the 'functions' directive. Expected '{'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(21,1): Error RZ1017: Unexpected literal following the 'functions' directive. Expected '{'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(21,9): Error RZ1015: The 'section' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(22,10): Error RZ1015: The 'section' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(24,10): Error RZ1015: The 'section' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(25,12): Error RZ1006: The functions block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.

View File

@ -1,27 +1,27 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(3,2): Error RZ9999: Directive 'addTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(3,14): Error RZ9999: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,2): Error RZ9999: Directive 'addTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,15): Error RZ9999: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(3,2): Error RZ1018: Directive 'addTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(3,14): Error RZ1020: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,2): Error RZ1018: Directive 'addTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(4,15): Error RZ1020: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,15): Error RZ1000: Unterminated string literal. Strings that start with a quotation mark (") must be terminated before the end of the line. However, strings that start with @ and a quotation mark (@") can span multiple lines.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,15): Error RZ9999: Invalid tag helper directive look up text '"'. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,2): Error RZ9999: Directive 'removeTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,17): Error RZ9999: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,2): Error RZ9999: Directive 'removeTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,18): Error RZ9999: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(5,15): Error RZ1020: Invalid tag helper directive look up text '"'. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,2): Error RZ1018: Directive 'removeTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(7,17): Error RZ1020: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,2): Error RZ1018: Directive 'removeTagHelper' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(8,18): Error RZ1020: Invalid tag helper directive look up text ''. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(9,18): Error RZ1000: Unterminated string literal. Strings that start with a quotation mark (") must be terminated before the end of the line. However, strings that start with @ and a quotation mark (@") can span multiple lines.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(9,18): Error RZ9999: Invalid tag helper directive look up text '"'. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(11,2): Error RZ9999: Directive 'tagHelperPrefix' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(12,2): Error RZ9999: Directive 'tagHelperPrefix' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(9,18): Error RZ1020: Invalid tag helper directive look up text '"'. The correct look up text format is: "name, assemblyName".
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(11,2): Error RZ1018: Directive 'tagHelperPrefix' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(12,2): Error RZ1018: Directive 'tagHelperPrefix' must have a value.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(12,1): Error RZ2001: The 'tagHelperPrefix' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(13,18): Error RZ1000: Unterminated string literal. Strings that start with a quotation mark (") must be terminated before the end of the line. However, strings that start with @ and a quotation mark (@") can span multiple lines.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(13,1): Error RZ2001: The 'tagHelperPrefix' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(13,18): Error RZ9999: Invalid tag helper directive 'tagHelperPrefix' value. '"' is not allowed in prefix '"'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(15,10): Error RZ9999: The 'inherits' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(16,1): Error RZ9999: The 'inherits' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(16,11): Error RZ9999: The 'inherits' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(19,1): Error RZ9999: Unexpected literal following the 'functions' directive. Expected '{'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(21,1): Error RZ9999: Unexpected literal following the 'functions' directive. Expected '{'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(21,9): Error RZ9999: The 'section' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(22,10): Error RZ9999: The 'section' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(24,10): Error RZ9999: The 'section' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(25,12): Error RZ9999: The functions block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(13,18): Error RZ1020: Invalid tag helper directive 'tagHelperPrefix' value. '"' is not allowed in prefix '"'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(15,10): Error RZ1013: The 'inherits' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(16,1): Error RZ2001: The 'inherits' directive may only occur once per document.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(16,11): Error RZ1013: The 'inherits' directive expects a type name.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(19,1): Error RZ1017: Unexpected literal following the 'functions' directive. Expected '{'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(21,1): Error RZ1017: Unexpected literal following the 'functions' directive. Expected '{'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(21,9): Error RZ1015: The 'section' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(22,10): Error RZ1015: The 'section' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(24,10): Error RZ1015: The 'section' directive expects an identifier.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/IncompleteDirectives.cshtml(25,12): Error RZ1006: The functions block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InlineBlocks.cshtml(1,14): Error RZ9999: Unexpected literal following the 'section' directive. Expected '{'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InlineBlocks.cshtml(1,14): Error RZ1017: Unexpected literal following the 'section' directive. Expected '{'.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InlineBlocks.cshtml(1,14): Error RZ9999: Unexpected literal following the 'section' directive. Expected '{'.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/InlineBlocks.cshtml(1,14): Error RZ1017: Unexpected literal following the 'section' directive. Expected '{'.

View File

@ -1,3 +1,3 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/OpenedIf.cshtml(4,3): Error RZ9999: Encountered end tag "body" with no matching start tag. Are your start/end tags properly balanced?
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/OpenedIf.cshtml(5,3): Error RZ9999: Encountered end tag "html" with no matching start tag. Are your start/end tags properly balanced?
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/OpenedIf.cshtml(3,2): Error RZ9999: The if block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/OpenedIf.cshtml(3,2): Error RZ1006: The if block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.

View File

@ -1,3 +1,3 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/OpenedIf.cshtml(4,3): Error RZ9999: Encountered end tag "body" with no matching start tag. Are your start/end tags properly balanced?
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/OpenedIf.cshtml(5,3): Error RZ9999: Encountered end tag "html" with no matching start tag. Are your start/end tags properly balanced?
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/OpenedIf.cshtml(3,2): Error RZ9999: The if block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/OpenedIf.cshtml(3,2): Error RZ1006: The if block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.

View File

@ -1,2 +1,2 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ParserError.cshtml(2,1): Error RZ1001: End of file was reached before the end of the block comment. All comments started with "/*" sequence must be terminated with a matching "*/" sequence.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ParserError.cshtml(1,2): Error RZ9999: The code block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ParserError.cshtml(1,2): Error RZ1006: The code block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.

View File

@ -1,2 +1,2 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ParserError.cshtml(2,1): Error RZ1001: End of file was reached before the end of the block comment. All comments started with "/*" sequence must be terminated with a matching "*/" sequence.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ParserError.cshtml(1,2): Error RZ9999: The code block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/ParserError.cshtml(1,2): Error RZ1006: The code block is missing a closing "}" character. Make sure you have a matching "}" character for all the "{" characters within this block, and that none of the "}" characters are being interpreted as markup.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/TransitionsInTagHelperAttributes.cshtml(7,12): Error RZ9999: "class" is a reserved word and cannot be used in implicit expressions. An explicit expression ("@()") must be used.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/TransitionsInTagHelperAttributes.cshtml(7,12): Error RZ1007: "class" is a reserved word and cannot be used in implicit expressions. An explicit expression ("@()") must be used.

View File

@ -1 +1 @@
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/TransitionsInTagHelperAttributes.cshtml(7,12): Error RZ9999: "class" is a reserved word and cannot be used in implicit expressions. An explicit expression ("@()") must be used.
TestFiles/IntegrationTests/CodeGenerationIntegrationTest/TransitionsInTagHelperAttributes.cshtml(7,12): Error RZ1007: "class" is a reserved word and cannot be used in implicit expressions. An explicit expression ("@()") must be used.