From 6a47846b84fda4fa44464aa17fc0745d5aeeb775 Mon Sep 17 00:00:00 2001 From: Jason Turner Date: Sat, 19 Sep 2009 12:15:17 +0000 Subject: [PATCH] Add runtime_error support, for throwing a normal std::exception. Also, move bootstrap for Dynamic_Object into its proper place. --- include/chaiscript/dispatchkit/bootstrap.hpp | 10 ++++++++++ include/chaiscript/language/chaiscript_engine.hpp | 3 --- unittests/runtime_error.chai | 6 ++++++ unittests/runtime_error.txt | 1 + 4 files changed, 17 insertions(+), 3 deletions(-) create mode 100644 unittests/runtime_error.chai create mode 100644 unittests/runtime_error.txt diff --git a/include/chaiscript/dispatchkit/bootstrap.hpp b/include/chaiscript/dispatchkit/bootstrap.hpp index b79d132..274822d 100644 --- a/include/chaiscript/dispatchkit/bootstrap.hpp +++ b/include/chaiscript/dispatchkit/bootstrap.hpp @@ -8,6 +8,7 @@ #define __bootstrap_hpp__ #include "dispatchkit.hpp" +#include "dynamic_object.hpp" #include "register_function.hpp" namespace chaiscript @@ -666,6 +667,15 @@ namespace chaiscript m->add(user_type(), "function"); m->add(user_type(), "exception"); + m->add(user_type(), "runtime_error"); + m->add(constructor(), "runtime_error"); + m->add(fun(boost::function(&what)), "what"); + + m->add(user_type(), "Dynamic_Object"); + copy_constructor("Dynamic_Object", m); + + + basic_constructors("bool", m); oper_assign(m); oper_assign(m); diff --git a/include/chaiscript/language/chaiscript_engine.hpp b/include/chaiscript/language/chaiscript_engine.hpp index f59ce68..a0b51e4 100644 --- a/include/chaiscript/language/chaiscript_engine.hpp +++ b/include/chaiscript/language/chaiscript_engine.hpp @@ -465,9 +465,6 @@ namespace chaiscript new Dynamic_Proxy_Function(boost::bind(&ChaiScript_System::internal_eval, boost::ref(*this), _1), 1)), "eval"); - engine.add(user_type(), "Dynamic_Object"); - engine.add(chaiscript::bootstrap::copy_constructor("Dynamic_Object")); - diff --git a/unittests/runtime_error.chai b/unittests/runtime_error.chai new file mode 100644 index 0000000..e27c839 --- /dev/null +++ b/unittests/runtime_error.chai @@ -0,0 +1,6 @@ +try { + throw(runtime_error("error")) +} +catch(e) { + print(e.what()) +} diff --git a/unittests/runtime_error.txt b/unittests/runtime_error.txt new file mode 100644 index 0000000..8276753 --- /dev/null +++ b/unittests/runtime_error.txt @@ -0,0 +1 @@ +error