@@ -267,21 +267,42 @@ TEST(FunctionReflectionTest, GetFunctionReturnType) {
267267}
268268
269269TEST (FunctionReflectionTest, GetFunctionNumArgs) {
270- std::vector<Decl*> Decls, SubDecls ;
270+ std::vector<Decl*> Decls, TemplateSubDecls ;
271271 std::string code = R"(
272272 void f1() {}
273273 void f2(int i, double d, long l, char ch) {}
274274 void f3(int i, double d, long l = 0, char ch = 'a') {}
275275 void f4(int i = 0, double d = 0.0, long l = 0, char ch = 'a') {}
276276 int a;
277+
278+ class MyTemplatedMethodClass {
279+ template<class A>
280+ char get_string(A, int i) {
281+ return 'A';
282+ }
283+
284+ template<class A>
285+ void get_size() {}
286+
287+ template<class A, class B>
288+ long add_size (A, int i, B) {
289+ return sizeof(A) + i;
290+ }
291+ };
292+
277293 )" ;
278294
279295 GetAllTopLevelDecls (code, Decls);
296+ GetAllSubDecls (Decls[5 ], TemplateSubDecls);
280297 EXPECT_EQ (Cpp::GetFunctionNumArgs (Decls[0 ]), (size_t ) 0 );
281298 EXPECT_EQ (Cpp::GetFunctionNumArgs (Decls[1 ]), (size_t ) 4 );
282299 EXPECT_EQ (Cpp::GetFunctionNumArgs (Decls[2 ]), (size_t ) 4 );
283300 EXPECT_EQ (Cpp::GetFunctionNumArgs (Decls[3 ]), (size_t ) 4 );
284301 EXPECT_EQ (Cpp::GetFunctionNumArgs (Decls[4 ]), 0 );
302+
303+ EXPECT_EQ (Cpp::GetFunctionNumArgs (TemplateSubDecls[1 ]), 2 );
304+ EXPECT_EQ (Cpp::GetFunctionNumArgs (TemplateSubDecls[2 ]), 0 );
305+ EXPECT_EQ (Cpp::GetFunctionNumArgs (TemplateSubDecls[3 ]), 3 );
285306}
286307
287308TEST (FunctionReflectionTest, GetFunctionRequiredArgs) {
0 commit comments