Output: Handle explicit interface implementation of indexers correctly

This commit is contained in:
Katy Coe
2019-12-11 10:27:52 +01:00
parent d728421d12
commit b8df3d7100
5 changed files with 233 additions and 168 deletions

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] // 0x000A50A8-0x000A539C
// [assembly: AssemblyCopyright] // 0x000A50A8-0x000A539C
// [assembly: AssemblyDefaultAlias] // 0x000A50A8-0x000A539C
// [assembly: AssemblyDelaySign] // 0x000A50A8-0x000A539C
// [assembly: AssemblyDescription] // 0x000A50A8-0x000A539C
// [assembly: AssemblyFileVersion] // 0x000A50A8-0x000A539C
// [assembly: AssemblyInformationalVersion] // 0x000A50A8-0x000A539C
// [assembly: AssemblyKeyFile] // 0x000A50A8-0x000A539C
// [assembly: AssemblyProduct] // 0x000A50A8-0x000A539C
// [assembly: AssemblyTitle] // 0x000A50A8-0x000A539C
// [assembly: CLSCompliant] // 0x000A50A8-0x000A539C
// [assembly: CompilationRelaxations] // 0x000A50A8-0x000A539C
// [assembly: ComVisible] // 0x000A50A8-0x000A539C
// [assembly: Debuggable] // 0x000A50A8-0x000A539C
// [assembly: DefaultDependency] // 0x000A50A8-0x000A539C
// [assembly: Guid] // 0x000A50A8-0x000A539C
// [assembly: NeutralResourcesLanguage] // 0x000A50A8-0x000A539C
[assembly: RuntimeCompatibility] // 0x000A50A8-0x000A539C
// [assembly: SatelliteContractVersion] // 0x000A50A8-0x000A539C
[assembly: StringFreezing] // 0x000A50A8-0x000A539C
// [assembly: TypeLibVersion] // 0x000A50A8-0x000A539C
// [assembly: AssemblyCompany] // 0x000A5100-0x000A53F4
// [assembly: AssemblyCopyright] // 0x000A5100-0x000A53F4
// [assembly: AssemblyDefaultAlias] // 0x000A5100-0x000A53F4
// [assembly: AssemblyDelaySign] // 0x000A5100-0x000A53F4
// [assembly: AssemblyDescription] // 0x000A5100-0x000A53F4
// [assembly: AssemblyFileVersion] // 0x000A5100-0x000A53F4
// [assembly: AssemblyInformationalVersion] // 0x000A5100-0x000A53F4
// [assembly: AssemblyKeyFile] // 0x000A5100-0x000A53F4
// [assembly: AssemblyProduct] // 0x000A5100-0x000A53F4
// [assembly: AssemblyTitle] // 0x000A5100-0x000A53F4
// [assembly: CLSCompliant] // 0x000A5100-0x000A53F4
// [assembly: CompilationRelaxations] // 0x000A5100-0x000A53F4
// [assembly: ComVisible] // 0x000A5100-0x000A53F4
// [assembly: Debuggable] // 0x000A5100-0x000A53F4
// [assembly: DefaultDependency] // 0x000A5100-0x000A53F4
// [assembly: Guid] // 0x000A5100-0x000A53F4
// [assembly: NeutralResourcesLanguage] // 0x000A5100-0x000A53F4
[assembly: RuntimeCompatibility] // 0x000A5100-0x000A53F4
// [assembly: SatelliteContractVersion] // 0x000A5100-0x000A53F4
[assembly: StringFreezing] // 0x000A5100-0x000A53F4
// [assembly: TypeLibVersion] // 0x000A5100-0x000A53F4
// Image 1: ExplicitInterfaces.dll - Assembly: ExplicitInterfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1818
// [assembly: CompilationRelaxations] // 0x000A539C-0x000A539C
// [assembly: Debuggable] // 0x000A539C-0x000A539C
[assembly: RuntimeCompatibility] // 0x000A539C-0x000A539C
// Image 1: ExplicitInterfaces.dll - Assembly: ExplicitInterfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1820
// [assembly: CompilationRelaxations] // 0x000A545C-0x000A545C
// [assembly: Debuggable] // 0x000A545C-0x000A545C
[assembly: RuntimeCompatibility] // 0x000A545C-0x000A545C
internal static class Consts // TypeDefIndex: 100
{
// Fields
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECBFC
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECC07
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECC20
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECC47
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECC63
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECC6E
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECC79
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECC8B
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECC9D
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECCE8
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECD45
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECDA6
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE01
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECE51
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEA2
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECEF6
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECF54
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFA3
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ECFF0
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED042
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED096
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED0F5
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED14A
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1A6
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1FD
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED253
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED2AF
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED300
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED35B
public const string MonoVersion = "2.6.5.0"; // Metadata: 0x000ECD24
public const string MonoCompany = "MONO development team"; // Metadata: 0x000ECD2F
public const string MonoProduct = "MONO Common language infrastructure"; // Metadata: 0x000ECD48
public const string MonoCopyright = "(c) various MONO Authors"; // Metadata: 0x000ECD6F
public const string FxVersion = "2.0.0.0"; // Metadata: 0x000ECD8B
public const string VsVersion = "8.0.0.0"; // Metadata: 0x000ECD96
public const string FxFileVersion = "2.0.50727.1433"; // Metadata: 0x000ECDA1
public const string VsFileVersion = "8.0.50727.1433"; // Metadata: 0x000ECDB3
public const string AssemblyI18N = "I18N, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECDC5
public const string AssemblyMicrosoft_VisualStudio = "Microsoft.VisualStudio, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE10
public const string AssemblyMicrosoft_VisualStudio_Web = "Microsoft.VisualStudio.Web, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECE6D
public const string AssemblyMicrosoft_VSDesigner = "Microsoft.VSDesigner, Version=8.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ECECE
public const string AssemblyMono_Http = "Mono.Http, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECF29
public const string AssemblyMono_Posix = "Mono.Posix, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECF79
public const string AssemblyMono_Security = "Mono.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ECFCA
public const string AssemblyMono_Messaging_RabbitMQ = "Mono.Messaging.RabbitMQ, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0738eb9f132ed756"; // Metadata: 0x000ED01E
public const string AssemblyCorlib = "mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED07C
public const string AssemblySystem = "System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED0CB
public const string AssemblySystem_Data = "System.Data, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED118
public const string AssemblySystem_Design = "System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED16A
public const string AssemblySystem_DirectoryServices = "System.DirectoryServices, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED1BE
public const string AssemblySystem_Drawing = "System.Drawing, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED21D
public const string AssemblySystem_Drawing_Design = "System.Drawing.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED272
public const string AssemblySystem_Messaging = "System.Messaging, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED2CE
public const string AssemblySystem_Security = "System.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED325
public const string AssemblySystem_ServiceProcess = "System.ServiceProcess, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED37B
public const string AssemblySystem_Web = "System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"; // Metadata: 0x000ED3D7
public const string AssemblySystem_Windows_Forms = "System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED428
public const string AssemblySystem_Core = "System.Core, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"; // Metadata: 0x000ED483
}
internal sealed class Locale // TypeDefIndex: 101
{
// Constructors
private Locale() {} // 0x003EC630-0x003EC638
private Locale() {} // 0x003EC6F0-0x003EC6F8
// Methods
public static string GetText(string msg) => default; // 0x003EC638-0x003EC63C
public static string GetText(string fmt, params /* 0x000A38D4-0x000A38E4 */ object[] args) => default; // 0x003EC63C-0x003EC6C8
public static string GetText(string msg) => default; // 0x003EC6F8-0x003EC6FC
public static string GetText(string fmt, params /* 0x000A392C-0x000A393C */ object[] args) => default; // 0x003EC6FC-0x003EC788
}
namespace Il2CppTests.TestSources
@@ -99,11 +99,11 @@ namespace Il2CppTests.TestSources
internal class Test : IControl, ISurface // TypeDefIndex: 1813
{
// Constructors
public Test() {} // 0x0056159C-0x0056159C
public Test() {} // 0x00561674-0x00561674
// Methods
void IControl.Paint() {} // 0x00561594-0x00561598
void ISurface.Paint() {} // 0x00561598-0x0056159C
void IControl.Paint() {} // 0x0056166C-0x00561670
void ISurface.Paint() {} // 0x00561670-0x00561674
}
internal interface ILeft // TypeDefIndex: 1814
@@ -121,13 +121,13 @@ namespace Il2CppTests.TestSources
internal class Middle : ILeft, IRight // TypeDefIndex: 1816
{
// Properties
int ILeft.P { get => default; } // 0x00561584-0x0056158C
int ILeft.P { get => default; } // 0x0056165C-0x00561664
// Constructors
public Middle() {} // 0x0056158C-0x00561594
public Middle() {} // 0x00561664-0x0056166C
// Methods
public int P() => default; // 0x0056157C-0x00561584
public int P() => default; // 0x00561654-0x0056165C
}
internal interface IGeneric<in T> // TypeDefIndex: 1817
@@ -139,9 +139,25 @@ namespace Il2CppTests.TestSources
internal class ImplementsGenericInterface : IGeneric<KeyValuePair<int, double>> // TypeDefIndex: 1818
{
// Constructors
public ImplementsGenericInterface() {} // 0x00561574-0x0056157C
public ImplementsGenericInterface() {} // 0x00561634-0x0056163C
// Methods
void IGeneric<KeyValuePair<int, double>>.GenericMethod(KeyValuePair<int, double> t) {} // 0x00561570-0x00561574
void IGeneric<KeyValuePair<int, double>>.GenericMethod(KeyValuePair<int, double> t) {} // 0x00561630-0x00561634
}
internal interface IIndexer // TypeDefIndex: 1819
{
// Properties
bool this[int i] { get => default; }
}
internal class ImplementsIndexer : IIndexer // TypeDefIndex: 1820
{
// Properties
public bool this[int i] { get => default; } // 0x0056163C-0x00561644
bool IIndexer.this[int i] { get => default; } // 0x00561644-0x0056164C
// Constructors
public ImplementsIndexer() {} // 0x0056164C-0x00561654
}
}