Tests: Update ArraysAndPointers and Properties

This commit is contained in:
Katy Coe
2019-11-10 18:57:21 +01:00
parent 5bf6e2c7c3
commit b1b21b9e5a
6 changed files with 131 additions and 35 deletions

View File

@@ -1,8 +1,9 @@
// Image 0: mscorlib.dll - 0 // Image 0: mscorlib.dll - 0
// Image 1: ArraysAndPointers.dll - 1810 // Image 1: ArraysAndPointers.dll - 1810
// Namespace: Il2CppTests.TestSources // Namespace: Il2CppTests.TestSources
internal class Test // TypeDefIndex: 1811 internal class Test // TypeDefIndex: 1813
{ {
// Fields // Fields
private int[] foo; // 0x08 private int[] foo; // 0x08
@@ -10,25 +11,46 @@ internal class Test // TypeDefIndex: 1811
private float[][] arrayOfArrays; // 0x10 private float[][] arrayOfArrays; // 0x10
private float[,] twoDimensionalArray; // 0x14 private float[,] twoDimensionalArray; // 0x14
private float[,,] threeDimensionalArray; // 0x18 private float[,,] threeDimensionalArray; // 0x18
private int*[] arrayOfPointer; // 0x1C private unsafe int*[] arrayOfPointer; // 0x1C
private int** pointerToPointer; // 0x20 private unsafe int** pointerToPointer; // 0x20
private float*[][,,][] confusedElephant; // 0x24 private unsafe float*[][,,][] confusedElephant; // 0x24
// Properties
public unsafe int* PointerProperty { get; set; } // 0x00562EEC 0x00562EF4
public unsafe int* this[int i] { get; } // 0x00562F10
public unsafe int this[int* p] { get; } // 0x00562F18
public unsafe float* this[float* fp] { get; } // 0x00562F20
// Nested types // Nested types
private struct fixedSizeArrayStruct // TypeDefIndex: 1812 private struct fixedSizeArrayStruct // TypeDefIndex: 1814
{ {
// Fields // Fields
private fixed /* 0x000A6CAC */ int fixedSizeArray[0]; // 0x08 private unsafe fixed /* 0x000A6C98 */ int fixedSizeArray[0]; // 0x08
// Nested types // Nested types
} }
public unsafe delegate void OnUnsafe(int* ud); // TypeDefIndex: 1816; 0x00562F3C
public class NestedUnsafe<T> // TypeDefIndex: 1817
{
// Constructors // Constructors
public Test(); // 0x00562BA0 public NestedUnsafe();
// Methods // Methods
public int[] FooMethod(int[][] bar); // 0x00562AC8 private unsafe T* UnsafeGenericReturn();
public int[,] BarMethod(int[,,] baz); // 0x00562B28 private unsafe void UnsafeGenericMethod(T* pt);
}
// Constructors
public unsafe Test(int* u); // 0x00562E78
// Methods
public int[] FooMethod(int[][] bar); // 0x00562DA0
public int[,] BarMethod(int[,,] baz); // 0x00562E00
public unsafe void UnsafeMethod(int* unsafePointerArgument); // 0x00562EFC
public unsafe int* UnsafeReturnMethod(); // 0x00562F00
public unsafe int* UnsafeMethod2(int* i); // 0x00562F08
} }

View File

