Tests: Add generic method unit tests

This commit is contained in:
Katy Coe
2020-02-02 01:07:19 +01:00
parent 6f830fd909
commit cfb384e22a
5 changed files with 279 additions and 124 deletions

View File

@@ -33,7 +33,7 @@ using System.Runtime.InteropServices;
[assembly: StringFreezing] // 0x000000018000E500-0x000000018000E770
// [assembly: TypeLibVersion] // 0x000000018000E500-0x000000018000E770
// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1832
// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1835
// [assembly: CompilationRelaxations] // 0x000000018000C600-0x000000018000C660
// [assembly: Debuggable] // 0x000000018000C600-0x000000018000C660
[assembly: RuntimeCompatibility] // 0x000000018000C600-0x000000018000C660
@@ -41,35 +41,35 @@ using System.Runtime.InteropServices;
internal static class Consts // TypeDefIndex: 100
{
// Fields
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ED0B4
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ED0BF
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ED0D8
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ED0FF
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ED11B
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ED126
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ED131
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ED143
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED155
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A0
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED25E
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED2B9
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED309
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED35A
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED3AE
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED40C
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED45B
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED4A8
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED4FA
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED54E
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED5AD
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED602
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED65E
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED6B5
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED70B
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED767
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED7B8
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED813
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ED2D8
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ED2E3
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ED2FC
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ED323
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ED33F
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ED34A
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ED355
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ED367
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED379
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED3C4
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED421
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED482
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED4DD
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED52D
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED57E
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED5D2
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED630
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED67F
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED6CC
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED71E
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED772
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED7D1
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED826
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED882
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED8D9
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED92F
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED98B
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED9DC
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000EDA37
}
internal sealed class Locale // TypeDefIndex: 101
@@ -118,7 +118,7 @@ namespace Il2CppTests.TestSources
public Test() {} // 0x00000001800E5000-0x00000001800E5010
// Methods
public void GenericTypesTest() {} // 0x0000000180408870-0x0000000180408870
public void GenericTypesTest() {} // 0x0000000180408930-0x0000000180408930
}
internal class ConstrainedValueType<V> // TypeDefIndex: 1820
@@ -228,4 +228,34 @@ namespace Il2CppTests.TestSources
// Constructors
public OuterGeneric() {}
}
public class NonGeneric // TypeDefIndex: 1833
{
// Constructors
public NonGeneric() {} // 0x00000001800E5000-0x00000001800E5010
// Methods
public void GenericMethodDefinitionInNonGenericClass<T>(T a) {}
}
public class GenericClassWithMethods<T> // TypeDefIndex: 1834
{
// Constructors
public GenericClassWithMethods() {}
// Methods
public void NonGenericMethodInGenericClass(T a) {}
public void NonGenericMethodInGenericClass2() {}
public void GenericMethodDefinitionInGenericClass<U>(U a) {}
public void GenericMethodDefinitionInGenericClass2<U>(T a, U b) {}
}
public class CallGenericMethods : GenericClassWithMethods<int> // TypeDefIndex: 1835
{
// Constructors
public CallGenericMethods() {} // 0x0000000180408870-0x00000001804088B0
// Methods
public void CallMethods() {} // 0x00000001804087F0-0x0000000180408870
}
}

View File

