Skip to content

Commit e719b1e

Browse files
test: Add tests for refs to methods in templates (#286)
1 parent ecca46f commit e719b1e

File tree

2 files changed

+55
-0
lines changed

2 files changed

+55
-0
lines changed

test/index/functions/methods.cc

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,22 @@ void test_member_pointer() {
7575
M0 m{};
7676
(m.*p)();
7777
}
78+
79+
template <typename T>
80+
struct T0 {
81+
void f0() {}
82+
};
83+
84+
template <typename T>
85+
struct T1: T0<T> {
86+
void f1() {
87+
this->f0();
88+
}
89+
};
90+
91+
void test_template() {
92+
T0<int>().f0();
93+
T1<int>().f1();
94+
auto t1 = T1<int>();
95+
t1.f0();
96+
}

test/index/functions/methods.snapshot.cc

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,3 +165,39 @@
165165
// ^ reference local 1
166166
// ^ reference local 0
167167
}
168+
169+
template <typename T>
170+
// ^ definition local 2
171+
struct T0 {
172+
// ^^ definition [..] T0#
173+
void f0() {}
174+
// ^^ definition [..] T0#f0(49f6e7a06ebc5aa8).
175+
};
176+
177+
template <typename T>
178+
// ^ definition local 3
179+
struct T1: T0<T> {
180+
// ^^ definition [..] T1#
181+
// ^^ reference [..] T0#
182+
// ^ reference local 3
183+
void f1() {
184+
// ^^ definition [..] T1#f1(49f6e7a06ebc5aa8).
185+
this->f0();
186+
}
187+
};
188+
189+
void test_template() {
190+
// ^^^^^^^^^^^^^ definition [..] test_template(49f6e7a06ebc5aa8).
191+
T0<int>().f0();
192+
// ^^ reference [..] T0#
193+
// ^^ reference [..] T0#f0(49f6e7a06ebc5aa8).
194+
T1<int>().f1();
195+
// ^^ reference [..] T1#
196+
// ^^ reference [..] T1#f1(49f6e7a06ebc5aa8).
197+
auto t1 = T1<int>();
198+
// ^^ definition local 4
199+
// ^^ reference [..] T1#
200+
t1.f0();
201+
// ^^ reference local 4
202+
// ^^ reference [..] T0#f0(49f6e7a06ebc5aa8).
203+
}

0 commit comments

Comments
 (0)