mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 12:32:20 +02:00
Fixed GetGenericTypeParamInstance with extensions
This commit is contained in:
parent
0c34e62df2
commit
da29789bd6
3 changed files with 12 additions and 1 deletions
|
@ -8891,7 +8891,8 @@ BfGenericParamInstance* BfModule::GetGenericTypeParamInstance(int genericParamId
|
|||
if (genericTypeInst->mGenericTypeInfo->mGenericExtensionInfo != NULL)
|
||||
{
|
||||
auto activeTypeDef = GetActiveTypeDef(NULL, true);
|
||||
if ((activeTypeDef->mTypeDeclaration != genericTypeInst->mTypeDef->mTypeDeclaration) && (activeTypeDef->IsExtension()))
|
||||
if ((activeTypeDef->mTypeDeclaration != genericTypeInst->mTypeDef->mTypeDeclaration) && (activeTypeDef->IsExtension()) &&
|
||||
(genericTypeInst->mTypeDef->ContainsPartial(activeTypeDef)))
|
||||
{
|
||||
BfTypeDef* lookupTypeDef = activeTypeDef;
|
||||
while (lookupTypeDef->mNestDepth > genericTypeInst->mTypeDef->mNestDepth)
|
||||
|
|
|
@ -986,6 +986,15 @@ void BfTypeDef::ReportMemory(MemReporter* memReporter)
|
|||
memReporter->AddVec(mDirectAllocNodes, false);
|
||||
}
|
||||
|
||||
bool BfTypeDef::ContainsPartial(BfTypeDef* partialTypeDef)
|
||||
{
|
||||
if (partialTypeDef->mPartialIdx < 0)
|
||||
return false;
|
||||
if (partialTypeDef->mPartialIdx >= mPartials.mSize)
|
||||
return false;
|
||||
return mPartials[partialTypeDef->mPartialIdx] == partialTypeDef;
|
||||
}
|
||||
|
||||
bool BfTypeDef::NameEquals(BfTypeDef* otherTypeDef)
|
||||
{
|
||||
if (mName != otherTypeDef->mName)
|
||||
|
|
|
@ -1211,6 +1211,7 @@ public:
|
|||
BfMethodDef* GetMethodByName(const StringImpl& name, int paramCount = -1);
|
||||
BfFieldDef* GetFieldByName(const StringImpl& name);
|
||||
bool HasAutoProperty(BfPropertyDeclaration* propertyDeclaration);
|
||||
bool ContainsPartial(BfTypeDef* partialTypeDef);
|
||||
String GetAutoPropertyName(BfPropertyDeclaration* propertyDeclaration);
|
||||
BfAstNode* GetRefNode();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue