Merge pull request #2204 from take-cheeze/kernel_fail

Implement Kernel.fail and Kernel#fail .
This commit is contained in:
Yukihiro "Matz" Matsumoto
2014-05-07 08:47:01 +09:00
6 changed files with 31 additions and 1 deletions
+3
View File
@@ -21,6 +21,9 @@ void mrb_print_backtrace(mrb_state *mrb);
mrb_value mrb_exc_backtrace(mrb_state *mrb, mrb_value exc);
mrb_value mrb_get_backtrace(mrb_state *mrb);
/* declaration for fail method */
mrb_value mrb_f_raise(mrb_state*, mrb_value);
#if defined(__cplusplus)
} /* extern "C" { */
#endif
+3
View File
@@ -64,4 +64,7 @@ MRuby::GemBox.new do |conf|
# Generate mruby command
conf.gem :core => "mruby-bin-mruby"
# Use extensional Kernel module
conf.gem :core => "mruby-kernel-ext"
end
+5
View File
@@ -0,0 +1,5 @@
MRuby::Gem::Specification.new('mruby-kernel-ext') do |spec|
spec.license = 'MIT'
spec.author = 'mruby developers'
spec.summary = 'extensional Kernel module'
end
+15
View File
@@ -0,0 +1,15 @@
#include <mruby.h>
#include <mruby/error.h>
void
mrb_mruby_kernel_ext_gem_init(mrb_state *mrb)
{
struct RClass *krn = mrb->kernel_module;
mrb_define_module_function(mrb, krn, "fail", mrb_f_raise, MRB_ARGS_NONE());
}
void
mrb_mruby_kernel_ext_gem_final(mrb_state *mrb)
{
}
+4
View File
@@ -0,0 +1,4 @@
assert('Kernel.fail, Kernel#fail') do
assert_raise(RuntimeError) { fail }
assert_raise(RuntimeError) { Kernel.fail }
end
+1 -1
View File
@@ -924,7 +924,7 @@ mrb_obj_public_methods(mrb_state *mrb, mrb_value self)
* raise "Failed to create socket"
* raise ArgumentError, "No parameters", caller
*/
static mrb_value
mrb_value
mrb_f_raise(mrb_state *mrb, mrb_value self)
{
mrb_value a[2], exc;