diff --git a/include/chaiscript/dispatchkit/dispatchkit.hpp b/include/chaiscript/dispatchkit/dispatchkit.hpp index f882b0d..dff8a22 100644 --- a/include/chaiscript/dispatchkit/dispatchkit.hpp +++ b/include/chaiscript/dispatchkit/dispatchkit.hpp @@ -782,7 +782,19 @@ namespace chaiscript Boxed_Value call_function(const std::string &t_name, const std::vector ¶ms) const { - return dispatch::dispatch(get_function(t_name), params, m_conversions); + try { + return dispatch::dispatch(get_function(t_name), params, m_conversions); + } + catch(chaiscript::exception::dispatch_error&) { + auto functions = get_function("method_missing"); + if (!functions.empty()) { + std::vector tmp_params; + tmp_params.push_back(var(t_name)); + tmp_params.insert(tmp_params.end(), params.begin(), params.end()); + return dispatch::dispatch(functions, tmp_params, m_conversions); + } + throw; + } } Boxed_Value call_function(const std::string &t_name) const