@@ -1,34 +1,56 @@
// Image 0: mscorlib.dll - 0 // Image 0: mscorlib.dll - 0
// Image 1: ArraysAndPointers.dll - 1810 // Image 1: ArraysAndPointers.dll - 1810
// Namespace: Il2CppTests.TestSources // Namespace: Il2CppTests.TestSources
internal class Test // TypeDefIndex: 1811 internal class Test // TypeDefIndex: 1813
{ {
// Fields // Fields
private int[] foo; // 0x10 private int[] foo; // 0x10
private int[] bar; // 0x20 private int[] bar; // 0x20
private float[][] arrayOfArrays; // 0x30 private float[][] arrayOfArrays; // 0x30
private float[,] twoDimensionalArray; // 0x40 private float[,] twoDimensionalArray; // 0x40
private float[,,] threeDimensionalArray; // 0x10 private float[,,] threeDimensionalArray; // 0x50
private int*[] arrayOfPointer; // 0x29 private unsafe int*[] arrayOfPointer; // 0x10
private int** pointerToPointer; // 0x8047EC30 private unsafe int** pointerToPointer; // 0x19
private float*[][,,][] confusedElephant; // 0x00 private unsafe float*[][,,][] confusedElephant; // 0x8047EDC0
// Properties
public unsafe int* PointerProperty { get; set; } // 0x00000001801513A0 0x00000001801140B0
public unsafe int* this[int i] { get; } // 0x00000001800EA8C0
public unsafe int this[int* p] { get; } // 0x00000001800EA8C0
public unsafe float* this[float* fp] { get; } // 0x00000001800EA8C0
// Nested types // Nested types
private struct fixedSizeArrayStruct // TypeDefIndex: 1812 private struct fixedSizeArrayStruct // TypeDefIndex: 1814
{ {
// Fields // Fields
private fixed /* 0x000000018000CC70 */ int fixedSizeArray[0]; // 0x10 private unsafe fixed /* 0x000000018000C310 */ int fixedSizeArray[0]; // 0x10
// Nested types // Nested types
} }
public unsafe delegate void OnUnsafe(int* ud); // TypeDefIndex: 1816; 0x00000001803E0E50
public class NestedUnsafe<T> // TypeDefIndex: 1817
{
// Constructors // Constructors
public Test(); // 0x00000001803E0EE0 public NestedUnsafe();
// Methods // Methods
public int[] FooMethod(int[][] bar); // 0x00000001803E0EA0 private unsafe T* UnsafeGenericReturn();
public int[,] BarMethod(int[,,] baz); // 0x00000001803E0E50 private unsafe void UnsafeGenericMethod(T* pt);
}
// Constructors
public unsafe Test(int* u); // 0x00000001803E1130
// Methods
public int[] FooMethod(int[][] bar); // 0x00000001803E10F0
public int[,] BarMethod(int[,,] baz); // 0x00000001803E10A0
public unsafe void UnsafeMethod(int* unsafePointerArgument); // 0x00000001800EA7B0
public unsafe int* UnsafeReturnMethod(); // 0x00000001800EA8C0
public unsafe int* UnsafeMethod2(int* i); // 0x000000018012FC60
} }

View File

@@ -1,8 +1,9 @@
// Image 0: mscorlib.dll - 0 // Image 0: mscorlib.dll - 0
// Image 1: ArraysAndPointers.dll - 1810 // Image 1: ArraysAndPointers.dll - 1810
// Namespace: Il2CppTests.TestSources // Namespace: Il2CppTests.TestSources
internal class Test // TypeDefIndex: 1811 internal class Test // TypeDefIndex: 1813
{ {
// Fields // Fields
private int[] foo; // 0x08 private int[] foo; // 0x08
@@ -10,25 +11,46 @@ internal class Test // TypeDefIndex: 1811
private float[][] arrayOfArrays; // 0x10 private float[][] arrayOfArrays; // 0x10
private float[,] twoDimensionalArray; // 0x14 private float[,] twoDimensionalArray; // 0x14
private float[,,] threeDimensionalArray; // 0x18 private float[,,] threeDimensionalArray; // 0x18
private int*[] arrayOfPointer; // 0x1C private unsafe int*[] arrayOfPointer; // 0x1C
private int** pointerToPointer; // 0x20 private unsafe int** pointerToPointer; // 0x20
private float*[][,,][] confusedElephant; // 0x24 private unsafe float*[][,,][] confusedElephant; // 0x24
// Properties
public unsafe int* PointerProperty { get; set; } // 0x100EB040 0x100EB250
public unsafe int* this[int i] { get; } // 0x100C5600
public unsafe int this[int* p] { get; } // 0x100C5600
public unsafe float* this[float* fp] { get; } // 0x100C5600
// Nested types // Nested types
private struct fixedSizeArrayStruct // TypeDefIndex: 1812 private struct fixedSizeArrayStruct // TypeDefIndex: 1814
{ {
// Fields // Fields
private fixed /* 0x1000DE40 */ int fixedSizeArray[0]; // 0x08 private unsafe fixed /* 0x1000D370 */ int fixedSizeArray[0]; // 0x08
// Nested types // Nested types
} }
public unsafe delegate void OnUnsafe(int* ud); // TypeDefIndex: 1816; 0x1034DA60
public class NestedUnsafe<T> // TypeDefIndex: 1817
{
// Constructors // Constructors
public Test(); // 0x1034DAE0 public NestedUnsafe();
// Methods // Methods
public int[] FooMethod(int[][] bar); // 0x1034DAB0 private unsafe T* UnsafeGenericReturn();
public int[,] BarMethod(int[,,] baz); // 0x1034DA60 private unsafe void UnsafeGenericMethod(T* pt);
}
// Constructors
public unsafe Test(int* u); // 0x1034DD10
// Methods
public int[] FooMethod(int[][] bar); // 0x1034DCE0
public int[,] BarMethod(int[,,] baz); // 0x1034DC90
public unsafe void UnsafeMethod(int* unsafePointerArgument); // 0x100C5530
public unsafe int* UnsafeReturnMethod(); // 0x100C5600
public unsafe int* UnsafeMethod2(int* i); // 0x10102390
} }

