mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Circular dependency checking between generic constraints
This commit is contained in:
parent
e307448363
commit
2bbe66cecc
7 changed files with 108 additions and 5 deletions
|
@ -1204,6 +1204,7 @@ public:
|
|||
virtual BfGenericParamDef* GetGenericParamDef() = 0;
|
||||
virtual BfExternalConstraintDef* GetExternConstraintDef() = 0;
|
||||
virtual String GetName() = 0;
|
||||
virtual BfAstNode* GetRefNode() = NULL;
|
||||
bool IsEnum();
|
||||
};
|
||||
|
||||
|
@ -1255,6 +1256,13 @@ public:
|
|||
return mTypeDef->mGenericParamDefs[mGenericIdx]->mName;
|
||||
return mTypeDef->mExternalConstraints[mGenericIdx - (int)mTypeDef->mGenericParamDefs.size()].mTypeRef->ToString();
|
||||
}
|
||||
|
||||
virtual BfAstNode* GetRefNode() override
|
||||
{
|
||||
if (mGenericIdx < (int)mTypeDef->mGenericParamDefs.size())
|
||||
return mTypeDef->mGenericParamDefs[mGenericIdx]->mNameNodes[0];
|
||||
return mTypeDef->mExternalConstraints[mGenericIdx - (int)mTypeDef->mGenericParamDefs.size()].mTypeRef;
|
||||
}
|
||||
};
|
||||
|
||||
class BfGenericMethodParamInstance : public BfGenericParamInstance
|
||||
|
@ -1305,6 +1313,13 @@ public:
|
|||
return mMethodDef->mGenericParams[mGenericIdx]->mName;
|
||||
return mMethodDef->mExternalConstraints[mGenericIdx - (int)mMethodDef->mGenericParams.size()].mTypeRef->ToString();
|
||||
}
|
||||
|
||||
virtual BfAstNode* GetRefNode() override
|
||||
{
|
||||
if (mGenericIdx < (int)mMethodDef->mGenericParams.size())
|
||||
return mMethodDef->mGenericParams[mGenericIdx]->mNameNodes[0];
|
||||
return mMethodDef->mExternalConstraints[mGenericIdx - (int)mMethodDef->mGenericParams.size()].mTypeRef;
|
||||
}
|
||||
};
|
||||
|
||||
#define BF_VALCOMP(val) if (val != 0) return val
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue