Skip to content

Commit d377a1a

Browse files
authored
Fix reporting of incorrect RazorLangVersion (#9605)
* Add a test * Fix handling of incorrect razor lang version
1 parent f1453f4 commit d377a1a

File tree

3 files changed

+27
-5
lines changed

3 files changed

+27
-5
lines changed

src/Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators/IncrementalValueProviderExtensions.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,8 @@ internal static IncrementalValuesProvider<TSource> ReportDiagnostics<TSource>(th
2828
{
2929
context.RegisterSourceOutput(source, (spc, source) =>
3030
{
31-
var (sourceItem, diagnostic) = source;
32-
if (sourceItem == null && diagnostic != null)
31+
var (_, diagnostic) = source;
32+
if (diagnostic != null)
3333
{
3434
spc.ReportDiagnostic(diagnostic);
3535
}
@@ -42,8 +42,8 @@ internal static IncrementalValueProvider<TSource> ReportDiagnostics<TSource>(thi
4242
{
4343
context.RegisterSourceOutput(source, (spc, source) =>
4444
{
45-
var (sourceItem, diagnostic) = source;
46-
if (sourceItem == null && diagnostic != null)
45+
var (_, diagnostic) = source;
46+
if (diagnostic != null)
4747
{
4848
spc.ReportDiagnostic(diagnostic);
4949
}

src/Compiler/Microsoft.NET.Sdk.Razor.SourceGenerators/RazorSourceGenerator.RazorProviders.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public partial class RazorSourceGenerator
3131
globalOptions.TryGetValue("build_property.SupportLocalizedComponentNames", out var supportLocalizedComponentNames);
3232
globalOptions.TryGetValue("build_property.GenerateRazorMetadataSourceChecksumAttributes", out var generateMetadataSourceChecksumAttributes);
3333

34-
var razorLanguageVersion = RazorLanguageVersion.Latest;
34+
RazorLanguageVersion razorLanguageVersion;
3535
Diagnostic? diagnostic = null;
3636
if (!globalOptions.TryGetValue("build_property.RazorLangVersion", out var razorLanguageVersionString) ||
3737
!RazorLanguageVersion.TryParse(razorLanguageVersionString, out razorLanguageVersion))
@@ -40,6 +40,7 @@ public partial class RazorSourceGenerator
4040
RazorDiagnostics.InvalidRazorLangVersionDescriptor,
4141
Location.None,
4242
razorLanguageVersionString);
43+
razorLanguageVersion = RazorLanguageVersion.Latest;
4344
}
4445

4546
var razorConfiguration = RazorConfiguration.Create(razorLanguageVersion, configurationName ?? "default", System.Linq.Enumerable.Empty<RazorExtension>(), true);

src/Compiler/test/Microsoft.NET.Sdk.Razor.SourceGenerators.Tests/RazorSourceGeneratorTests.cs

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2811,5 +2811,26 @@ @namespace MyApp.Pages
28112811
Assert.Empty(result.Diagnostics);
28122812
Assert.Equal(2, result.GeneratedSources.Length);
28132813
}
2814+
2815+
[Theory, CombinatorialData]
2816+
public async Task RazorLangVersion_Incorrect([CombinatorialValues("incorrect", "-1", "10000")] string langVersion)
2817+
{
2818+
var project = CreateTestProject(new()
2819+
{
2820+
["Pages/Index.razor"] = "<h1>Hello world</h1>",
2821+
});
2822+
var compilation = await project.GetCompilationAsync();
2823+
var driver = await GetDriverAsync(project, options =>
2824+
{
2825+
options.TestGlobalOptions["build_property.RazorLangVersion"] = langVersion;
2826+
});
2827+
2828+
var result = RunGenerator(compilation!, ref driver);
2829+
2830+
result.Diagnostics.Verify(
2831+
// error RZ3600: Invalid value '{0}'' for RazorLangVersion. Valid values include 'Latest' or a valid version in range 1.0 to 8.0.
2832+
Diagnostic("RZ3600").WithArguments(langVersion).WithLocation(1, 1));
2833+
Assert.Single(result.GeneratedSources);
2834+
}
28142835
}
28152836
}

0 commit comments

Comments
 (0)