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,29 +11,29 @@ 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] // 0x1000F760-0x1000DC90
// [assembly: AssemblyCopyright] // 0x1000F760-0x1000DC90
// [assembly: AssemblyDefaultAlias] // 0x1000F760-0x1000DC90
// [assembly: AssemblyDelaySign] // 0x1000F760-0x1000DC90
// [assembly: AssemblyDescription] // 0x1000F760-0x1000DC90
// [assembly: AssemblyFileVersion] // 0x1000F760-0x1000DC90
// [assembly: AssemblyInformationalVersion] // 0x1000F760-0x1000DC90
// [assembly: AssemblyKeyFile] // 0x1000F760-0x1000DC90
// [assembly: AssemblyProduct] // 0x1000F760-0x1000DC90
// [assembly: AssemblyTitle] // 0x1000F760-0x1000DC90
// [assembly: CLSCompliant] // 0x1000F760-0x1000DC90
// [assembly: CompilationRelaxations] // 0x1000F760-0x1000DC90
// [assembly: ComVisible] // 0x1000F760-0x1000DC90
// [assembly: Debuggable] // 0x1000F760-0x1000DC90
// [assembly: DefaultDependency] // 0x1000F760-0x1000DC90
// [assembly: Guid] // 0x1000F760-0x1000DC90
// [assembly: NeutralResourcesLanguage] // 0x1000F760-0x1000DC90
[assembly: RuntimeCompatibility] // 0x1000F760-0x1000DC90
// [assembly: SatelliteContractVersion] // 0x1000F760-0x1000DC90
[assembly: StringFreezing] // 0x1000F760-0x1000DC90
// [assembly: TypeLibVersion] // 0x1000F760-0x1000DC90
// [assembly: AssemblyCompany] // 0x1000F760-0x1000CCB0
// [assembly: AssemblyCopyright] // 0x1000F760-0x1000CCB0
// [assembly: AssemblyDefaultAlias] // 0x1000F760-0x1000CCB0
// [assembly: AssemblyDelaySign] // 0x1000F760-0x1000CCB0
// [assembly: AssemblyDescription] // 0x1000F760-0x1000CCB0
// [assembly: AssemblyFileVersion] // 0x1000F760-0x1000CCB0
// [assembly: AssemblyInformationalVersion] // 0x1000F760-0x1000CCB0
// [assembly: AssemblyKeyFile] // 0x1000F760-0x1000CCB0
// [assembly: AssemblyProduct] // 0x1000F760-0x1000CCB0
// [assembly: AssemblyTitle] // 0x1000F760-0x1000CCB0
// [assembly: CLSCompliant] // 0x1000F760-0x1000CCB0
// [assembly: CompilationRelaxations] // 0x1000F760-0x1000CCB0
// [assembly: ComVisible] // 0x1000F760-0x1000CCB0
// [assembly: Debuggable] // 0x1000F760-0x1000CCB0
// [assembly: DefaultDependency] // 0x1000F760-0x1000CCB0
// [assembly: Guid] // 0x1000F760-0x1000CCB0
// [assembly: NeutralResourcesLanguage] // 0x1000F760-0x1000CCB0
[assembly: RuntimeCompatibility] // 0x1000F760-0x1000CCB0
// [assembly: SatelliteContractVersion] // 0x1000F760-0x1000CCB0
[assembly: StringFreezing] // 0x1000F760-0x1000CCB0
// [assembly: TypeLibVersion] // 0x1000F760-0x1000CCB0
// Image 1: ExplicitInterfaces.dll - Assembly: ExplicitInterfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1818
// Image 1: ExplicitInterfaces.dll - Assembly: ExplicitInterfaces, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null - Types 1810-1820
// [assembly: CompilationRelaxations] // 0x1000DC90-0x1000DC90
// [assembly: Debuggable] // 0x1000DC90-0x1000DC90
[assembly: RuntimeCompatibility] // 0x1000DC90-0x1000DC90
@@ -41,35 +41,35 @@ using System.Runtime.InteropServices;
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
@@ -144,4 +144,20 @@ namespace Il2CppTests.TestSources
// Methods
void IGeneric<KeyValuePair<int, double>>.GenericMethod(KeyValuePair<int, double> t) {} // 0x100C5530-0x100C5540
}
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; } // 0x100EFBF0-0x100EFC00
bool IIndexer.this[int i] { get => default; } // 0x100EFBF0-0x100EFC00
// Constructors
public ImplementsIndexer() {} // 0x100BF000-0x100BF010
}
}