Browse Source

Add Generics pretty tests

pull/877/head
Siegfried Pammer 8 years ago
parent
commit
a1a525d5cb
  1. 1
      ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj
  2. 6
      ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs
  3. 10
      ICSharpCode.Decompiler.Tests/TestCases/Correctness/Generics.cs
  4. 38
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/Generics.cs
  5. 171
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/Generics.il
  6. 152
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/Generics.opt.il
  7. 142
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/Generics.opt.roslyn.il
  8. 165
      ICSharpCode.Decompiler.Tests/TestCases/Pretty/Generics.roslyn.il

1
ICSharpCode.Decompiler.Tests/ICSharpCode.Decompiler.Tests.csproj

@ -63,6 +63,7 @@ @@ -63,6 +63,7 @@
<Compile Include="TestCases\ILPretty\Issue379.cs" />
<Compile Include="TestCases\Pretty\Async.cs" />
<Compile Include="TestCases\Pretty\CheckedUnchecked.cs" />
<Compile Include="TestCases\Pretty\Generics.cs" />
<Compile Include="TestCases\Pretty\LiftedOperators.cs" />
<Compile Include="PrettyTestRunner.cs" />
<Compile Include="RoundtripAssembly.cs" />

6
ICSharpCode.Decompiler.Tests/PrettyTestRunner.cs

@ -131,6 +131,12 @@ namespace ICSharpCode.Decompiler.Tests @@ -131,6 +131,12 @@ namespace ICSharpCode.Decompiler.Tests
}
}
[Test]
public void Generics([ValueSource("defaultOptions")] CompilerOptions cscOptions)
{
Run(cscOptions: cscOptions);
}
[Test]
public void Loops([ValueSource("defaultOptions")] CompilerOptions cscOptions)
{

10
ICSharpCode.Decompiler.Tests/TestCases/Correctness/Generics.cs

@ -47,16 +47,6 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Correctness @@ -47,16 +47,6 @@ namespace ICSharpCode.Decompiler.Tests.TestCases.Correctness
{
Console.WriteLine(typeof(T1) + " " + typeof(T2));
}
public T CastToTypeParameter<T>(DerivedClass d) where T: BaseClass
{
return (T)(BaseClass)d;
}
public T New<T>() where T : new()
{
return new T();
}
}
class GenericClass<T>

38
ICSharpCode.Decompiler.Tests/TestCases/Pretty/Generics.cs

@ -0,0 +1,38 @@ @@ -0,0 +1,38 @@
using System;
namespace ICSharpCode.Decompiler.Tests.TestCases.Pretty
{
internal class Generics
{
private class GenericClass<T>
{
public void M(out GenericClass<T> self)
{
self = this;
}
}
public class BaseClass
{
}
public class DerivedClass : BaseClass
{
}
public T CastToTypeParameter<T>(DerivedClass d) where T : BaseClass
{
return (T)(BaseClass)d;
}
public T New<T>() where T : new()
{
return new T();
}
public bool IsNull<T>(T t)
{
return t == null;
}
}
}

171
ICSharpCode.Decompiler.Tests/TestCases/Pretty/Generics.il

