1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-09 20:12:21 +02:00

Multi-dimensional sized array name printing fix

This commit is contained in:
Brian Fiete 2022-02-21 05:50:08 -08:00
parent 88121831e2
commit ad7ef19004
2 changed files with 45 additions and 11 deletions

View file

@ -1156,10 +1156,29 @@ namespace System.Reflection
public override void GetFullName(String strBuffer) public override void GetFullName(String strBuffer)
{ {
UnderlyingType.GetFullName(strBuffer); List<int> sizes = scope .(4);
strBuffer.Append("[");
mElementCount.ToString(strBuffer); Type checkType = this;
strBuffer.Append("]"); while (true)
{
if (var arrayType = checkType as SizedArrayType)
{
sizes.Add(arrayType.mElementCount);
checkType = arrayType.UnderlyingType;
continue;
}
checkType.GetFullName(strBuffer);
break;
}
for (var size in sizes)
{
if (size == -1)
strBuffer.Append("[?]");
else
strBuffer.AppendF($"[{size}]");
}
} }
} }

View file

@ -14565,15 +14565,30 @@ void BfModule::DoTypeToString(StringImpl& str, BfType* resolvedType, BfTypeNameF
} }
else if (resolvedType->IsSizedArray()) else if (resolvedType->IsSizedArray())
{ {
auto arrayType = (BfSizedArrayType*)resolvedType; SizedArray<intptr, 4> sizes;
if (arrayType->mElementCount == -1)
auto checkType = resolvedType;
while (true)
{ {
DoTypeToString(str, arrayType->mElementType, typeNameFlags, genericMethodNameOverrides); if (checkType->IsSizedArray())
str += "[?]"; {
return; auto arrayType = (BfSizedArrayType*)checkType;
sizes.Add(arrayType->mElementCount);
checkType = arrayType->mElementType;
continue;
}
DoTypeToString(str, checkType, typeNameFlags, genericMethodNameOverrides);
break;
}
for (int i = 0; i < (int)sizes.mSize; i++)
{
if (sizes[i] == -1)
str += "[?]";
else
str += StrFormat("[%d]", sizes[i]);
} }
DoTypeToString(str, arrayType->mElementType, typeNameFlags, genericMethodNameOverrides);
str += StrFormat("[%d]", arrayType->mElementCount);
return; return;
} }
else if (resolvedType->IsConstExprValue()) else if (resolvedType->IsConstExprValue())