1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 03:52:19 +02:00

Reworked !hasRequiredTypes state

This commit is contained in:
Brian Fiete 2021-02-07 06:00:34 -08:00
parent 5f5c752f5d
commit eddbf7a984
11 changed files with 104 additions and 77 deletions

View file

@ -5979,11 +5979,14 @@ BfArrayType* BfModule::CreateArrayType(BfType* resolvedType, int dimensions)
BF_ASSERT(!resolvedType->IsVar());
BF_ASSERT(!resolvedType->IsIntUnknown());
auto arrayTypeDef = mCompiler->GetArrayTypeDef(dimensions);
if (arrayTypeDef == NULL)
return NULL;
auto arrayType = mContext->mArrayTypePool.Get();
delete arrayType->mGenericTypeInfo;
arrayType->mGenericTypeInfo = new BfGenericTypeInfo();
arrayType->mContext = mContext;
arrayType->mTypeDef = mCompiler->GetArrayTypeDef(dimensions);
arrayType->mTypeDef = arrayTypeDef;
arrayType->mDimensions = dimensions;
arrayType->mGenericTypeInfo->mTypeGenericArguments.clear();
arrayType->mGenericTypeInfo->mTypeGenericArguments.push_back(resolvedType);
@ -9745,12 +9748,13 @@ BfType* BfModule::ResolveTypeRef(BfTypeReference* typeRef, BfPopulateType popula
}
auto elementType = ResolveTypeRef(arrayTypeRef->mElementType, BfPopulateType_Declaration, BfResolveTypeRefFlag_AllowGenericParamConstValue);
if (elementType == NULL)
auto arrayTypeDef = mCompiler->GetArrayTypeDef(arrayTypeRef->mDimensions);
if ((elementType == NULL) || (arrayTypeDef == NULL))
{
mContext->mResolvedTypes.RemoveEntry(resolvedEntry);
return ResolveTypeResult(typeRef, NULL, populateType, resolveFlags);
}
if ((arrayTypeRef->mDimensions == 1) && (arrayTypeRef->mParams.size() == 1))
{
intptr elementCount = -1;
@ -9818,7 +9822,7 @@ BfType* BfModule::ResolveTypeRef(BfTypeReference* typeRef, BfPopulateType popula
arrayType->mGenericTypeInfo = new BfGenericTypeInfo();
arrayType->mContext = mContext;
arrayType->mDimensions = arrayTypeRef->mDimensions;
arrayType->mTypeDef = mCompiler->GetArrayTypeDef(arrayType->mDimensions);
arrayType->mTypeDef = arrayTypeDef;
arrayType->mGenericTypeInfo->mTypeGenericArguments.push_back(elementType);
resolvedEntry->mValue = arrayType;