@ -0,0 +1,171 @@ @@ -0,0 +1,171 @@
// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17929
// Copyright (c) Microsoft Corporation. All rights reserved.
// Metadata version: v4.0.30319
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly org2btap
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
.custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
.permissionset reqmin
= {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}}
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module org2btap.dll
// MVID: {C17EE898-3151-4FD3-9C62-06322F89471A}
.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
.imagebase 0x10000000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x02570000
// =============== CLASS MEMBERS DECLARATION ===================
.class private auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics
extends [mscorlib]System.Object
{
.class auto ansi nested private beforefieldinit GenericClass`1<T>
extends [mscorlib]System.Object
{
.method public hidebysig instance void
M([out] class ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/GenericClass`1<!T>& self) cil managed
{
// Code size 5 (0x5)
.maxstack 8
IL_0000: nop
IL_0001: ldarg.1
IL_0002: ldarg.0
IL_0003: stind.ref
IL_0004: ret
} // end of method GenericClass`1::M
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method GenericClass`1::.ctor
} // end of class GenericClass`1
.class auto ansi nested public beforefieldinit BaseClass
extends [mscorlib]System.Object
{
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method BaseClass::.ctor
} // end of class BaseClass
.class auto ansi nested public beforefieldinit DerivedClass
extends ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/BaseClass
{
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/BaseClass::.ctor()
IL_0006: ret
} // end of method DerivedClass::.ctor
} // end of class DerivedClass
.method public hidebysig instance !!T CastToTypeParameter<(ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/BaseClass) T>(class ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/DerivedClass d) cil managed
{
// Code size 12 (0xc)
.maxstack 1
.locals init (!!T V_0)
IL_0000: nop
IL_0001: ldarg.1
IL_0002: unbox.any !!T
IL_0007: stloc.0
IL_0008: br.s IL_000a
IL_000a: ldloc.0
IL_000b: ret
} // end of method Generics::CastToTypeParameter
.method public hidebysig instance !!T New<.ctor T>() cil managed
{
// Code size 39 (0x27)
.maxstack 1
.locals init (!!T V_0,
!!T V_1)
IL_0000: nop
IL_0001: ldloca.s V_1
IL_0003: initobj !!T
IL_0009: ldloc.1
IL_000a: box !!T
IL_000f: brfalse.s IL_001c
IL_0011: ldloca.s V_1
IL_0013: initobj !!T
IL_0019: ldloc.1
IL_001a: br.s IL_0021
IL_001c: call !!0 [mscorlib]System.Activator::CreateInstance<!!0>()
IL_0021: nop
IL_0022: stloc.0
IL_0023: br.s IL_0025
IL_0025: ldloc.0
IL_0026: ret
} // end of method Generics::New
.method public hidebysig static bool IsNull<T>(!!T t) cil managed
{
// Code size 15 (0xf)
.maxstack 2
.locals init (bool V_0)
IL_0000: nop
IL_0001: ldarg.0
IL_0002: box !!T
IL_0007: ldnull
IL_0008: ceq
IL_000a: stloc.0
IL_000b: br.s IL_000d
IL_000d: ldloc.0
IL_000e: ret
} // end of method Generics::IsNull
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method Generics::.ctor
} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics
// =============================================================
// *********** DISASSEMBLY COMPLETE ***********************
// WARNING: Created Win32 resource file ../../../TestCases/Pretty\Generics.res

152
ICSharpCode.Decompiler.Tests/TestCases/Pretty/Generics.opt.il

@ -0,0 +1,152 @@ @@ -0,0 +1,152 @@
// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17929
// Copyright (c) Microsoft Corporation. All rights reserved.
// Metadata version: v4.0.30319
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly '4ebood3j'
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
.custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
.permissionset reqmin
= {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}}
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module '4ebood3j.dll'
// MVID: {EFF51081-05A0-430F-B639-218464AEAF1E}
.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
.imagebase 0x10000000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x00C40000
// =============== CLASS MEMBERS DECLARATION ===================
.class private auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics
extends [mscorlib]System.Object
{
.class auto ansi nested private beforefieldinit GenericClass`1<T>
extends [mscorlib]System.Object
{
.method public hidebysig instance void
M([out] class ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/GenericClass`1<!T>& self) cil managed
{
// Code size 4 (0x4)
.maxstack 8
IL_0000: ldarg.1
IL_0001: ldarg.0
IL_0002: stind.ref
IL_0003: ret
} // end of method GenericClass`1::M
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method GenericClass`1::.ctor
} // end of class GenericClass`1
.class auto ansi nested public beforefieldinit BaseClass
extends [mscorlib]System.Object
{
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method BaseClass::.ctor
} // end of class BaseClass
.class auto ansi nested public beforefieldinit DerivedClass
extends ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/BaseClass
{
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/BaseClass::.ctor()
IL_0006: ret
} // end of method DerivedClass::.ctor
} // end of class DerivedClass
.method public hidebysig instance !!T CastToTypeParameter<(ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/BaseClass) T>(class ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/DerivedClass d) cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.1
IL_0001: unbox.any !!T
IL_0006: ret
} // end of method Generics::CastToTypeParameter
.method public hidebysig instance !!T New<.ctor T>() cil managed
{
// Code size 32 (0x20)
.maxstack 1
.locals init (!!T V_0,
!!T V_1)
IL_0000: ldloca.s V_0
IL_0002: initobj !!T
IL_0008: ldloc.0
IL_0009: box !!T
IL_000e: brfalse.s IL_001a
IL_0010: ldloca.s V_1
IL_0012: initobj !!T
IL_0018: ldloc.1
IL_0019: ret
IL_001a: call !!0 [mscorlib]System.Activator::CreateInstance<!!0>()
IL_001f: ret
} // end of method Generics::New
.method public hidebysig static bool IsNull<T>(!!T t) cil managed
{
// Code size 10 (0xa)
.maxstack 8
IL_0000: ldarg.0
IL_0001: box !!T
IL_0006: ldnull
IL_0007: ceq
IL_0009: ret
} // end of method Generics::IsNull
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method Generics::.ctor
} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics
// =============================================================
// *********** DISASSEMBLY COMPLETE ***********************
// WARNING: Created Win32 resource file ../../../TestCases/Pretty\Generics.opt.res

