Browse Source

Add support for using different editions of .NET in unit tests

net10upgrade-future
Siegfried Pammer 4 weeks ago
parent
commit
3be0ae1b6f
  1. 103
      ICSharpCode.Decompiler.Tests/Helpers/RoslynToolset.cs
  2. 24
      ICSharpCode.Decompiler.Tests/Helpers/Tester.VB.cs
  3. 139
      ICSharpCode.Decompiler.Tests/Helpers/Tester.cs
  4. 6
      ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs
  5. 2
      ICSharpCode.Decompiler.Tests/TestCases/ILPretty/Issue1325.il
  6. 8
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/MetadataAttributes.cs
  7. 4
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/Switch.cs
  8. 2
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/WellKnownConstants.cs
  9. 4
      ICSharpCode.Decompiler.Tests/TypeSystem/TypeSystemLoaderTests.cs
  10. 2
      ILSpy-tests

103
ICSharpCode.Decompiler.Tests/Helpers/RoslynToolset.cs

@ -18,12 +18,13 @@ @@ -18,12 +18,13 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading;
using System.Threading.Tasks;
using ICSharpCode.Decompiler.Util;
using ICSharpCode.Decompiler.Metadata;
using NuGet.Common;
using NuGet.Packaging;
@ -31,6 +32,8 @@ using NuGet.Protocol; @@ -31,6 +32,8 @@ using NuGet.Protocol;
using NuGet.Protocol.Core.Types;
using NuGet.Versioning;
using NUnit.Framework;
namespace ICSharpCode.Decompiler.Tests.Helpers
{
abstract class AbstractToolset
@ -50,29 +53,45 @@ namespace ICSharpCode.Decompiler.Tests.Helpers @@ -50,29 +53,45 @@ namespace ICSharpCode.Decompiler.Tests.Helpers
protected async Task FetchPackage(string packageName, string version, string sourcePath, string outputPath)
{
if (!Directory.Exists(Path.Combine(Roundtrip.RoundtripAssembly.TestDir, "nuget")))
Assert.Fail("No nuget cache found!");
ILogger logger = NullLogger.Instance;
CancellationToken cancellationToken = CancellationToken.None;
using MemoryStream packageStream = new MemoryStream();
await resource.CopyNupkgToStreamAsync(
packageName,
NuGetVersion.Parse(version),
packageStream,
cache,
logger,
cancellationToken).ConfigureAwait(false);
using PackageArchiveReader packageReader = new PackageArchiveReader(packageStream);
NuspecReader nuspecReader = await packageReader.GetNuspecReaderAsync(cancellationToken).ConfigureAwait(false);
var files = (await packageReader.GetFilesAsync(cancellationToken).ConfigureAwait(false)).ToArray();
files = files.Where(f => f.StartsWith(sourcePath, StringComparison.OrdinalIgnoreCase)).ToArray();
await packageReader.CopyFilesAsync(outputPath, files,
(sourceFile, targetPath, fileStream) => {
fileStream.CopyToFile(targetPath);
return targetPath;
},
logger, cancellationToken).ConfigureAwait(false);
string pathToPackage = Path.Combine(Roundtrip.RoundtripAssembly.TestDir, "nuget", $"{packageName}-{version}.nupkg");
Stream packageStream;
if (File.Exists(pathToPackage))
{
packageStream = File.OpenRead(pathToPackage);
}
else
{
packageStream = new MemoryStream();
await resource.CopyNupkgToStreamAsync(
packageName,
NuGetVersion.Parse(version),
packageStream,
cache,
logger,
cancellationToken).ConfigureAwait(false);
packageStream.Position = 0;
}
using (packageStream)
{
using PackageArchiveReader packageReader = new PackageArchiveReader(packageStream);
NuspecReader nuspecReader = await packageReader.GetNuspecReaderAsync(cancellationToken).ConfigureAwait(false);
var files = (await packageReader.GetFilesAsync(cancellationToken).ConfigureAwait(false)).ToArray();
files = files.Where(f => f.StartsWith(sourcePath, StringComparison.OrdinalIgnoreCase)).ToArray();
await packageReader.CopyFilesAsync(outputPath, files,
(sourceFile, targetPath, fileStream) => {
fileStream.CopyToFile(targetPath);
return targetPath;
},
logger, cancellationToken).ConfigureAwait(false);
}
}
}
@ -145,4 +164,44 @@ namespace ICSharpCode.Decompiler.Tests.Helpers @@ -145,4 +164,44 @@ namespace ICSharpCode.Decompiler.Tests.Helpers
public string GetVsWhere() => vswherePath;
}
class RefAssembliesToolset : AbstractToolset
{
readonly Dictionary<string, string> installedFrameworks = new Dictionary<string, string> {
{ "legacy", Path.Combine(Roundtrip.RoundtripAssembly.TestDir, "dotnet", "legacy") },
{ "2.2.0", Path.Combine(Roundtrip.RoundtripAssembly.TestDir, "dotnet", "netcore-2.2") },
};
public RefAssembliesToolset()
: base(Path.Combine(AppContext.BaseDirectory, "netfx"))
{
}
public async Task Fetch(string version, string packageName = "Microsoft.NETCore.App.Ref", string sourcePath = "ref/net5.0")
{
string path = Path.Combine(baseDir, version, sourcePath);
if (!Directory.Exists(path))
{
await FetchPackage(packageName, version, sourcePath, Path.Combine(baseDir, version)).ConfigureAwait(false);
}
installedFrameworks.Add(RoslynToolset.SanitizeVersion(version), path);
}
internal string GetPath(string targetFramework)
{
var (id, version) = UniversalAssemblyResolver.ParseTargetFramework(targetFramework);
string path;
if (id == TargetFrameworkIdentifier.NETFramework)
{
path = installedFrameworks["legacy"];
}
else
{
path = installedFrameworks[version.ToString(3)];
}
Debug.Assert(Path.Exists(path));
return path;
}
}
}

