mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 19:48:20 +02:00
Fixed reflection issue
This commit is contained in:
parent
2226e51977
commit
6e6487d951
4 changed files with 26 additions and 10 deletions
|
@ -452,6 +452,7 @@ bool BfModule::InitType(BfType* resolvedTypeRef, BfPopulateType populateType)
|
|||
mContext->mSavedTypeData[savedTypeData->mTypeId] = NULL;
|
||||
|
||||
resolvedTypeRef->mTypeId = savedTypeData->mTypeId;
|
||||
|
||||
BfLogSysM("Using mSavedTypeData for %p %s\n", resolvedTypeRef, typeName.c_str());
|
||||
if (typeInst != NULL)
|
||||
{
|
||||
|
@ -5047,11 +5048,12 @@ BfTypeInstance* BfModule::CreateTupleType(const BfTypeVector& fieldTypes, const
|
|||
{
|
||||
auto baseType = (BfTypeInstance*)ResolveTypeDef(mContext->mCompiler->mValueTypeTypeDef);
|
||||
|
||||
BfTypeInstance* tupleType = NULL;
|
||||
BfTupleType* tupleType = NULL;
|
||||
|
||||
auto actualTupleType = mContext->mTupleTypePool.Get();
|
||||
actualTupleType->Init(baseType->mTypeDef->mProject, baseType);
|
||||
|
||||
bool isUnspecialzied = false;
|
||||
for (int fieldIdx = 0; fieldIdx < (int)fieldTypes.size(); fieldIdx++)
|
||||
{
|
||||
String fieldName;
|
||||
|
@ -5060,6 +5062,10 @@ BfTypeInstance* BfModule::CreateTupleType(const BfTypeVector& fieldTypes, const
|
|||
if (fieldName.empty())
|
||||
fieldName = StrFormat("%d", fieldIdx);
|
||||
BfFieldDef* fieldDef = actualTupleType->AddField(fieldName);
|
||||
|
||||
auto fieldType = fieldTypes[fieldIdx];
|
||||
if (fieldType->IsUnspecializedType())
|
||||
isUnspecialzied = true;
|
||||
}
|
||||
tupleType = actualTupleType;
|
||||
|
||||
|
@ -5072,6 +5078,14 @@ BfTypeInstance* BfModule::CreateTupleType(const BfTypeVector& fieldTypes, const
|
|||
fieldInstance->SetResolvedType(fieldTypes[fieldIdx]);
|
||||
fieldInstance->mOwner = tupleType;
|
||||
}
|
||||
|
||||
tupleType->mIsUnspecializedType = false;
|
||||
tupleType->mIsUnspecializedTypeVariation = false;
|
||||
if (isUnspecialzied)
|
||||
{
|
||||
tupleType->mIsUnspecializedType = true;
|
||||
tupleType->mIsUnspecializedTypeVariation = true;
|
||||
}
|
||||
|
||||
auto resolvedTupleType = ResolveType(tupleType);
|
||||
if (resolvedTupleType != tupleType)
|
||||
|
@ -5859,12 +5873,6 @@ BfType* BfModule::ResolveGenericType(BfType* unspecializedType, BfTypeVector* ty
|
|||
actualTupleType->mGenericTypeInfo->mIsUnspecializedVariation = true;
|
||||
}
|
||||
|
||||
if (isUnspecialized)
|
||||
{
|
||||
actualTupleType->mGenericTypeInfo->mIsUnspecialized = true;
|
||||
actualTupleType->mGenericTypeInfo->mIsUnspecializedVariation = true;
|
||||
}
|
||||
|
||||
actualTupleType->mIsUnspecializedType = actualTupleType->mGenericTypeInfo->mIsUnspecialized;
|
||||
actualTupleType->mIsUnspecializedTypeVariation = actualTupleType->mGenericTypeInfo->mIsUnspecializedVariation;
|
||||
actualTupleType->Init(baseType->mTypeDef->mProject, baseType);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue