mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-10 04:22:20 +02:00
Improved emit marker when specialized type has no emission
This commit is contained in:
parent
5083f5d64e
commit
e852ba49bb
1 changed files with 20 additions and 23 deletions
|
@ -9779,32 +9779,29 @@ BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetCollapseRegions(BfCompiler* bfCo
|
||||||
auto typeInst = type->ToTypeInstance();
|
auto typeInst = type->ToTypeInstance();
|
||||||
if (typeInst == NULL)
|
if (typeInst == NULL)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (typeHashSet.Contains(typeInst->mTypeDef->GetLatest()))
|
if (typeHashSet.Contains(typeInst->mTypeDef->GetLatest()))
|
||||||
{
|
{
|
||||||
if (typeInst->IsSpecializedType())
|
if (typeInst->mCeTypeInfo == NULL)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
for (auto& kv : typeInst->mCeTypeInfo->mEmitSourceMap)
|
||||||
{
|
{
|
||||||
if (typeInst->mCeTypeInfo == NULL)
|
int partialIdx = (int)(kv.mKey >> 32);
|
||||||
continue;
|
int charIdx = (int)(kv.mKey & 0xFFFFFFFF);
|
||||||
|
|
||||||
for (auto& kv : typeInst->mCeTypeInfo->mEmitSourceMap)
|
auto typeDef = typeInst->mTypeDef;
|
||||||
{
|
if (partialIdx > 0)
|
||||||
int partialIdx = (int)(kv.mKey >> 32);
|
typeDef = typeDef->mPartials[partialIdx];
|
||||||
int charIdx = (int)(kv.mKey & 0xFFFFFFFF);
|
|
||||||
|
|
||||||
auto typeDef = typeInst->mTypeDef;
|
|
||||||
if (partialIdx > 0)
|
|
||||||
typeDef = typeDef->mPartials[partialIdx];
|
|
||||||
|
|
||||||
auto emitParser = typeInst->mTypeDef->GetLastSource()->ToParser();
|
auto emitParser = typeInst->mTypeDef->GetLastSource()->ToParser();
|
||||||
|
|
||||||
Dictionary<int, _EmitSource>* map = NULL;
|
Dictionary<int, _EmitSource>* map = NULL;
|
||||||
emitLocMap.TryAdd(typeDef->GetLatest(), NULL, &map);
|
emitLocMap.TryAdd(typeDef->GetLatest(), NULL, &map);
|
||||||
_EmitSource emitSource;
|
_EmitSource emitSource;
|
||||||
emitSource.mEmitParser = emitParser;
|
emitSource.mEmitParser = emitParser;
|
||||||
emitSource.mIsPrimary = false;
|
emitSource.mIsPrimary = false;
|
||||||
(*map)[charIdx] = emitSource;
|
(*map)[charIdx] = emitSource;
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -9820,7 +9817,7 @@ BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetCollapseRegions(BfCompiler* bfCo
|
||||||
}
|
}
|
||||||
|
|
||||||
auto _GetTypeEmbedId = [&](BfTypeInstance* typeInst, BfParser* emitParser)
|
auto _GetTypeEmbedId = [&](BfTypeInstance* typeInst, BfParser* emitParser)
|
||||||
{
|
{
|
||||||
int* keyPtr = NULL;
|
int* keyPtr = NULL;
|
||||||
int* valuePtr = NULL;
|
int* valuePtr = NULL;
|
||||||
if (foundTypeIds.TryAdd(typeInst->mTypeId, &keyPtr, &valuePtr))
|
if (foundTypeIds.TryAdd(typeInst->mTypeId, &keyPtr, &valuePtr))
|
||||||
|
@ -9829,11 +9826,11 @@ BF_EXPORT const char* BF_CALLTYPE BfCompiler_GetCollapseRegions(BfCompiler* bfCo
|
||||||
outString += "+";
|
outString += "+";
|
||||||
|
|
||||||
if (emitParser == NULL)
|
if (emitParser == NULL)
|
||||||
{
|
{
|
||||||
String typeName;
|
String typeName;
|
||||||
outString += typeInst->mTypeDef->mProject->mName;
|
outString += typeInst->mTypeDef->mProject->mName;
|
||||||
outString += ":";
|
outString += ":";
|
||||||
outString += bfCompiler->mContext->mScratchModule->TypeToString(typeInst, BfTypeNameFlags_None);
|
outString += bfCompiler->mContext->mScratchModule->TypeToString(typeInst, BfTypeNameFlags_None);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue