From e6a0dc9af65389d59292ead89ddb4cffa7a84046 Mon Sep 17 00:00:00 2001 From: Jonathan Turner Date: Tue, 30 Jun 2009 19:11:12 +0000 Subject: [PATCH] Fix with function definitions of zero params --- chaiscript/chaiscript_eval.hpp | 10 ++++++++-- chaiscript/chaiscript_parser.hpp | 3 ++- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/chaiscript/chaiscript_eval.hpp b/chaiscript/chaiscript_eval.hpp index 3aa3898a..768a3301 100644 --- a/chaiscript/chaiscript_eval.hpp +++ b/chaiscript/chaiscript_eval.hpp @@ -411,10 +411,16 @@ namespace chaiscript for (i = 0; i < node->children[1]->children.size(); ++i) { param_names.push_back(node->children[1]->children[i]->text); } + ss.register_function(boost::shared_ptr( + new dispatchkit::Dynamic_Proxy_Function(boost::bind(&eval_function, boost::ref(ss), node->children.back(), param_names, _1), node->children[1]->children.size())), node->children[0]->text); } + else { + //no parameters + ss.register_function(boost::shared_ptr( + //no parameters + new dispatchkit::Dynamic_Proxy_Function(boost::bind(&eval_function, boost::ref(ss), node->children.back(), param_names, _1), 0)), node->children[0]->text); - ss.register_function(boost::shared_ptr( - new dispatchkit::Dynamic_Proxy_Function(boost::bind(&eval_function, boost::ref(ss), node->children.back(), param_names, _1), node->children[1]->children.size())), node->children[0]->text); + } } break; case (Token_Type::Lambda) : { diff --git a/chaiscript/chaiscript_parser.hpp b/chaiscript/chaiscript_parser.hpp index 587d8734..d575a5fe 100644 --- a/chaiscript/chaiscript_parser.hpp +++ b/chaiscript/chaiscript_parser.hpp @@ -651,7 +651,8 @@ namespace chaiscript } if (Char('(')) { - if (!(Arg_List() && Char(')'))) { + Arg_List(); + if (!Char(')')) { throw Parse_Error("Incomplete function definition", File_Position(line, col), filename); } }