Tests: Add TestNames, update References; Update all test results

This commit is contained in:
Katy Coe
2019-12-11 09:30:27 +01:00
parent 5a42afe7f2
commit d728421d12
12 changed files with 213 additions and 140 deletions

View File

@@ -93,7 +93,7 @@ namespace Il2CppTests.TestSources
FourthKind = 3 FourthKind = 3
} }
// [AttributeUsage] // 0x000A5070-0x000A5084 [AttributeUsage(AttributeTargets.All)] // 0x000A5070-0x000A5084
public class ExampleAttribute : Attribute // TypeDefIndex: 1812 public class ExampleAttribute : Attribute // TypeDefIndex: 1812
{ {
// Fields // Fields
@@ -103,10 +103,10 @@ namespace Il2CppTests.TestSources
private int[] arrayNumbers; // 0x14 private int[] arrayNumbers; // 0x14
// Properties // Properties
public ExampleKind Kind { get; } // 0x005612FC-0x00561304 public ExampleKind Kind { get => default; } // 0x005612FC-0x00561304
public string[] Strings { get; } // 0x00561304-0x0056130C public string[] Strings { get => default; } // 0x00561304-0x0056130C
public string Note { get; set; } // 0x0056130C-0x00561314 0x00561314-0x0056131C public string Note { get => default; set {} } // 0x0056130C-0x00561314 0x00561314-0x0056131C
public int[] Numbers { get; set; } // 0x0056131C-0x00561324 0x00561324-0x0056132C public int[] Numbers { get => default; set {} } // 0x0056131C-0x00561324 0x00561324-0x0056132C
// Constructors // Constructors
public ExampleAttribute(ExampleKind initKind, string[] initStrings) {} // 0x00561288-0x005612B0 public ExampleAttribute(ExampleKind initKind, string[] initStrings) {} // 0x00561288-0x005612B0

View File

@@ -121,7 +121,7 @@ namespace Il2CppTests.TestSources
internal class Middle : ILeft, IRight // TypeDefIndex: 1816 internal class Middle : ILeft, IRight // TypeDefIndex: 1816
{ {
// Properties // Properties
int ILeft.P { get; } // 0x00561584-0x0056158C int ILeft.P { get => default; } // 0x00561584-0x0056158C
// Constructors // Constructors
public Middle() {} // 0x0056158C-0x00561594 public Middle() {} // 0x0056158C-0x00561594

View File

@@ -93,7 +93,7 @@ namespace Il2CppTests.TestSources
FourthKind = 3 FourthKind = 3
} }
// [AttributeUsage] // 0x000000018000C5B0-0x000000018000C5D0 [AttributeUsage(AttributeTargets.All)] // 0x000000018000C5B0-0x000000018000C5D0
public class ExampleAttribute : Attribute // TypeDefIndex: 1812 public class ExampleAttribute : Attribute // TypeDefIndex: 1812
{ {
// Fields // Fields
@@ -103,10 +103,10 @@ namespace Il2CppTests.TestSources
private int[] arrayNumbers; // 0x8047D628 private int[] arrayNumbers; // 0x8047D628
// Properties // Properties
public ExampleKind Kind { get; } // 0x00000001800ECD10-0x00000001800ECD20 public ExampleKind Kind { get => default; } // 0x00000001800ECD10-0x00000001800ECD20
public string[] Strings { get; } // 0x00000001800EAEB0-0x00000001800EAEC0 public string[] Strings { get => default; } // 0x00000001800EAEB0-0x00000001800EAEC0
public string Note { get; set; } // 0x00000001803E0EE0-0x00000001803E0EF0 0x00000001800EAEE0-0x00000001800EAEF0 public string Note { get => default; set {} } // 0x00000001803E0EE0-0x00000001803E0EF0 0x00000001800EAEE0-0x00000001800EAEF0
public int[] Numbers { get; set; } // 0x00000001803E0EF0-0x00000001803E0EF0 0x000000018015B760-0x000000018015B770 public int[] Numbers { get => default; set {} } // 0x00000001803E0EF0-0x00000001803E0EF0 0x000000018015B760-0x000000018015B770
// Constructors // Constructors
public ExampleAttribute(ExampleKind initKind, string[] initStrings) {} // 0x00000001803E0E70-0x00000001803E0EB0 public ExampleAttribute(ExampleKind initKind, string[] initStrings) {} // 0x00000001803E0E70-0x00000001803E0EB0

View File

@@ -93,7 +93,7 @@ namespace Il2CppTests.TestSources
FourthKind = 3 FourthKind = 3
} }
// [AttributeUsage] // 0x1000D430-0x1000D450 [AttributeUsage(AttributeTargets.All)] // 0x1000D430-0x1000D450
public class ExampleAttribute : Attribute // TypeDefIndex: 1812 public class ExampleAttribute : Attribute // TypeDefIndex: 1812
{ {
// Fields // Fields
@@ -103,10 +103,10 @@ namespace Il2CppTests.TestSources
private int[] arrayNumbers; // 0x14 private int[] arrayNumbers; // 0x14
// Properties // Properties
public ExampleKind Kind { get; } // 0x100BF0C0-0x100BF0D0 public ExampleKind Kind { get => default; } // 0x100BF0C0-0x100BF0D0
public string[] Strings { get; } // 0x100BFC20-0x100BFC30 public string[] Strings { get => default; } // 0x100BFC20-0x100BFC30
public string Note { get; set; } // 0x100C5B30-0x100C5B40 0x100C5B50-0x100C5B60 public string Note { get => default; set {} } // 0x100C5B30-0x100C5B40 0x100C5B50-0x100C5B60
public int[] Numbers { get; set; } // 0x100EF0C0-0x100EF0D0 0x10127B00-0x10127B50 public int[] Numbers { get => default; set {} } // 0x100EF0C0-0x100EF0D0 0x10127B00-0x10127B50
// Constructors // Constructors
public ExampleAttribute(ExampleKind initKind, string[] initStrings) {} // 0x1034DA90-0x1034DAC0 public ExampleAttribute(ExampleKind initKind, string[] initStrings) {} // 0x1034DA90-0x1034DAC0

View File

@@ -121,7 +121,7 @@ namespace Il2CppTests.TestSources
internal class Middle : ILeft, IRight // TypeDefIndex: 1816 internal class Middle : ILeft, IRight // TypeDefIndex: 1816
{ {
// Properties // Properties
int ILeft.P { get; } // 0x00000001800EA8C0-0x00000001800EA8D0 int ILeft.P { get => default; } // 0x00000001800EA8C0-0x00000001800EA8D0
// Constructors // Constructors
public Middle() {} // 0x00000001800E2000-0x00000001800E2010 public Middle() {} // 0x00000001800E2000-0x00000001800E2010

View File

@@ -121,7 +121,7 @@ namespace Il2CppTests.TestSources
internal class Middle : ILeft, IRight // TypeDefIndex: 1816 internal class Middle : ILeft, IRight // TypeDefIndex: 1816
{ {
// Properties // Properties
int ILeft.P { get; } // 0x100C5600-0x100C5610 int ILeft.P { get => default; } // 0x100C5600-0x100C5610
// Constructors // Constructors
public Middle() {} // 0x100BF000-0x100BF010 public Middle() {} // 0x100BF000-0x100BF010

View File

@@ -40,35 +40,35 @@ using System.Runtime.InteropServices;
internal static class Consts // TypeDefIndex: 100 internal static class Consts // TypeDefIndex: 100
{ {
// Fields // Fields
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000EC99C public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECA00
public const string MonoCompany = "MONO development team"; // Metadata: 0x000EC9A7 public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECA0B
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000EC9C0 public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECA24
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000EC9E7 public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECA4B
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECA03 public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECA67
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECA0E public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECA72
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECA19 public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECA7D
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECA2B 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: 0x000ECA3D 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: 0x000ECA88 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: 0x000ECAE5 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: 0x000ECB46 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: 0x000ECBA1 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: 0x000ECBF1 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: 0x000ECC42 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: 0x000ECC96 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: 0x000ECCF4 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: 0x000ECD43 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: 0x000ECD90 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: 0x000ECDE2 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: 0x000ECE36 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: 0x000ECE95 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: 0x000ECEEA 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: 0x000ECF46 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: 0x000ECF9D 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: 0x000ECFF3 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: 0x000ED04F 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: 0x000ED0A0 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: 0x000ED0FB public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED15F
} }
internal sealed class Locale // TypeDefIndex: 101 internal sealed class Locale // TypeDefIndex: 101
@@ -87,6 +87,7 @@ namespace Il2CppTests.TestSources
{ {
// Fields // Fields
private float floatField; // 0x10 private float floatField; // 0x10
private Test test; // 0x10
// Constructors // Constructors
public Test() {} // 0x00000001800E2000-0x00000001800E2010 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 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) { public void MethodWithInRefOut(in int a, ref int b, out int c) {
c = default; c = default;
} // 0x00000001803E0E50-0x00000001803E0E60 } // 0x00000001803E0E60-0x00000001803E0E70
public ref float MethodWithRefReturnType() => default; // 0x00000001803E0E60-0x00000001803E0E60 public ref float MethodWithRefReturnType() => default; // 0x00000001803E0E70-0x00000001803E0E70
public ref Test MethodWithGenericAndClassRefs<T>(ref T argGeneric, ref int argValueType, ref Test argClass) => default;
} }
[Obsolete] // 0x000000018000CB80-0x000000018000CAF0 [Obsolete] // 0x000000018000CB80-0x000000018000CAF0

View File

@@ -40,35 +40,35 @@ using System.Runtime.InteropServices;
internal static class Consts // TypeDefIndex: 100 internal static class Consts // TypeDefIndex: 100
{ {
// Fields // Fields
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000EC99C public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECA00
public const string MonoCompany = "MONO development team"; // Metadata: 0x000EC9A7 public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECA0B
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000EC9C0 public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECA24
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000EC9E7 public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECA4B
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECA03 public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECA67
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECA0E public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECA72
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECA19 public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECA7D
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECA2B 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: 0x000ECA3D 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: 0x000ECA88 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: 0x000ECAE5 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: 0x000ECB46 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: 0x000ECBA1 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: 0x000ECBF1 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: 0x000ECC42 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: 0x000ECC96 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: 0x000ECCF4 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: 0x000ECD43 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: 0x000ECD90 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: 0x000ECDE2 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: 0x000ECE36 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: 0x000ECE95 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: 0x000ECEEA 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: 0x000ECF46 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: 0x000ECF9D 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: 0x000ECFF3 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: 0x000ED04F 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: 0x000ED0A0 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: 0x000ED0FB public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED15F
} }
internal sealed class Locale // TypeDefIndex: 101 internal sealed class Locale // TypeDefIndex: 101
@@ -87,6 +87,7 @@ namespace Il2CppTests.TestSources
{ {
// Fields // Fields
private float floatField; // 0x08 private float floatField; // 0x08
private Test test; // 0x0C
// Constructors // Constructors
public Test() {} // 0x100BF000-0x100BF010 public Test() {} // 0x100BF000-0x100BF010
@@ -97,6 +98,7 @@ namespace Il2CppTests.TestSources
c = default; c = default;
} // 0x1034DA60-0x1034DA70 } // 0x1034DA60-0x1034DA70
public ref float MethodWithRefReturnType() => default; // 0x1034DA70-0x1034DA70 public ref float MethodWithRefReturnType() => default; // 0x1034DA70-0x1034DA70
public ref Test MethodWithGenericAndClassRefs<T>(ref T argGeneric, ref int argValueType, ref Test argClass) => default;
} }
[Obsolete] // 0x1000DD10-0x1000DC90 [Obsolete] // 0x1000DD10-0x1000DC90

View File

@@ -10,75 +10,75 @@ using System.Runtime.CompilerServices;
using System.Runtime.InteropServices; using System.Runtime.InteropServices;
// Image 0: mscorlib.dll - Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Types 0-1809 // Image 0: mscorlib.dll - Assembly: mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - Types 0-1809
// [assembly: AssemblyCompany] // 0x000A4F30-0x000A5224 // [assembly: AssemblyCompany] // 0x000A4F58-0x000A524C
// [assembly: AssemblyCopyright] // 0x000A4F30-0x000A5224 // [assembly: AssemblyCopyright] // 0x000A4F58-0x000A524C
// [assembly: AssemblyDefaultAlias] // 0x000A4F30-0x000A5224 // [assembly: AssemblyDefaultAlias] // 0x000A4F58-0x000A524C
// [assembly: AssemblyDelaySign] // 0x000A4F30-0x000A5224 // [assembly: AssemblyDelaySign] // 0x000A4F58-0x000A524C
// [assembly: AssemblyDescription] // 0x000A4F30-0x000A5224 // [assembly: AssemblyDescription] // 0x000A4F58-0x000A524C
// [assembly: AssemblyFileVersion] // 0x000A4F30-0x000A5224 // [assembly: AssemblyFileVersion] // 0x000A4F58-0x000A524C
// [assembly: AssemblyInformationalVersion] // 0x000A4F30-0x000A5224 // [assembly: AssemblyInformationalVersion] // 0x000A4F58-0x000A524C
// [assembly: AssemblyKeyFile] // 0x000A4F30-0x000A5224 // [assembly: AssemblyKeyFile] // 0x000A4F58-0x000A524C
// [assembly: AssemblyProduct] // 0x000A4F30-0x000A5224 // [assembly: AssemblyProduct] // 0x000A4F58-0x000A524C
// [assembly: AssemblyTitle] // 0x000A4F30-0x000A5224 // [assembly: AssemblyTitle] // 0x000A4F58-0x000A524C
// [assembly: CLSCompliant] // 0x000A4F30-0x000A5224 // [assembly: CLSCompliant] // 0x000A4F58-0x000A524C
// [assembly: CompilationRelaxations] // 0x000A4F30-0x000A5224 // [assembly: CompilationRelaxations] // 0x000A4F58-0x000A524C
// [assembly: ComVisible] // 0x000A4F30-0x000A5224 // [assembly: ComVisible] // 0x000A4F58-0x000A524C
// [assembly: Debuggable] // 0x000A4F30-0x000A5224 // [assembly: Debuggable] // 0x000A4F58-0x000A524C
// [assembly: DefaultDependency] // 0x000A4F30-0x000A5224 // [assembly: DefaultDependency] // 0x000A4F58-0x000A524C
// [assembly: Guid] // 0x000A4F30-0x000A5224 // [assembly: Guid] // 0x000A4F58-0x000A524C
// [assembly: NeutralResourcesLanguage] // 0x000A4F30-0x000A5224 // [assembly: NeutralResourcesLanguage] // 0x000A4F58-0x000A524C
[assembly: RuntimeCompatibility] // 0x000A4F30-0x000A5224 [assembly: RuntimeCompatibility] // 0x000A4F58-0x000A524C
// [assembly: SatelliteContractVersion] // 0x000A4F30-0x000A5224 // [assembly: SatelliteContractVersion] // 0x000A4F58-0x000A524C
[assembly: StringFreezing] // 0x000A4F30-0x000A5224 [assembly: StringFreezing] // 0x000A4F58-0x000A524C
// [assembly: TypeLibVersion] // 0x000A4F30-0x000A5224 // [assembly: TypeLibVersion] // 0x000A4F58-0x000A524C
// Image 1: References.dll - Assembly: References, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1812 // Image 1: References.dll - Assembly: References, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1812
// [assembly: CompilationRelaxations] // 0x000A525C-0x000A525C // [assembly: CompilationRelaxations] // 0x000A5284-0x000A5284
// [assembly: Debuggable] // 0x000A525C-0x000A525C // [assembly: Debuggable] // 0x000A5284-0x000A5284
[assembly: RuntimeCompatibility] // 0x000A525C-0x000A525C [assembly: RuntimeCompatibility] // 0x000A5284-0x000A5284
internal static class Consts // TypeDefIndex: 100 internal static class Consts // TypeDefIndex: 100
{ {
// Fields // Fields
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000EC99C public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECA00
public const string MonoCompany = "MONO development team"; // Metadata: 0x000EC9A7 public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECA0B
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000EC9C0 public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECA24
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000EC9E7 public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECA4B
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECA03 public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECA67
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECA0E public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECA72
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECA19 public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECA7D
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECA2B 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: 0x000ECA3D 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: 0x000ECA88 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: 0x000ECAE5 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: 0x000ECB46 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: 0x000ECBA1 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: 0x000ECBF1 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: 0x000ECC42 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: 0x000ECC96 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: 0x000ECCF4 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: 0x000ECD43 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: 0x000ECD90 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: 0x000ECDE2 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: 0x000ECE36 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: 0x000ECE95 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: 0x000ECEEA 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: 0x000ECF46 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: 0x000ECF9D 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: 0x000ECFF3 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: 0x000ED04F 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: 0x000ED0A0 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: 0x000ED0FB public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED15F
} }
internal sealed class Locale // TypeDefIndex: 101 internal sealed class Locale // TypeDefIndex: 101
{ {
// Constructors // Constructors
private Locale() {} // 0x003EC4F8-0x003EC500 private Locale() {} // 0x003EC558-0x003EC560
// Methods // Methods
public static string GetText(string msg) => default; // 0x003EC500-0x003EC504 public static string GetText(string msg) => default; // 0x003EC560-0x003EC564
public static string GetText(string fmt, params /* 0x000A375C-0x000A376C */ object[] args) => default; // 0x003EC504-0x003EC590 public static string GetText(string fmt, params /* 0x000A3784-0x000A3794 */ object[] args) => default; // 0x003EC564-0x003EC5F0
} }
namespace Il2CppTests.TestSources namespace Il2CppTests.TestSources
@@ -87,19 +87,21 @@ namespace Il2CppTests.TestSources
{ {
// Fields // Fields
private float floatField; // 0x08 private float floatField; // 0x08
private Test test; // 0x0C
// Constructors // Constructors
public Test() {} // 0x00561098-0x00561098 public Test() {} // 0x00561100-0x00561100
// Methods // 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) { public void MethodWithInRefOut(in int a, ref int b, out int c) {
c = default; c = default;
} // 0x00561084-0x00561090 } // 0x005610EC-0x005610F8
public ref float MethodWithRefReturnType() => default; // 0x00561090-0x00561098 public ref float MethodWithRefReturnType() => default; // 0x005610F8-0x00561100
public ref Test MethodWithGenericAndClassRefs<T>(ref T argGeneric, ref int argValueType, ref Test argClass) => default;
} }
[Obsolete] // 0x000A5224-0x000A525C [Obsolete] // 0x000A524C-0x000A5284
public struct RefStruct // TypeDefIndex: 1812 public struct RefStruct // TypeDefIndex: 1812
{ {
// Fields // Fields

View File

@@ -12,7 +12,7 @@ using NUnit.Framework;
namespace Il2CppInspector namespace Il2CppInspector
{ {
[TestFixture] [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 // Check generic flags according to https://docs.microsoft.com/en-us/dotnet/api/system.type.isgenerictype?view=netframework-4.8
[Test] [Test]

61
Il2CppTests/TestNames.cs Normal file
View File

@@ -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));
}
}
}
}

View File

@@ -17,6 +17,12 @@ namespace Il2CppTests.TestSources
public void MethodWithInRefOut(in int a, ref int b, out int c) => c = 1; public void MethodWithInRefOut(in int a, ref int b, out int c) => c = 1;
public ref float MethodWithRefReturnType() => ref floatField; 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<T>(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 // Ref structs were introduced in C# 7.2 - creates IsByRefLike attribute on type in assembly