@@ -33,7 +33,7 @@ using System.Runtime.InteropServices;
[assembly: StringFreezing] // 0x1000F350-0x1000F560
// [assembly: TypeLibVersion] // 0x1000F350-0x1000F560
// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1832
// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1835
// [assembly: CompilationRelaxations] // 0x1000D800-0x1000D850
// [assembly: Debuggable] // 0x1000D800-0x1000D850
[assembly: RuntimeCompatibility] // 0x1000D800-0x1000D850
@@ -41,35 +41,35 @@ using System.Runtime.InteropServices;
internal static class Consts // TypeDefIndex: 100
{
// Fields
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ED0B4
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ED0BF
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ED0D8
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ED0FF
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ED11B
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ED126
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ED131
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ED143
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED155
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A0
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED25E
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED2B9
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED309
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED35A
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED3AE
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED40C
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED45B
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED4A8
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED4FA
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED54E
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED5AD
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED602
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED65E
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED6B5
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED70B
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED767
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED7B8
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED813
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ED2D8
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ED2E3
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ED2FC
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ED323
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ED33F
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ED34A
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ED355
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ED367
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED379
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED3C4
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED421
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED482
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED4DD
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED52D
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED57E
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED5D2
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED630
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED67F
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED6CC
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED71E
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED772
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED7D1
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED826
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED882
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED8D9
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED92F
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED98B
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED9DC
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000EDA37
}
internal sealed class Locale // TypeDefIndex: 101
@@ -118,7 +118,7 @@ namespace Il2CppTests.TestSources
public Test() {} // 0x100C3000-0x100C3010
// Methods
public void GenericTypesTest() {} // 0x1036D450-0x1036D450
public void GenericTypesTest() {} // 0x1036D4F0-0x1036D4F0
}
internal class ConstrainedValueType<V> // TypeDefIndex: 1820
@@ -228,4 +228,34 @@ namespace Il2CppTests.TestSources
// Constructors
public OuterGeneric() {}
}
public class NonGeneric // TypeDefIndex: 1833
{
// Constructors
public NonGeneric() {} // 0x100C3000-0x100C3010
// Methods
public void GenericMethodDefinitionInNonGenericClass<T>(T a) {}
}
public class GenericClassWithMethods<T> // TypeDefIndex: 1834
{
// Constructors
public GenericClassWithMethods() {}
// Methods
public void NonGenericMethodInGenericClass(T a) {}
public void NonGenericMethodInGenericClass2() {}
public void GenericMethodDefinitionInGenericClass<U>(U a) {}
public void GenericMethodDefinitionInGenericClass2<U>(T a, U b) {}
}
public class CallGenericMethods : GenericClassWithMethods<int> // TypeDefIndex: 1835
{
// Constructors
public CallGenericMethods() {} // 0x1036D440-0x1036D480
// Methods
public void CallMethods() {} // 0x1036D3D0-0x1036D440
}
}

View File

