Hello, @user!
+} diff --git a/src/Compiler/Microsoft.AspNetCore.Razor.Language/legacyTest/TestFiles/ParserTests/CSharpBlockTest/TreatsAtSignsAfterFirstPairAsPartOfCSharpStatement.stree.txt b/src/Compiler/Microsoft.AspNetCore.Razor.Language/legacyTest/TestFiles/ParserTests/CSharpBlockTest/TreatsAtSignsAfterFirstPairAsPartOfCSharpStatement.stree.txt index 1c05c134e87..92e7344e94e 100644 --- a/src/Compiler/Microsoft.AspNetCore.Razor.Language/legacyTest/TestFiles/ParserTests/CSharpBlockTest/TreatsAtSignsAfterFirstPairAsPartOfCSharpStatement.stree.txt +++ b/src/Compiler/Microsoft.AspNetCore.Razor.Language/legacyTest/TestFiles/ParserTests/CSharpBlockTest/TreatsAtSignsAfterFirstPairAsPartOfCSharpStatement.stree.txt @@ -17,9 +17,8 @@ Transition;[@]; CSharpStatementLiteral - [12..28)::16 - [@@@class.Foo() }] - GenFoo is @foo
LF}] - Gen] - Gen
@context[0].description
@@ -599,7 +599,7 @@ @typeparam TItem2 CompileToAssembly(generated); AdditionalSyntaxTrees.Add(Parse(generated.CodeDocument.GetCSharpDocument().GeneratedCode)); - var useGenerated = CompileToCSharp("UseTestComponent.cshtml", @" + var useGenerated = CompileToCSharp("UseTestComponent.cshtml", cshtmlContent: @" @using Test@context
@@ -742,7 +742,7 @@ public class Tag : ITag CompileToAssembly(generated); AdditionalSyntaxTrees.Add(Parse(generated.CodeDocument.GetCSharpDocument().GeneratedCode)); - var useGenerated = CompileToCSharp("UseTestComponent.cshtml", @" + var useGenerated = CompileToCSharp("UseTestComponent.cshtml", cshtmlContent: @" @using Test@context
@@ -819,7 +819,7 @@ public class Tag : ITag CompileToAssembly(generated); AdditionalSyntaxTrees.Add(Parse(generated.CodeDocument.GetCSharpDocument().GeneratedCode)); - var useGenerated = CompileToCSharp("UseTestComponent.cshtml", @" + var useGenerated = CompileToCSharp("UseTestComponent.cshtml", cshtmlContent: @" @using Test@context
@@ -913,11 +913,10 @@ public class CoolnessMeter : ComponentBase AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - var assembly = CompileToAssembly(generated, throwOnFailure: false); - // This has some errors - Assert.Collection( - assembly.Diagnostics.OrderBy(d => d.Id), - d => Assert.Equal("CS1503", d.Id)); + CompileToAssembly(generated, + // x:\dir\subdir\Test\TestComponent.cshtml(1,28): error CS1503: Argument 1: cannot convert from 'string' to 'int' + // "very-cool" + Diagnostic(ErrorCode.ERR_BadArgType, @"""very-cool""").WithArguments("1", "string", "int").WithLocation(1, 28)); } [IntegrationTestFact] @@ -1109,9 +1108,9 @@ public class ComponentWithEditorRequiredParameters : ComponentBase "); AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: false); + CompileToAssembly(generated); - var diagnostics = Assert.Single(generated.Diagnostics); + var diagnostics = Assert.Single(generated.RazorDiagnostics); Assert.Equal(RazorDiagnosticSeverity.Warning, diagnostics.Severity); Assert.Equal("RZ2012", diagnostics.Id); } @@ -1139,7 +1138,7 @@ public class ComponentWithEditorRequiredParameters : ComponentBase AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); CompileToAssembly(generated); - Assert.Empty(generated.Diagnostics); + Assert.Empty(generated.RazorDiagnostics); } [IntegrationTestFact] @@ -1165,7 +1164,7 @@ public class ComponentWithEditorRequiredParameters : ComponentBase AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); CompileToAssembly(generated); - Assert.Empty(generated.Diagnostics); + Assert.Empty(generated.RazorDiagnostics); } [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/7395")] @@ -1196,7 +1195,7 @@ public class ComponentWithEditorRequiredParameters : ComponentBase AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); CompileToAssembly(generated); - Assert.Empty(generated.Diagnostics); + Assert.Empty(generated.RazorDiagnostics); } [IntegrationTestFact] @@ -1220,9 +1219,9 @@ public class ComponentWithEditorRequiredChildContent : ComponentBase "); AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: false); + CompileToAssembly(generated); - var diagnostics = Assert.Single(generated.Diagnostics); + var diagnostics = Assert.Single(generated.RazorDiagnostics); Assert.Equal(RazorDiagnosticSeverity.Warning, diagnostics.Severity); Assert.Equal("RZ2012", diagnostics.Id); } @@ -1253,7 +1252,7 @@ public class ComponentWithEditorRequiredChildContent : ComponentBase AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); CompileToAssembly(generated); - Assert.Empty(generated.Diagnostics); + Assert.Empty(generated.RazorDiagnostics); } [IntegrationTestFact] @@ -1280,7 +1279,7 @@ public class ComponentWithEditorRequiredChildContent : ComponentBase AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); CompileToAssembly(generated); - Assert.Empty(generated.Diagnostics); + Assert.Empty(generated.RazorDiagnostics); } [IntegrationTestFact] @@ -1311,7 +1310,7 @@ public class ComponentWithEditorRequiredChildContent : ComponentBase AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); CompileToAssembly(generated); - Assert.Empty(generated.Diagnostics); + Assert.Empty(generated.RazorDiagnostics); } [IntegrationTestFact] @@ -1340,9 +1339,9 @@ public class ComponentWithEditorRequiredChildContent : ComponentBase "); AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: false); + CompileToAssembly(generated); - var diagnostics = Assert.Single(generated.Diagnostics); + var diagnostics = Assert.Single(generated.RazorDiagnostics); Assert.Equal(RazorDiagnosticSeverity.Warning, diagnostics.Severity); Assert.Equal("RZ2012", diagnostics.Id); } @@ -1376,7 +1375,7 @@ public class ComponentWithEditorRequiredChildContent : ComponentBase AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); CompileToAssembly(generated); - Assert.Empty(generated.Diagnostics); + Assert.Empty(generated.RazorDiagnostics); } [IntegrationTestFact, WorkItem("https://github.com/dotnet/aspnetcore/issues/18042")] @@ -1439,7 +1438,7 @@ public void AddAttribute_ImplicitStringConversion_Bind() using Microsoft.AspNetCore.Components; namespace Test; - + public class MyClass@context
+ Diagnostic(ErrorCode.ERR_InvalidExprTerm, "<").WithArguments("<").WithLocation(13, 67), + // x:\dir\subdir\Test\TestComponent.cshtml(13,67): error CS0201: Only assignment, call, increment, decrement, await, and new object expressions can be used as a statement + // public RenderFragment ChildContent { get; set; } = (context) =>@context
+ Diagnostic(ErrorCode.ERR_IllegalStatement, """ +@context
+ [Parameter] + """.NormalizeLineEndings()).WithLocation(13, 67), + // x:\dir\subdir\Test\TestComponent.cshtml(13,68): error CS0103: The name 'p' does not exist in the current context + // public RenderFragment ChildContent { get; set; } = (context) =>@context
+ Diagnostic(ErrorCode.ERR_NameNotInContext, "p").WithArguments("p").WithLocation(13, 68), + // x:\dir\subdir\Test\TestComponent.cshtml(13,79): error CS1525: Invalid expression term '/' + // public RenderFragment ChildContent { get; set; } = (context) =>@context
+ Diagnostic(ErrorCode.ERR_InvalidExprTerm, "/").WithArguments("/").WithLocation(13, 79), + // x:\dir\subdir\Test\TestComponent.cshtml(13,80): error CS0103: The name 'p' does not exist in the current context + // public RenderFragment ChildContent { get; set; } = (context) =>@context
+ Diagnostic(ErrorCode.ERR_NameNotInContext, "p").WithArguments("p").WithLocation(13, 80), + // x:\dir\subdir\Test\TestComponent.cshtml(14,4): error CS0103: The name 'Parameter' does not exist in the current context + // [Parameter] + Diagnostic(ErrorCode.ERR_NameNotInContext, "Parameter").WithArguments("Parameter").WithLocation(14, 4), + // x:\dir\subdir\Test\TestComponent.cshtml(14,14): error CS1002: ; expected + // [Parameter] + Diagnostic(ErrorCode.ERR_SemicolonExpected, "").WithLocation(14, 14)] + ; + + var generated = CompileToCSharp(code, expectedDiagnostics); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: false); + CompileToAssembly(generated, expectedDiagnostics); + } + + [IntegrationTestFact] + public void CanProduceLinePragmasForComponentWithRenderFragment_02() + { + var generated = CompileToCSharp(@" +@context
; + [Parameter] + public bool Collapsed { get; set; } + string ActionText { get => Collapsed ? ""Expand"" : ""Collapse""; } + void Toggle() + { + Collapsed = !Collapsed; + } +}"); + + // Assert + AssertDocumentNodeMatchesBaseline(generated.CodeDocument); + AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); + CompileToAssembly(generated); } [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/9359")] @@ -10558,12 +10674,12 @@ public void RenderMode_Directive_FullyQualified() { var generated = CompileToCSharp(""" @rendermode Microsoft.AspNetCore.Components.Web.RenderMode.Server - """, throwOnFailure: true); + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] @@ -10571,12 +10687,12 @@ public void RenderMode_Directive_SimpleExpression() { var generated = CompileToCSharp(""" @rendermode @(Microsoft.AspNetCore.Components.Web.RenderMode.Server) - """, throwOnFailure: true); + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] @@ -10590,12 +10706,12 @@ @rendermode @(Microsoft.AspNetCore.Components.Web.RenderMode.Server) [Parameter] public int Count { get; set; } } - """, throwOnFailure: true); + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] @@ -10608,12 +10724,12 @@ public void RenderMode_Directive_SimpleExpression_NotFirst() public int Count { get; set; } } @rendermode @(Microsoft.AspNetCore.Components.Web.RenderMode.Server) - """, throwOnFailure: true); + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] @@ -10627,12 +10743,12 @@ @rendermode @(new TestComponent.MyRenderMode("This is some text")) #pragma warning disable CS9113 public class MyRenderMode(string Text) : Microsoft.AspNetCore.Components.IComponentRenderMode { } } - """, throwOnFailure: true); + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] @@ -10642,25 +10758,25 @@ public void RenderMode_Directive_WithNamespaces() @namespace Custom.Namespace @rendermode Microsoft.AspNetCore.Components.Web.RenderMode.Server - """, throwOnFailure: true); + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] public void RenderMode_Attribute_With_SimpleIdentifier() { var generated = CompileToCSharp($""" - <{ComponentName} @rendermode="Microsoft.AspNetCore.Components.Web.RenderMode.Server" /> - """, throwOnFailure: true); + <{ComponentName} @rendermode="Microsoft.AspNetCore.Components.Web.RenderMode.Server" /> + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] @@ -10674,13 +10790,13 @@ class MyRenderMode : Microsoft.AspNetCore.Components.IComponentRenderMode { public string Extra {get;set;} } - } - """, throwOnFailure: true); + } + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] @@ -10694,13 +10810,13 @@ public void RenderMode_Attribute_With_Existing_Attributes() [Parameter]public string P1 {get; set;} [Parameter]public string P2 {get; set;} - } - """, throwOnFailure: true); + } + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] @@ -10709,12 +10825,12 @@ public void Duplicate_RenderMode() var generated = CompileToCSharp($$""" <{{ComponentName}} @rendermode="Microsoft.AspNetCore.Components.Web.RenderMode.Server" @rendermode="Value2" /> - """, throwOnFailure: true); + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] @@ -10723,12 +10839,12 @@ public void RenderMode_Multiple_Components() var generated = CompileToCSharp($$""" <{{ComponentName}} @rendermode="Microsoft.AspNetCore.Components.Web.RenderMode.Server" /> <{{ComponentName}} @rendermode="Microsoft.AspNetCore.Components.Web.RenderMode.Server" /> - """, throwOnFailure: true); + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] @@ -10750,12 +10866,12 @@ public void RenderMode_Child_Components() [Parameter] public RenderFragment ChildContent { get; set; } } - """, throwOnFailure: true); + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] @@ -10770,12 +10886,12 @@ public void RenderMode_With_TypeInference() { [Parameter] public TRenderMode RenderModeParam { get; set;} } - """, throwOnFailure: true); + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact] @@ -10783,12 +10899,12 @@ public void RenderMode_With_Ternary() { var generated = CompileToCSharp($$""" <{{ComponentName}} @rendermode="@(true ? Microsoft.AspNetCore.Components.Web.RenderMode.Server : null)" /> - """, throwOnFailure: true); + """); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/9343")] @@ -10796,12 +10912,12 @@ public void RenderMode_With_Null_Nullable_Disabled() { var generated = CompileToCSharp($$""" <{{ComponentName}} @rendermode="null" /> - """, throwOnFailure: true, nullableEnable: false); + """, nullableEnable: false); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/9343")] @@ -10809,12 +10925,12 @@ public void RenderMode_With_Null_Nullable_Enabled() { var generated = CompileToCSharp($$""" <{{ComponentName}} @rendermode="null" /> - """, throwOnFailure: true, nullableEnable: true); + """, nullableEnable: true); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - CompileToAssembly(generated, throwOnFailure: true); + CompileToAssembly(generated); } [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/9343")] @@ -10831,14 +10947,12 @@ public class RenderModeContainer RenderModeContainer? Container => null; } <{{ComponentName}} @rendermode="@(Container.RenderMode)" /> - """, throwOnFailure: true, nullableEnable: true); + """, nullableEnable: true); // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - var result = CompileToAssembly(generated, throwOnFailure: false); - - result.Diagnostics.Verify( + CompileToAssembly(generated, DesignTime // x:\dir\subdir\Test\TestComponent.cshtml(10,29): warning CS8602: Dereference of a possibly null reference. // Container.RenderMode @@ -10898,8 +11012,7 @@ @using Microsoft.AspNetCore.Components.Web // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - var result = CompileToAssembly(generated, throwOnFailure: false); - result.Diagnostics.Verify( + CompileToAssembly(generated, // x:\dir\subdir\Test\TestComponent.cshtml(2,55): error CS1503: Argument 1: cannot convert from 'int' to 'string' // x Diagnostic(ErrorCode.ERR_BadArgType, "x").WithArguments("1", "int", "string").WithLocation(2, 55)); @@ -10920,19 +11033,13 @@ @using Microsoft.AspNetCore.Components.Web // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - var result = CompileToAssembly(generated, throwOnFailure: false); - if (DesignTime) - { - result.Diagnostics.Verify( + CompileToAssembly(generated, DesignTime + ? [ // x:\dir\subdir\Test\TestComponent.cshtml(2,74): error CS1503: Argument 1: cannot convert from 'int' to 'string' // x - Diagnostic(ErrorCode.ERR_BadArgType, "x").WithArguments("1", "int", "string").WithLocation(2, 74)); - } - else - { - result.Diagnostics.Verify(); - } - Assert.NotEmpty(generated.Diagnostics); + Diagnostic(ErrorCode.ERR_BadArgType, "x").WithArguments("1", "int", "string").WithLocation(2, 74) + ] + : []); } [IntegrationTestFact, WorkItem("https://github.com/dotnet/razor/issues/9077")] @@ -10966,8 +11073,7 @@ @using Microsoft.AspNetCore.Components.Web // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - var result = CompileToAssembly(generated, throwOnFailure: false); - result.Diagnostics.Verify( + CompileToAssembly(generated, // x:\dir\subdir\Test\TestComponent.cshtml(2,55): error CS0103: The name 'x' does not exist in the current context // x Diagnostic(ErrorCode.ERR_NameNotInContext, "x").WithArguments("x").WithLocation(2, 55)); @@ -10985,14 +11091,14 @@ @using Microsoft.AspNetCore.Components.Web // Assert AssertDocumentNodeMatchesBaseline(generated.CodeDocument); AssertCSharpDocumentMatchesBaseline(generated.CodeDocument); - var result = CompileToAssembly(generated, throwOnFailure: false); - result.Diagnostics.Verify(DesignTime - // (41,85): error CS7036: There is no argument given that corresponds to the required parameter 'value' of 'RuntimeHelpers.TypeCheck