@@ -339,21 +339,38 @@ TEST(FunctionReflectionTest, GetFunctionNumArgs) {
339
339
}
340
340
341
341
TEST (FunctionReflectionTest, GetFunctionRequiredArgs) {
342
- std::vector<Decl*> Decls, SubDecls ;
342
+ std::vector<Decl*> Decls, TemplateSubDecls ;
343
343
std::string code = R"(
344
344
void f1() {}
345
345
void f2(int i, double d, long l, char ch) {}
346
346
void f3(int i, double d, long l = 0, char ch = 'a') {}
347
347
void f4(int i = 0, double d = 0.0, long l = 0, char ch = 'a') {}
348
348
int a;
349
+
350
+ class MyTemplatedMethodClass {
351
+ template<class A, class B>
352
+ long get_size(A, B, int i = 0) {}
353
+
354
+ template<class A = int, class B = char>
355
+ long get_size(int i, A a = A(), B b = B()) {}
356
+
357
+ template<class A>
358
+ void get_size(long k, A, char ch = 'a', double l = 0.0) {}
359
+ };
349
360
)" ;
350
361
351
362
GetAllTopLevelDecls (code, Decls);
363
+ GetAllSubDecls (Decls[5 ], TemplateSubDecls);
364
+
352
365
EXPECT_EQ (Cpp::GetFunctionRequiredArgs (Decls[0 ]), (size_t ) 0 );
353
366
EXPECT_EQ (Cpp::GetFunctionRequiredArgs (Decls[1 ]), (size_t ) 4 );
354
367
EXPECT_EQ (Cpp::GetFunctionRequiredArgs (Decls[2 ]), (size_t ) 2 );
355
368
EXPECT_EQ (Cpp::GetFunctionRequiredArgs (Decls[3 ]), (size_t ) 0 );
356
369
EXPECT_EQ (Cpp::GetFunctionRequiredArgs (Decls[4 ]), 0 );
370
+
371
+ EXPECT_EQ (Cpp::GetFunctionRequiredArgs (TemplateSubDecls[1 ]), 2 );
372
+ EXPECT_EQ (Cpp::GetFunctionRequiredArgs (TemplateSubDecls[2 ]), 1 );
373
+ EXPECT_EQ (Cpp::GetFunctionRequiredArgs (TemplateSubDecls[3 ]), 2 );
357
374
}
358
375
359
376
TEST (FunctionReflectionTest, GetFunctionArgType) {
0 commit comments