From 682754649aad8a7bd6d6adb516b35a916b4eb906 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jonathan=20M=C3=BCller?= Date: Sun, 1 Oct 2017 21:23:34 +0200 Subject: [PATCH] Fix excluding last parameter --- src/code_generator.cpp | 34 ++++++++++++++++++++-------------- 1 file changed, 20 insertions(+), 14 deletions(-) diff --git a/src/code_generator.cpp b/src/code_generator.cpp index 10ff953..557c411 100644 --- a/src/code_generator.cpp +++ b/src/code_generator.cpp @@ -66,9 +66,13 @@ namespace auto need_sep = false; for (auto& child : cont) { - if (need_sep) - output << s; - need_sep = generate_code_impl(*output.generator(), child, cur_access); + auto is_excluded = output.options(child, cur_access).is_set(code_generator::exclude); + if (!is_excluded) + { + if (need_sep) + output << s; + need_sep = generate_code_impl(*output.generator(), child, cur_access); + } } return need_sep; } @@ -905,23 +909,25 @@ namespace if (!hide_if_empty) output << keyword("template") << operator_ws << punctuation("<") << bracket_ws; - auto need_sep = false; - auto first = hide_if_empty; + auto need_sep = false; + auto need_header = hide_if_empty; for (auto& param : templ.parameters()) { - if (first - && !output.options(*templ.parameters().begin(), cpp_public) - .is_set(code_generator::exclude)) + auto is_excluded = output.options(param, cpp_public).is_set(code_generator::exclude); + if (!is_excluded) { - first = false; - output << keyword("template") << operator_ws << punctuation("<") << bracket_ws; + if (need_header) + { + need_header = false; + output << keyword("template") << operator_ws << punctuation("<") << bracket_ws; + } + else if (need_sep) + output << comma; + need_sep = generate_code_impl(*output.generator(), param, cpp_public); } - else if (need_sep) - output << comma; - need_sep = generate_code_impl(*output.generator(), param, cpp_public); } - if (!hide_if_empty || need_sep) + if (!need_header) output << bracket_ws << punctuation(">") << newl; }