Skip to content

Commit ced6342

Browse files
committed
Make variadic-class-template work
1 parent 555f96a commit ced6342

File tree

2 files changed

+20
-7
lines changed

2 files changed

+20
-7
lines changed

test/Interop/Cxx/templates/Inputs/variadic-class-template.h

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,21 @@
33

44
template <class... Ts> struct Tuple {};
55

6+
template <>
7+
struct Tuple<> {
8+
void set() {}
9+
};
10+
611
template <class T, class... Ts>
712
struct Tuple<T, Ts...> : Tuple<Ts...> {
8-
Tuple(T t, Ts... ts) : Tuple<Ts...>(ts...), t(t) {}
13+
Tuple(T t, Ts... ts) : Tuple<Ts...>(ts...), _t(t) {}
14+
15+
void set(T t, Ts... ts) { _t = t; Tuple<Ts...>::set(ts...); }
916

10-
T get() { return t; }
11-
T rest() { return Tuple<Ts...>::get(); }
17+
T first() { return _t; }
18+
Tuple<Ts...> rest() { return *this; }
1219

13-
T t;
20+
T _t;
1421
};
1522

1623
struct IntWrapper {

test/Interop/Cxx/templates/variadic-class-template.swift

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,15 @@ var TemplatesTestSuite = TestSuite("TemplatesTestSuite")
1010
TemplatesTestSuite.test("variadic-class-template") {
1111
let a = IntWrapper(value: 10)
1212
let b = IntWrapper(value: 20)
13-
let pair = Pair(a, b)
14-
expectEqual(pair.get(), 10)
15-
expectEqual(pair.rest().get(), 20)
13+
14+
var pair = Pair()
15+
pair.set(a, b)
16+
17+
var pairA = pair.first()
18+
var restB = pair.rest()
19+
var pairB = restB.first()
20+
expectEqual(pairA.getValue(), 10)
21+
expectEqual(pairB.getValue(), 20)
1622
}
1723

1824
runAllTests()

0 commit comments

Comments
 (0)