Skip to content

Commit a9026b1

Browse files
committed
Generate proper display name for mixed composition arrays
1 parent 0c790f3 commit a9026b1

File tree

1 file changed

+19
-1
lines changed

1 file changed

+19
-1
lines changed

src/BenchmarkDotNet/Code/ArrayParam.cs

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,29 @@ namespace BenchmarkDotNet.Code
99
{
1010
internal static class ArrayParam
1111
{
12+
private static (string BaseElementTypeRepr, string InnerDimensions) GetDisplayString(Type arrayType)
13+
{
14+
var elemType = arrayType.GetElementType();
15+
16+
if (elemType.IsArray)
17+
{
18+
var (baseElementTypeRepr, innerDimensions) = GetDisplayString(elemType);
19+
20+
return (baseElementTypeRepr, $"[{new string(',', arrayType.GetArrayRank() - 1)}]{innerDimensions}");
21+
}
22+
23+
return (elemType.GetDisplayName(), $"[{new string(',', arrayType.GetArrayRank() - 1)}]");
24+
}
25+
1226
public static string GetDisplayString(Array array)
1327
{
1428
string dimensionRepr = string.Join(", ", Enumerable.Range(0, array.Rank).Select(array.GetLength));
1529

16-
return $"{array.GetType().GetElementType()?.GetDisplayName()}[{dimensionRepr}]";
30+
var (baseElementTypeRepr, innerDimensions) = GetDisplayString(array.GetType());
31+
32+
innerDimensions = string.Join("", innerDimensions.Split([']'], count: 2).Skip(1));
33+
34+
return $"{baseElementTypeRepr}[{dimensionRepr}]{innerDimensions}";
1735
}
1836
}
1937

0 commit comments

Comments
 (0)