Add support for C# 8 nullable forgiveness operator.
- Added a feature flag to ensure this functionality does not impact pre-3.0 applications. This change is in fact a breaking change because some less-common scenarios will no longer be valid. For instance, `@Name!.Hello`used to treat the `!.Hello` as markup, now it will be treated as part of the expression.ExpressionChunkGenerator
- Updated parser flags tests
- Updated parser tests
- Updated the C# 8.0 integration tests to include the new nullable forgiveness scenarios.
aspnet/AspNetCoredotnet/aspnetcore-tooling#11188
\n\nCommit migrated from 625c605607
This commit is contained in:
parent
9ac7cb8f00
commit
d9f35d4482
|
|
@ -433,6 +433,65 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
}
|
||||
}
|
||||
}
|
||||
else if (At(SyntaxKind.Not) && Context.FeatureFlags.AllowNullableForgivenessOperator)
|
||||
{
|
||||
// C# 8.0 Null forgiveness Operator
|
||||
|
||||
var next = Lookahead(count: 1);
|
||||
if (next == null)
|
||||
{
|
||||
// Null forgiveness operator at the end of the file, don't include it in the expression.
|
||||
// We don't allow trailing null forgiveness operators to avoid breaking scenarios such as:
|
||||
//
|
||||
// <p>Hello @Person! Good day!</p>
|
||||
return false;
|
||||
}
|
||||
|
||||
if (next.Kind == SyntaxKind.Dot)
|
||||
{
|
||||
var nextNext = Lookahead(count: 2);
|
||||
if (nextNext == null)
|
||||
{
|
||||
// End of file after the dot (!.EOF)
|
||||
return false;
|
||||
}
|
||||
|
||||
if (nextNext.Kind == SyntaxKind.Identifier || nextNext.Kind == SyntaxKind.Keyword)
|
||||
{
|
||||
// Accept null forgiveness operator followed by a dot (!.)
|
||||
AcceptAndMoveNext();
|
||||
|
||||
// Accept the dot
|
||||
AcceptAndMoveNext();
|
||||
return true;
|
||||
}
|
||||
|
||||
// We're in an odd situation where the user is attempting to use a null-forgiven implicit expression at the
|
||||
// end of a sentence, i.e.
|
||||
//
|
||||
// <p>@Person!.</p>
|
||||
//
|
||||
// We don't allow trailing null forgiveness operators so don't include it in the implicit expression.
|
||||
return false;
|
||||
}
|
||||
else if (next.Kind == SyntaxKind.QuestionMark)
|
||||
{
|
||||
// We're at the ! for a null forgiveness + null conditional operator (!?).
|
||||
AcceptAndMoveNext();
|
||||
|
||||
return true;
|
||||
}
|
||||
else if (next.Kind == SyntaxKind.LeftBracket || next.Kind == SyntaxKind.LeftParenthesis)
|
||||
{
|
||||
// We're at the ! for a null forgiveness bracket or parenthesis operator (![).
|
||||
AcceptAndMoveNext();
|
||||
|
||||
// Accept the [ or ( and any content inside (it will attempt to balance).
|
||||
return ParseMethodCallOrArrayIndex(builder, acceptedCharacters);
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
else if (At(SyntaxKind.Dot))
|
||||
{
|
||||
var dot = CurrentToken;
|
||||
|
|
@ -1369,7 +1428,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
builder.Add(BuildDirective());
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -21,6 +21,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
var allowUsingVariableDeclarations = false;
|
||||
var allowConditionalDataDashAttributes = false;
|
||||
var allowCSharpInMarkupAttributeArea = true;
|
||||
var allowNullableForgivenessOperator = false;
|
||||
|
||||
if (version.CompareTo(RazorLanguageVersion.Version_2_1) >= 0)
|
||||
{
|
||||
|
|
@ -35,6 +36,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
allowComponentFileKind = true;
|
||||
allowRazorInAllCodeBlocks = true;
|
||||
allowUsingVariableDeclarations = true;
|
||||
allowNullableForgivenessOperator = true;
|
||||
}
|
||||
|
||||
if (FileKinds.IsComponent(fileKind))
|
||||
|
|
@ -55,7 +57,8 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
allowRazorInAllCodeBlocks,
|
||||
allowUsingVariableDeclarations,
|
||||
allowConditionalDataDashAttributes,
|
||||
allowCSharpInMarkupAttributeArea);
|
||||
allowCSharpInMarkupAttributeArea,
|
||||
allowNullableForgivenessOperator);
|
||||
}
|
||||
|
||||
public abstract bool AllowMinimizedBooleanTagHelperAttributes { get; }
|
||||
|
|
@ -72,6 +75,8 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
|
||||
public abstract bool AllowCSharpInMarkupAttributeArea { get; }
|
||||
|
||||
public abstract bool AllowNullableForgivenessOperator { get; }
|
||||
|
||||
private class DefaultRazorParserFeatureFlags : RazorParserFeatureFlags
|
||||
{
|
||||
public DefaultRazorParserFeatureFlags(
|
||||
|
|
@ -81,7 +86,8 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
bool allowRazorInAllCodeBlocks,
|
||||
bool allowUsingVariableDeclarations,
|
||||
bool allowConditionalDataDashAttributesInComponents,
|
||||
bool allowCSharpInMarkupAttributeArea)
|
||||
bool allowCSharpInMarkupAttributeArea,
|
||||
bool allowNullableForgivenessOperator)
|
||||
{
|
||||
AllowMinimizedBooleanTagHelperAttributes = allowMinimizedBooleanTagHelperAttributes;
|
||||
AllowHtmlCommentsInTagHelpers = allowHtmlCommentsInTagHelpers;
|
||||
|
|
@ -90,6 +96,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
AllowUsingVariableDeclarations = allowUsingVariableDeclarations;
|
||||
AllowConditionalDataDashAttributes = allowConditionalDataDashAttributesInComponents;
|
||||
AllowCSharpInMarkupAttributeArea = allowCSharpInMarkupAttributeArea;
|
||||
AllowNullableForgivenessOperator = allowNullableForgivenessOperator;
|
||||
}
|
||||
|
||||
public override bool AllowMinimizedBooleanTagHelperAttributes { get; }
|
||||
|
|
@ -105,6 +112,8 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
public override bool AllowConditionalDataDashAttributes { get; }
|
||||
|
||||
public override bool AllowCSharpInMarkupAttributeArea { get; }
|
||||
|
||||
public override bool AllowNullableForgivenessOperator { get; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using Microsoft.AspNetCore.Razor.Language.Extensions;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
||||
|
|
@ -217,6 +218,195 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
ParseDocumentTest("@val?.more(null ?? true)?.abc");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_NestedCodeBlock()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@{ @val!.Name![0]!?.Bar }");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_DirectiveCodeBlock()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@functions { public void Foo() { @Model!.Name![0]!?.Bar } }", new[] { FunctionsDirective.Directive });
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_DoubleBang_IncompleteBracket()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val!![");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_IncompleteBracket()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val![");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_IncompleteParenthesis()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val!(");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_IncompleteBracketWithIdentifier()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val![more");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_Brackets()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val![0]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_IncompleteBracketWithHtml()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val![<p>");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_MixedIncompleteBracket()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val![more.<p>");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_MixedNullConditional()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val?![more<p>");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_SingleOperator()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val![-1]!");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_Multiple_Incomplete()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val![abc]![def");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_Multiple()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val![abc]![2]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_MultipleMixed()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val![abc]!.more![def]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_MultipleMixed2()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val![abc]!.more!.abc");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_Bracket15()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val![null! ?? true]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_Nested()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val![abc!.gef![-1]]");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_Ending()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val!");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_CombinedWithNullConditional()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val!?");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_Combined()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val!?.more");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_EndingDotedOperator()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val!.");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_CombinedEnding()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val!?.");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_InvalidMethodEnding()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val!.(abc)");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_Incomplete_ContinuedHtml()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val!.<p>");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_FullExpression()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val!.more");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_FullExpressionWithHtml()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val!.more<p>");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void ParsesNullForgivenessOperatorImplicitExpression_Complex()
|
||||
{
|
||||
// Act & Assert
|
||||
ParseDocumentTest("@val!.more(false)!.<p>");
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void NestedImplicitExpression()
|
||||
{
|
||||
|
|
|
|||
|
|
@ -2251,7 +2251,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
bool allowRazorInCodeBlockDirectives = false,
|
||||
bool allowUsingVariableDeclarations = false,
|
||||
bool allowConditionalDataDashAttributesInComponents = false,
|
||||
bool allowCSharpInMarkupAttributeArea = true)
|
||||
bool allowCSharpInMarkupAttributeArea = true,
|
||||
bool allowNullableForgivenessOperator = false)
|
||||
{
|
||||
AllowMinimizedBooleanTagHelperAttributes = allowMinimizedBooleanTagHelperAttributes;
|
||||
AllowHtmlCommentsInTagHelpers = allowHtmlCommentsInTagHelper;
|
||||
|
|
@ -2260,6 +2261,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
AllowUsingVariableDeclarations = allowUsingVariableDeclarations;
|
||||
AllowConditionalDataDashAttributes = allowConditionalDataDashAttributesInComponents;
|
||||
AllowCSharpInMarkupAttributeArea = allowCSharpInMarkupAttributeArea;
|
||||
AllowNullableForgivenessOperator = allowNullableForgivenessOperator;
|
||||
}
|
||||
|
||||
public override bool AllowMinimizedBooleanTagHelperAttributes { get; }
|
||||
|
|
@ -2275,6 +2277,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Legacy
|
|||
public override bool AllowConditionalDataDashAttributes { get; }
|
||||
|
||||
public override bool AllowCSharpInMarkupAttributeArea { get; }
|
||||
|
||||
public override bool AllowNullableForgivenessOperator { get; }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,7 +1,6 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
|
|
@ -9,7 +8,20 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
public class RazorParserFeatureFlagsTest
|
||||
{
|
||||
[Fact]
|
||||
public void Create_LatestVersion_AllowsMinimizedBooleanTagHelperAttributes()
|
||||
public void Create_LatestVersion_AllowsLatestFeatures()
|
||||
{
|
||||
// Arrange & Act
|
||||
var context = RazorParserFeatureFlags.Create(RazorLanguageVersion.Latest, FileKinds.Legacy);
|
||||
|
||||
// Assert
|
||||
Assert.True(context.AllowComponentFileKind);
|
||||
Assert.True(context.AllowRazorInAllCodeBlocks);
|
||||
Assert.True(context.AllowUsingVariableDeclarations);
|
||||
Assert.True(context.AllowNullableForgivenessOperator);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Create_21Version_Allows21Features()
|
||||
{
|
||||
// Arrange & Act
|
||||
var context = RazorParserFeatureFlags.Create(RazorLanguageVersion.Version_2_1, FileKinds.Legacy);
|
||||
|
|
@ -20,14 +32,18 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
}
|
||||
|
||||
[Fact]
|
||||
public void Create_OlderVersion_DoesNotAllowMinimizedBooleanTagHelperAttributes()
|
||||
public void Create_OldestVersion_DoesNotAllowLatestFeatures()
|
||||
{
|
||||
// Arrange & Act
|
||||
var context = RazorParserFeatureFlags.Create(RazorLanguageVersion.Version_1_1, FileKinds.Legacy);
|
||||
var context = RazorParserFeatureFlags.Create(RazorLanguageVersion.Version_1_0, FileKinds.Legacy);
|
||||
|
||||
// Assert
|
||||
Assert.False(context.AllowMinimizedBooleanTagHelperAttributes);
|
||||
Assert.False(context.AllowHtmlCommentsInTagHelpers);
|
||||
Assert.False(context.AllowComponentFileKind);
|
||||
Assert.False(context.AllowRazorInAllCodeBlocks);
|
||||
Assert.False(context.AllowUsingVariableDeclarations);
|
||||
Assert.False(context.AllowNullableForgivenessOperator);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -37,6 +37,10 @@
|
|||
@val
|
||||
}
|
||||
|
||||
@Person!.Name
|
||||
@People![0]!.Name![1]
|
||||
@DoSomething!(Person!)
|
||||
|
||||
@functions {
|
||||
enum TestEnum
|
||||
{
|
||||
|
|
@ -49,4 +53,15 @@
|
|||
var disposables = (IDisposable[])ViewData["disposables"];
|
||||
return disposables[range][^1];
|
||||
}
|
||||
|
||||
private Human? Person { get; set; }
|
||||
|
||||
private Human?[]? People { get; set; }
|
||||
|
||||
private Func<Human, string>? DoSomething { get; set; }
|
||||
|
||||
private class Human
|
||||
{
|
||||
public string? Name { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -95,13 +95,34 @@ __o = val;
|
|||
|
||||
}
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
#nullable disable
|
||||
#nullable restore
|
||||
#line 40 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml"
|
||||
__o = Person!.Name;
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
#nullable disable
|
||||
#nullable restore
|
||||
#line 41 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml"
|
||||
__o = People![0]!.Name![1];
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
#nullable disable
|
||||
#nullable restore
|
||||
#line 42 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml"
|
||||
__o = DoSomething!(Person!);
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
#nullable disable
|
||||
}
|
||||
#pragma warning restore 1998
|
||||
#nullable restore
|
||||
#line 40 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml"
|
||||
#line 44 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml"
|
||||
|
||||
enum TestEnum
|
||||
{
|
||||
|
|
@ -115,6 +136,17 @@ __o = val;
|
|||
return disposables[range][^1];
|
||||
}
|
||||
|
||||
private Human? Person { get; set; }
|
||||
|
||||
private Human?[]? People { get; set; }
|
||||
|
||||
private Func<Human, string>? DoSomething { get; set; }
|
||||
|
||||
private class Human
|
||||
{
|
||||
public string? Name { get; set; }
|
||||
}
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
#nullable disable
|
||||
|
|
|
|||
|
|
@ -36,5 +36,17 @@ Document -
|
|||
IntermediateToken - (663:36,8 [3] CSharp8.cshtml) - CSharp - \n}
|
||||
HtmlContent - (666:37,1 [4] CSharp8.cshtml)
|
||||
IntermediateToken - (666:37,1 [4] CSharp8.cshtml) - Html - \n\n
|
||||
CSharpCode - (682:39,12 [245] CSharp8.cshtml)
|
||||
IntermediateToken - (682:39,12 [245] CSharp8.cshtml) - CSharp - \n enum TestEnum\n {\n First,\n Second\n }\n\n IDisposable GetLastDisposableInRange(Range range)\n {\n var disposables = (IDisposable[])ViewData["disposables"];\n return disposables[range][^1];\n }\n
|
||||
CSharpExpression - (671:39,1 [12] CSharp8.cshtml)
|
||||
IntermediateToken - (671:39,1 [12] CSharp8.cshtml) - CSharp - Person!.Name
|
||||
HtmlContent - (683:39,13 [2] CSharp8.cshtml)
|
||||
IntermediateToken - (683:39,13 [2] CSharp8.cshtml) - Html - \n
|
||||
CSharpExpression - (686:40,1 [20] CSharp8.cshtml)
|
||||
IntermediateToken - (686:40,1 [20] CSharp8.cshtml) - CSharp - People![0]!.Name![1]
|
||||
HtmlContent - (706:40,21 [2] CSharp8.cshtml)
|
||||
IntermediateToken - (706:40,21 [2] CSharp8.cshtml) - Html - \n
|
||||
CSharpExpression - (709:41,1 [21] CSharp8.cshtml)
|
||||
IntermediateToken - (709:41,1 [21] CSharp8.cshtml) - CSharp - DoSomething!(Person!)
|
||||
HtmlContent - (730:41,22 [4] CSharp8.cshtml)
|
||||
IntermediateToken - (730:41,22 [4] CSharp8.cshtml) - Html - \n\n
|
||||
CSharpCode - (746:43,12 [480] CSharp8.cshtml)
|
||||
IntermediateToken - (746:43,12 [480] CSharp8.cshtml) - CSharp - \n enum TestEnum\n {\n First,\n Second\n }\n\n IDisposable GetLastDisposableInRange(Range range)\n {\n var disposables = (IDisposable[])ViewData["disposables"];\n return disposables[range][^1];\n }\n\n private Human? Person { get; set; }\n\n private Human?[]? People { get; set; }\n\n private Func<Human, string>? DoSomething { get; set; }\n\n private class Human\n {\n public string? Name { get; set; }\n }\n
|
||||
|
|
|
|||
|
|
@ -94,7 +94,22 @@ Generated Location: (2486:94,8 [3] )
|
|||
|
|
||||
}|
|
||||
|
||||
Source Location: (682:39,12 [245] TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml)
|
||||
Source Location: (671:39,1 [12] TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml)
|
||||
|Person!.Name|
|
||||
Generated Location: (2650:102,6 [12] )
|
||||
|Person!.Name|
|
||||
|
||||
Source Location: (686:40,1 [20] TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml)
|
||||
|People![0]!.Name![1]|
|
||||
Generated Location: (2824:109,6 [20] )
|
||||
|People![0]!.Name![1]|
|
||||
|
||||
Source Location: (709:41,1 [21] TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml)
|
||||
|DoSomething!(Person!)|
|
||||
Generated Location: (3006:116,6 [21] )
|
||||
|DoSomething!(Person!)|
|
||||
|
||||
Source Location: (746:43,12 [480] TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml)
|
||||
|
|
||||
enum TestEnum
|
||||
{
|
||||
|
|
@ -107,8 +122,19 @@ Source Location: (682:39,12 [245] TestFiles/IntegrationTests/CodeGenerationInteg
|
|||
var disposables = (IDisposable[])ViewData["disposables"];
|
||||
return disposables[range][^1];
|
||||
}
|
||||
|
||||
private Human? Person { get; set; }
|
||||
|
||||
private Human?[]? People { get; set; }
|
||||
|
||||
private Func<Human, string>? DoSomething { get; set; }
|
||||
|
||||
private class Human
|
||||
{
|
||||
public string? Name { get; set; }
|
||||
}
|
||||
|
|
||||
Generated Location: (2705:104,12 [245] )
|
||||
Generated Location: (3244:125,12 [480] )
|
||||
|
|
||||
enum TestEnum
|
||||
{
|
||||
|
|
@ -121,5 +147,16 @@ Generated Location: (2705:104,12 [245] )
|
|||
var disposables = (IDisposable[])ViewData["disposables"];
|
||||
return disposables[range][^1];
|
||||
}
|
||||
|
||||
private Human? Person { get; set; }
|
||||
|
||||
private Human?[]? People { get; set; }
|
||||
|
||||
private Func<Human, string>? DoSomething { get; set; }
|
||||
|
||||
private class Human
|
||||
{
|
||||
public string? Name { get; set; }
|
||||
}
|
||||
|
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
#pragma checksum "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "fee381e8889cc49d7a4b1dea29510c0fc9ac44c9"
|
||||
#pragma checksum "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "f830678e508a850354b4240a5821a1d75347fa64"
|
||||
// <auto-generated/>
|
||||
#pragma warning disable 1591
|
||||
[assembly: global::Microsoft.AspNetCore.Razor.Hosting.RazorCompiledItemAttribute(typeof(Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles.TestFiles_IntegrationTests_CodeGenerationIntegrationTest_CSharp8_Runtime), @"default", @"/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml")]
|
||||
|
|
@ -12,7 +12,7 @@ using System.Collections.Generic;
|
|||
#line default
|
||||
#line hidden
|
||||
#nullable disable
|
||||
[global::Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute(@"SHA1", @"fee381e8889cc49d7a4b1dea29510c0fc9ac44c9", @"/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml")]
|
||||
[global::Microsoft.AspNetCore.Razor.Hosting.RazorSourceChecksumAttribute(@"SHA1", @"f830678e508a850354b4240a5821a1d75347fa64", @"/TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml")]
|
||||
public class TestFiles_IntegrationTests_CodeGenerationIntegrationTest_CSharp8_Runtime
|
||||
{
|
||||
#pragma warning disable 1998
|
||||
|
|
@ -100,10 +100,34 @@ Write(val);
|
|||
#line hidden
|
||||
#nullable disable
|
||||
WriteLiteral("\r\n");
|
||||
#nullable restore
|
||||
#line 40 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml"
|
||||
Write(Person!.Name);
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
#nullable disable
|
||||
WriteLiteral("\r\n");
|
||||
#nullable restore
|
||||
#line 41 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml"
|
||||
Write(People![0]!.Name![1]);
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
#nullable disable
|
||||
WriteLiteral("\r\n");
|
||||
#nullable restore
|
||||
#line 42 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml"
|
||||
Write(DoSomething!(Person!));
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
#nullable disable
|
||||
WriteLiteral("\r\n\r\n");
|
||||
}
|
||||
#pragma warning restore 1998
|
||||
#nullable restore
|
||||
#line 40 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml"
|
||||
#line 44 "TestFiles/IntegrationTests/CodeGenerationIntegrationTest/CSharp8.cshtml"
|
||||
|
||||
enum TestEnum
|
||||
{
|
||||
|
|
@ -117,6 +141,17 @@ Write(val);
|
|||
return disposables[range][^1];
|
||||
}
|
||||
|
||||
private Human? Person { get; set; }
|
||||
|
||||
private Human?[]? People { get; set; }
|
||||
|
||||
private Func<Human, string>? DoSomething { get; set; }
|
||||
|
||||
private class Human
|
||||
{
|
||||
public string? Name { get; set; }
|
||||
}
|
||||
|
||||
#line default
|
||||
#line hidden
|
||||
#nullable disable
|
||||
|
|
|
|||
|
|
@ -31,5 +31,17 @@ Document -
|
|||
IntermediateToken - (663:36,8 [5] CSharp8.cshtml) - CSharp - \n}\n
|
||||
HtmlContent - (668:38,0 [2] CSharp8.cshtml)
|
||||
IntermediateToken - (668:38,0 [2] CSharp8.cshtml) - Html - \n
|
||||
CSharpCode - (682:39,12 [245] CSharp8.cshtml)
|
||||
IntermediateToken - (682:39,12 [245] CSharp8.cshtml) - CSharp - \n enum TestEnum\n {\n First,\n Second\n }\n\n IDisposable GetLastDisposableInRange(Range range)\n {\n var disposables = (IDisposable[])ViewData["disposables"];\n return disposables[range][^1];\n }\n
|
||||
CSharpExpression - (671:39,1 [12] CSharp8.cshtml)
|
||||
IntermediateToken - (671:39,1 [12] CSharp8.cshtml) - CSharp - Person!.Name
|
||||
HtmlContent - (683:39,13 [2] CSharp8.cshtml)
|
||||
IntermediateToken - (683:39,13 [2] CSharp8.cshtml) - Html - \n
|
||||
CSharpExpression - (686:40,1 [20] CSharp8.cshtml)
|
||||
IntermediateToken - (686:40,1 [20] CSharp8.cshtml) - CSharp - People![0]!.Name![1]
|
||||
HtmlContent - (706:40,21 [2] CSharp8.cshtml)
|
||||
IntermediateToken - (706:40,21 [2] CSharp8.cshtml) - Html - \n
|
||||
CSharpExpression - (709:41,1 [21] CSharp8.cshtml)
|
||||
IntermediateToken - (709:41,1 [21] CSharp8.cshtml) - CSharp - DoSomething!(Person!)
|
||||
HtmlContent - (730:41,22 [4] CSharp8.cshtml)
|
||||
IntermediateToken - (730:41,22 [4] CSharp8.cshtml) - Html - \n\n
|
||||
CSharpCode - (746:43,12 [480] CSharp8.cshtml)
|
||||
IntermediateToken - (746:43,12 [480] CSharp8.cshtml) - CSharp - \n enum TestEnum\n {\n First,\n Second\n }\n\n IDisposable GetLastDisposableInRange(Range range)\n {\n var disposables = (IDisposable[])ViewData["disposables"];\n return disposables[range][^1];\n }\n\n private Human? Person { get; set; }\n\n private Human?[]? People { get; set; }\n\n private Func<Human, string>? DoSomething { get; set; }\n\n private class Human\n {\n public string? Name { get; set; }\n }\n
|
||||
|
|
|
|||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [20] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [20] )
|
||||
Code span at (1:0,1 [19] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [20] )
|
||||
Markup span at (20:0,20 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [20] )
|
||||
|
|
@ -0,0 +1,23 @@
|
|||
RazorDocument - [0..20)::20 - [@val![null! ?? true]]
|
||||
MarkupBlock - [0..20)::20
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..20)::20
|
||||
CSharpImplicitExpression - [0..20)::20
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..20)::19
|
||||
CSharpCodeBlock - [1..20)::19
|
||||
CSharpExpressionLiteral - [1..20)::19 - [val![null! ?? true]] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
Keyword;[null];
|
||||
Not;[!];
|
||||
Whitespace;[ ];
|
||||
NullCoalesce;[??];
|
||||
Whitespace;[ ];
|
||||
Keyword;[true];
|
||||
RightBracket;[]];
|
||||
MarkupTextLiteral - [20..20)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [8] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [8] )
|
||||
Code span at (1:0,1 [7] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [8] )
|
||||
Markup span at (8:0,8 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [8] )
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
RazorDocument - [0..8)::8 - [@val![0]]
|
||||
MarkupBlock - [0..8)::8
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..8)::8
|
||||
CSharpImplicitExpression - [0..8)::8
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..8)::7
|
||||
CSharpCodeBlock - [1..8)::7
|
||||
CSharpExpressionLiteral - [1..8)::7 - [val![0]] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
IntegerLiteral;[0];
|
||||
RightBracket;[]];
|
||||
MarkupTextLiteral - [8..8)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [11] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [11] )
|
||||
Code span at (1:0,1 [10] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [11] )
|
||||
Markup span at (11:0,11 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [11] )
|
||||
|
|
@ -0,0 +1,18 @@
|
|||
RazorDocument - [0..11)::11 - [@val!?.more]
|
||||
MarkupBlock - [0..11)::11
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..11)::11
|
||||
CSharpImplicitExpression - [0..11)::11
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..11)::10
|
||||
CSharpCodeBlock - [1..11)::10
|
||||
CSharpExpressionLiteral - [1..11)::10 - [val!?.more] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
QuestionMark;[?];
|
||||
Dot;[.];
|
||||
Identifier;[more];
|
||||
MarkupTextLiteral - [11..11)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [7] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [7] )
|
||||
Code span at (1:0,1 [6] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [7] )
|
||||
Markup span at (7:0,7 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [7] )
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
RazorDocument - [0..7)::7 - [@val!?.]
|
||||
MarkupBlock - [0..7)::7
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..7)::7
|
||||
CSharpImplicitExpression - [0..7)::7
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..7)::6
|
||||
CSharpCodeBlock - [1..7)::6
|
||||
CSharpExpressionLiteral - [1..7)::6 - [val!?.] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
QuestionMark;[?];
|
||||
Dot;[.];
|
||||
MarkupTextLiteral - [7..7)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [6] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [5] )
|
||||
Code span at (1:0,1 [4] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [5] )
|
||||
Markup span at (5:0,5 [1] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [6] )
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
RazorDocument - [0..6)::6 - [@val!?]
|
||||
MarkupBlock - [0..6)::6
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..5)::5
|
||||
CSharpImplicitExpression - [0..5)::5
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..5)::4
|
||||
CSharpCodeBlock - [1..5)::4
|
||||
CSharpExpressionLiteral - [1..5)::4 - [val!] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
MarkupTextLiteral - [5..6)::1 - [?] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
QuestionMark;[?];
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [22] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [17] )
|
||||
Code span at (1:0,1 [16] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [17] )
|
||||
Markup span at (17:0,17 [2] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [22] )
|
||||
Markup span at (19:0,19 [3] ) (Accepts:Any) - Parent: Tag block at (19:0,19 [3] )
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
RazorDocument - [0..22)::22 - [@val!.more(false)!.<p>]
|
||||
MarkupBlock - [0..22)::22
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..17)::17
|
||||
CSharpImplicitExpression - [0..17)::17
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..17)::16
|
||||
CSharpCodeBlock - [1..17)::16
|
||||
CSharpExpressionLiteral - [1..17)::16 - [val!.more(false)] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
Dot;[.];
|
||||
Identifier;[more];
|
||||
LeftParenthesis;[(];
|
||||
Keyword;[false];
|
||||
RightParenthesis;[)];
|
||||
MarkupTextLiteral - [17..19)::2 - [!.] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Bang;[!];
|
||||
Text;[.];
|
||||
MarkupElement - [19..22)::3
|
||||
MarkupStartTag - [19..22)::3 - [<p>] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
OpenAngle;[<];
|
||||
Text;[p];
|
||||
CloseAngle;[>];
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [59] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Directive block at (0:0,0 [59] )
|
||||
MetaCode span at (1:0,1 [9] ) (Accepts:None) - Parent: Directive block at (0:0,0 [59] )
|
||||
None span at (10:0,10 [1] ) (Accepts:AllWhitespace) - Parent: Directive block at (0:0,0 [59] )
|
||||
MetaCode span at (11:0,11 [1] ) (Accepts:None) - Parent: Directive block at (0:0,0 [59] )
|
||||
Code span at (12:0,12 [21] ) (Accepts:Any) - Parent: Statement block at (12:0,12 [46] )
|
||||
Transition span at (33:0,33 [1] ) (Accepts:None) - Parent: Expression block at (33:0,33 [22] )
|
||||
Code span at (34:0,34 [21] ) (Accepts:NonWhitespace) - Parent: Expression block at (33:0,33 [22] )
|
||||
Code span at (55:0,55 [3] ) (Accepts:Any) - Parent: Statement block at (12:0,12 [46] )
|
||||
MetaCode span at (58:0,58 [1] ) (Accepts:None) - Parent: Directive block at (0:0,0 [59] )
|
||||
Markup span at (59:0,59 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [59] )
|
||||
|
|
@ -0,0 +1,56 @@
|
|||
RazorDocument - [0..59)::59 - [@functions { public void Foo() { @Model!.Name![0]!?.Bar } }]
|
||||
MarkupBlock - [0..59)::59
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..59)::59
|
||||
RazorDirective - [0..59)::59 - Directive:{functions;CodeBlock;Unrestricted}
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
RazorDirectiveBody - [1..59)::58
|
||||
RazorMetaCode - [1..10)::9 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Identifier;[functions];
|
||||
CSharpCodeBlock - [10..59)::49
|
||||
UnclassifiedTextLiteral - [10..11)::1 - [ ] - Gen<None> - SpanEditHandler;Accepts:AllWhitespace
|
||||
Whitespace;[ ];
|
||||
RazorMetaCode - [11..12)::1 - Gen<None> - AutoCompleteEditHandler;Accepts:None,AutoComplete:[<null>];AtEnd
|
||||
LeftBrace;[{];
|
||||
CSharpCodeBlock - [12..58)::46
|
||||
CSharpStatementLiteral - [12..33)::21 - [ public void Foo() { ] - Gen<Stmt> - CodeBlockEditHandler;Accepts:Any;CodeBlock
|
||||
Whitespace;[ ];
|
||||
Keyword;[public];
|
||||
Whitespace;[ ];
|
||||
Keyword;[void];
|
||||
Whitespace;[ ];
|
||||
Identifier;[Foo];
|
||||
LeftParenthesis;[(];
|
||||
RightParenthesis;[)];
|
||||
Whitespace;[ ];
|
||||
LeftBrace;[{];
|
||||
Whitespace;[ ];
|
||||
CSharpCodeBlock - [33..55)::22
|
||||
CSharpImplicitExpression - [33..55)::22
|
||||
CSharpTransition - [33..34)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [34..55)::21
|
||||
CSharpCodeBlock - [34..55)::21
|
||||
CSharpExpressionLiteral - [34..55)::21 - [Model!.Name![0]!?.Bar] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[ATD];K15
|
||||
Identifier;[Model];
|
||||
Not;[!];
|
||||
Dot;[.];
|
||||
Identifier;[Name];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
IntegerLiteral;[0];
|
||||
RightBracket;[]];
|
||||
Not;[!];
|
||||
QuestionMark;[?];
|
||||
Dot;[.];
|
||||
Identifier;[Bar];
|
||||
CSharpStatementLiteral - [55..58)::3 - [ } ] - Gen<Stmt> - SpanEditHandler;Accepts:Any
|
||||
Whitespace;[ ];
|
||||
RightBrace;[}];
|
||||
Whitespace;[ ];
|
||||
RazorMetaCode - [58..59)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
RightBrace;[}];
|
||||
MarkupTextLiteral - [59..59)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [7] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [4] )
|
||||
Code span at (1:0,1 [3] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [4] )
|
||||
Markup span at (4:0,4 [3] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [7] )
|
||||
|
|
@ -0,0 +1,16 @@
|
|||
RazorDocument - [0..7)::7 - [@val!![]
|
||||
MarkupBlock - [0..7)::7
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..4)::4
|
||||
CSharpImplicitExpression - [0..4)::4
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..4)::3
|
||||
CSharpCodeBlock - [1..4)::3
|
||||
CSharpExpressionLiteral - [1..4)::3 - [val] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
MarkupTextLiteral - [4..7)::3 - [!![] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Bang;[!];
|
||||
Bang;[!];
|
||||
LeftBracket;[[];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [5] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [4] )
|
||||
Code span at (1:0,1 [3] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [4] )
|
||||
Markup span at (4:0,4 [1] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [5] )
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
RazorDocument - [0..5)::5 - [@val!]
|
||||
MarkupBlock - [0..5)::5
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..4)::4
|
||||
CSharpImplicitExpression - [0..4)::4
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..4)::3
|
||||
CSharpCodeBlock - [1..4)::3
|
||||
CSharpExpressionLiteral - [1..4)::3 - [val] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
MarkupTextLiteral - [4..5)::1 - [!] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Bang;[!];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [6] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [4] )
|
||||
Code span at (1:0,1 [3] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [4] )
|
||||
Markup span at (4:0,4 [2] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [6] )
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
RazorDocument - [0..6)::6 - [@val!.]
|
||||
MarkupBlock - [0..6)::6
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..4)::4
|
||||
CSharpImplicitExpression - [0..4)::4
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..4)::3
|
||||
CSharpCodeBlock - [1..4)::3
|
||||
CSharpExpressionLiteral - [1..4)::3 - [val] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
MarkupTextLiteral - [4..6)::2 - [!.] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Bang;[!];
|
||||
Text;[.];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [10] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [10] )
|
||||
Code span at (1:0,1 [9] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [10] )
|
||||
Markup span at (10:0,10 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [10] )
|
||||
|
|
@ -0,0 +1,17 @@
|
|||
RazorDocument - [0..10)::10 - [@val!.more]
|
||||
MarkupBlock - [0..10)::10
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..10)::10
|
||||
CSharpImplicitExpression - [0..10)::10
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..10)::9
|
||||
CSharpCodeBlock - [1..10)::9
|
||||
CSharpExpressionLiteral - [1..10)::9 - [val!.more] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
Dot;[.];
|
||||
Identifier;[more];
|
||||
MarkupTextLiteral - [10..10)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [13] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [10] )
|
||||
Code span at (1:0,1 [9] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [10] )
|
||||
Markup span at (10:0,10 [3] ) (Accepts:Any) - Parent: Tag block at (10:0,10 [3] )
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
RazorDocument - [0..13)::13 - [@val!.more<p>]
|
||||
MarkupBlock - [0..13)::13
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..10)::10
|
||||
CSharpImplicitExpression - [0..10)::10
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..10)::9
|
||||
CSharpCodeBlock - [1..10)::9
|
||||
CSharpExpressionLiteral - [1..10)::9 - [val!.more] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
Dot;[.];
|
||||
Identifier;[more];
|
||||
MarkupElement - [10..13)::3
|
||||
MarkupStartTag - [10..13)::3 - [<p>] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
OpenAngle;[<];
|
||||
Text;[p];
|
||||
CloseAngle;[>];
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [6] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [6] )
|
||||
Code span at (1:0,1 [5] ) (Accepts:Any) - Parent: Expression block at (0:0,0 [6] )
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,6): Error RZ1027: An opening "[" is missing the corresponding closing "]".
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
RazorDocument - [0..6)::6 - [@val![]
|
||||
MarkupBlock - [0..6)::6
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..6)::6
|
||||
CSharpImplicitExpression - [0..6)::6
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..6)::5
|
||||
CSharpCodeBlock - [1..6)::5
|
||||
CSharpExpressionLiteral - [1..6)::5 - [val![] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:Any;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [9] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [6] )
|
||||
Code span at (1:0,1 [5] ) (Accepts:Any) - Parent: Expression block at (0:0,0 [6] )
|
||||
Markup span at (6:0,6 [3] ) (Accepts:Any) - Parent: Tag block at (6:0,6 [3] )
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,6): Error RZ1027: An opening "[" is missing the corresponding closing "]".
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
RazorDocument - [0..9)::9 - [@val![<p>]
|
||||
MarkupBlock - [0..9)::9
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..6)::6
|
||||
CSharpImplicitExpression - [0..6)::6
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..6)::5
|
||||
CSharpCodeBlock - [1..6)::5
|
||||
CSharpExpressionLiteral - [1..6)::5 - [val![] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:Any;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
MarkupElement - [6..9)::3
|
||||
MarkupStartTag - [6..9)::3 - [<p>] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
OpenAngle;[<];
|
||||
Text;[p];
|
||||
CloseAngle;[>];
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [10] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [10] )
|
||||
Code span at (1:0,1 [9] ) (Accepts:Any) - Parent: Expression block at (0:0,0 [10] )
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,6): Error RZ1027: An opening "[" is missing the corresponding closing "]".
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
RazorDocument - [0..10)::10 - [@val![more]
|
||||
MarkupBlock - [0..10)::10
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..10)::10
|
||||
CSharpImplicitExpression - [0..10)::10
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..10)::9
|
||||
CSharpCodeBlock - [1..10)::9
|
||||
CSharpExpressionLiteral - [1..10)::9 - [val![more] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:Any;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
Identifier;[more];
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [6] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [6] )
|
||||
Code span at (1:0,1 [5] ) (Accepts:Any) - Parent: Expression block at (0:0,0 [6] )
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,6): Error RZ1027: An opening "(" is missing the corresponding closing ")".
|
||||
|
|
@ -0,0 +1,14 @@
|
|||
RazorDocument - [0..6)::6 - [@val!(]
|
||||
MarkupBlock - [0..6)::6
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..6)::6
|
||||
CSharpImplicitExpression - [0..6)::6
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..6)::5
|
||||
CSharpCodeBlock - [1..6)::5
|
||||
CSharpExpressionLiteral - [1..6)::5 - [val!(] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:Any;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftParenthesis;[(];
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [9] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [4] )
|
||||
Code span at (1:0,1 [3] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [4] )
|
||||
Markup span at (4:0,4 [2] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [9] )
|
||||
Markup span at (6:0,6 [3] ) (Accepts:Any) - Parent: Tag block at (6:0,6 [3] )
|
||||
|
|
@ -0,0 +1,20 @@
|
|||
RazorDocument - [0..9)::9 - [@val!.<p>]
|
||||
MarkupBlock - [0..9)::9
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..4)::4
|
||||
CSharpImplicitExpression - [0..4)::4
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..4)::3
|
||||
CSharpCodeBlock - [1..4)::3
|
||||
CSharpExpressionLiteral - [1..4)::3 - [val] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
MarkupTextLiteral - [4..6)::2 - [!.] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Bang;[!];
|
||||
Text;[.];
|
||||
MarkupElement - [6..9)::3
|
||||
MarkupStartTag - [6..9)::3 - [<p>] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
OpenAngle;[<];
|
||||
Text;[p];
|
||||
CloseAngle;[>];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [11] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [4] )
|
||||
Code span at (1:0,1 [3] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [4] )
|
||||
Markup span at (4:0,4 [7] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [11] )
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
RazorDocument - [0..11)::11 - [@val!.(abc)]
|
||||
MarkupBlock - [0..11)::11
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..4)::4
|
||||
CSharpImplicitExpression - [0..4)::4
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..4)::3
|
||||
CSharpCodeBlock - [1..4)::3
|
||||
CSharpExpressionLiteral - [1..4)::3 - [val] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
MarkupTextLiteral - [4..11)::7 - [!.(abc)] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Bang;[!];
|
||||
Text;[.(abc)];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [14] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [11] )
|
||||
Code span at (1:0,1 [10] ) (Accepts:Any) - Parent: Expression block at (0:0,0 [11] )
|
||||
Markup span at (11:0,11 [3] ) (Accepts:Any) - Parent: Tag block at (11:0,11 [3] )
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,6): Error RZ1027: An opening "[" is missing the corresponding closing "]".
|
||||
|
|
@ -0,0 +1,21 @@
|
|||
RazorDocument - [0..14)::14 - [@val![more.<p>]
|
||||
MarkupBlock - [0..14)::14
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..11)::11
|
||||
CSharpImplicitExpression - [0..11)::11
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..11)::10
|
||||
CSharpCodeBlock - [1..11)::10
|
||||
CSharpExpressionLiteral - [1..11)::10 - [val![more.] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:Any;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
Identifier;[more];
|
||||
Dot;[.];
|
||||
MarkupElement - [11..14)::3
|
||||
MarkupStartTag - [11..14)::3 - [<p>] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
OpenAngle;[<];
|
||||
Text;[p];
|
||||
CloseAngle;[>];
|
||||
|
|
@ -0,0 +1,5 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [14] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [4] )
|
||||
Code span at (1:0,1 [3] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [4] )
|
||||
Markup span at (4:0,4 [7] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [14] )
|
||||
Markup span at (11:0,11 [3] ) (Accepts:Any) - Parent: Tag block at (11:0,11 [3] )
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
RazorDocument - [0..14)::14 - [@val?![more<p>]
|
||||
MarkupBlock - [0..14)::14
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..4)::4
|
||||
CSharpImplicitExpression - [0..4)::4
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..4)::3
|
||||
CSharpCodeBlock - [1..4)::3
|
||||
CSharpExpressionLiteral - [1..4)::3 - [val] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
MarkupTextLiteral - [4..11)::7 - [?![more] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
QuestionMark;[?];
|
||||
Bang;[!];
|
||||
LeftBracket;[[];
|
||||
Text;[more];
|
||||
MarkupElement - [11..14)::3
|
||||
MarkupStartTag - [11..14)::3 - [<p>] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
OpenAngle;[<];
|
||||
Text;[p];
|
||||
CloseAngle;[>];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [14] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [14] )
|
||||
Code span at (1:0,1 [13] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [14] )
|
||||
Markup span at (14:0,14 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [14] )
|
||||
|
|
@ -0,0 +1,22 @@
|
|||
RazorDocument - [0..14)::14 - [@val![abc]![2]]
|
||||
MarkupBlock - [0..14)::14
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..14)::14
|
||||
CSharpImplicitExpression - [0..14)::14
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..14)::13
|
||||
CSharpCodeBlock - [1..14)::13
|
||||
CSharpExpressionLiteral - [1..14)::13 - [val![abc]![2]] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
Identifier;[abc];
|
||||
RightBracket;[]];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
IntegerLiteral;[2];
|
||||
RightBracket;[]];
|
||||
MarkupTextLiteral - [14..14)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [22] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [22] )
|
||||
Code span at (1:0,1 [21] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [22] )
|
||||
Markup span at (22:0,22 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [22] )
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
RazorDocument - [0..22)::22 - [@val![abc]!.more![def]]
|
||||
MarkupBlock - [0..22)::22
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..22)::22
|
||||
CSharpImplicitExpression - [0..22)::22
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..22)::21
|
||||
CSharpCodeBlock - [1..22)::21
|
||||
CSharpExpressionLiteral - [1..22)::21 - [val![abc]!.more![def]] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
Identifier;[abc];
|
||||
RightBracket;[]];
|
||||
Not;[!];
|
||||
Dot;[.];
|
||||
Identifier;[more];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
Identifier;[def];
|
||||
RightBracket;[]];
|
||||
MarkupTextLiteral - [22..22)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [21] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [21] )
|
||||
Code span at (1:0,1 [20] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [21] )
|
||||
Markup span at (21:0,21 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [21] )
|
||||
|
|
@ -0,0 +1,24 @@
|
|||
RazorDocument - [0..21)::21 - [@val![abc]!.more!.abc]
|
||||
MarkupBlock - [0..21)::21
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..21)::21
|
||||
CSharpImplicitExpression - [0..21)::21
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..21)::20
|
||||
CSharpCodeBlock - [1..21)::20
|
||||
CSharpExpressionLiteral - [1..21)::20 - [val![abc]!.more!.abc] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
Identifier;[abc];
|
||||
RightBracket;[]];
|
||||
Not;[!];
|
||||
Dot;[.];
|
||||
Identifier;[more];
|
||||
Not;[!];
|
||||
Dot;[.];
|
||||
Identifier;[abc];
|
||||
MarkupTextLiteral - [21..21)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
|
|
@ -0,0 +1,3 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [15] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [15] )
|
||||
Code span at (1:0,1 [14] ) (Accepts:Any) - Parent: Expression block at (0:0,0 [15] )
|
||||
|
|
@ -0,0 +1 @@
|
|||
(1,12): Error RZ1027: An opening "[" is missing the corresponding closing "]".
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
RazorDocument - [0..15)::15 - [@val![abc]![def]
|
||||
MarkupBlock - [0..15)::15
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..15)::15
|
||||
CSharpImplicitExpression - [0..15)::15
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..15)::14
|
||||
CSharpCodeBlock - [1..15)::14
|
||||
CSharpExpressionLiteral - [1..15)::14 - [val![abc]![def] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:Any;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
Identifier;[abc];
|
||||
RightBracket;[]];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
Identifier;[def];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [20] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [20] )
|
||||
Code span at (1:0,1 [19] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [20] )
|
||||
Markup span at (20:0,20 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [20] )
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
RazorDocument - [0..20)::20 - [@val![abc!.gef![-1]]]
|
||||
MarkupBlock - [0..20)::20
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..20)::20
|
||||
CSharpImplicitExpression - [0..20)::20
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..20)::19
|
||||
CSharpCodeBlock - [1..20)::19
|
||||
CSharpExpressionLiteral - [1..20)::19 - [val![abc!.gef![-1]]] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
Identifier;[abc];
|
||||
Not;[!];
|
||||
Dot;[.];
|
||||
Identifier;[gef];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
Minus;[-];
|
||||
IntegerLiteral;[1];
|
||||
RightBracket;[]];
|
||||
RightBracket;[]];
|
||||
MarkupTextLiteral - [20..20)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [25] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Statement block at (0:0,0 [25] )
|
||||
MetaCode span at (1:0,1 [1] ) (Accepts:None) - Parent: Statement block at (0:0,0 [25] )
|
||||
Code span at (2:0,2 [1] ) (Accepts:Any) - Parent: Statement block at (0:0,0 [25] )
|
||||
Transition span at (3:0,3 [1] ) (Accepts:None) - Parent: Expression block at (3:0,3 [20] )
|
||||
Code span at (4:0,4 [19] ) (Accepts:NonWhitespace) - Parent: Expression block at (3:0,3 [20] )
|
||||
Code span at (23:0,23 [1] ) (Accepts:Any) - Parent: Statement block at (0:0,0 [25] )
|
||||
MetaCode span at (24:0,24 [1] ) (Accepts:None) - Parent: Statement block at (0:0,0 [25] )
|
||||
Markup span at (25:0,25 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [25] )
|
||||
|
|
@ -0,0 +1,39 @@
|
|||
RazorDocument - [0..25)::25 - [@{ @val!.Name![0]!?.Bar }]
|
||||
MarkupBlock - [0..25)::25
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..25)::25
|
||||
CSharpStatement - [0..25)::25
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpStatementBody - [1..25)::24
|
||||
RazorMetaCode - [1..2)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
LeftBrace;[{];
|
||||
CSharpCodeBlock - [2..24)::22
|
||||
CSharpStatementLiteral - [2..3)::1 - [ ] - Gen<Stmt> - AutoCompleteEditHandler;Accepts:Any,AutoComplete:[<null>];AtEOL
|
||||
Whitespace;[ ];
|
||||
CSharpCodeBlock - [3..23)::20
|
||||
CSharpImplicitExpression - [3..23)::20
|
||||
CSharpTransition - [3..4)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [4..23)::19
|
||||
CSharpCodeBlock - [4..23)::19
|
||||
CSharpExpressionLiteral - [4..23)::19 - [val!.Name![0]!?.Bar] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[ATD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
Dot;[.];
|
||||
Identifier;[Name];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
IntegerLiteral;[0];
|
||||
RightBracket;[]];
|
||||
Not;[!];
|
||||
QuestionMark;[?];
|
||||
Dot;[.];
|
||||
Identifier;[Bar];
|
||||
CSharpStatementLiteral - [23..24)::1 - [ ] - Gen<Stmt> - SpanEditHandler;Accepts:Any
|
||||
Whitespace;[ ];
|
||||
RazorMetaCode - [24..25)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
RightBrace;[}];
|
||||
MarkupTextLiteral - [25..25)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
|
|
@ -0,0 +1,4 @@
|
|||
Markup span at (0:0,0 [0] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [10] )
|
||||
Transition span at (0:0,0 [1] ) (Accepts:None) - Parent: Expression block at (0:0,0 [9] )
|
||||
Code span at (1:0,1 [8] ) (Accepts:NonWhitespace) - Parent: Expression block at (0:0,0 [9] )
|
||||
Markup span at (9:0,9 [1] ) (Accepts:Any) - Parent: Markup block at (0:0,0 [10] )
|
||||
|
|
@ -0,0 +1,19 @@
|
|||
RazorDocument - [0..10)::10 - [@val![-1]!]
|
||||
MarkupBlock - [0..10)::10
|
||||
MarkupTextLiteral - [0..0)::0 - [] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Marker;[];
|
||||
CSharpCodeBlock - [0..9)::9
|
||||
CSharpImplicitExpression - [0..9)::9
|
||||
CSharpTransition - [0..1)::1 - Gen<None> - SpanEditHandler;Accepts:None
|
||||
Transition;[@];
|
||||
CSharpImplicitExpressionBody - [1..9)::8
|
||||
CSharpCodeBlock - [1..9)::8
|
||||
CSharpExpressionLiteral - [1..9)::8 - [val![-1]] - Gen<Expr> - ImplicitExpressionEditHandler;Accepts:NonWhitespace;ImplicitExpression[RTD];K14
|
||||
Identifier;[val];
|
||||
Not;[!];
|
||||
LeftBracket;[[];
|
||||
Minus;[-];
|
||||
IntegerLiteral;[1];
|
||||
RightBracket;[]];
|
||||
MarkupTextLiteral - [9..10)::1 - [!] - Gen<Markup> - SpanEditHandler;Accepts:Any
|
||||
Bang;[!];
|
||||
Loading…
Reference in New Issue