mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-14 14:24:10 +02:00
Fixed global lookup and function cast
This commit is contained in:
parent
43ebd756af
commit
c670473452
1 changed files with 8 additions and 2 deletions
|
@ -9761,8 +9761,12 @@ BfTypeDef* BfModule::FindTypeDef(const BfAtomComposite& findName, int numGeneric
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BfFindTypeDefFlags findDefFlags = BfFindTypeDefFlag_None;
|
||||||
|
if ((resolveFlags & BfResolveTypeRefFlag_AllowGlobalContainer) != 0)
|
||||||
|
findDefFlags = (BfFindTypeDefFlags)(findDefFlags | BfFindTypeDefFlag_AllowGlobal);
|
||||||
|
|
||||||
BfTypeDef* ambiguousTypeDef = NULL;
|
BfTypeDef* ambiguousTypeDef = NULL;
|
||||||
BfTypeDef *result = mSystem->FindTypeDef(findName, numGenericArgs, project, namespaceSearch, &ambiguousTypeDef);
|
BfTypeDef *result = mSystem->FindTypeDef(findName, numGenericArgs, project, namespaceSearch, &ambiguousTypeDef, findDefFlags);
|
||||||
if ((ambiguousTypeDef != NULL) && (error != NULL))
|
if ((ambiguousTypeDef != NULL) && (error != NULL))
|
||||||
{
|
{
|
||||||
error->mErrorKind = BfTypeLookupError::BfErrorKind_Ambiguous;
|
error->mErrorKind = BfTypeLookupError::BfErrorKind_Ambiguous;
|
||||||
|
@ -10763,7 +10767,7 @@ BfType* BfModule::ResolveTypeRef(BfTypeReference* typeRef, BfPopulateType popula
|
||||||
|
|
||||||
//auto typeDef = mSystem->FindTypeDef(findName, wantNumGenericArgs, bfProject, {}, &ambiguousTypeDef);
|
//auto typeDef = mSystem->FindTypeDef(findName, wantNumGenericArgs, bfProject, {}, &ambiguousTypeDef);
|
||||||
BfTypeLookupError lookupError;
|
BfTypeLookupError lookupError;
|
||||||
auto typeDef = FindTypeDef(findName, wantNumGenericArgs, NULL, &lookupError);
|
auto typeDef = FindTypeDef(findName, wantNumGenericArgs, NULL, &lookupError, resolveFlags);
|
||||||
if (typeDef != NULL)
|
if (typeDef != NULL)
|
||||||
{
|
{
|
||||||
if (ambiguousTypeDef != NULL)
|
if (ambiguousTypeDef != NULL)
|
||||||
|
@ -12624,6 +12628,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
// Func -> void*
|
// Func -> void*
|
||||||
if ((typedVal.mType->IsFunction()) && (toType->IsVoidPtr()))
|
if ((typedVal.mType->IsFunction()) && (toType->IsVoidPtr()))
|
||||||
{
|
{
|
||||||
|
typedVal = LoadValue(typedVal);
|
||||||
return mBfIRBuilder->CreateIntToPtr(typedVal.mValue, mBfIRBuilder->MapType(toType));
|
return mBfIRBuilder->CreateIntToPtr(typedVal.mValue, mBfIRBuilder->MapType(toType));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -12632,6 +12637,7 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
||||||
// void* -> Func
|
// void* -> Func
|
||||||
if ((typedVal.mType->IsVoidPtr()) && (toType->IsFunction()))
|
if ((typedVal.mType->IsVoidPtr()) && (toType->IsFunction()))
|
||||||
{
|
{
|
||||||
|
typedVal = LoadValue(typedVal);
|
||||||
return mBfIRBuilder->CreatePtrToInt(typedVal.mValue, BfTypeCode_IntPtr);
|
return mBfIRBuilder->CreatePtrToInt(typedVal.mValue, BfTypeCode_IntPtr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue