mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 20:42:21 +02:00
Fixed ability to call GetType on an interface reference
This commit is contained in:
parent
e6405e49c6
commit
dcacf87d66
2 changed files with 9 additions and 2 deletions
|
@ -2233,8 +2233,12 @@ bool BfMethodMatcher::CheckType(BfTypeInstance* typeInstance, BfTypedValue targe
|
||||||
if (baseType == NULL)
|
if (baseType == NULL)
|
||||||
{
|
{
|
||||||
//TODO: Why were we doing the interface checking?
|
//TODO: Why were we doing the interface checking?
|
||||||
|
if ((curTypeInst->IsInterface()) && (curTypeInst == target.mType))
|
||||||
if ((curTypeInst != mModule->mContext->mBfObjectType) && (!curTypeInst->IsInterface()))
|
{
|
||||||
|
// When we are directly calling on interfaces rather than indirectly matching through binding
|
||||||
|
baseType = mModule->mContext->mBfObjectType;
|
||||||
|
}
|
||||||
|
else if ((curTypeInst != mModule->mContext->mBfObjectType) && (!curTypeInst->IsInterface()))
|
||||||
{
|
{
|
||||||
// This can happen for structs
|
// This can happen for structs
|
||||||
baseType = mModule->mContext->mBfObjectType;
|
baseType = mModule->mContext->mBfObjectType;
|
||||||
|
|
|
@ -127,6 +127,9 @@ namespace Tests
|
||||||
Test.Assert(UseIA2((IFaceA)cba) == 60);
|
Test.Assert(UseIA2((IFaceA)cba) == 60);
|
||||||
Test.Assert(UseIA2(cc) == 70);
|
Test.Assert(UseIA2(cc) == 70);
|
||||||
Test.Assert(UseIA2(cca) == 70);
|
Test.Assert(UseIA2(cca) == 70);
|
||||||
|
|
||||||
|
IFaceA ifa = cba;
|
||||||
|
Test.Assert(ifa.GetType() == typeof(ClassB));
|
||||||
}
|
}
|
||||||
|
|
||||||
////
|
////
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue