Skip to content

Commit 5e02e18

Browse files
authored
CsWin32Generator should allow newer language versions (#1517)
* Add test for invalid language version * Allow for newer language versions.
1 parent ecd70e0 commit 5e02e18

3 files changed

Lines changed: 16 additions & 3 deletions

File tree

src/CsWin32Generator/Program.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,8 +173,8 @@ public async Task<int> Main(
173173
{
174174
if (!LanguageVersionFacts.TryParse(languageVersionString, out this.languageVersion))
175175
{
176-
this.ReportError($"Invalid language version: {languageVersionString}");
177-
return 1;
176+
// Assume any language version we haven't seen is C# 13 (the newest that we need).
177+
this.languageVersion = LanguageVersion.CSharp13;
178178
}
179179
}
180180

test/CsWin32Generator.Tests/CsWin32GeneratorTests.cs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,14 @@ public async Task TestPlatformCaseSensitivity(string platform)
122122
await this.InvokeGeneratorAndCompile($"{nameof(this.TestPlatformCaseSensitivity)}_{platform}");
123123
}
124124

125+
[Fact]
126+
public async Task CanGenerateWithNewerLanguageVersion()
127+
{
128+
this.languageVersionOverride = "20";
129+
this.nativeMethods.Add("SHGetFileInfo");
130+
await this.InvokeGeneratorAndCompileFromFact();
131+
}
132+
125133
[Fact]
126134
public async Task TestGenerateCoCreateableClass()
127135
{

test/CsWin32Generator.Tests/CsWin32GeneratorTestsBase.cs

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ public partial class CsWin32GeneratorTestsBase : GeneratorTestBase
3131
protected string assemblyName = "TestAssembly";
3232
protected string? keyFile;
3333
protected string platform = "x64";
34+
protected string? languageVersionOverride;
3435
protected int expectedExitCode = 0;
3536
protected string? tfm;
3637
protected string[]? win32winmdPaths;
@@ -141,7 +142,11 @@ protected async Task InvokeGenerator(string outputPath, string testCase, TestOpt
141142
args.AddRange(["--key-file", this.keyFile]);
142143
}
143144

144-
if (this.parseOptions.LanguageVersion is LanguageVersion version && version < LanguageVersion.CSharp13)
145+
if (this.languageVersionOverride is not null)
146+
{
147+
args.AddRange(["--language-version", this.languageVersionOverride]);
148+
}
149+
else if (this.parseOptions.LanguageVersion is LanguageVersion version && version < LanguageVersion.CSharp13)
145150
{
146151
args.AddRange(["--language-version", LanguageVersionFacts.ToDisplayString(version)]);
147152
}

0 commit comments

Comments
 (0)