@@ -21,15 +21,15 @@ namespace CuraFormulaeEngine::ast
2121{
2222namespace
2323{
24- std::optional <std::vector<eval::Value>> bindKeywordArguments (
24+ zeus::expected <std::vector<eval::Value>, eval::Error > bindKeywordArguments (
2525 const std::vector<std::string>& parameter_names,
2626 const std::vector<eval::Value>& positional_args,
2727 const std::vector<std::pair<std::string, eval::Value>>& keyword_args
2828) noexcept
2929{
3030 if (positional_args.size () > parameter_names.size ())
3131 {
32- return std:: nullopt ;
32+ return eval::Error::InvalidNumberOfArgument ;
3333 }
3434
3535 std::vector<std::optional<eval::Value>> slots (parameter_names.size ());
@@ -43,13 +43,13 @@ std::optional<std::vector<eval::Value>> bindKeywordArguments(
4343 auto it = std::find (parameter_names.begin (), parameter_names.end (), name);
4444 if (it == parameter_names.end ())
4545 {
46- return std:: nullopt ;
46+ return eval::Error::InvalidNumberOfArgument ;
4747 }
4848
4949 const auto idx = static_cast <size_t >(std::distance (parameter_names.begin (), it));
5050 if (slots[idx].has_value ())
5151 {
52- return std:: nullopt ;
52+ return eval::Error::InvalidNumberOfArgument ;
5353 }
5454 slots[idx] = value;
5555 }
@@ -72,7 +72,7 @@ std::optional<std::vector<eval::Value>> bindKeywordArguments(
7272 {
7373 if (slots[i].has_value ())
7474 {
75- return std:: nullopt ;
75+ return eval::Error::InvalidNumberOfArgument ;
7676 }
7777 }
7878
@@ -161,13 +161,13 @@ std::optional<std::vector<eval::Value>> bindKeywordArguments(
161161
162162 if (! parameter_names.has_value ())
163163 {
164- return zeus::unexpected ( eval::Error::InvalidNumberOfArguments) ;
164+ return eval::Error::InvalidNumberOfArgument ;
165165 }
166166
167167 const auto bound_args = bindKeywordArguments (parameter_names.value (), positional_arg_results, keyword_arg_results);
168168 if (! bound_args.has_value ())
169169 {
170- return zeus::unexpected (eval::Error::InvalidNumberOfArguments );
170+ return zeus::unexpected (bound_args. error () );
171171 }
172172
173173 return fn_value (bound_args.value ());
0 commit comments