24
ICSharpCode.Decompiler.Tests/Helpers/Tester.VB.cs

@ -16,12 +16,9 @@ @@ -16,12 +16,9 @@
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
// DEALINGS IN THE SOFTWARE.
using System;
using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading.Tasks;
@ -49,27 +46,30 @@ namespace ICSharpCode.Decompiler.Tests.Helpers @@ -49,27 +46,30 @@ namespace ICSharpCode.Decompiler.Tests.Helpers
CompilerResults results = new CompilerResults();
results.PathToAssembly = outputFileName;
var (roslynVersion, languageVersion) = (flags & CompilerOptions.UseRoslynMask) switch {
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")
bool targetNet40 = (flags & CompilerOptions.TargetNet40) != 0;
var (roslynVersion, languageVersion, targetFramework) = (flags & CompilerOptions.UseRoslynMask) switch {
0 => ("legacy", "11", null),
CompilerOptions.UseRoslyn1_3_2 => ("1.3.2", "14", null),
CompilerOptions.UseRoslyn2_10_0 => ("2.10.0", "latest", targetNet40 ? null : ".NETCoreApp,Version=v2.2"),
CompilerOptions.UseRoslyn3_11_0 => ("3.11.0", "latest", targetNet40 ? null : ".NETCoreApp,Version=v5.0"),
_ => (roslynLatestVersion, flags.HasFlag(CompilerOptions.Preview) ? "preview" : "latest", targetNet40 ? null : ".NETCoreApp,Version=v10.0")
};
var vbcPath = roslynToolset.GetVBCompiler(roslynVersion);
IEnumerable<string> references;
string libPath;
if ((flags & CompilerOptions.UseRoslynMask) != 0 && (flags & CompilerOptions.TargetNet40) == 0)
if ((flags & CompilerOptions.UseRoslynMask) != 0 && targetFramework != null)
{
var coreRefAsmPath = RefAssembliesToolset.GetPath(targetFramework);
references = coreDefaultReferences.Select(r => "-r:\"" + r + "\"");
libPath = coreRefAsmPath;
}
else
{
references = defaultReferences.Select(r => "-r:\"" + r + "\"");
libPath = RefAsmPath;
libPath = RefAssembliesToolset.GetPath("legacy");
}
if (flags.HasFlag(CompilerOptions.ReferenceVisualBasic))
{
@ -121,7 +121,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers @@ -121,7 +121,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers
var command = Cli.Wrap(vbcPath)
.WithArguments($"{otherOptions}-libpath:\"{libPath}\" {string.Join(" ", references)} -out:\"{Path.GetFullPath(results.PathToAssembly)}\" {string.Join(" ", sourceFileNames.Select(fn => '"' + Path.GetFullPath(fn) + '"'))}")
.WithValidation(CommandResultValidation.None);
Console.WriteLine($"\"{command.TargetFilePath}\" {command.Arguments}");
//Console.WriteLine($"\"{command.TargetFilePath}\" {command.Arguments}");
var result = await command.ExecuteBufferedAsync().ConfigureAwait(false);

139
ICSharpCode.Decompiler.Tests/Helpers/Tester.cs

@ -99,6 +99,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers @@ -99,6 +99,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers
static readonly string roslynLatestVersion;
static readonly RoslynToolset roslynToolset;
static readonly VsWhereToolset vswhereToolset;
internal static readonly RefAssembliesToolset RefAssembliesToolset;
static Tester()
{
@ -120,6 +121,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers @@ -120,6 +121,7 @@ namespace ICSharpCode.Decompiler.Tests.Helpers
roslynToolset = new RoslynToolset();
vswhereToolset = new VsWhereToolset();
RefAssembliesToolset = new RefAssembliesToolset();
}
internal static async Task Initialize()
@ -130,6 +132,9 @@ namespace ICSharpCode.Decompiler.Tests.Helpers @@ -130,6 +132,9 @@ namespace ICSharpCode.Decompiler.Tests.Helpers
await roslynToolset.Fetch(roslynLatestVersion).ConfigureAwait(false);
await vswhereToolset.Fetch().ConfigureAwait(false);
await RefAssembliesToolset.Fetch("5.0.0", sourcePath: "ref/net5.0").ConfigureAwait(false);
await RefAssembliesToolset.Fetch("10.0.0-preview.4.25258.110", sourcePath: "ref/net10.0").ConfigureAwait(false);
#if DEBUG
await BuildTestRunner("win-x86", "Debug").ConfigureAwait(false);
@ -276,21 +281,15 @@ namespace ICSharpCode.Decompiler.Tests.Helpers @@ -276,21 +281,15 @@ namespace ICSharpCode.Decompiler.Tests.Helpers
return Regex.Replace(il, @"'<PrivateImplementationDetails>\{[0-9A-F-]+\}'", "'<PrivateImplementationDetails>'");
}
static readonly string coreRefAsmPath = new DotNetCorePathFinder(TargetFrameworkIdentifier.NET,
new Version(10, 0), "Microsoft.NETCore.App")
.GetReferenceAssemblyPath(".NETCoreApp,Version=v10.0");
public static readonly string RefAsmPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86),
@"Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2");
static readonly string[] defaultReferences = new[] {
"System.dll",
"System.Core.dll",
"System.Runtime.dll",
"System.Xml.dll",
"Microsoft.CSharp.dll"
};
static readonly string[] coreDefaultReferences = new[]
static readonly string[] core220DefaultReferences = new[]
{
"netstandard.dll",
"mscorlib.dll",
@ -303,9 +302,12 @@ namespace ICSharpCode.Decompiler.Tests.Helpers @@ -303,9 +302,12 @@ namespace ICSharpCode.Decompiler.Tests.Helpers
"System.Linq.Queryable.dll",
"System.IO.FileSystem.Watcher.dll",
"System.Memory.dll",
"System.Private.CoreLib.dll",
"System.Private.Xml.dll",
"System.Threading.dll",
"System.Threading.Thread.dll",
"System.Runtime.dll",
"System.Runtime.Extensions.dll",
"System.Runtime.InteropServices.dll",
"System.Xml.dll",
"System.Xml.ReaderWriter.dll",
@ -314,19 +316,45 @@ namespace ICSharpCode.Decompiler.Tests.Helpers @@ -314,19 +316,45 @@ namespace ICSharpCode.Decompiler.Tests.Helpers
"Microsoft.VisualBasic.dll",
};
const string targetFrameworkAttributeSnippet = @"
[assembly: System.Runtime.Versioning.TargetFramework("".NETCoreApp,Version=v10.0"", FrameworkDisplayName = """")]
";
static readonly string[] coreDefaultReferences = new[]
{
"netstandard.dll",
"mscorlib.dll",
"System.dll",
"System.Collections.dll",
"System.Console.dll",
"System.Core.dll",
"System.Linq.dll",
"System.Linq.Expressions.dll",
"System.Linq.Queryable.dll",
"System.IO.FileSystem.Watcher.dll",
"System.Memory.dll",
"System.Threading.dll",
"System.Threading.Thread.dll",
"System.Runtime.dll",
"System.Runtime.InteropServices.dll",
"System.Xml.dll",
"System.Xml.ReaderWriter.dll",
"System.ValueTuple.dll",
"Microsoft.CSharp.dll",
"Microsoft.VisualBasic.dll",
};
static readonly Lazy<string> targetFrameworkAttributeSnippetFile = new Lazy<string>(GetTargetFrameworkAttributeSnippetFile);
static readonly Dictionary<string, Lazy<string>> targetFrameworkAttributeSnippetFiles = new() {
{ ".NETCoreApp,Version=v10.0", new Lazy<string>(() => GetTargetFrameworkAttributeSnippetFile(".NETCoreApp,Version=v10.0")) },
{ ".NETCoreApp,Version=v5.0", new Lazy<string>(() => GetTargetFrameworkAttributeSnippetFile(".NETCoreApp,Version=v5.0")) },
{ ".NETCoreApp,Version=v2.2", new Lazy<string>(() => GetTargetFrameworkAttributeSnippetFile(".NETCoreApp,Version=v2.2")) },
};
static string GetTargetFrameworkAttributeSnippetFile()
static string GetTargetFrameworkAttributeSnippetFile(string targetFrameworkMoniker)
{
// Note: this leaks a temporary file, we're not attempting to delete it, because it is only one.
var tempFile = Path.GetTempFileName();
File.WriteAllText(tempFile, targetFrameworkAttributeSnippet);
File.WriteAllText(tempFile, $@"
[assembly: System.Runtime.Versioning.TargetFramework(""{targetFrameworkMoniker}"")]
");
return tempFile;
}
@ -389,9 +417,6 @@ namespace System.Runtime.CompilerServices @@ -389,9 +417,6 @@ namespace System.Runtime.CompilerServices
if (!flags.HasFlag(CompilerOptions.TargetNet40))
{
preprocessorSymbols.Add("NETCORE");
preprocessorSymbols.Add("NET60");
preprocessorSymbols.Add("NET70");
preprocessorSymbols.Add("NET80");
}
preprocessorSymbols.Add("ROSLYN");
preprocessorSymbols.Add("CS60");
@ -411,6 +436,10 @@ namespace System.Runtime.CompilerServices @@ -411,6 +436,10 @@ namespace System.Runtime.CompilerServices
if (flags.HasFlag(CompilerOptions.UseRoslyn3_11_0)
|| flags.HasFlag(CompilerOptions.UseRoslynLatest))
{
if (!flags.HasFlag(CompilerOptions.TargetNet40))
{
preprocessorSymbols.Add("NET50");
}
preprocessorSymbols.Add("ROSLYN3");
preprocessorSymbols.Add("CS80");
preprocessorSymbols.Add("CS90");
@ -418,6 +447,14 @@ namespace System.Runtime.CompilerServices @@ -418,6 +447,14 @@ namespace System.Runtime.CompilerServices
}
if (flags.HasFlag(CompilerOptions.UseRoslynLatest))
{
if (!flags.HasFlag(CompilerOptions.TargetNet40))
{
preprocessorSymbols.Add("NET60");
preprocessorSymbols.Add("NET70");
preprocessorSymbols.Add("NET80");
preprocessorSymbols.Add("NET90");
preprocessorSymbols.Add("NET100");
}
preprocessorSymbols.Add("ROSLYN4");
preprocessorSymbols.Add("CS100");
preprocessorSymbols.Add("CS110");
@ -453,10 +490,6 @@ namespace System.Runtime.CompilerServices @@ -453,10 +490,6 @@ namespace System.Runtime.CompilerServices
}
bool targetNet40 = (flags & CompilerOptions.TargetNet40) != 0;
bool useRoslyn = (flags & CompilerOptions.UseRoslynMask) != 0;
if (useRoslyn && !targetNet40)
{
sourceFileNames.Add(targetFrameworkAttributeSnippetFile.Value);
}
if (targetNet40)
{
@ -470,36 +503,58 @@ namespace System.Runtime.CompilerServices @@ -470,36 +503,58 @@ namespace System.Runtime.CompilerServices
CompilerResults results = new CompilerResults();
results.PathToAssembly = outputFileName;
var (roslynVersion, languageVersion) = (flags & CompilerOptions.UseRoslynMask) switch {
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")
var (roslynVersion, languageVersion, targetFramework) = (flags & CompilerOptions.UseRoslynMask) switch {
0 => ("legacy", "5", null),
CompilerOptions.UseRoslyn1_3_2 => ("1.3.2", "6", null),
CompilerOptions.UseRoslyn2_10_0 => ("2.10.0", "latest", targetNet40 ? null : ".NETCoreApp,Version=v2.2"),
CompilerOptions.UseRoslyn3_11_0 => ("3.11.0", "latest", targetNet40 ? null : ".NETCoreApp,Version=v5.0"),
_ => (roslynLatestVersion, flags.HasFlag(CompilerOptions.Preview) ? "preview" : "latest", targetNet40 ? null : ".NETCoreApp,Version=v10.0")
};
var cscPath = roslynToolset.GetCSharpCompiler(roslynVersion);
string libPath;
string libPath, refAsmPath;
IEnumerable<string> references;
if (useRoslyn && !targetNet40)
if (useRoslyn && targetFramework != null)
{
libPath = "\"" + coreRefAsmPath + "\"";
references = coreDefaultReferences.Select(r => "-r:\"" + Path.Combine(coreRefAsmPath, r) + "\"");
refAsmPath = RefAssembliesToolset.GetPath(targetFramework);
if (targetFramework == ".NETCoreApp,Version=v2.2")
{
references = core220DefaultReferences;
if (flags.HasFlag(CompilerOptions.ReferenceVisualBasic))
{
references = references.Append("Microsoft.VisualBasic.dll");
}
}
else
{
references = coreDefaultReferences;
if (flags.HasFlag(CompilerOptions.ReferenceVisualBasic))
{
references = references.Append("Microsoft.VisualBasic.dll");
references = references.Append("Microsoft.VisualBasic.Core.dll");
}
}
libPath = "\"" + refAsmPath + "\"";
sourceFileNames.Add(targetFrameworkAttributeSnippetFiles[targetFramework].Value);
}
else
{
libPath = "\"" + RefAsmPath + "\",\"" + Path.Combine(RefAsmPath, "Facades") + "\"";
references = defaultReferences.Select(r => "-r:\"" + Path.Combine(RefAsmPath, r) + "\"");
}
if (flags.HasFlag(CompilerOptions.ReferenceVisualBasic))
{
references = references.Concat(new[] { "-r:\"Microsoft.VisualBasic.dll\"" });
refAsmPath = RefAssembliesToolset.GetPath("legacy");
libPath = "\"" + refAsmPath + "\"";
references = defaultReferences;
if (flags.HasFlag(CompilerOptions.ReferenceVisualBasic))
{
references = references.Append("Microsoft.VisualBasic.dll");
}
}
if (useRoslyn && !targetNet40 && flags.HasFlag(CompilerOptions.ReferenceUnsafe))
{
references = references.Concat(new[] { "-r:\"System.Runtime.CompilerServices.Unsafe.dll\"" });
references = references.Append("System.Runtime.CompilerServices.Unsafe.dll");
}
references = references.Select(r => "-r:\"" + Path.Combine(refAsmPath, r) + "\"");
string otherOptions = $"-nologo -noconfig " +
$"-langversion:{languageVersion} " +
$"-unsafe -o{(flags.HasFlag(CompilerOptions.Optimize) ? "+ " : "- ")}";
@ -685,7 +740,7 @@ namespace System.Runtime.CompilerServices @@ -685,7 +740,7 @@ namespace System.Runtime.CompilerServices
}
var compilation = CSharpCompilation.Create(Path.GetFileNameWithoutExtension(assemblyName),
syntaxTrees, coreDefaultReferences.Select(r => MetadataReference.CreateFromFile(Path.Combine(coreRefAsmPath, r))),
syntaxTrees, coreDefaultReferences.Select(r => MetadataReference.CreateFromFile(Path.Combine(RefAssembliesToolset.GetPath(".NETCoreApp,Version=v10.0"), r))),
new CSharpCompilationOptions(
OutputKind.DynamicallyLinkedLibrary,
platform: Platform.AnyCpu,
@ -767,7 +822,7 @@ namespace System.Runtime.CompilerServices @@ -767,7 +822,7 @@ namespace System.Runtime.CompilerServices
string targetFramework = module.Metadata.DetectTargetFrameworkId();
var resolver = new UniversalAssemblyResolver(assemblyFileName, false,
targetFramework, null, PEStreamOptions.PrefetchMetadata);
resolver.AddSearchDirectory(targetFramework.Contains(".NETFramework") ? RefAsmPath : coreRefAsmPath);
resolver.AddSearchDirectory(RefAssembliesToolset.GetPath(targetFramework));
var typeSystem = new DecompilerTypeSystem(module, resolver, settings);
CSharpDecompiler decompiler = new CSharpDecompiler(typeSystem, settings);
decompiler.AstTransforms.Insert(0, new RemoveEmbeddedAttributes());

6
ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs

@ -59,8 +59,6 @@ namespace ICSharpCode.Decompiler.Tests @@ -59,8 +59,6 @@ namespace ICSharpCode.Decompiler.Tests
static readonly CompilerOptions[] roslynOnlyWithNet40Options =
{
CompilerOptions.UseRoslyn1_3_2 | CompilerOptions.TargetNet40,
CompilerOptions.Optimize | CompilerOptions.UseRoslyn1_3_2 | CompilerOptions.TargetNet40,
CompilerOptions.UseRoslyn2_10_0 | CompilerOptions.TargetNet40,
CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0 | CompilerOptions.TargetNet40,
CompilerOptions.UseRoslyn3_11_0 | CompilerOptions.TargetNet40,
@ -145,8 +143,6 @@ namespace ICSharpCode.Decompiler.Tests @@ -145,8 +143,6 @@ namespace ICSharpCode.Decompiler.Tests
{
CompilerOptions.None,
CompilerOptions.Optimize,
CompilerOptions.UseRoslyn1_3_2 | CompilerOptions.TargetNet40,
CompilerOptions.Optimize | CompilerOptions.UseRoslyn1_3_2 | CompilerOptions.TargetNet40,
CompilerOptions.UseRoslyn2_10_0 | CompilerOptions.TargetNet40,
CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0 | CompilerOptions.TargetNet40,
CompilerOptions.UseRoslyn3_11_0 | CompilerOptions.TargetNet40,
@ -167,8 +163,6 @@ namespace ICSharpCode.Decompiler.Tests @@ -167,8 +163,6 @@ namespace ICSharpCode.Decompiler.Tests
{
CompilerOptions.None,
CompilerOptions.Optimize,
CompilerOptions.UseRoslyn1_3_2 | CompilerOptions.TargetNet40,
CompilerOptions.Optimize | CompilerOptions.UseRoslyn1_3_2 | CompilerOptions.TargetNet40,
CompilerOptions.UseRoslyn2_10_0 | CompilerOptions.TargetNet40,
CompilerOptions.Optimize | CompilerOptions.UseRoslyn2_10_0 | CompilerOptions.TargetNet40,
CompilerOptions.UseRoslyn3_11_0 | CompilerOptions.TargetNet40,

2
ICSharpCode.Decompiler.Tests/TestCases/ILPretty/Issue1325.il

@ -31,7 +31,7 @@ @@ -31,7 +31,7 @@
// .custom instance void [System.Runtime]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [System.Runtime]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 07 01 00 00 00 00 )
.custom instance void [System.Runtime]System.Runtime.Versioning.TargetFrameworkAttribute::.ctor(string) = ( 01 00 18 2E 4E 45 54 43 6F 72 65 41 70 70 2C 56 // ....NETCoreApp,V
65 72 73 69 6F 6E 3D 76 32 2E 31 01 00 54 0E 14 // ersion=v2.1..T..
65 72 73 69 6F 6E 3D 76 32 2E 32 01 00 54 0E 14 // ersion=v2.2..T..
46 72 61 6D 65 77 6F 72 6B 44 69 73 70 6C 61 79 // FrameworkDisplay
4E 61 6D 65 00 ) // Name.
.custom instance void [System.Runtime]System.Reflection.AssemblyConfigurationAttribute::.ctor(string) = ( 01 00 05 44 65 62 75 67 00 00 ) // ...Debug..

8
ICSharpCode.Decompiler.Tests/TestCases/Pretty/MetadataAttributes.cs

@ -9,7 +9,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -9,7 +9,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
{
[MethodImpl(MethodImplOptions.AggressiveInlining)]
public extern void A();
#if NETCORE
#if !NET40 && ROSLYN3
[MethodImpl(MethodImplOptions.AggressiveOptimization)]
public extern void B();
#endif
@ -29,7 +29,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -29,7 +29,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
public extern void J();
[MethodImpl(MethodImplOptions.AggressiveInlining, MethodCodeType = MethodCodeType.Native)]
public extern void A1();
#if NETCORE
#if !NET40 && ROSLYN3
[MethodImpl(MethodImplOptions.AggressiveOptimization, MethodCodeType = MethodCodeType.Native)]
public extern void B1();
#endif
@ -49,7 +49,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -49,7 +49,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
public extern void J1();
[MethodImpl(MethodImplOptions.AggressiveInlining, MethodCodeType = MethodCodeType.OPTIL)]
public extern void A2();
#if NETCORE
#if !NET40 && ROSLYN3
[MethodImpl(MethodImplOptions.AggressiveOptimization, MethodCodeType = MethodCodeType.OPTIL)]
public extern void B2();
#endif
@ -69,7 +69,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -69,7 +69,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
public extern void J2();
[MethodImpl(MethodImplOptions.AggressiveInlining, MethodCodeType = MethodCodeType.OPTIL)]
public extern void A3();
#if NETCORE
#if !NET40 && ROSLYN3
[MethodImpl(MethodImplOptions.AggressiveOptimization, MethodCodeType = MethodCodeType.Runtime)]
public extern void B3();
#endif

4
ICSharpCode.Decompiler.Tests/TestCases/Pretty/Switch.cs

@ -1624,7 +1624,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -1624,7 +1624,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
public static bool DoNotRemoveAssignmentBeforeSwitch(string x, out ConsoleKey key)
{
#if NET40 || !ROSLYN
#if NET40 || !ROSLYN4
key = (ConsoleKey)0;
#else
key = ConsoleKey.None;
@ -1641,7 +1641,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -1641,7 +1641,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
key = ConsoleKey.C;
break;
}
#if NET40 || !ROSLYN
#if NET40 || !ROSLYN4
return key != (ConsoleKey)0;
#else
return key != ConsoleKey.None;

2
ICSharpCode.Decompiler.Tests/TestCases/Pretty/WellKnownConstants.cs

@ -83,7 +83,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty @@ -83,7 +83,7 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
public const float Float_Tenth = 0.1f;
public const double Double_Tenth = 0.1;
#if ROSLYN && !NET40
#if ROSLYN2 && !NET40
public const float Float_PI = MathF.PI;
public const float Float_HalfOfPI = MathF.PI / 2f;
public const float Float_QuarterOfPI = MathF.PI / 4f;

4
ICSharpCode.Decompiler.Tests/TypeSystem/TypeSystemLoaderTests.cs

@ -47,12 +47,12 @@ namespace ICSharpCode.Decompiler.Tests.TypeSystem @@ -47,12 +47,12 @@ namespace ICSharpCode.Decompiler.Tests.TypeSystem
static readonly Lazy<PEFile> mscorlib = new Lazy<PEFile>(
delegate {
return LoadAssembly(Path.Combine(Helpers.Tester.RefAsmPath, "mscorlib.dll"));
return LoadAssembly(Path.Combine(Helpers.Tester.RefAssembliesToolset.GetPath("legacy"), "mscorlib.dll"));
});
static readonly Lazy<PEFile> systemCore = new Lazy<PEFile>(
delegate {
return LoadAssembly(Path.Combine(Helpers.Tester.RefAsmPath, "System.Core.dll"));
return LoadAssembly(Path.Combine(Helpers.Tester.RefAssembliesToolset.GetPath("legacy"), "System.Core.dll"));
});
static readonly Lazy<PEFile> testAssembly = new Lazy<PEFile>(

2
ILSpy-tests

@ -1 +1 @@ @@ -1 +1 @@
Subproject commit 6f8860e420b54bdfd726ec3c58a4d178416f9156
Subproject commit dd5081d55372c57744874042f60e7c23ff69f5f6
Loading…
Cancel
Save