mirror of
https://github.com/beefytech/Beef.git
synced 2025-06-09 03:52:19 +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))
|
else if (auto arrayTypeRef = BfNodeDynCast<BfArrayTypeRef>(objCreateExpr->mTypeRef))
|
||||||
{
|
{
|
||||||
isArrayAlloc = true;
|
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;
|
int dimensions = 1;
|
||||||
|
|
||||||
if (arrayTypeRef->mParams.size() != 0)
|
if (arrayTypeRef->mParams.size() != 0)
|
||||||
|
@ -543,7 +570,7 @@ public:
|
||||||
}
|
}
|
||||||
dimLengthVals.push_back(dimLength.mValue);
|
dimLengthVals.push_back(dimLength.mValue);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!isRawArrayAlloc)
|
if (!isRawArrayAlloc)
|
||||||
arrayType = mModule->CreateArrayType(origResolvedTypeRef, dimensions);
|
arrayType = mModule->CreateArrayType(origResolvedTypeRef, dimensions);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue