dotnet-api-docs icon indicating copy to clipboard operation
dotnet-api-docs copied to clipboard

Return type of ValueTuple.Create with 8 arguments is rendered incorrectly

Open KalleOlaviNiemitalo opened this issue 2 months ago • 5 comments

Type of issue

Other (describe below)

Description

At https://learn.microsoft.com/en-us/dotnet/api/system.valuetuple.create?view=net-9.0#system-valuetuple-create-8(-0-1-2-3-4-5-6-7), the method signature is rendered as:

public static(T1, T2, T3, T4, T5, T6, T7,(T8)) Create<T1,T2,T3,T4,T5,T6,T7,T8>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8);

The return type should not have parentheses around T8:

public static(T1, T2, T3, T4, T5, T6, T7, T8) Create<T1,T2,T3,T4,T5,T6,T7,T8>(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8);

According to C# 7 §8.3.11, (T1, T2, T3, T4, T5, T6, T7, T8) means ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<T8>>. This is the actual return type of the eight-parameter ValueTuple.Create method. In this type, the outer structure is ValueTuple<T1, T2, T3, T4, T5, T6, T7, TRest>, whose TRest type parameter requires a tuple type.

(T1, T2, T3, T4, T5, T6, T7, (T8)) means ValueTuple<T1, T2, T3, T4, T5, T6, T7, ValueTuple<ValueTuple<T8>>>. That is not what ValueTuple.Create returns.

In the following member signatures, C# is wrong, but the others are correct because they use generic type syntax rather than tuple type syntax: https://github.com/dotnet/dotnet-api-docs/blob/9ba1f1b43dfb2b9bc49eb84a2023b1b1ca0c82df/xml/System/ValueTuple.xml#L953-L959

Page URL

https://learn.microsoft.com/en-us/dotnet/api/system.valuetuple.create?view=net-9.0#system-valuetuple-create-8(-0-1-2-3-4-5-6-7)

Content source URL

https://github.com/dotnet/dotnet-api-docs/blob/main/xml/System/ValueTuple.xml

Document Version Independent Id

ba9ac4e4-a738-7a26-4841-113a47f798b8

Platform Id

32cda35d-8dc0-8c5a-710e-541512f6cd40

Article author

@dotnet-bot

KalleOlaviNiemitalo avatar Oct 19 '25 12:10 KalleOlaviNiemitalo