142
ICSharpCode.Decompiler.Tests/TestCases/Pretty/Generics.opt.roslyn.il

@ -0,0 +1,142 @@ @@ -0,0 +1,142 @@
// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17929
// Copyright (c) Microsoft Corporation. All rights reserved.
// Metadata version: v4.0.30319
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly Generics
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
.custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
// --- The following custom attribute is added automatically, do not uncomment -------
// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 02 00 00 00 00 00 )
.permissionset reqmin
= {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}}
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module Generics.dll
// MVID: {A68CE966-2788-410B-9ADC-67827754D69A}
.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
.imagebase 0x10000000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x007F0000
// =============== CLASS MEMBERS DECLARATION ===================
.class private auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics
extends [mscorlib]System.Object
{
.class auto ansi nested private beforefieldinit GenericClass`1<T>
extends [mscorlib]System.Object
{
.method public hidebysig instance void
M([out] class ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/GenericClass`1<!T>& self) cil managed
{
// Code size 4 (0x4)
.maxstack 8
IL_0000: ldarg.1
IL_0001: ldarg.0
IL_0002: stind.ref
IL_0003: ret
} // end of method GenericClass`1::M
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method GenericClass`1::.ctor
} // end of class GenericClass`1
.class auto ansi nested public beforefieldinit BaseClass
extends [mscorlib]System.Object
{
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method BaseClass::.ctor
} // end of class BaseClass
.class auto ansi nested public beforefieldinit DerivedClass
extends ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/BaseClass
{
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/BaseClass::.ctor()
IL_0006: ret
} // end of method DerivedClass::.ctor
} // end of class DerivedClass
.method public hidebysig instance !!T CastToTypeParameter<(ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/BaseClass) T>(class ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/DerivedClass d) cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.1
IL_0001: unbox.any !!T
IL_0006: ret
} // end of method Generics::CastToTypeParameter
.method public hidebysig instance !!T New<.ctor T>() cil managed
{
// Code size 6 (0x6)
.maxstack 8
IL_0000: call !!0 [mscorlib]System.Activator::CreateInstance<!!0>()
IL_0005: ret
} // end of method Generics::New
.method public hidebysig static bool IsNull<T>(!!T t) cil managed
{
// Code size 10 (0xa)
.maxstack 8
IL_0000: ldarg.0
IL_0001: box !!T
IL_0006: ldnull
IL_0007: ceq
IL_0009: ret
} // end of method Generics::IsNull
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 7 (0x7)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: ret
} // end of method Generics::.ctor
} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics
// =============================================================
// *********** DISASSEMBLY COMPLETE ***********************

165
ICSharpCode.Decompiler.Tests/TestCases/Pretty/Generics.roslyn.il

