Skip to content

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

@KalleOlaviNiemitalo

Description

@KalleOlaviNiemitalo

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:

<Member MemberName="Create&lt;T1,T2,T3,T4,T5,T6,T7,T8&gt;">
<MemberSignature Language="C#" Value="public static (T1, T2, T3, T4, T5, T6, T7, (T8)) Create&lt;T1,T2,T3,T4,T5,T6,T7,T8&gt; (T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8);" />
<MemberSignature Language="ILAsm" Value=".method public static hidebysig valuetype System.ValueTuple`8&lt;!!T1, !!T2, !!T3, !!T4, !!T5, !!T6, !!T7, valuetype System.ValueTuple`1&lt;!!T8&gt;&gt; Create&lt;T1, T2, T3, T4, T5, T6, T7, T8&gt;(!!T1 item1, !!T2 item2, !!T3 item3, !!T4 item4, !!T5 item5, !!T6 item6, !!T7 item7, !!T8 item8) cil managed" />
<MemberSignature Language="DocId" Value="M:System.ValueTuple.Create``8(``0,``1,``2,``3,``4,``5,``6,``7)" />
<MemberSignature Language="VB.NET" Value="Public Shared Function Create(Of T1, T2, T3, T4, T5, T6, T7, T8) (item1 As T1, item2 As T2, item3 As T3, item4 As T4, item5 As T5, item6 As T6, item7 As T7, item8 As T8) As ValueTuple(Of T1, T2, T3, T4, T5, T6, T7, ValueTuple(Of T8))" />
<MemberSignature Language="F#" Value="static member Create : 'T1 * 'T2 * 'T3 * 'T4 * 'T5 * 'T6 * 'T7 * 'T8 -&gt; ValueTuple&lt;'T1, 'T2, 'T3, 'T4, 'T5, 'T6, 'T7, ValueTuple&lt;'T8&gt;&gt;" Usage="System.ValueTuple.Create (item1, item2, item3, item4, item5, item6, item7, item8)" />
<MemberSignature Language="C++ CLI" Value="public:&#xA;generic &lt;typename T1, typename T2, typename T3, typename T4, typename T5, typename T6, typename T7, typename T8&gt;&#xA; static ValueTuple&lt;T1, T2, T3, T4, T5, T6, T7, ValueTuple&lt;T8&gt;&gt; Create(T1 item1, T2 item2, T3 item3, T4 item4, T5 item5, T6 item6, T7 item7, T8 item8);" />

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions