diff --git a/BeefLibs/corlib/src/Type.bf b/BeefLibs/corlib/src/Type.bf index c93e2ce4..faafe812 100644 --- a/BeefLibs/corlib/src/Type.bf +++ b/BeefLibs/corlib/src/Type.bf @@ -1156,10 +1156,29 @@ namespace System.Reflection public override void GetFullName(String strBuffer) { - UnderlyingType.GetFullName(strBuffer); - strBuffer.Append("["); - mElementCount.ToString(strBuffer); - strBuffer.Append("]"); + List sizes = scope .(4); + + Type checkType = this; + 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}]"); + } } } diff --git a/IDEHelper/Compiler/BfModuleTypeUtils.cpp b/IDEHelper/Compiler/BfModuleTypeUtils.cpp index 52641833..c0169cad 100644 --- a/IDEHelper/Compiler/BfModuleTypeUtils.cpp +++ b/IDEHelper/Compiler/BfModuleTypeUtils.cpp @@ -14565,15 +14565,30 @@ void BfModule::DoTypeToString(StringImpl& str, BfType* resolvedType, BfTypeNameF } else if (resolvedType->IsSizedArray()) { - auto arrayType = (BfSizedArrayType*)resolvedType; - if (arrayType->mElementCount == -1) + SizedArray sizes; + + auto checkType = resolvedType; + while (true) { - DoTypeToString(str, arrayType->mElementType, typeNameFlags, genericMethodNameOverrides); - str += "[?]"; - return; + if (checkType->IsSizedArray()) + { + 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; } else if (resolvedType->IsConstExprValue())