mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Fixed ToString issue with missing interface impl in type with extension
This commit is contained in:
parent
dcfcc03a55
commit
7787efda7e
3 changed files with 31 additions and 1 deletions
|
@ -65,5 +65,25 @@ namespace IDETest
|
||||||
{
|
{
|
||||||
Method5<E, F>(); //FAIL Generic argument 'A', declared to be 'E' for 'IDETest.Generics.Method5<E, F>()', must implement 'System.Collections.IEnumerable<F>'
|
Method5<E, F>(); //FAIL Generic argument 'A', declared to be 'E' for 'IDETest.Generics.Method5<E, F>()', must implement 'System.Collections.IEnumerable<F>'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface IFaceB<T>
|
||||||
|
{
|
||||||
|
void MethodA0();
|
||||||
|
}
|
||||||
|
|
||||||
|
extension IFaceB<T>
|
||||||
|
{
|
||||||
|
void MethodA1();
|
||||||
|
}
|
||||||
|
|
||||||
|
class ClassB<T> : IFaceB<T> //FAIL 'IDETest.Generics.ClassB<T>' does not implement interface member 'IDETest.Generics.IFaceB<T>.MethodA0()'
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
extension ClassB<T>
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,6 +146,7 @@ public:
|
||||||
BfTypeReference* mCurAttributeTypeRef;
|
BfTypeReference* mCurAttributeTypeRef;
|
||||||
BfFieldDef* mCurFieldDef;
|
BfFieldDef* mCurFieldDef;
|
||||||
BfTypeDef* mCurTypeDef;
|
BfTypeDef* mCurTypeDef;
|
||||||
|
BfTypeDef* mForceActiveTypeDef;
|
||||||
ResolveKind mResolveKind;
|
ResolveKind mResolveKind;
|
||||||
BfAstNode* mCurVarInitializer;
|
BfAstNode* mCurVarInitializer;
|
||||||
int mArrayInitializerSize;
|
int mArrayInitializerSize;
|
||||||
|
@ -162,6 +163,7 @@ public:
|
||||||
mCurFieldDef = NULL;
|
mCurFieldDef = NULL;
|
||||||
mCurAttributeTypeRef = NULL;
|
mCurAttributeTypeRef = NULL;
|
||||||
mCurTypeDef = NULL;
|
mCurTypeDef = NULL;
|
||||||
|
mForceActiveTypeDef = NULL;
|
||||||
mCurVarInitializer = NULL;
|
mCurVarInitializer = NULL;
|
||||||
mArrayInitializerSize = -1;
|
mArrayInitializerSize = -1;
|
||||||
mResolveKind = ResolveKind_None;
|
mResolveKind = ResolveKind_None;
|
||||||
|
@ -178,6 +180,7 @@ public:
|
||||||
mCurFieldDef = NULL;
|
mCurFieldDef = NULL;
|
||||||
mCurAttributeTypeRef = NULL;
|
mCurAttributeTypeRef = NULL;
|
||||||
mCurTypeDef = NULL;
|
mCurTypeDef = NULL;
|
||||||
|
mForceActiveTypeDef = NULL;
|
||||||
mCurVarInitializer = NULL;
|
mCurVarInitializer = NULL;
|
||||||
mArrayInitializerSize = -1;
|
mArrayInitializerSize = -1;
|
||||||
mResolveKind = ResolveKind_None;
|
mResolveKind = ResolveKind_None;
|
||||||
|
|
|
@ -5543,6 +5543,11 @@ void BfModule::DoTypeInstanceMethodProcessing(BfTypeInstance* typeInstance)
|
||||||
String methodString;
|
String methodString;
|
||||||
///
|
///
|
||||||
{
|
{
|
||||||
|
BfTypeState typeState;
|
||||||
|
typeState.mPrevState = mContext->mCurTypeState;
|
||||||
|
typeState.mForceActiveTypeDef = declTypeDef;
|
||||||
|
SetAndRestoreValue<BfTypeState*> prevTypeState(mContext->mCurTypeState, &typeState);
|
||||||
|
|
||||||
SetAndRestoreValue<BfMethodInstance*> prevMethodInstance(mCurMethodInstance, ifaceMethodInst);
|
SetAndRestoreValue<BfMethodInstance*> prevMethodInstance(mCurMethodInstance, ifaceMethodInst);
|
||||||
methodString = MethodToString(ifaceMethodInst);
|
methodString = MethodToString(ifaceMethodInst);
|
||||||
}
|
}
|
||||||
|
@ -8113,6 +8118,8 @@ BfTypeDef* BfModule::GetActiveTypeDef(BfTypeInstance* typeInstanceOverride, bool
|
||||||
{
|
{
|
||||||
BfTypeDef* useTypeDef = NULL;
|
BfTypeDef* useTypeDef = NULL;
|
||||||
BfTypeInstance* typeInstance = (typeInstanceOverride != NULL) ? typeInstanceOverride : mCurTypeInstance;
|
BfTypeInstance* typeInstance = (typeInstanceOverride != NULL) ? typeInstanceOverride : mCurTypeInstance;
|
||||||
|
if ((mContext->mCurTypeState != NULL) && (mContext->mCurTypeState->mForceActiveTypeDef != NULL))
|
||||||
|
return mContext->mCurTypeState->mForceActiveTypeDef;
|
||||||
if (typeInstance != NULL)
|
if (typeInstance != NULL)
|
||||||
useTypeDef = typeInstance->mTypeDef;
|
useTypeDef = typeInstance->mTypeDef;
|
||||||
if ((mCurMethodState != NULL) && (mCurMethodState->mMixinState != NULL) && (useMixinDecl))
|
if ((mCurMethodState != NULL) && (mCurMethodState->mMixinState != NULL) && (useMixinDecl))
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue