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

Fixed ToString of tuples with sized array members

This commit is contained in:
Brian Fiete 2024-02-14 05:26:03 -05:00
parent 34b0dd44a7
commit ca1ac7fb4c
3 changed files with 20 additions and 3 deletions

View file

@ -3081,6 +3081,12 @@ void BfMethodMatcher::TryDevirtualizeCall(BfTypedValue target, BfTypedValue* ori
{
auto structType = target.mType->ToTypeInstance();
if (structType == NULL)
{
mModule->InternalError("Invalid type in TryDevirtualizeCall");
return;
}
auto virtualMethodInstance = mModule->GetMethodInstance(mBestMethodTypeInstance, mBestMethodDef, BfTypeVector());
BF_ASSERT(virtualMethodInstance.mMethodInstance->mVirtualTableIdx != -1);

View file

@ -18854,9 +18854,19 @@ void BfModule::EmitTupleToStringBody()
BfTypedValue fieldValue = ExtractValue(thisValue, &fieldInstance, fieldInstance.mDataIdx);
if (fieldValue.mType->IsPrimitiveType())
if (fieldValue.mType->IsWrappableType())
{
fieldValue.mType = GetPrimitiveStructType(((BfPrimitiveType*)fieldValue.mType)->mTypeDef->mTypeCode);
auto wrappedType = GetWrappedStructType(fieldValue.mType);
if ((wrappedType->IsTypedPrimitive()) || (wrappedType->IsValuelessType()))
{
fieldValue.mType = wrappedType;
}
else
{
fieldValue = MakeAddressable(fieldValue);
fieldValue.mType = wrappedType;
fieldValue.mValue = mBfIRBuilder->CreateBitCast(fieldValue.mValue, mBfIRBuilder->MapTypeInstPtr(fieldValue.mType->ToTypeInstance()));
}
}
auto typeInstance = fieldValue.mType->ToTypeInstance();