Skip to content

Commit 6a40363

Browse files
committed
TypeDecoder: Unwrap unlabeled one-element tuples when expanding pack expansions
1 parent 0d1eca1 commit 6a40363

File tree

2 files changed

+6
-8
lines changed

2 files changed

+6
-8
lines changed

include/swift/Demangling/TypeDecoder.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1052,12 +1052,12 @@ class TypeDecoder {
10521052
return *optError;
10531053
}
10541054

1055-
// Unwrap one-element tuples.
1055+
// Unwrap unlabeled one-element tuples.
10561056
//
10571057
// FIXME: The behavior of one-element labeled tuples is inconsistent throughout
10581058
// the different re-implementations of type substitution and pack expansion.
1059-
// if (elements.size() == 1)
1060-
// return elements[0];
1059+
if (elements.size() == 1 && labels[0].empty())
1060+
return elements[0];
10611061

10621062
return Builder.createTupleType(elements, labels);
10631063
}

test/Interpreter/variadic_generic_type_witnesses.swift

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -63,13 +63,11 @@ conformances.test("tupleWitnesses") {
6363

6464
conformances.test("singletonTupleWitnesses") {
6565
let g1 = SingletonTupleWitnesses<Bool>.self
66-
// FIXME: Unwrap one-element tuples
67-
// expectEqual(Bool.self, getA(g1))
66+
expectEqual(Bool.self, getA(g1))
6867

6968
let g2 = SingletonTupleWitnesses< >.self
70-
// FIXME: Unwrap one-element tuples
71-
// expectEqual(Int.self, getB(g2))
72-
// expectEqual(Int.self, getC(g2))
69+
expectEqual(Int.self, getB(g2))
70+
expectEqual(Int.self, getC(g2))
7371
}
7472

7573
conformances.test("functionWitnesses") {

0 commit comments

Comments
 (0)