From 423eeb7795ad4da24f2221c5dfda05e0c90e22d7 Mon Sep 17 00:00:00 2001 From: Jan Jones Date: Wed, 17 Dec 2025 11:42:47 +0100 Subject: [PATCH 1/2] Update invalid langver error message --- .../src/Language/RazorLanguageVersion.cs | 1 + .../Diagnostics/RazorSourceGeneratorResources.resx | 2 +- .../RazorSourceGeneratorTests.cs | 14 +++++++++++--- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/RazorLanguageVersion.cs b/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/RazorLanguageVersion.cs index fa8f7a1e977..a45e38592a2 100644 --- a/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/RazorLanguageVersion.cs +++ b/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/RazorLanguageVersion.cs @@ -15,6 +15,7 @@ public sealed record RazorLanguageVersion : IComparable { // Note: When adding a new version, be sure to update Latest and BuildKnownVersion() below! // Also update RazorLanguageVersionTest (add new case and update TryParseLatest). + // Also update RazorSourceGeneratorResources.InvalidRazorLangMessage. public static readonly RazorLanguageVersion Version_1_0 = new(1, 0); public static readonly RazorLanguageVersion Version_1_1 = new(1, 1); public static readonly RazorLanguageVersion Version_2_0 = new(2, 0); diff --git a/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/SourceGenerators/Diagnostics/RazorSourceGeneratorResources.resx b/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/SourceGenerators/Diagnostics/RazorSourceGeneratorResources.resx index f589cf9f855..948bab8e41d 100644 --- a/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/SourceGenerators/Diagnostics/RazorSourceGeneratorResources.resx +++ b/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/SourceGenerators/Diagnostics/RazorSourceGeneratorResources.resx @@ -121,7 +121,7 @@ Invalid RazorLangVersion - Invalid value '{0}'' for RazorLangVersion. Valid values include 'Latest' or a valid version in range 1.0 to 8.0. + Invalid value '{0}' for RazorLangVersion. Valid values include 'Latest' or a valid version in range 1.0 to 11.0. Recomputing tag helpers diff --git a/src/Compiler/test/Microsoft.NET.Sdk.Razor.SourceGenerators.Tests/RazorSourceGeneratorTests.cs b/src/Compiler/test/Microsoft.NET.Sdk.Razor.SourceGenerators.Tests/RazorSourceGeneratorTests.cs index c1fcd399a07..4594a9fb1bb 100644 --- a/src/Compiler/test/Microsoft.NET.Sdk.Razor.SourceGenerators.Tests/RazorSourceGeneratorTests.cs +++ b/src/Compiler/test/Microsoft.NET.Sdk.Razor.SourceGenerators.Tests/RazorSourceGeneratorTests.cs @@ -10,7 +10,7 @@ using System.Linq; using System.Text; using System.Threading.Tasks; -using Microsoft.AspNetCore.Razor.Language.Syntax; +using Microsoft.AspNetCore.Razor.Language; using Microsoft.CodeAnalysis; using Microsoft.CodeAnalysis.CSharp; using Microsoft.CodeAnalysis.Test.Utilities; @@ -3101,11 +3101,19 @@ public async Task RazorLangVersion_Incorrect([CombinatorialValues("incorrect", " var result = RunGenerator(compilation!, ref driver); result.Diagnostics.Verify( - // error RZ3600: Invalid value '{0}'' for RazorLangVersion. Valid values include 'Latest' or a valid version in range 1.0 to 8.0. + // error RZ3600: Invalid value '{0}' for RazorLangVersion. Valid values include 'Latest' or a valid version in range 1.0 to 11.0. Diagnostic("RZ3600").WithArguments(langVersion).WithLocation(1, 1)); Assert.Single(result.GeneratedSources); } + [Fact] + public void RazorLangVersion_InvalidErrorMessage() + { + var message = RazorDiagnostics.InvalidRazorLangVersionDescriptor.MessageFormat.ToString(); + Assert.Contains(RazorLanguageVersion.Version_1_0.ToString(), message); + Assert.Contains(RazorLanguageVersion.Preview.ToString(), message); + } + [Fact] public async Task Test_WhenEmptyOrCached() { @@ -3272,7 +3280,7 @@ public async Task IncrementalCompilation_OnlyCompilationRuns_When_MetadataRefere Assert.Equal(2, result.GeneratedSources.Length); Assert.Empty(eventListener.Events); - var reference = (PortableExecutableReference) project.MetadataReferences[^1]; + var reference = (PortableExecutableReference)project.MetadataReferences[^1]; project = project.RemoveMetadataReference(reference) .AddMetadataReference(MetadataReference.CreateFromFile(reference.FilePath!)); From c4fbc5a0796aabc9a0aba798ba052f45a94e74b3 Mon Sep 17 00:00:00 2001 From: Jan Jones Date: Wed, 17 Dec 2025 12:14:01 +0100 Subject: [PATCH 2/2] Add a parameter for max lang version --- .../src/Language/RazorLanguageVersion.cs | 1 - .../Diagnostics/RazorSourceGeneratorResources.resx | 2 +- .../RazorSourceGenerator.RazorProviders.cs | 3 ++- .../RazorSourceGeneratorTests.cs | 12 ++---------- 4 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/RazorLanguageVersion.cs b/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/RazorLanguageVersion.cs index a45e38592a2..fa8f7a1e977 100644 --- a/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/RazorLanguageVersion.cs +++ b/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/Language/RazorLanguageVersion.cs @@ -15,7 +15,6 @@ public sealed record RazorLanguageVersion : IComparable { // Note: When adding a new version, be sure to update Latest and BuildKnownVersion() below! // Also update RazorLanguageVersionTest (add new case and update TryParseLatest). - // Also update RazorSourceGeneratorResources.InvalidRazorLangMessage. public static readonly RazorLanguageVersion Version_1_0 = new(1, 0); public static readonly RazorLanguageVersion Version_1_1 = new(1, 1); public static readonly RazorLanguageVersion Version_2_0 = new(2, 0); diff --git a/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/SourceGenerators/Diagnostics/RazorSourceGeneratorResources.resx b/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/SourceGenerators/Diagnostics/RazorSourceGeneratorResources.resx index 948bab8e41d..9ce6a9a2f0b 100644 --- a/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/SourceGenerators/Diagnostics/RazorSourceGeneratorResources.resx +++ b/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/SourceGenerators/Diagnostics/RazorSourceGeneratorResources.resx @@ -121,7 +121,7 @@ Invalid RazorLangVersion - Invalid value '{0}' for RazorLangVersion. Valid values include 'Latest' or a valid version in range 1.0 to 11.0. + Invalid value '{0}' for RazorLangVersion. Valid values include 'Latest', 'Preview', or a valid version in range 1.0 to {1}. Recomputing tag helpers diff --git a/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/SourceGenerators/RazorSourceGenerator.RazorProviders.cs b/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/SourceGenerators/RazorSourceGenerator.RazorProviders.cs index eb089d0a7f4..20320759d8d 100644 --- a/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/SourceGenerators/RazorSourceGenerator.RazorProviders.cs +++ b/src/Compiler/Microsoft.CodeAnalysis.Razor.Compiler/src/SourceGenerators/RazorSourceGenerator.RazorProviders.cs @@ -41,7 +41,8 @@ public partial class RazorSourceGenerator diagnostic = Diagnostic.Create( RazorDiagnostics.InvalidRazorLangVersionDescriptor, Location.None, - razorLanguageVersionString); + razorLanguageVersionString, + RazorLanguageVersion.Preview.ToString()); razorLanguageVersion = RazorLanguageVersion.Latest; } diff --git a/src/Compiler/test/Microsoft.NET.Sdk.Razor.SourceGenerators.Tests/RazorSourceGeneratorTests.cs b/src/Compiler/test/Microsoft.NET.Sdk.Razor.SourceGenerators.Tests/RazorSourceGeneratorTests.cs index 4594a9fb1bb..115da85f650 100644 --- a/src/Compiler/test/Microsoft.NET.Sdk.Razor.SourceGenerators.Tests/RazorSourceGeneratorTests.cs +++ b/src/Compiler/test/Microsoft.NET.Sdk.Razor.SourceGenerators.Tests/RazorSourceGeneratorTests.cs @@ -3101,19 +3101,11 @@ public async Task RazorLangVersion_Incorrect([CombinatorialValues("incorrect", " var result = RunGenerator(compilation!, ref driver); result.Diagnostics.Verify( - // error RZ3600: Invalid value '{0}' for RazorLangVersion. Valid values include 'Latest' or a valid version in range 1.0 to 11.0. - Diagnostic("RZ3600").WithArguments(langVersion).WithLocation(1, 1)); + // error RZ3600: Invalid value '{0}' for RazorLangVersion. Valid values include 'Latest', 'Preview', or a valid version in range 1.0 to {1}. + Diagnostic("RZ3600").WithArguments(langVersion, RazorLanguageVersion.Preview.ToString()).WithLocation(1, 1)); Assert.Single(result.GeneratedSources); } - [Fact] - public void RazorLangVersion_InvalidErrorMessage() - { - var message = RazorDiagnostics.InvalidRazorLangVersionDescriptor.MessageFormat.ToString(); - Assert.Contains(RazorLanguageVersion.Version_1_0.ToString(), message); - Assert.Contains(RazorLanguageVersion.Preview.ToString(), message); - } - [Fact] public async Task Test_WhenEmptyOrCached() {