From e052ab52e44fd2a6564964e47e79929068731916 Mon Sep 17 00:00:00 2001 From: Steve Gilham Date: Thu, 29 Sep 2022 22:59:52 +0100 Subject: Address issue #873 (#874) * Address issue #873 * Be explicit as to what we support writing * Use normal test infrastructure * Restore writing primitives * Restore style * Can't verify .net core assembly Co-authored-by: Jb Evain --- Mono.Cecil/AssemblyWriter.cs | 1 + Test/Mono.Cecil.Tests/PortablePdbTests.cs | 17 +++++++++++++++++ Test/Resources/assemblies/NullConst.dll | Bin 0 -> 5120 bytes Test/Resources/assemblies/NullConst.pdb | Bin 0 -> 10424 bytes 4 files changed, 18 insertions(+) create mode 100644 Test/Resources/assemblies/NullConst.dll create mode 100644 Test/Resources/assemblies/NullConst.pdb diff --git a/Mono.Cecil/AssemblyWriter.cs b/Mono.Cecil/AssemblyWriter.cs index 9972c12..df8afdc 100644 --- a/Mono.Cecil/AssemblyWriter.cs +++ b/Mono.Cecil/AssemblyWriter.cs @@ -2192,6 +2192,7 @@ namespace Mono.Cecil { case ElementType.None: case ElementType.Var: case ElementType.MVar: + case ElementType.GenericInst: signature.WriteInt32 (0); break; case ElementType.String: diff --git a/Test/Mono.Cecil.Tests/PortablePdbTests.cs b/Test/Mono.Cecil.Tests/PortablePdbTests.cs index 3aa0ffc..a89f79d 100644 --- a/Test/Mono.Cecil.Tests/PortablePdbTests.cs +++ b/Test/Mono.Cecil.Tests/PortablePdbTests.cs @@ -453,6 +453,23 @@ namespace Mono.Cecil.Tests { }, symbolReaderProvider: typeof (PortablePdbReaderProvider), symbolWriterProvider: typeof (PortablePdbWriterProvider)); } + [Test] + public void NullGenericInstConstant () + { + TestModule ("NullConst.dll", module => { + var type = module.GetType ("NullConst.Program"); + var method = type.GetMethod ("MakeConst"); + var symbol = method.DebugInformation; + + Assert.IsNotNull (symbol); + Assert.AreEqual (1, symbol.Scope.Constants.Count); + + var a = symbol.Scope.Constants [0]; + Assert.AreEqual ("thing", a.Name); + Assert.AreEqual (null, a.Value); + }, verify: false, symbolReaderProvider: typeof (PortablePdbReaderProvider), symbolWriterProvider: typeof (PortablePdbWriterProvider)); + } + [Test] public void InvalidConstantRecord () { diff --git a/Test/Resources/assemblies/NullConst.dll b/Test/Resources/assemblies/NullConst.dll new file mode 100644 index 0000000..7c58453 Binary files /dev/null and b/Test/Resources/assemblies/NullConst.dll differ diff --git a/Test/Resources/assemblies/NullConst.pdb b/Test/Resources/assemblies/NullConst.pdb new file mode 100644 index 0000000..e70f2c2 Binary files /dev/null and b/Test/Resources/assemblies/NullConst.pdb differ -- cgit v1.2.3