1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-10 12:32:20 +02:00

Fixed Self renaming issue

This commit is contained in:
Brian Fiete 2024-10-30 13:31:16 -04:00
parent 2c630a5ba9
commit 6c66d27ff4
5 changed files with 47 additions and 20 deletions

View file

@ -10012,6 +10012,7 @@ BfTypedValue BfExprEvaluator::MatchMethod(BfAstNode* targetSrc, BfMethodBoundExp
if ((methodGenericArguments != NULL) && (methodGenericArguments->size() > 0))
wantNumGenericArgs = (int)methodGenericArguments->size();
BfTypeInstance* resolvedTypeInstance = NULL;
BfResolveTypeRefFlags resolveFlags = BfResolveTypeRefFlag_None;
if (wantCtor)
{
resolvedTypeInstance = targetTypeInst;
@ -10020,7 +10021,7 @@ BfTypedValue BfExprEvaluator::MatchMethod(BfAstNode* targetSrc, BfMethodBoundExp
{
if (auto invocationExpr = BfNodeDynCast<BfInvocationExpression>(methodBoundExpr))
{
auto resolvedType = mModule->ResolveTypeRef(invocationExpr->mTarget, methodGenericArguments);
auto resolvedType = mModule->ResolveTypeRef_Ref(invocationExpr->mTarget, methodGenericArguments, BfPopulateType_Data, resolveFlags);
if (resolvedType != NULL)
resolvedTypeInstance = resolvedType->ToTypeInstance();
@ -10036,10 +10037,10 @@ BfTypedValue BfExprEvaluator::MatchMethod(BfAstNode* targetSrc, BfMethodBoundExp
BfType* refType;
if (methodGenericArguments != NULL)
{
refType = mModule->ResolveTypeRef(identifierNode, methodGenericArguments);
refType = mModule->ResolveTypeRef_Ref(identifierNode, methodGenericArguments, BfPopulateType_Data, resolveFlags);
}
else
refType = mModule->ResolveTypeRef(identifierNode, NULL);
refType = mModule->ResolveTypeRef_Ref(identifierNode, NULL, BfPopulateType_Data, resolveFlags);
prevIgnoreErrors.Restore();
if ((refType != NULL) && (refType->IsPrimitiveType()))
@ -10104,7 +10105,7 @@ BfTypedValue BfExprEvaluator::MatchMethod(BfAstNode* targetSrc, BfMethodBoundExp
if (mModule->mCompiler->mResolvePassData != NULL)
{
if (!BfNodeIsA<BfMemberReferenceExpression>(targetSrc))
if ((!BfNodeIsA<BfMemberReferenceExpression>(targetSrc)) && ((resolveFlags & BfResolveTypeRefFlag_FromIndirectSource) == 0))
mModule->mCompiler->mResolvePassData->HandleTypeReference(targetSrc, resolvedTypeInstance->mTypeDef);
}