@@ -11,75 +11,75 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// Image 0: mscorlib.dll - Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Types 0-1809
// [assembly: AssemblyCompany] // 0x000A795C-0x000A7C50
// [assembly: AssemblyCopyright] // 0x000A795C-0x000A7C50
// [assembly: AssemblyDefaultAlias] // 0x000A795C-0x000A7C50
// [assembly: AssemblyDelaySign] // 0x000A795C-0x000A7C50
// [assembly: AssemblyDescription] // 0x000A795C-0x000A7C50
// [assembly: AssemblyFileVersion] // 0x000A795C-0x000A7C50
// [assembly: AssemblyInformationalVersion] // 0x000A795C-0x000A7C50
// [assembly: AssemblyKeyFile] // 0x000A795C-0x000A7C50
// [assembly: AssemblyProduct] // 0x000A795C-0x000A7C50
// [assembly: AssemblyTitle] // 0x000A795C-0x000A7C50
// [assembly: CLSCompliant] // 0x000A795C-0x000A7C50
// [assembly: CompilationRelaxations] // 0x000A795C-0x000A7C50
// [assembly: ComVisible] // 0x000A795C-0x000A7C50
// [assembly: Debuggable] // 0x000A795C-0x000A7C50
// [assembly: DefaultDependency] // 0x000A795C-0x000A7C50
// [assembly: Guid] // 0x000A795C-0x000A7C50
// [assembly: NeutralResourcesLanguage] // 0x000A795C-0x000A7C50
[assembly: RuntimeCompatibility] // 0x000A795C-0x000A7C50
// [assembly: SatelliteContractVersion] // 0x000A795C-0x000A7C50
[assembly: StringFreezing] // 0x000A795C-0x000A7C50
// [assembly: TypeLibVersion] // 0x000A795C-0x000A7C50
// [assembly: AssemblyCompany] // 0x000A7AE4-0x000A7DD8
// [assembly: AssemblyCopyright] // 0x000A7AE4-0x000A7DD8
// [assembly: AssemblyDefaultAlias] // 0x000A7AE4-0x000A7DD8
// [assembly: AssemblyDelaySign] // 0x000A7AE4-0x000A7DD8
// [assembly: AssemblyDescription] // 0x000A7AE4-0x000A7DD8
// [assembly: AssemblyFileVersion] // 0x000A7AE4-0x000A7DD8
// [assembly: AssemblyInformationalVersion] // 0x000A7AE4-0x000A7DD8
// [assembly: AssemblyKeyFile] // 0x000A7AE4-0x000A7DD8
// [assembly: AssemblyProduct] // 0x000A7AE4-0x000A7DD8
// [assembly: AssemblyTitle] // 0x000A7AE4-0x000A7DD8
// [assembly: CLSCompliant] // 0x000A7AE4-0x000A7DD8
// [assembly: CompilationRelaxations] // 0x000A7AE4-0x000A7DD8
// [assembly: ComVisible] // 0x000A7AE4-0x000A7DD8
// [assembly: Debuggable] // 0x000A7AE4-0x000A7DD8
// [assembly: DefaultDependency] // 0x000A7AE4-0x000A7DD8
// [assembly: Guid] // 0x000A7AE4-0x000A7DD8
// [assembly: NeutralResourcesLanguage] // 0x000A7AE4-0x000A7DD8
[assembly: RuntimeCompatibility] // 0x000A7AE4-0x000A7DD8
// [assembly: SatelliteContractVersion] // 0x000A7AE4-0x000A7DD8
[assembly: StringFreezing] // 0x000A7AE4-0x000A7DD8
// [assembly: TypeLibVersion] // 0x000A7AE4-0x000A7DD8
// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1832
// [assembly: CompilationRelaxations] // 0x000A7D64-0x000A7DB8
// [assembly: Debuggable] // 0x000A7D64-0x000A7DB8
[assembly: RuntimeCompatibility] // 0x000A7D64-0x000A7DB8
// Image 1: GenericTypes.dll - Assembly: GenericTypes, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1835
// [assembly: CompilationRelaxations] // 0x000A7EEC-0x000A7F40
// [assembly: Debuggable] // 0x000A7EEC-0x000A7F40
[assembly: RuntimeCompatibility] // 0x000A7EEC-0x000A7F40
internal static class Consts // TypeDefIndex: 100
{
// Fields
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ED0B4
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ED0BF
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ED0D8
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ED0FF
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ED11B
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ED126
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ED131
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ED143
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED155
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A0
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED25E
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED2B9
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED309
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED35A
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED3AE
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED40C
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED45B
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED4A8
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED4FA
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED54E
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED5AD
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED602
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED65E
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED6B5
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED70B
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED767
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED7B8
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED813
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ED2D8
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ED2E3
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ED2FC
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ED323
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ED33F
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ED34A
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ED355
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ED367
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED379
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED3C4
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED421
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED482
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED4DD
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED52D
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED57E
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED5D2
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED630
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED67F
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED6CC
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED71E
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED772
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED7D1
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED826
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED882
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED8D9
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED92F
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED98B
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED9DC
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000EDA37
}
internal sealed class Locale // TypeDefIndex: 101
{
// Constructors
private Locale() {} // 0x003ED908-0x003ED910
private Locale() {} // 0x003EDAF8-0x003EDB00
// Methods
public static string GetText(string msg) => default; // 0x003ED910-0x003ED914
public static string GetText(string fmt, params /* 0x000A6188-0x000A6198 */ object[] args) => default; // 0x003ED914-0x003ED9A0
public static string GetText(string msg) => default; // 0x003EDB00-0x003EDB04
public static string GetText(string fmt, params /* 0x000A6310-0x000A6320 */ object[] args) => default; // 0x003EDB04-0x003EDB90
}
namespace Il2CppTests.TestSources
@@ -115,10 +115,10 @@ namespace Il2CppTests.TestSources
internal class Test // TypeDefIndex: 1819
{
// Constructors
public Test() {} // 0x0057AFD8-0x0057AFE0
public Test() {} // 0x0057B30C-0x0057B314
// Methods
public void GenericTypesTest() {} // 0x0057AE1C-0x0057AFD8
public void GenericTypesTest() {} // 0x0057B150-0x0057B30C
}
internal class ConstrainedValueType<V> // TypeDefIndex: 1820
@@ -169,7 +169,7 @@ namespace Il2CppTests.TestSources
public ConstrainedRefType() {}
// Methods
// [NullableContext] // 0x000A7D50-0x000A7D64
// [NullableContext] // 0x000A7ED8-0x000A7EEC
public void ConstrainedMethodNotNull<N>(N notnullArgument, R bar) {}
public void ConstrainedUnmanaged<U>(U unmanagedArgument)
where U : struct {}
@@ -228,4 +228,34 @@ namespace Il2CppTests.TestSources
// Constructors
public OuterGeneric() {}
}
public class NonGeneric // TypeDefIndex: 1833
{
// Constructors
public NonGeneric() {} // 0x0057B148-0x0057B150
// Methods
public void GenericMethodDefinitionInNonGenericClass<T>(T a) {}
}
public class GenericClassWithMethods<T> // TypeDefIndex: 1834
{
// Constructors
public GenericClassWithMethods() {}
// Methods
public void NonGenericMethodInGenericClass(T a) {}
public void NonGenericMethodInGenericClass2() {}
public void GenericMethodDefinitionInGenericClass<U>(U a) {}
public void GenericMethodDefinitionInGenericClass2<U>(T a, U b) {}
}
public class CallGenericMethods : GenericClassWithMethods<int> // TypeDefIndex: 1835
{
// Constructors
public CallGenericMethods() {} // 0x0057B0E4-0x0057B148
// Methods
public void CallMethods() {} // 0x0057B01C-0x0057B0E4
}
}

