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

StringView sanity check

This commit is contained in:
Brian Fiete 2024-08-17 13:01:00 -04:00
parent 6c70b2fe65
commit 4bfa087cec

View file

@ -14161,29 +14161,33 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
if ((isNull) || (mContext->mStringObjectIdMap.TryGetValue(stringId, &entry))) if ((isNull) || (mContext->mStringObjectIdMap.TryGetValue(stringId, &entry)))
{ {
auto svTypeInst = toType->ToTypeInstance(); auto svTypeInst = toType->ToTypeInstance();
PopulateType(svTypeInst); PopulateType(svTypeInst);
PopulateType(svTypeInst->mBaseType); PopulateType(svTypeInst->mBaseType);
mBfIRBuilder->PopulateType(svTypeInst); mBfIRBuilder->PopulateType(svTypeInst);
SizedArray<BfIRValue, 2> spanFieldVals; // Sanity check
spanFieldVals.Add(mBfIRBuilder->CreateConstAggZero(mBfIRBuilder->MapType(svTypeInst->mBaseType->mBaseType))); if (svTypeInst->mMergedFieldDataCount == 2)
if (isNull)
{ {
spanFieldVals.Add(mBfIRBuilder->CreateConstNull(mBfIRBuilder->MapType(CreatePointerType(GetPrimitiveType(BfTypeCode_Char8))))); SizedArray<BfIRValue, 2> spanFieldVals;
spanFieldVals.Add(mBfIRBuilder->CreateConst(BfTypeCode_IntPtr, 0)); spanFieldVals.Add(mBfIRBuilder->CreateConstAggZero(mBfIRBuilder->MapType(svTypeInst->mBaseType->mBaseType)));
}
else
{
auto stringCharPtr = GetStringCharPtr(stringId);
spanFieldVals.Add(stringCharPtr);
spanFieldVals.Add(mBfIRBuilder->CreateConst(BfTypeCode_IntPtr, entry->mString.mLength));
}
SizedArray<BfIRValue, 2> svFieldVals; if (isNull)
svFieldVals.Add(mBfIRBuilder->CreateConstAgg(mBfIRBuilder->MapType(svTypeInst->mBaseType), spanFieldVals)); {
return mBfIRBuilder->CreateConstAgg(mBfIRBuilder->MapType(svTypeInst), svFieldVals); spanFieldVals.Add(mBfIRBuilder->CreateConstNull(mBfIRBuilder->MapType(CreatePointerType(GetPrimitiveType(BfTypeCode_Char8)))));
spanFieldVals.Add(mBfIRBuilder->CreateConst(BfTypeCode_IntPtr, 0));
}
else
{
auto stringCharPtr = GetStringCharPtr(stringId);
spanFieldVals.Add(stringCharPtr);
spanFieldVals.Add(mBfIRBuilder->CreateConst(BfTypeCode_IntPtr, entry->mString.mLength));
}
SizedArray<BfIRValue, 2> svFieldVals;
svFieldVals.Add(mBfIRBuilder->CreateConstAgg(mBfIRBuilder->MapType(svTypeInst->mBaseType), spanFieldVals));
return mBfIRBuilder->CreateConstAgg(mBfIRBuilder->MapType(svTypeInst), svFieldVals);
}
} }
} }
} }