View File

@@ -14,7 +14,7 @@ internal class Test // TypeDefIndex: 1811
public string this[int i] { get; } // 0x00000001803E0E80 public string this[int i] { get; } // 0x00000001803E0E80
public string this[double d] { get; } // 0x00000001803E0E50 public string this[double d] { get; } // 0x00000001803E0E50
public string this[long l] { set; } // 0x00000001800EA7B0 public string this[long l] { set; } // 0x00000001800EA7B0
public string this[] { get; set; } // 0x00000001803E0EB0 0x00000001800EA7B0 public string this[float f] { get; set; } // 0x00000001803E0EB0 0x00000001800EA7B0
public bool this[int i, int j] { get; } // 0x000000018010E420 public bool this[int i, int j] { get; } // 0x000000018010E420
// Constructors // Constructors

View File

@@ -14,7 +14,7 @@ internal class Test // TypeDefIndex: 1811
public string this[int i] { get; } // 0x1034DA90 public string this[int i] { get; } // 0x1034DA90
public string this[double d] { get; } // 0x1034DA60 public string this[double d] { get; } // 0x1034DA60
public string this[long l] { set; } // 0x100C5530 public string this[long l] { set; } // 0x100C5530
public string this[] { get; set; } // 0x1034DAC0 0x100C5530 public string this[float f] { get; set; } // 0x1034DAC0 0x100C5530
public bool this[int i, int j] { get; } // 0x100E5880 public bool this[int i, int j] { get; } // 0x100E5880
// Constructors // Constructors

View File

@@ -7,14 +7,14 @@
namespace Il2CppTests.TestSources namespace Il2CppTests.TestSources
{ {
#pragma warning disable CS0169 #pragma warning disable CS0169
internal unsafe class Test internal class Test
{ {
private int[] foo; private int[] foo;
private int[] bar = new int[10]; private int[] bar = new int[10];
private struct fixedSizeArrayStruct private struct fixedSizeArrayStruct
{ {
private fixed int fixedSizeArray[25]; private unsafe fixed int fixedSizeArray[25];
} }
private float[][] arrayOfArrays; private float[][] arrayOfArrays;
@@ -25,10 +25,40 @@ namespace Il2CppTests.TestSources
public int[,] BarMethod(int[,,] baz) => new int[5, 6]; public int[,] BarMethod(int[,,] baz) => new int[5, 6];
private int*[] arrayOfPointer; // Unsafe fields
private int** pointerToPointer; private unsafe int*[] arrayOfPointer;
private unsafe int** pointerToPointer;
private unsafe float*[][,,][] confusedElephant;
private float*[][,,][] confusedElephant; // Unsafe constructor
public unsafe Test(int* u) {}
// Unsafe delegate
public unsafe delegate void OnUnsafe(int*ud);
// Unsafe property
public unsafe int* PointerProperty { get; set; }
// Unsafe method (method with unsafe parameter)
public unsafe void UnsafeMethod(int* unsafePointerArgument) {}
// Unsafe method (method with unsafe return type)
public unsafe int* UnsafeReturnMethod() => (int*) 0;
// Unsafe method with both
public unsafe int* UnsafeMethod2(int* i) => i;
// Unsafe indexers
public unsafe int* this[int i] => (int*) 0;
public unsafe int this[int* p] => 0;
public unsafe float* this[float* fp] => (float*) 0;
// Unsafe generic type (unmanaged constraint introduced in C# 7.3)
public class NestedUnsafe<T> where T : unmanaged
{
unsafe T* UnsafeGenericReturn() => null;
unsafe void UnsafeGenericMethod(T* pt) {}
}
} }
#pragma warning restore CS0169 #pragma warning restore CS0169
} }