@ -0,0 +1,165 @@ @@ -0,0 +1,165 @@
// Microsoft (R) .NET Framework IL Disassembler. Version 4.0.30319.17929
// Copyright (c) Microsoft Corporation. All rights reserved.
// Metadata version: v4.0.30319
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 4:0:0:0
}
.assembly Generics
{
.custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 )
.custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78 // ....T..WrapNonEx
63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 ) // ceptionThrows.
// --- The following custom attribute is added automatically, do not uncomment -------
// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(valuetype [mscorlib]System.Diagnostics.DebuggableAttribute/DebuggingModes) = ( 01 00 07 01 00 00 00 00 )
.permissionset reqmin
= {[mscorlib]System.Security.Permissions.SecurityPermissionAttribute = {property bool 'SkipVerification' = bool(true)}}
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module Generics.dll
// MVID: {ADEAC82A-8D93-4D9A-B37E-3FC39CBDC54B}
.custom instance void [mscorlib]System.Security.UnverifiableCodeAttribute::.ctor() = ( 01 00 00 00 )
.imagebase 0x10000000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003 // WINDOWS_CUI
.corflags 0x00000001 // ILONLY
// Image base: 0x007E0000
// =============== CLASS MEMBERS DECLARATION ===================
.class private auto ansi beforefieldinit ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics
extends [mscorlib]System.Object
{
.class auto ansi nested private beforefieldinit GenericClass`1<T>
extends [mscorlib]System.Object
{
.method public hidebysig instance void
M([out] class ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/GenericClass`1<!T>& self) cil managed
{
// Code size 5 (0x5)
.maxstack 8
IL_0000: nop
IL_0001: ldarg.1
IL_0002: ldarg.0
IL_0003: stind.ref
IL_0004: ret
} // end of method GenericClass`1::M
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: nop
IL_0007: ret
} // end of method GenericClass`1::.ctor
} // end of class GenericClass`1
.class auto ansi nested public beforefieldinit BaseClass
extends [mscorlib]System.Object
{
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: nop
IL_0007: ret
} // end of method BaseClass::.ctor
} // end of class BaseClass
.class auto ansi nested public beforefieldinit DerivedClass
extends ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/BaseClass
{
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/BaseClass::.ctor()
IL_0006: nop
IL_0007: ret
} // end of method DerivedClass::.ctor
} // end of class DerivedClass
.method public hidebysig instance !!T CastToTypeParameter<(ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/BaseClass) T>(class ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics/DerivedClass d) cil managed
{
// Code size 12 (0xc)
.maxstack 1
.locals init (!!T V_0)
IL_0000: nop
IL_0001: ldarg.1
IL_0002: unbox.any !!T
IL_0007: stloc.0
IL_0008: br.s IL_000a
IL_000a: ldloc.0
IL_000b: ret
} // end of method Generics::CastToTypeParameter
.method public hidebysig instance !!T New<.ctor T>() cil managed
{
// Code size 11 (0xb)
.maxstack 1
.locals init (!!T V_0)
IL_0000: nop
IL_0001: call !!0 [mscorlib]System.Activator::CreateInstance<!!0>()
IL_0006: stloc.0
IL_0007: br.s IL_0009
IL_0009: ldloc.0
IL_000a: ret
} // end of method Generics::New
.method public hidebysig static bool IsNull<T>(!!T t) cil managed
{
// Code size 15 (0xf)
.maxstack 2
.locals init (bool V_0)
IL_0000: nop
IL_0001: ldarg.0
IL_0002: box !!T
IL_0007: ldnull
IL_0008: ceq
IL_000a: stloc.0
IL_000b: br.s IL_000d
IL_000d: ldloc.0
IL_000e: ret
} // end of method Generics::IsNull
.method public hidebysig specialname rtspecialname
instance void .ctor() cil managed
{
// Code size 8 (0x8)
.maxstack 8
IL_0000: ldarg.0
IL_0001: call instance void [mscorlib]System.Object::.ctor()
IL_0006: nop
IL_0007: ret
} // end of method Generics::.ctor
} // end of class ICSharpCode.Decompiler.Tests.TestCases.Pretty.Generics
// =============================================================
// *********** DISASSEMBLY COMPLETE ***********************
Loading…
Cancel
Save