mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-09 03:52:19 +02:00
StringView sanity check
This commit is contained in:
parent
6c70b2fe65
commit
4bfa087cec
1 changed files with 21 additions and 17 deletions
|
@ -14161,29 +14161,33 @@ BfIRValue BfModule::CastToValue(BfAstNode* srcNode, BfTypedValue typedVal, BfTyp
|
|||
if ((isNull) || (mContext->mStringObjectIdMap.TryGetValue(stringId, &entry)))
|
||||
{
|
||||
auto svTypeInst = toType->ToTypeInstance();
|
||||
|
||||
|
||||
PopulateType(svTypeInst);
|
||||
PopulateType(svTypeInst->mBaseType);
|
||||
mBfIRBuilder->PopulateType(svTypeInst);
|
||||
|
||||
SizedArray<BfIRValue, 2> spanFieldVals;
|
||||
spanFieldVals.Add(mBfIRBuilder->CreateConstAggZero(mBfIRBuilder->MapType(svTypeInst->mBaseType->mBaseType)));
|
||||
|
||||
if (isNull)
|
||||
// Sanity check
|
||||
if (svTypeInst->mMergedFieldDataCount == 2)
|
||||
{
|
||||
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> spanFieldVals;
|
||||
spanFieldVals.Add(mBfIRBuilder->CreateConstAggZero(mBfIRBuilder->MapType(svTypeInst->mBaseType->mBaseType)));
|
||||
|
||||
SizedArray<BfIRValue, 2> svFieldVals;
|
||||
svFieldVals.Add(mBfIRBuilder->CreateConstAgg(mBfIRBuilder->MapType(svTypeInst->mBaseType), spanFieldVals));
|
||||
return mBfIRBuilder->CreateConstAgg(mBfIRBuilder->MapType(svTypeInst), svFieldVals);
|
||||
if (isNull)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue