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

Fixed comptime valueless ctor

This commit is contained in:
Brian Fiete 2022-03-31 11:16:13 -07:00
parent 6cce0ffc25
commit b5ddc1c24b
2 changed files with 12 additions and 6 deletions

View file

@ -5149,14 +5149,14 @@ BfTypedValue CeContext::Call(CeCallSource callSource, BfModule* module, BfMethod
Fail("Failed to encode return argument"); Fail("Failed to encode return argument");
} }
} }
else if (returnType->IsComposite()) else if ((methodInstance->mMethodDef->mMethodType == BfMethodType_Ctor) && (thisType != NULL) && (thisType->IsValuelessType()))
{
returnValue = BfTypedValue(module->mBfIRBuilder->CreateConstAggZero(module->mBfIRBuilder->MapType(returnType, BfIRPopulateType_Identity)), thisType);
}
else if ((returnType->IsComposite()) || (returnType->IsValuelessType()))
{ {
returnValue = BfTypedValue(module->mBfIRBuilder->CreateConstAggZero(module->mBfIRBuilder->MapType(returnType, BfIRPopulateType_Identity)), returnType); returnValue = BfTypedValue(module->mBfIRBuilder->CreateConstAggZero(module->mBfIRBuilder->MapType(returnType, BfIRPopulateType_Identity)), returnType);
} }
else if (returnType->IsValuelessType())
{
returnValue = BfTypedValue(module->mBfIRBuilder->GetFakeVal(), returnType);
}
} }
mCallStack.Clear(); mCallStack.Clear();

View file

@ -32,6 +32,12 @@ namespace Tests
} }
} }
struct ZeroStruct
{
public this() { }
public const ZeroStruct ConstValue = ZeroStruct();
}
const String cStrA = "Abc"; const String cStrA = "Abc";
const String cStrB = GetStringA(cStrA, 12, 23); const String cStrB = GetStringA(cStrA, 12, 23);