From 30f9a82fbe5934c8a9d91ebce5e1bd91be26ca90 Mon Sep 17 00:00:00 2001 From: Siegfried Pammer Date: Sun, 17 Oct 2021 00:30:30 +0200 Subject: [PATCH] Add Roslyn 3.11.0 as separate test configuration. Update RoslynLatest to 4.0.0. Use LanguageVersion.CSharp9_0 instead of Preview. Add LanguageVersion.CSharp10_0. --- .../CorrectnessTestRunner.cs | 8 ++++++ .../Helpers/Tester.VB.cs | 1 + .../Helpers/Tester.cs | 25 ++++++++++++++----- .../PrettyTestRunner.cs | 10 ++++++++ .../RoundtripAssembly.cs | 6 ++--- .../TestCases/Pretty/InitializerTests.cs | 2 +- .../CSharp/CSharpLanguageVersion.cs | 24 +++++++++++++++--- ICSharpCode.Decompiler/DecompilerSettings.cs | 4 +-- ILSpy/Languages/CSharpLanguage.cs | 3 ++- packages.props | 2 +- 10 files changed, 67 insertions(+), 18 deletions(-) diff --git a/ICSharpCode.Decompiler.Tests/CorrectnessTestRunner.cs b/ICSharpCode.Decompiler.Tests/CorrectnessTestRunner.cs index 50c666f38..3a4304115 100644 --- a/ICSharpCode.Decompiler.Tests/CorrectnessTestRunner.cs +++ b/ICSharpCode.Decompiler.Tests/CorrectnessTestRunner.cs @@ -57,6 +57,8 @@ namespace ICSharpCode.Decompiler.Tests CompilerOptions.Optimize | CompilerOptions.UseRoslyn1_3_2, CompilerOptions.UseRoslyn2_10_0, CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0, + CompilerOptions.UseRoslyn3_11_0, + CompilerOptions.Optimize | CompilerOptions.UseRoslyn3_11_0, CompilerOptions.UseRoslynLatest, CompilerOptions.Optimize | CompilerOptions.UseRoslynLatest, }; @@ -69,6 +71,8 @@ namespace ICSharpCode.Decompiler.Tests CompilerOptions.Optimize | CompilerOptions.UseRoslyn1_3_2, CompilerOptions.UseRoslyn2_10_0, CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0, + CompilerOptions.UseRoslyn3_11_0, + CompilerOptions.Optimize | CompilerOptions.UseRoslyn3_11_0, CompilerOptions.UseRoslynLatest, CompilerOptions.Optimize | CompilerOptions.UseRoslynLatest, CompilerOptions.UseMcs, @@ -81,6 +85,8 @@ namespace ICSharpCode.Decompiler.Tests CompilerOptions.Optimize | CompilerOptions.UseRoslyn1_3_2, CompilerOptions.UseRoslyn2_10_0, CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0, + CompilerOptions.UseRoslyn3_11_0, + CompilerOptions.Optimize | CompilerOptions.UseRoslyn3_11_0, CompilerOptions.UseRoslynLatest, CompilerOptions.Optimize | CompilerOptions.UseRoslynLatest, }; @@ -89,6 +95,8 @@ namespace ICSharpCode.Decompiler.Tests { CompilerOptions.UseRoslyn2_10_0, CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0, + CompilerOptions.UseRoslyn3_11_0, + CompilerOptions.Optimize | CompilerOptions.UseRoslyn3_11_0, CompilerOptions.UseRoslynLatest, CompilerOptions.Optimize | CompilerOptions.UseRoslynLatest, }; diff --git a/ICSharpCode.Decompiler.Tests/Helpers/Tester.VB.cs b/ICSharpCode.Decompiler.Tests/Helpers/Tester.VB.cs index 9dde0d530..24c363e7d 100644 --- a/ICSharpCode.Decompiler.Tests/Helpers/Tester.VB.cs +++ b/ICSharpCode.Decompiler.Tests/Helpers/Tester.VB.cs @@ -49,6 +49,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers 0 => ("legacy", "11"), CompilerOptions.UseRoslyn1_3_2 => ("1.3.2", "14"), CompilerOptions.UseRoslyn2_10_0 => ("2.10.0", "latest"), + CompilerOptions.UseRoslyn3_11_0 => ("3.11.0", "latest"), _ => (RoslynLatestVersion, flags.HasFlag(CompilerOptions.Preview) ? "preview" : "latest") }; diff --git a/ICSharpCode.Decompiler.Tests/Helpers/Tester.cs b/ICSharpCode.Decompiler.Tests/Helpers/Tester.cs index eea0ebd0c..a86b6c0f3 100644 --- a/ICSharpCode.Decompiler.Tests/Helpers/Tester.cs +++ b/ICSharpCode.Decompiler.Tests/Helpers/Tester.cs @@ -61,8 +61,9 @@ namespace ICSharpCode.Decompiler.Tests.Helpers GeneratePdb = 0x100, Preview = 0x200, UseRoslyn2_10_0 = 0x400, - UseRoslynLatest = 0x800, - UseRoslynMask = UseRoslyn1_3_2 | UseRoslyn2_10_0 | UseRoslynLatest + UseRoslyn3_11_0 = 0x800, + UseRoslynLatest = 0x1000, + UseRoslynMask = UseRoslyn1_3_2 | UseRoslyn2_10_0 | UseRoslyn3_11_0 | UseRoslynLatest } [Flags] @@ -306,23 +307,31 @@ namespace ICSharpCode.Decompiler.Tests.Helpers preprocessorSymbols.Add("VB11"); preprocessorSymbols.Add("VB14"); if (flags.HasFlag(CompilerOptions.UseRoslyn2_10_0) + || flags.HasFlag(CompilerOptions.UseRoslyn3_11_0) || flags.HasFlag(CompilerOptions.UseRoslynLatest)) { preprocessorSymbols.Add("ROSLYN2"); preprocessorSymbols.Add("CS70"); preprocessorSymbols.Add("CS71"); preprocessorSymbols.Add("CS72"); + preprocessorSymbols.Add("CS73"); preprocessorSymbols.Add("VB15"); } - if (flags.HasFlag(CompilerOptions.UseRoslynLatest)) + if (flags.HasFlag(CompilerOptions.UseRoslyn3_11_0) + || flags.HasFlag(CompilerOptions.UseRoslynLatest)) { preprocessorSymbols.Add("ROSLYN3"); - preprocessorSymbols.Add("CS73"); preprocessorSymbols.Add("CS80"); + preprocessorSymbols.Add("CS90"); preprocessorSymbols.Add("VB16"); + } + if (flags.HasFlag(CompilerOptions.UseRoslynLatest)) + { + preprocessorSymbols.Add("ROSLYN4"); + preprocessorSymbols.Add("CS100"); if (flags.HasFlag(CompilerOptions.Preview)) { - preprocessorSymbols.Add("CS90"); + } } } @@ -361,6 +370,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers 0 => ("legacy", "5"), CompilerOptions.UseRoslyn1_3_2 => ("1.3.2", "6"), CompilerOptions.UseRoslyn2_10_0 => ("2.10.0", "latest"), + CompilerOptions.UseRoslyn3_11_0 => ("3.11.0", "latest"), _ => (RoslynLatestVersion, flags.HasFlag(CompilerOptions.Preview) ? "preview" : "latest") }; @@ -526,7 +536,8 @@ namespace ICSharpCode.Decompiler.Tests.Helpers var langVersion = (cscOptions & CompilerOptions.UseRoslynMask) switch { CompilerOptions.UseRoslyn1_3_2 => CSharp.LanguageVersion.CSharp6, CompilerOptions.UseRoslyn2_10_0 => CSharp.LanguageVersion.CSharp7_3, - _ => cscOptions.HasFlag(CompilerOptions.Preview) ? CSharp.LanguageVersion.Latest : CSharp.LanguageVersion.CSharp8_0, + CompilerOptions.UseRoslyn3_11_0 => CSharp.LanguageVersion.CSharp9_0, + _ => cscOptions.HasFlag(CompilerOptions.Preview) ? CSharp.LanguageVersion.Latest : CSharp.LanguageVersion.CSharp9_0, }; return new DecompilerSettings(langVersion); } @@ -594,6 +605,8 @@ namespace ICSharpCode.Decompiler.Tests.Helpers suffix += ".roslyn1"; if ((cscOptions & CompilerOptions.UseRoslyn2_10_0) != 0) suffix += ".roslyn2"; + if ((cscOptions & CompilerOptions.UseRoslyn3_11_0) != 0) + suffix += ".roslyn3"; if ((cscOptions & CompilerOptions.UseRoslynLatest) != 0) suffix += ".roslyn"; if ((cscOptions & CompilerOptions.UseMcs) != 0) diff --git a/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs b/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs index e8984124b..0ebda9283 100644 --- a/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs +++ b/ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs @@ -63,6 +63,8 @@ namespace ICSharpCode.Decompiler.Tests CompilerOptions.Optimize | CompilerOptions.UseRoslyn1_3_2, CompilerOptions.UseRoslyn2_10_0, CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0, + CompilerOptions.UseRoslyn3_11_0, + CompilerOptions.Optimize | CompilerOptions.UseRoslyn3_11_0, CompilerOptions.UseRoslynLatest, CompilerOptions.Optimize | CompilerOptions.UseRoslynLatest, }; @@ -71,6 +73,8 @@ namespace ICSharpCode.Decompiler.Tests { CompilerOptions.UseRoslyn2_10_0, CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0, + CompilerOptions.UseRoslyn3_11_0, + CompilerOptions.Optimize | CompilerOptions.UseRoslyn3_11_0, CompilerOptions.UseRoslynLatest, CompilerOptions.Optimize | CompilerOptions.UseRoslynLatest, }; @@ -83,6 +87,8 @@ namespace ICSharpCode.Decompiler.Tests static readonly CompilerOptions[] dotnetCoreOnlyOptions = { + CompilerOptions.UseRoslyn3_11_0 | CompilerOptions.ReferenceCore, + CompilerOptions.Optimize | CompilerOptions.UseRoslyn3_11_0 | CompilerOptions.ReferenceCore, CompilerOptions.UseRoslynLatest | CompilerOptions.ReferenceCore, CompilerOptions.Optimize | CompilerOptions.UseRoslynLatest | CompilerOptions.ReferenceCore, }; @@ -95,6 +101,8 @@ namespace ICSharpCode.Decompiler.Tests CompilerOptions.Optimize | CompilerOptions.UseRoslyn1_3_2, CompilerOptions.UseRoslyn2_10_0, CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0, + CompilerOptions.UseRoslyn3_11_0, + CompilerOptions.Optimize | CompilerOptions.UseRoslyn3_11_0, CompilerOptions.UseRoslynLatest, CompilerOptions.Optimize | CompilerOptions.UseRoslynLatest, }; @@ -107,6 +115,8 @@ namespace ICSharpCode.Decompiler.Tests CompilerOptions.Optimize | CompilerOptions.UseRoslyn1_3_2, CompilerOptions.UseRoslyn2_10_0, CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0, + CompilerOptions.UseRoslyn3_11_0, + CompilerOptions.Optimize | CompilerOptions.UseRoslyn3_11_0, CompilerOptions.UseRoslynLatest, CompilerOptions.Optimize | CompilerOptions.UseRoslynLatest, CompilerOptions.UseMcs, diff --git a/ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs b/ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs index a11fab56d..e977f45a0 100644 --- a/ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs +++ b/ICSharpCode.Decompiler.Tests/RoundtripAssembly.cs @@ -106,14 +106,14 @@ namespace ICSharpCode.Decompiler.Tests [Ignore("Waiting for https://github.com/dotnet/roslyn/issues/45929")] public void ExplicitConversions_With_NativeInts() { - RunWithOutput("Random Tests\\TestCases", "ExplicitConversions.exe", LanguageVersion.Preview); + RunWithOutput("Random Tests\\TestCases", "ExplicitConversions.exe", LanguageVersion.CSharp9_0); } [Test] [Ignore("Waiting for https://github.com/dotnet/roslyn/issues/45929")] public void ExplicitConversions_32_With_NativeInts() { - RunWithOutput("Random Tests\\TestCases", "ExplicitConversions_32.exe", LanguageVersion.Preview); + RunWithOutput("Random Tests\\TestCases", "ExplicitConversions_32.exe", LanguageVersion.CSharp9_0); } [Test] @@ -126,7 +126,7 @@ namespace ICSharpCode.Decompiler.Tests [Ignore("Waiting for https://github.com/dotnet/roslyn/issues/45929")] public void Random_TestCase_1_With_NativeInts() { - RunWithOutput("Random Tests\\TestCases", "TestCase-1.exe", LanguageVersion.Preview); + RunWithOutput("Random Tests\\TestCases", "TestCase-1.exe", LanguageVersion.CSharp9_0); } // Let's limit the roundtrip tests to C# 8.0 for now; because 9.0 is still in preview diff --git a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.cs b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.cs index 93044e83e..63454a416 100644 --- a/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.cs +++ b/ICSharpCode.Decompiler.Tests/TestCases/Pretty/InitializerTests.cs @@ -1053,7 +1053,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty.InitializerTests A = 43 } } - } + }; } #endif diff --git a/ICSharpCode.Decompiler/CSharp/CSharpLanguageVersion.cs b/ICSharpCode.Decompiler/CSharp/CSharpLanguageVersion.cs index 530f5aa48..375a9de66 100644 --- a/ICSharpCode.Decompiler/CSharp/CSharpLanguageVersion.cs +++ b/ICSharpCode.Decompiler/CSharp/CSharpLanguageVersion.cs @@ -1,6 +1,20 @@ -using System; -using System.Collections.Generic; -using System.Text; +// Copyright (c) 2018 Daniel Grunwald +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this +// software and associated documentation files (the "Software"), to deal in the Software +// without restriction, including without limitation the rights to use, copy, modify, merge, +// publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons +// to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or +// substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +// INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +// FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +// DEALINGS IN THE SOFTWARE. namespace ICSharpCode.Decompiler.CSharp { @@ -17,7 +31,9 @@ namespace ICSharpCode.Decompiler.CSharp CSharp7_2 = 702, CSharp7_3 = 703, CSharp8_0 = 800, - Preview = 900, + CSharp9_0 = 900, + CSharp10_0 = 1000, + Preview = 1000, Latest = 0x7FFFFFFF } } diff --git a/ICSharpCode.Decompiler/DecompilerSettings.cs b/ICSharpCode.Decompiler/DecompilerSettings.cs index fc3797092..d564bee88 100644 --- a/ICSharpCode.Decompiler/DecompilerSettings.cs +++ b/ICSharpCode.Decompiler/DecompilerSettings.cs @@ -131,7 +131,7 @@ namespace ICSharpCode.Decompiler ranges = false; switchExpressions = false; } - if (languageVersion < CSharp.LanguageVersion.Preview) + if (languageVersion < CSharp.LanguageVersion.CSharp9_0) { nativeIntegers = false; initAccessors = false; @@ -148,7 +148,7 @@ namespace ICSharpCode.Decompiler { if (nativeIntegers || initAccessors || functionPointers || forEachWithGetEnumeratorExtension || recordClasses || withExpressions || usePrimaryConstructorSyntax || covariantReturns) - return CSharp.LanguageVersion.Preview; + return CSharp.LanguageVersion.CSharp9_0; if (nullableReferenceTypes || readOnlyMethods || asyncEnumerator || asyncUsingAndForEachStatement || staticLocalFunctions || ranges || switchExpressions) return CSharp.LanguageVersion.CSharp8_0; diff --git a/ILSpy/Languages/CSharpLanguage.cs b/ILSpy/Languages/CSharpLanguage.cs index d05238198..6d0e2d378 100644 --- a/ILSpy/Languages/CSharpLanguage.cs +++ b/ILSpy/Languages/CSharpLanguage.cs @@ -111,7 +111,8 @@ namespace ICSharpCode.ILSpy new LanguageVersion(Decompiler.CSharp.LanguageVersion.CSharp7_2.ToString(), "C# 7.2 / VS 2017.4"), new LanguageVersion(Decompiler.CSharp.LanguageVersion.CSharp7_3.ToString(), "C# 7.3 / VS 2017.7"), new LanguageVersion(Decompiler.CSharp.LanguageVersion.CSharp8_0.ToString(), "C# 8.0 / VS 2019"), - new LanguageVersion(Decompiler.CSharp.LanguageVersion.Preview.ToString(), "C# 9.0 / VS 2019.8"), + new LanguageVersion(Decompiler.CSharp.LanguageVersion.CSharp9_0.ToString(), "C# 9.0 / VS 2019.8"), + new LanguageVersion(Decompiler.CSharp.LanguageVersion.CSharp10_0.ToString(), "C# 10.0 / VS 2022"), }; } return versions; diff --git a/packages.props b/packages.props index c6daebed2..3d0af2fa6 100644 --- a/packages.props +++ b/packages.props @@ -10,7 +10,7 @@ 5.0.0 5.0.1 5.0.0 - 3.11.0-1.final + 4.0.0-6.final 0.11.4 6.1.1 2.6.1