mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-08 19:48:20 +02:00
Fixed 'int[] bar = append .[1]' inferred append array case
This commit is contained in:
parent
53bcd5c6fc
commit
f0b5101a67
1 changed files with 29 additions and 2 deletions
|
@ -497,7 +497,34 @@ public:
|
|||
else if (auto arrayTypeRef = BfNodeDynCast<BfArrayTypeRef>(objCreateExpr->mTypeRef))
|
||||
{
|
||||
isArrayAlloc = true;
|
||||
origResolvedTypeRef = mModule->ResolveTypeRef(arrayTypeRef->mElementType);
|
||||
|
||||
bool handled = false;
|
||||
|
||||
if (auto dotTypeRef = BfNodeDynCast<BfDotTypeReference>(arrayTypeRef->mElementType))
|
||||
{
|
||||
if (variableDecl->mTypeRef != NULL)
|
||||
{
|
||||
auto variableType = mModule->ResolveTypeRef(variableDecl->mTypeRef);
|
||||
if (variableType != NULL)
|
||||
{
|
||||
if (variableType->IsArray())
|
||||
origResolvedTypeRef = variableType->GetUnderlyingType();
|
||||
}
|
||||
handled = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (!handled)
|
||||
{
|
||||
origResolvedTypeRef = mModule->ResolveTypeRef(arrayTypeRef->mElementType);
|
||||
}
|
||||
|
||||
if (origResolvedTypeRef == NULL)
|
||||
{
|
||||
mModule->AssertErrorState();
|
||||
return;
|
||||
}
|
||||
|
||||
int dimensions = 1;
|
||||
|
||||
if (arrayTypeRef->mParams.size() != 0)
|
||||
|
@ -543,7 +570,7 @@ public:
|
|||
}
|
||||
dimLengthVals.push_back(dimLength.mValue);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!isRawArrayAlloc)
|
||||
arrayType = mModule->CreateArrayType(origResolvedTypeRef, dimensions);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue