@@ -836,16 +836,40 @@ TEST(FunctionReflectionTest, GetFunctionArgDefault) {
836836 std::string code = R"(
837837 void f1(int i, double d = 4.0, const char *s = "default", char ch = 'c') {}
838838 void f2(float i = 0.0, double d = 3.123, long m = 34126) {}
839+
840+ template<class A, class B>
841+ long get_size(A, B, int i = 0) {}
842+
843+ template<class A = int, class B = char>
844+ long get_size(int i, A a = A(), B b = B()) {}
845+
846+ template<class A>
847+ void get_size(long k, A, char ch = 'a', double l = 0.0) {}
848+
839849 )" ;
840850
841851 GetAllTopLevelDecls (code, Decls);
852+
842853 EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[0 ], 0 ), " " );
843854 EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[0 ], 1 ), " 4." );
844855 EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[0 ], 2 ), " \" default\" " );
845856 EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[0 ], 3 ), " \' c\' " );
846857 EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[1 ], 0 ), " 0." );
847858 EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[1 ], 1 ), " 3.123" );
848859 EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[1 ], 2 ), " 34126" );
860+
861+ EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[2 ], 0 ), " " );
862+ EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[2 ], 1 ), " " );
863+ EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[2 ], 2 ), " 0" );
864+
865+ EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[3 ], 0 ), " " );
866+ EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[3 ], 1 ), " A()" );
867+ EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[3 ], 2 ), " B()" );
868+
869+ EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[4 ], 0 ), " " );
870+ EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[4 ], 1 ), " " );
871+ EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[4 ], 2 ), " \' a\' " );
872+ EXPECT_EQ (Cpp::GetFunctionArgDefault (Decls[4 ], 3 ), " 0." );
849873}
850874
851875TEST (FunctionReflectionTest, Construct) {
0 commit comments