// TypeLoader
//
CONFIG_DWORD_INFO(INTERNAL_TypeLoader_InjectInterfaceDuplicates, W("INTERNAL_TypeLoader_InjectInterfaceDuplicates"), 0, "Injects duplicates in interface map for all types.")
+RETAIL_CONFIG_DWORD_INFO(UNSUPPORTED_TypeLoader_DefaultInterfaces, W("UNSUPPORTED_TypeLoader_DefaultInterfaces"), 0, "Enables support for default interfaces.")
//
// Virtual call stubs
}
}
+ // Some interface checks.
+ if (fIsClassInterface)
+ {
+ if (IsMdVirtual(dwMemberAttrs))
+ {
+ if (!IsMdAbstract(dwMemberAttrs) && (CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_TypeLoader_DefaultInterfaces) == 0))
+ {
+ BuildMethodTableThrowException(BFA_VIRTUAL_NONAB_INT_METHOD);
+ }
+ }
+ else
+ {
+ // Instance field/method
+ if (!IsMdStatic(dwMemberAttrs) && (CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_TypeLoader_DefaultInterfaces) == 0))
+ {
+ BuildMethodTableThrowException(BFA_NONVIRT_INST_INT_METHOD);
+ }
+ }
+ }
+
// No synchronized methods in ValueTypes
if(fIsClassValueType && IsMiSynchronized(dwImplFlags))
{
}
}
+ // Some interface checks.
+ if (fIsClassInterface)
+ {
+ if (IsMdVirtual(dwMemberAttrs))
+ {
+ if (!IsMdAbstract(dwMemberAttrs) && (CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_TypeLoader_DefaultInterfaces) == 0))
+ {
+ BuildMethodTableThrowException(BFA_VIRTUAL_NONAB_INT_METHOD);
+ }
+ }
+ else
+ {
+ // Instance field/method
+ if (!IsMdStatic(dwMemberAttrs) && (CLRConfig::GetConfigValue(CLRConfig::UNSUPPORTED_TypeLoader_DefaultInterfaces) == 0))
+ {
+ BuildMethodTableThrowException(BFA_NONVIRT_INST_INT_METHOD);
+ }
+ }
+ }
+
// No synchronized methods in ValueTypes
if(fIsClassValueType && IsMiSynchronized(dwImplFlags))
{
<CLRTestKind>BuildAndRun</CLRTestKind>
<CLRTestPriority>0</CLRTestPriority>
<!-- Use ILAsm that we just built for the new fixes required in default interface methods -->
- <UseCustomILAsm>True</UseCustomILAsm>
+ <UseCustomILAsm>True</UseCustomILAsm>
+
+ <CLRTestBatchPreCommands>
+<![CDATA[
+ $(CLRTestBatchPreCommands)
+set COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </CLRTestBatchPreCommands>
+ <BashCLRTestPreCommands>
+<![CDATA[
+ $(BashCLRTestPreCommands)
+export COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </BashCLRTestPreCommands>
+
</PropertyGroup>
<ItemGroup>
<CLRTestPriority>0</CLRTestPriority>
<!-- Use ILAsm that we just built for the new fixes required in default interface methods -->
<UseCustomILAsm>True</UseCustomILAsm>
+
+ <CLRTestBatchPreCommands>
+<![CDATA[
+ $(CLRTestBatchPreCommands)
+set COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </CLRTestBatchPreCommands>
+ <BashCLRTestPreCommands>
+<![CDATA[
+ $(BashCLRTestPreCommands)
+export COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </BashCLRTestPreCommands>
+
</PropertyGroup>
<ItemGroup>
<CLRTestPriority>0</CLRTestPriority>
<!-- Use ILAsm that we just built for the new fixes required in default interface methods -->
<UseCustomILAsm>True</UseCustomILAsm>
+
+ <CLRTestBatchPreCommands>
+<![CDATA[
+ $(CLRTestBatchPreCommands)
+set COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </CLRTestBatchPreCommands>
+ <BashCLRTestPreCommands>
+<![CDATA[
+ $(BashCLRTestPreCommands)
+export COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </BashCLRTestPreCommands>
+
</PropertyGroup>
<ItemGroup>
<CLRTestPriority>0</CLRTestPriority>
<!-- Use ILAsm that we just built for the new fixes required in default interface methods -->
<UseCustomILAsm>True</UseCustomILAsm>
+
+ <CLRTestBatchPreCommands>
+<![CDATA[
+ $(CLRTestBatchPreCommands)
+set COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </CLRTestBatchPreCommands>
+ <BashCLRTestPreCommands>
+<![CDATA[
+ $(BashCLRTestPreCommands)
+export COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </BashCLRTestPreCommands>
+
</PropertyGroup>
<ItemGroup>
<CLRTestPriority>0</CLRTestPriority>
<!-- Use ILAsm that we just built for the new fixes required in default interface methods -->
<UseCustomILAsm>True</UseCustomILAsm>
+
+ <CLRTestBatchPreCommands>
+<![CDATA[
+ $(CLRTestBatchPreCommands)
+set COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </CLRTestBatchPreCommands>
+ <BashCLRTestPreCommands>
+<![CDATA[
+ $(BashCLRTestPreCommands)
+export COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </BashCLRTestPreCommands>
+
</PropertyGroup>
<ItemGroup>
<CLRTestKind>BuildAndRun</CLRTestKind>
<CLRTestPriority>0</CLRTestPriority>
<!-- Use ILAsm that we just built for the new fixes required in default interface methods -->
- <UseCustomILAsm>True</UseCustomILAsm>
+ <UseCustomILAsm>True</UseCustomILAsm>
+
+ <CLRTestBatchPreCommands>
+<![CDATA[
+ $(CLRTestBatchPreCommands)
+set COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </CLRTestBatchPreCommands>
+ <BashCLRTestPreCommands>
+<![CDATA[
+ $(BashCLRTestPreCommands)
+export COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </BashCLRTestPreCommands>
+
</PropertyGroup>
<ItemGroup>
<CLRTestPriority>0</CLRTestPriority>
<!-- Use ILAsm that we just built for the new fixes required in default interface methods -->
<UseCustomILAsm>True</UseCustomILAsm>
+
+ <CLRTestBatchPreCommands>
+<![CDATA[
+ $(CLRTestBatchPreCommands)
+set COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </CLRTestBatchPreCommands>
+ <BashCLRTestPreCommands>
+<![CDATA[
+ $(BashCLRTestPreCommands)
+export COMPlus_UNSUPPORTED_TypeLoader_DefaultInterfaces=1
+ ]]>
+ </BashCLRTestPreCommands>
+
</PropertyGroup>
<ItemGroup>