From c0dee98f4e1f3628afdb35de16928e3a1cfe6903 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Wed, 12 Nov 2025 16:49:31 +0100 Subject: [PATCH 1/3] Refactor: change function signature --- include/argparse.hpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index 0573415..aa194f3 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -844,7 +844,7 @@ namespace argparse { if (impl.has_nargs_number()) { - parse_arguments_number(impl, value, name_for_error, tokens); + value = parse_arguments_number(impl, name_for_error, tokens); } else { @@ -878,7 +878,7 @@ namespace argparse } private: - auto parse_arguments_number(ArgumentImpl const & impl, std::any & value, std::function name_for_error, std::ranges::view auto tokens) const -> void + auto parse_arguments_number(ArgumentImpl const & impl, std::function name_for_error, std::ranges::view auto tokens) const -> std::any { auto const nargs_number = impl.get_nargs_number(); auto const values = impl.consume_tokens(tokens | std::views::take(nargs_number), name_for_error); @@ -886,7 +886,7 @@ namespace argparse { throw parsing_error(std::format("argument {}: expected {} argument{}", impl.get_joined_names(), std::to_string(nargs_number), nargs_number > 1 ? "s" : "")); } - value = impl.get_transformed(values); + return impl.get_transformed(values); } auto parse_arguments_option(ArgumentImpl const & impl, std::any & value, std::function name_for_error, std::ranges::view auto tokens) const -> void From 4275254a18e694d32abd4ca26112e4872b92bc83 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Wed, 12 Nov 2025 16:54:31 +0100 Subject: [PATCH 2/3] Refactor: change function signature --- include/argparse.hpp | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index aa194f3..d776cdc 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -848,7 +848,7 @@ namespace argparse } else { - parse_arguments_option(impl, value, name_for_error, tokens); + value = parse_arguments_option(impl, name_for_error, tokens); } } else @@ -889,7 +889,7 @@ namespace argparse return impl.get_transformed(values); } - auto parse_arguments_option(ArgumentImpl const & impl, std::any & value, std::function name_for_error, std::ranges::view auto tokens) const -> void + auto parse_arguments_option(ArgumentImpl const & impl, std::function name_for_error, std::ranges::view auto tokens) const -> std::any { switch (impl.get_nargs_option()) { @@ -897,32 +897,31 @@ namespace argparse { if (!tokens.empty()) { - value = impl.consume_token(tokens.front(), name_for_error); + return impl.consume_token(tokens.front(), name_for_error); } else { - value = impl.get_const(); + return impl.get_const(); } - break; } case zero_or_more: { - value = impl.parse_arguments(tokens, name_for_error); - break; + return impl.parse_arguments(tokens, name_for_error); } case one_or_more: { if (auto const values = impl.consume_tokens(tokens, name_for_error); !values.empty()) { - value = impl.get_transformed(values); + return impl.get_transformed(values); } else { throw parsing_error(std::format("argument {}: expected at least one argument", impl.get_joined_names())); } - break; } } + + std::unreachable(); } }; From 29d4b6b8e2c9473a808a546ab63c7bca94412a88 Mon Sep 17 00:00:00 2001 From: Krzysiek Karbowiak Date: Wed, 12 Nov 2025 17:14:01 +0100 Subject: [PATCH 3/3] Refactor: change function signature --- include/argparse.hpp | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/include/argparse.hpp b/include/argparse.hpp index d776cdc..c411c3b 100644 --- a/include/argparse.hpp +++ b/include/argparse.hpp @@ -1108,7 +1108,7 @@ namespace argparse class PositionalArgument final : public Argument, public Formattable { private: - auto parse_arguments_option(std::ranges::view auto tokens) -> void + auto parse_arguments_option(std::ranges::view auto tokens) -> std::any { switch (get_nargs_option()) { @@ -1116,28 +1116,31 @@ namespace argparse { if (!tokens.empty()) { - m_value = m_impl.consume_token(tokens.front(), get_name_for_error()); + return m_impl.consume_token(tokens.front(), get_name_for_error()); } else { - m_value = m_impl.get_default(); + return m_impl.get_default(); } - break; } case zero_or_more: { - m_value = m_impl.parse_arguments(tokens, get_name_for_error()); - break; + return m_impl.parse_arguments(tokens, get_name_for_error()); } case one_or_more: { if (auto const values = m_impl.consume_tokens(tokens, get_name_for_error()); !values.empty()) { - m_value = m_impl.get_transformed(values); + return m_impl.get_transformed(values); + } + else + { + return std::any(); } - break; } } + + std::unreachable(); } auto get_name_for_error() const -> std::function @@ -1201,7 +1204,7 @@ namespace argparse } else { - parse_arguments_option(consumable); + m_value = parse_arguments_option(consumable); } } else