View File

@@ -41,6 +41,17 @@ namespace Il2CppInspector
TypeInfo tF = tDerived.GetField("F").FieldType;
TypeInfo tNested = asm.GetType("Il2CppTests.TestSources.Derived`1+Nested");
TypeInfo tNG = asm.GetType("Il2CppTests.TestSources.NonGeneric");
TypeInfo tGCWM = asm.GetType("Il2CppTests.TestSources.GenericClassWithMethods`1");
TypeInfo tCGM = asm.GetType("Il2CppTests.TestSources.CallGenericMethods");
MethodInfo mGMDINGC = tNG.GetMethod("GenericMethodDefinitionInNonGenericClass");
MethodInfo mNGMIGC = tGCWM.GetMethod("NonGenericMethodInGenericClass");
MethodInfo mNGMIGC2 = tGCWM.GetMethod("NonGenericMethodInGenericClass2");
MethodInfo mGMDIGC = tGCWM.GetMethod("GenericMethodDefinitionInGenericClass");
MethodInfo mGMDIGC2 = tGCWM.GetMethod("GenericMethodDefinitionInGenericClass2");
// TODO: Test the methods in CallGenericMethodds.CallMethods (requires MethodSpec implementation)
DisplayGenericType(tBase, "Generic type definition Base<T, U>");
DisplayGenericType(tDerived, "Derived<V>");
DisplayGenericType(tDerivedBase, "Base type of Derived<V>");
@@ -51,7 +62,7 @@ namespace Il2CppInspector
DisplayGenericType(tNested, "Nested type in Derived<V>");
// Assert
var checks = new[] {
var typeChecks = new[] {
(tBase, "Base`2[T,U]", true, true, true, false, -1),
(tDerived, "Derived`1[V]", true, true, true, false, -1),
(tDerivedBase, "Base`2[System.String,V]", true, false, true, false, -1),
@@ -62,7 +73,22 @@ namespace Il2CppInspector
(tNested, "Derived`1[V]+Nested[V]", true, true, true, false, -1)
};
foreach (var check in checks) {
var methodChecks = new[] {
(mGMDINGC, "Void GenericMethodDefinitionInNonGenericClass[T](T)", true, true, true, false),
(mNGMIGC, "Void NonGenericMethodInGenericClass(T)", false, true, false, false),
(mNGMIGC2, "Void NonGenericMethodInGenericClass2()", false, true, false, false),
(mGMDIGC, "Void GenericMethodDefinitionInGenericClass[U](U)", true, true, true, false),
(mGMDIGC2, "Void GenericMethodDefinitionInGenericClass2[U](T, U)", true, true, true, false)
/*
(mGMDINGC_closed, "Void GenericMethodDefinitionInNonGenericClass[Single](Single)", true, false, false, false),
(mNGMIGC_closed, "Void NonGenericMethodInGenericClass(Int32)", false, false, false, false),
(mNGMIGC2_closed, "Void NonGenericMethodInGenericClass()", false, false, false, false),
(mGMDIGC_closed, "Void GenericMethodDefinitioninGenericClass[Int32](Int32)", true, true, false, true),
(mGMDIGC2_closed, "Void GenericMethodDefinitionInGenericClass2[String](T, System.String)", true, true, false, true)
*/
};
foreach (var check in typeChecks) {
var t = check.Item1;
Assert.That(t.ToString(), Is.EqualTo(check.Item2));
@@ -71,6 +97,16 @@ namespace Il2CppInspector
Assert.That(t.ContainsGenericParameters, Is.EqualTo(check.Item5));
Assert.That(t.IsGenericParameter, Is.EqualTo(check.Item6));
}
foreach (var check in methodChecks) {
var m = check.Item1;
Assert.That(m.ToString(), Is.EqualTo(check.Item2));
Assert.That(m.IsGenericMethod, Is.EqualTo(check.Item3));
Assert.That(m.ContainsGenericParameters, Is.EqualTo(check.Item4));
Assert.That(m.IsGenericMethodDefinition, Is.EqualTo(check.Item5));
Assert.That(m.IsConstructedGenericMethod, Is.EqualTo(check.Item6));
}
}
private void DisplayGenericType(TypeInfo t, string caption) {

View File

@@ -6,6 +6,7 @@
using System;
using System.Collections.Generic;
using Il2CppInspector;
namespace Il2CppTests.TestSources
{
@@ -111,4 +112,32 @@ namespace Il2CppTests.TestSources
public InnerGeneric2.SubInnerGeneric2 fieldOfSubInnerGeneric2;
public InnerGeneric2.SubInnerGeneric3<string> fieldOfSubInnerGeneric3;
}
// Method tests
public class NonGeneric
{
public static void GenericMethodDefinitionInNonGenericClass<T>(T a) {} // IsGenericMethod = true, ContainsGenericParameters = true, IGMD = true, ICGM = false
}
public class GenericClassWithMethods<T>
{
public void NonGenericMethodInGenericClass(T a) { } // IsGenericMethod = false, ContainsGenericParameters = true, IGMD = false, ICGM = false
public void NonGenericMethodInGenericClass2() { } // IsGenericMethod = false, ContainsGenericParameters = true, IGMD = false, ICGM = false
public void GenericMethodDefinitionInGenericClass<U>(U a) { } // IsGenericMethod = true, ContainsGenericParameters = true, IGMD = true, ICGM = false
public void GenericMethodDefinitionInGenericClass2<U>(T a, U b) { } // IsGenericMethod = true, ContainsGenericParameters = true, IGMD = true, ICGM = false
}
public class CallGenericMethods : GenericClassWithMethods<int>
{
public void CallMethods() {
NonGeneric.GenericMethodDefinitionInNonGenericClass<float>(1.23f); // IsGenericMethod = true, ContainsGenericParameters = false, IGMD = false, ICGM = true
NonGenericMethodInGenericClass(123); // IsGenericMethod = false, ContainsGenericParameters = false, IGMD = false, ICGM = false
NonGenericMethodInGenericClass2(); // IsGenericMethod = false, ContainsGenericParameters = false, IGMD = false, ICGM = false
GenericMethodDefinitionInGenericClass<int>(456); // IsGenericMethod = true, ContainsGenericParameters = true, IGMD = false, ICGM = true
GenericMethodDefinitionInGenericClass2<string>(789, "abc"); // IsGenericMethod = true, ContainsGenericParameters = true, IGMD = false, ICGM = true
}
}
}