diff --git a/regression-tests/pure2-variadics.cpp2 b/regression-tests/pure2-variadics.cpp2 index 4f4a0df38..eed386f52 100644 --- a/regression-tests/pure2-variadics.cpp2 +++ b/regression-tests/pure2-variadics.cpp2 @@ -2,6 +2,8 @@ // Type pack expansion x: type = { tup: std::tuple = (); + + func: () = {} } left_fold_print: (inout out: std::ostream, args...: Args) = { diff --git a/regression-tests/test-results/pure2-variadics.cpp b/regression-tests/test-results/pure2-variadics.cpp index a15e697c8..be8cf84d6 100644 --- a/regression-tests/test-results/pure2-variadics.cpp +++ b/regression-tests/test-results/pure2-variadics.cpp @@ -20,19 +20,21 @@ template class x; #line 3 "pure2-variadics.cpp2" template class x { private: std::tuple tup {}; + + public: static auto func() -> void; public: x() = default; public: x(x const&) = delete; /* No 'that' constructor, suppress copy */ public: auto operator=(x const&) -> void = delete; -#line 5 "pure2-variadics.cpp2" +#line 7 "pure2-variadics.cpp2" }; template auto left_fold_print(std::ostream& out, Args const& ...args) -> void; -#line 12 "pure2-variadics.cpp2" +#line 14 "pure2-variadics.cpp2" template [[nodiscard]] auto all(Args const& ...args) -> bool; -#line 16 "pure2-variadics.cpp2" +#line 18 "pure2-variadics.cpp2" template [[nodiscard]] auto make_string(Args&& ...args) -> auto; template [[nodiscard]] auto make(Args&& ...args) -> auto; @@ -43,7 +45,10 @@ auto main() -> int; #line 1 "pure2-variadics.cpp2" -#line 7 "pure2-variadics.cpp2" +#line 6 "pure2-variadics.cpp2" + template auto x::func() -> void{} + +#line 9 "pure2-variadics.cpp2" template auto left_fold_print(std::ostream& out, Args const& ...args) -> void{ // Binary left fold expression (out << ... << args); @@ -59,7 +64,7 @@ template [[nodiscard]] auto make(Args&& ...args) auto main() -> int { - x auto_22_5 {}; + x auto_24_5 {}; std::cout << std::string("xyzzy", 3) << "\n"; std::cout << make_string("plugh", cpp2::u8{3}) << "\n"; diff --git a/source/to_cpp1.h b/source/to_cpp1.h index d4cfd47c1..773c64d10 100644 --- a/source/to_cpp1.h +++ b/source/to_cpp1.h @@ -4888,6 +4888,9 @@ class cppfront for (auto& tparam : parent->template_parameters->parameters) { assert (tparam->has_name()); list += separator + tparam->name()->to_string(); + if(tparam->declaration->is_variadic) { + list += "..."; + } separator = ","; } list += ">";