diff --git a/Il2CppTests/TestExpectedResults/CustomAttributeData.cs b/Il2CppTests/TestExpectedResults/CustomAttributeData.cs index 3daed02..5b2c9fe 100644 --- a/Il2CppTests/TestExpectedResults/CustomAttributeData.cs +++ b/Il2CppTests/TestExpectedResults/CustomAttributeData.cs @@ -93,7 +93,7 @@ namespace Il2CppTests.TestSources FourthKind = 3 } - // [AttributeUsage] // 0x000A5070-0x000A5084 + [AttributeUsage(AttributeTargets.All)] // 0x000A5070-0x000A5084 public class ExampleAttribute : Attribute // TypeDefIndex: 1812 { // Fields @@ -103,10 +103,10 @@ namespace Il2CppTests.TestSources private int[] arrayNumbers; // 0x14 // Properties - public ExampleKind Kind { get; } // 0x005612FC-0x00561304 - public string[] Strings { get; } // 0x00561304-0x0056130C - public string Note { get; set; } // 0x0056130C-0x00561314 0x00561314-0x0056131C - public int[] Numbers { get; set; } // 0x0056131C-0x00561324 0x00561324-0x0056132C + public ExampleKind Kind { get => default; } // 0x005612FC-0x00561304 + public string[] Strings { get => default; } // 0x00561304-0x0056130C + public string Note { get => default; set {} } // 0x0056130C-0x00561314 0x00561314-0x0056131C + public int[] Numbers { get => default; set {} } // 0x0056131C-0x00561324 0x00561324-0x0056132C // Constructors public ExampleAttribute(ExampleKind initKind, string[] initStrings) {} // 0x00561288-0x005612B0 diff --git a/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs b/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs index fc5782a..9f81fad 100644 --- a/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs +++ b/Il2CppTests/TestExpectedResults/ExplicitInterfaces.cs @@ -121,7 +121,7 @@ namespace Il2CppTests.TestSources internal class Middle : ILeft, IRight // TypeDefIndex: 1816 { // Properties - int ILeft.P { get; } // 0x00561584-0x0056158C + int ILeft.P { get => default; } // 0x00561584-0x0056158C // Constructors public Middle() {} // 0x0056158C-0x00561594 diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-CustomAttributeData-x64.cs b/Il2CppTests/TestExpectedResults/GameAssembly-CustomAttributeData-x64.cs index cb57fc7..73b9f5e 100644 --- a/Il2CppTests/TestExpectedResults/GameAssembly-CustomAttributeData-x64.cs +++ b/Il2CppTests/TestExpectedResults/GameAssembly-CustomAttributeData-x64.cs @@ -93,7 +93,7 @@ namespace Il2CppTests.TestSources FourthKind = 3 } - // [AttributeUsage] // 0x000000018000C5B0-0x000000018000C5D0 + [AttributeUsage(AttributeTargets.All)] // 0x000000018000C5B0-0x000000018000C5D0 public class ExampleAttribute : Attribute // TypeDefIndex: 1812 { // Fields @@ -103,10 +103,10 @@ namespace Il2CppTests.TestSources private int[] arrayNumbers; // 0x8047D628 // Properties - public ExampleKind Kind { get; } // 0x00000001800ECD10-0x00000001800ECD20 - public string[] Strings { get; } // 0x00000001800EAEB0-0x00000001800EAEC0 - public string Note { get; set; } // 0x00000001803E0EE0-0x00000001803E0EF0 0x00000001800EAEE0-0x00000001800EAEF0 - public int[] Numbers { get; set; } // 0x00000001803E0EF0-0x00000001803E0EF0 0x000000018015B760-0x000000018015B770 + public ExampleKind Kind { get => default; } // 0x00000001800ECD10-0x00000001800ECD20 + public string[] Strings { get => default; } // 0x00000001800EAEB0-0x00000001800EAEC0 + public string Note { get => default; set {} } // 0x00000001803E0EE0-0x00000001803E0EF0 0x00000001800EAEE0-0x00000001800EAEF0 + public int[] Numbers { get => default; set {} } // 0x00000001803E0EF0-0x00000001803E0EF0 0x000000018015B760-0x000000018015B770 // Constructors public ExampleAttribute(ExampleKind initKind, string[] initStrings) {} // 0x00000001803E0E70-0x00000001803E0EB0 diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-CustomAttributeData-x86.cs b/Il2CppTests/TestExpectedResults/GameAssembly-CustomAttributeData-x86.cs index 0b8cb6b..74c7abb 100644 --- a/Il2CppTests/TestExpectedResults/GameAssembly-CustomAttributeData-x86.cs +++ b/Il2CppTests/TestExpectedResults/GameAssembly-CustomAttributeData-x86.cs @@ -93,7 +93,7 @@ namespace Il2CppTests.TestSources FourthKind = 3 } - // [AttributeUsage] // 0x1000D430-0x1000D450 + [AttributeUsage(AttributeTargets.All)] // 0x1000D430-0x1000D450 public class ExampleAttribute : Attribute // TypeDefIndex: 1812 { // Fields @@ -103,10 +103,10 @@ namespace Il2CppTests.TestSources private int[] arrayNumbers; // 0x14 // Properties - public ExampleKind Kind { get; } // 0x100BF0C0-0x100BF0D0 - public string[] Strings { get; } // 0x100BFC20-0x100BFC30 - public string Note { get; set; } // 0x100C5B30-0x100C5B40 0x100C5B50-0x100C5B60 - public int[] Numbers { get; set; } // 0x100EF0C0-0x100EF0D0 0x10127B00-0x10127B50 + public ExampleKind Kind { get => default; } // 0x100BF0C0-0x100BF0D0 + public string[] Strings { get => default; } // 0x100BFC20-0x100BFC30 + public string Note { get => default; set {} } // 0x100C5B30-0x100C5B40 0x100C5B50-0x100C5B60 + public int[] Numbers { get => default; set {} } // 0x100EF0C0-0x100EF0D0 0x10127B00-0x10127B50 // Constructors public ExampleAttribute(ExampleKind initKind, string[] initStrings) {} // 0x1034DA90-0x1034DAC0 diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs index 0665d57..d253c00 100644 --- a/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs +++ b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x64.cs @@ -121,7 +121,7 @@ namespace Il2CppTests.TestSources internal class Middle : ILeft, IRight // TypeDefIndex: 1816 { // Properties - int ILeft.P { get; } // 0x00000001800EA8C0-0x00000001800EA8D0 + int ILeft.P { get => default; } // 0x00000001800EA8C0-0x00000001800EA8D0 // Constructors public Middle() {} // 0x00000001800E2000-0x00000001800E2010 diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs index 3743a22..e9d720c 100644 --- a/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs +++ b/Il2CppTests/TestExpectedResults/GameAssembly-ExplicitInterfaces-x86.cs @@ -121,7 +121,7 @@ namespace Il2CppTests.TestSources internal class Middle : ILeft, IRight // TypeDefIndex: 1816 { // Properties - int ILeft.P { get; } // 0x100C5600-0x100C5610 + int ILeft.P { get => default; } // 0x100C5600-0x100C5610 // Constructors public Middle() {} // 0x100BF000-0x100BF010 diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-References-x64.cs b/Il2CppTests/TestExpectedResults/GameAssembly-References-x64.cs index a25e579..8476147 100644 --- a/Il2CppTests/TestExpectedResults/GameAssembly-References-x64.cs +++ b/Il2CppTests/TestExpectedResults/GameAssembly-References-x64.cs @@ -40,35 +40,35 @@ using System.Runtime.InteropServices; internal static class Consts // TypeDefIndex: 100 { // Fields - public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000EC99C - public const string MonoCompany = "MONO development team"; // Metadata: 0x000EC9A7 - public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000EC9C0 - public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000EC9E7 - public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECA03 - public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECA0E - public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECA19 - public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECA2B - public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECA3D - public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECA88 - public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECAE5 - public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECB46 - public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECBA1 - public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECBF1 - public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC42 - public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC96 - public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECCF4 - public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECD43 - public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECD90 - public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECDE2 - public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE36 - public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE95 - public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECEEA - public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECF46 - public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECF9D - public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECFF3 - public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED04F - public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED0A0 - public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED0FB + public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECA00 + public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECA0B + public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECA24 + public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECA4B + public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECA67 + public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECA72 + public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECA7D + public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECA8F + public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECAA1 + public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECAEC + public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECB49 + public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECBAA + public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC05 + public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC55 + public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECCA6 + public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECCFA + public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECD58 + public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECDA7 + public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECDF4 + public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE46 + public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE9A + public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECEF9 + public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECF4E + public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECFAA + public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED001 + public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED057 + public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED0B3 + public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED104 + public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED15F } internal sealed class Locale // TypeDefIndex: 101 @@ -87,6 +87,7 @@ namespace Il2CppTests.TestSources { // Fields private float floatField; // 0x10 + private Test test; // 0x10 // Constructors public Test() {} // 0x00000001800E2000-0x00000001800E2010 @@ -95,8 +96,9 @@ namespace Il2CppTests.TestSources public void MethodWithRefParameters(int a, ref int b, int c, ref int d) {} // 0x00000001800EA7B0-0x00000001800EA7C0 public void MethodWithInRefOut(in int a, ref int b, out int c) { c = default; - } // 0x00000001803E0E50-0x00000001803E0E60 - public ref float MethodWithRefReturnType() => default; // 0x00000001803E0E60-0x00000001803E0E60 + } // 0x00000001803E0E60-0x00000001803E0E70 + public ref float MethodWithRefReturnType() => default; // 0x00000001803E0E70-0x00000001803E0E70 + public ref Test MethodWithGenericAndClassRefs(ref T argGeneric, ref int argValueType, ref Test argClass) => default; } [Obsolete] // 0x000000018000CB80-0x000000018000CAF0 diff --git a/Il2CppTests/TestExpectedResults/GameAssembly-References-x86.cs b/Il2CppTests/TestExpectedResults/GameAssembly-References-x86.cs index fdac8db..426e9cc 100644 --- a/Il2CppTests/TestExpectedResults/GameAssembly-References-x86.cs +++ b/Il2CppTests/TestExpectedResults/GameAssembly-References-x86.cs @@ -40,35 +40,35 @@ using System.Runtime.InteropServices; internal static class Consts // TypeDefIndex: 100 { // Fields - public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000EC99C - public const string MonoCompany = "MONO development team"; // Metadata: 0x000EC9A7 - public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000EC9C0 - public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000EC9E7 - public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECA03 - public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECA0E - public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECA19 - public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECA2B - public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECA3D - public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECA88 - public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECAE5 - public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECB46 - public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECBA1 - public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECBF1 - public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC42 - public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC96 - public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECCF4 - public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECD43 - public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECD90 - public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECDE2 - public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE36 - public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE95 - public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECEEA - public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECF46 - public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECF9D - public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECFF3 - public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED04F - public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED0A0 - public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED0FB + public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECA00 + public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECA0B + public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECA24 + public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECA4B + public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECA67 + public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECA72 + public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECA7D + public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECA8F + public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECAA1 + public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECAEC + public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECB49 + public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECBAA + public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC05 + public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC55 + public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECCA6 + public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECCFA + public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECD58 + public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECDA7 + public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECDF4 + public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE46 + public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE9A + public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECEF9 + public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECF4E + public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECFAA + public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED001 + public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED057 + public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED0B3 + public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED104 + public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED15F } internal sealed class Locale // TypeDefIndex: 101 @@ -87,6 +87,7 @@ namespace Il2CppTests.TestSources { // Fields private float floatField; // 0x08 + private Test test; // 0x0C // Constructors public Test() {} // 0x100BF000-0x100BF010 @@ -97,6 +98,7 @@ namespace Il2CppTests.TestSources c = default; } // 0x1034DA60-0x1034DA70 public ref float MethodWithRefReturnType() => default; // 0x1034DA70-0x1034DA70 + public ref Test MethodWithGenericAndClassRefs(ref T argGeneric, ref int argValueType, ref Test argClass) => default; } [Obsolete] // 0x1000DD10-0x1000DC90 diff --git a/Il2CppTests/TestExpectedResults/References.cs b/Il2CppTests/TestExpectedResults/References.cs index 04ade25..8813dd0 100644 --- a/Il2CppTests/TestExpectedResults/References.cs +++ b/Il2CppTests/TestExpectedResults/References.cs @@ -10,75 +10,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] // 0x000A4F30-0x000A5224 -// [assembly: AssemblyCopyright] // 0x000A4F30-0x000A5224 -// [assembly: AssemblyDefaultAlias] // 0x000A4F30-0x000A5224 -// [assembly: AssemblyDelaySign] // 0x000A4F30-0x000A5224 -// [assembly: AssemblyDescription] // 0x000A4F30-0x000A5224 -// [assembly: AssemblyFileVersion] // 0x000A4F30-0x000A5224 -// [assembly: AssemblyInformationalVersion] // 0x000A4F30-0x000A5224 -// [assembly: AssemblyKeyFile] // 0x000A4F30-0x000A5224 -// [assembly: AssemblyProduct] // 0x000A4F30-0x000A5224 -// [assembly: AssemblyTitle] // 0x000A4F30-0x000A5224 -// [assembly: CLSCompliant] // 0x000A4F30-0x000A5224 -// [assembly: CompilationRelaxations] // 0x000A4F30-0x000A5224 -// [assembly: ComVisible] // 0x000A4F30-0x000A5224 -// [assembly: Debuggable] // 0x000A4F30-0x000A5224 -// [assembly: DefaultDependency] // 0x000A4F30-0x000A5224 -// [assembly: Guid] // 0x000A4F30-0x000A5224 -// [assembly: NeutralResourcesLanguage] // 0x000A4F30-0x000A5224 -[assembly: RuntimeCompatibility] // 0x000A4F30-0x000A5224 -// [assembly: SatelliteContractVersion] // 0x000A4F30-0x000A5224 -[assembly: StringFreezing] // 0x000A4F30-0x000A5224 -// [assembly: TypeLibVersion] // 0x000A4F30-0x000A5224 +// [assembly: AssemblyCompany] // 0x000A4F58-0x000A524C +// [assembly: AssemblyCopyright] // 0x000A4F58-0x000A524C +// [assembly: AssemblyDefaultAlias] // 0x000A4F58-0x000A524C +// [assembly: AssemblyDelaySign] // 0x000A4F58-0x000A524C +// [assembly: AssemblyDescription] // 0x000A4F58-0x000A524C +// [assembly: AssemblyFileVersion] // 0x000A4F58-0x000A524C +// [assembly: AssemblyInformationalVersion] // 0x000A4F58-0x000A524C +// [assembly: AssemblyKeyFile] // 0x000A4F58-0x000A524C +// [assembly: AssemblyProduct] // 0x000A4F58-0x000A524C +// [assembly: AssemblyTitle] // 0x000A4F58-0x000A524C +// [assembly: CLSCompliant] // 0x000A4F58-0x000A524C +// [assembly: CompilationRelaxations] // 0x000A4F58-0x000A524C +// [assembly: ComVisible] // 0x000A4F58-0x000A524C +// [assembly: Debuggable] // 0x000A4F58-0x000A524C +// [assembly: DefaultDependency] // 0x000A4F58-0x000A524C +// [assembly: Guid] // 0x000A4F58-0x000A524C +// [assembly: NeutralResourcesLanguage] // 0x000A4F58-0x000A524C +[assembly: RuntimeCompatibility] // 0x000A4F58-0x000A524C +// [assembly: SatelliteContractVersion] // 0x000A4F58-0x000A524C +[assembly: StringFreezing] // 0x000A4F58-0x000A524C +// [assembly: TypeLibVersion] // 0x000A4F58-0x000A524C // Image 1: References.dll - Assembly: References, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1812 -// [assembly: CompilationRelaxations] // 0x000A525C-0x000A525C -// [assembly: Debuggable] // 0x000A525C-0x000A525C -[assembly: RuntimeCompatibility] // 0x000A525C-0x000A525C +// [assembly: CompilationRelaxations] // 0x000A5284-0x000A5284 +// [assembly: Debuggable] // 0x000A5284-0x000A5284 +[assembly: RuntimeCompatibility] // 0x000A5284-0x000A5284 internal static class Consts // TypeDefIndex: 100 { // Fields - public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000EC99C - public const string MonoCompany = "MONO development team"; // Metadata: 0x000EC9A7 - public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000EC9C0 - public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000EC9E7 - public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECA03 - public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECA0E - public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECA19 - public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECA2B - public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECA3D - public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECA88 - public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECAE5 - public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECB46 - public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECBA1 - public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECBF1 - public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC42 - public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC96 - public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECCF4 - public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECD43 - public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECD90 - public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECDE2 - public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE36 - public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE95 - public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECEEA - public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECF46 - public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECF9D - public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECFF3 - public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED04F - public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED0A0 - public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED0FB + public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECA00 + public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECA0B + public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECA24 + public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECA4B + public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECA67 + public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECA72 + public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECA7D + public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECA8F + public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECAA1 + public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECAEC + public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECB49 + public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECBAA + public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC05 + public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC55 + public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECCA6 + public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECCFA + public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECD58 + public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECDA7 + public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECDF4 + public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE46 + public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE9A + public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECEF9 + public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECF4E + public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECFAA + public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED001 + public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED057 + public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED0B3 + public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED104 + public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED15F } internal sealed class Locale // TypeDefIndex: 101 { // Constructors - private Locale() {} // 0x003EC4F8-0x003EC500 + private Locale() {} // 0x003EC558-0x003EC560 // Methods - public static string GetText(string msg) => default; // 0x003EC500-0x003EC504 - public static string GetText(string fmt, params /* 0x000A375C-0x000A376C */ object[] args) => default; // 0x003EC504-0x003EC590 + public static string GetText(string msg) => default; // 0x003EC560-0x003EC564 + public static string GetText(string fmt, params /* 0x000A3784-0x000A3794 */ object[] args) => default; // 0x003EC564-0x003EC5F0 } namespace Il2CppTests.TestSources @@ -87,19 +87,21 @@ namespace Il2CppTests.TestSources { // Fields private float floatField; // 0x08 + private Test test; // 0x0C // Constructors - public Test() {} // 0x00561098-0x00561098 + public Test() {} // 0x00561100-0x00561100 // Methods - public void MethodWithRefParameters(int a, ref int b, int c, ref int d) {} // 0x00561080-0x00561084 + public void MethodWithRefParameters(int a, ref int b, int c, ref int d) {} // 0x005610E8-0x005610EC public void MethodWithInRefOut(in int a, ref int b, out int c) { c = default; - } // 0x00561084-0x00561090 - public ref float MethodWithRefReturnType() => default; // 0x00561090-0x00561098 + } // 0x005610EC-0x005610F8 + public ref float MethodWithRefReturnType() => default; // 0x005610F8-0x00561100 + public ref Test MethodWithGenericAndClassRefs(ref T argGeneric, ref int argValueType, ref Test argClass) => default; } - [Obsolete] // 0x000A5224-0x000A525C + [Obsolete] // 0x000A524C-0x000A5284 public struct RefStruct // TypeDefIndex: 1812 { // Fields diff --git a/Il2CppTests/TestGenericTypes.cs b/Il2CppTests/TestGenericTypes.cs index 1af4728..7c071be 100644 --- a/Il2CppTests/TestGenericTypes.cs +++ b/Il2CppTests/TestGenericTypes.cs @@ -12,7 +12,7 @@ using NUnit.Framework; namespace Il2CppInspector { [TestFixture] - public class FixedTests + public partial class FixedTests { // Check generic flags according to https://docs.microsoft.com/en-us/dotnet/api/system.type.isgenerictype?view=netframework-4.8 [Test] diff --git a/Il2CppTests/TestNames.cs b/Il2CppTests/TestNames.cs new file mode 100644 index 0000000..0a36b2c --- /dev/null +++ b/Il2CppTests/TestNames.cs @@ -0,0 +1,61 @@ +/* + Copyright 2019 Katy Coe - http://www.hearthcode.org - http://www.djkaty.com + + All rights reserved. +*/ + +using System; +using System.IO; +using Il2CppInspector.Reflection; +using NUnit.Framework; + +namespace Il2CppInspector +{ + [TestFixture] + public partial class FixedTests + { + [Test] + public void TestNames() { + + // Arrange + // We're currently in IlCppTests\bin\Debug\netcoreapp3.0 or similar + var testPath = Path.GetFullPath(Directory.GetCurrentDirectory() + @"\..\..\..\TestBinaries\References"); + + // Build model + var inspectors = Il2CppInspector.LoadFromFile(testPath + @"\References.so", testPath + @"\global-metadata.dat"); + var model = new Il2CppModel(inspectors[0]); + + var asm = model.GetAssembly("References.dll"); + + // Act + var t = asm.GetType("Il2CppTests.TestSources.Test"); + var m1 = t.GetMethod("MethodWithGenericAndClassRefs"); + var m2 = t.GetMethod("MethodWithInRefOut"); + var p1 = m1.DeclaredParameters; + var p2 = m2.DeclaredParameters; + + // Assert + var checks = new[] { + (p1[0], "T&"), + (p1[1], "Int32&"), + (p1[2], "Test&"), + + (p2[0], "Int32&"), + (p2[1], "Int32&"), + (p2[2], "Int32&") + }; + + // TODO: Add [T] before parameters after fixing TODO in MethodInfo.cs:33 + Assert.That(m1.ToString() == "Test& MethodWithGenericAndClassRefs" /* [T] */ + "(T ByRef, Int32 ByRef, Test ByRef)"); + Assert.That(m2.ToString() == "Void MethodWithInRefOut(Int32 ByRef, Int32 ByRef, Int32 ByRef)"); + + foreach (var check in checks) { + var c = check.Item1; + + Assert.That(c.ParameterType.Name, Is.EqualTo(check.Item2)); + Assert.That(c.ParameterType.IsByRef, Is.EqualTo(true)); + Assert.That(c.ParameterType.HasElementType, Is.EqualTo(true)); + } + } + } +} diff --git a/Il2CppTests/TestSources/References.cs b/Il2CppTests/TestSources/References.cs index cc5a540..053c07a 100644 --- a/Il2CppTests/TestSources/References.cs +++ b/Il2CppTests/TestSources/References.cs @@ -17,6 +17,12 @@ namespace Il2CppTests.TestSources public void MethodWithInRefOut(in int a, ref int b, out int c) => c = 1; public ref float MethodWithRefReturnType() => ref floatField; + + // Reference to generic type will require a new type to be created + // Reference to reference type + // Reference to reference type return type + private Test test; + public ref Test MethodWithGenericAndClassRefs(ref T argGeneric, ref int argValueType, ref Test argClass) => ref test; } // Ref structs were introduced in C# 7.2 - creates IsByRefLike attribute on type in assembly