parent
ba492308f4
commit
f9e0193353
@ -408,6 +408,12 @@ namespace chaiscript
|
||||
m->add(fun(return_boxed_value_vector(&dispatch::Proxy_Function_Base::get_contained_functions)), "get_contained_functions");
|
||||
|
||||
|
||||
m->add(user_type<std::out_of_range>(), "out_of_range");
|
||||
m->add(user_type<std::logic_error>(), "logic_error");
|
||||
m->add(chaiscript::base_class<std::exception, std::logic_error>());
|
||||
m->add(chaiscript::base_class<std::logic_error, std::out_of_range>());
|
||||
m->add(chaiscript::base_class<std::exception, std::out_of_range>());
|
||||
|
||||
m->add(user_type<std::runtime_error>(), "runtime_error");
|
||||
m->add(chaiscript::base_class<std::exception, std::runtime_error>());
|
||||
|
||||
|
@ -438,9 +438,13 @@ namespace chaiscript
|
||||
m->add(user_type<MapType>(), type);
|
||||
|
||||
typedef typename MapType::mapped_type &(MapType::*elem_access)(const typename MapType::key_type &);
|
||||
typedef const typename MapType::mapped_type &(MapType::*const_elem_access)(const typename MapType::key_type &) const;
|
||||
|
||||
m->add(fun(static_cast<elem_access>(&MapType::operator[])), "[]");
|
||||
|
||||
m->add(fun(static_cast<elem_access>(&MapType::at)), "at");
|
||||
m->add(fun(static_cast<const_elem_access>(&MapType::at)), "at");
|
||||
|
||||
container_type<MapType>(type, m);
|
||||
default_constructible_type<MapType>(type, m);
|
||||
assignable_type<MapType>(type, m);
|
||||
|
@ -878,7 +878,7 @@ namespace chaiscript
|
||||
}
|
||||
|
||||
std::stable_sort(ordered_funcs.begin(), ordered_funcs.end(),
|
||||
[](const decltype(ordered_funcs)::const_reference &t_lhs, const decltype(ordered_funcs)::const_reference &t_rhs)
|
||||
[](decltype(ordered_funcs)::const_reference t_lhs, decltype(ordered_funcs)::const_reference t_rhs)
|
||||
{
|
||||
return t_lhs.first < t_rhs.first;
|
||||
}
|
||||
|
@ -1340,9 +1340,14 @@ namespace chaiscript
|
||||
}
|
||||
throw;
|
||||
}
|
||||
catch (const std::runtime_error &e) {
|
||||
retval = handle_exception(t_ss, Boxed_Value(std::ref(e)));
|
||||
}
|
||||
catch (const std::out_of_range &e) {
|
||||
retval = handle_exception(t_ss, Boxed_Value(std::ref(e)));
|
||||
}
|
||||
catch (const std::exception &e) {
|
||||
retval = handle_exception(t_ss, Boxed_Value(std::ref(e)));
|
||||
|
||||
}
|
||||
catch (Boxed_Value &e) {
|
||||
retval = handle_exception(t_ss, e);
|
||||
|
@ -1,2 +1,19 @@
|
||||
auto x = ["bob":2, "fred":3]
|
||||
assert_equal(3, x["fred"])
|
||||
|
||||
|
||||
try {
|
||||
auto m = ["bob":2, "fred":3];
|
||||
m.at("tom");
|
||||
assert_true(false);
|
||||
} catch (out_of_range e) {
|
||||
print("out_of_range")
|
||||
assert_true(true);
|
||||
} catch (e) {
|
||||
print("other")
|
||||
dump_object(e);
|
||||
assert_true(false);
|
||||
}
|
||||
|
||||
|
||||
assert_equal(["bob":2, "fred":3].at("fred"), 3);
|
||||
|
Loading…
x
Reference in New Issue
Block a user