Skip to content

Commit b6e3f2a

Browse files
committed
TypeDecoder: Unwrap unlabeled one-element tuples when expanding pack expansions
1 parent 7833063 commit b6e3f2a

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
@@ -1049,12 +1049,12 @@ class TypeDecoder {
10491049
return *optError;
10501050
}
10511051

1052-
// Unwrap one-element tuples.
1052+
// Unwrap unlabeled one-element tuples.
10531053
//
10541054
// FIXME: The behavior of one-element labeled tuples is inconsistent throughout
10551055
// the different re-implementations of type substitution and pack expansion.
1056-
// if (elements.size() == 1)
1057-
// return elements[0];
1056+
if (elements.size() == 1 && labels[0].empty())
1057+
return elements[0];
10581058

10591059
return Builder.createTupleType(elements, labels);
10601060
}

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)