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

Added Diagnostics panel

This commit is contained in:
Brian Fiete 2020-07-18 06:50:28 -07:00
parent 015470203b
commit 86a41649ec
12 changed files with 150 additions and 76 deletions

View file

@ -3825,64 +3825,9 @@ BfTypedValue BfExprEvaluator::LookupField(BfAstNode* targetSrc, BfTypedValue tar
}
if ((mResultLocalVar != NULL) && (fieldInstance->mMergedDataIdx != -1))
{
int minMergedDataIdx = fieldInstance->mMergedDataIdx;
int maxMergedDataIdx = minMergedDataIdx + 1;
if (resolvedFieldType->IsStruct())
maxMergedDataIdx = minMergedDataIdx + resolvedFieldType->ToTypeInstance()->mMergedFieldDataCount;
if (curCheckType->mIsUnion)
{
for (auto& checkFieldInstance : curCheckType->mFieldInstances)
{
if (&checkFieldInstance == fieldInstance)
continue;
if (checkFieldInstance.mDataIdx == fieldInstance->mDataIdx)
{
int checkMinMergedDataIdx = checkFieldInstance.mMergedDataIdx;
int checkMaxMergedDataIdx = checkMinMergedDataIdx + 1;
if (checkFieldInstance.GetResolvedType()->IsStruct())
checkMaxMergedDataIdx = checkMinMergedDataIdx + checkFieldInstance.mResolvedType->ToTypeInstance()->mMergedFieldDataCount;
minMergedDataIdx = BF_MIN(minMergedDataIdx, checkMinMergedDataIdx);
maxMergedDataIdx = BF_MAX(maxMergedDataIdx, checkMaxMergedDataIdx);
}
}
}
int fieldIdx = mResultLocalVarField - 1;
if (fieldIdx == -1)
{
mResultLocalVarField = minMergedDataIdx + 1;
}
else
{
fieldIdx += minMergedDataIdx;
mResultLocalVarField = fieldIdx + 1;
}
mResultLocalVarFieldCount = maxMergedDataIdx - minMergedDataIdx;
mResultLocalVarRefNode = targetSrc;
/*int fieldIdx = (mResultLocalVarIdx >> 16) - 1;
if (fieldIdx == -1)
{
mResultLocalVarField = fieldInstance->mMergedDataIdx + 1;
}
else
{
fieldIdx += fieldInstance->mMergedDataIdx;
mResultLocalVarField = fieldIdx + 1;
}
mResultLocalVarFieldCount = 1;
if (fieldInstance->mType->IsStruct())
{
auto fieldTypeInstance = fieldInstance->mType->ToTypeInstance();
mResultLocalVarFieldCount = fieldTypeInstance->mMergedFieldDataCount;
}
mResultLocalVarRefNode = targetSrc;*/
{
fieldInstance->GetDataRange(mResultLocalVarField, mResultLocalVarFieldCount);
mResultLocalVarRefNode = targetSrc;
}
if ((curCheckType->IsIncomplete()) && (!curCheckType->mNeedsMethodProcessing))
@ -15135,7 +15080,7 @@ void BfExprEvaluator::MarkResultAssigned()
//return;
auto localVar = mResultLocalVar;
int fieldIdx = mResultLocalVarField - 1;
int fieldIdx = mResultLocalVarField - 1;
int count = mResultLocalVarFieldCount;
if (fieldIdx == -1)
count = 1;