diff options
| -rw-r--r-- | include/mruby/error.h | 3 | ||||
| -rw-r--r-- | mrbgems/mruby-kernel-ext/mrbgem.rake | 5 | ||||
| -rw-r--r-- | mrbgems/mruby-kernel-ext/src/kernel.c | 15 | ||||
| -rw-r--r-- | mrbgems/mruby-kernel-ext/test/kernel.rb | 4 | ||||
| -rw-r--r-- | src/kernel.c | 4 | ||||
| -rw-r--r-- | test/t/kernel.rb | 4 |
6 files changed, 28 insertions, 7 deletions
diff --git a/include/mruby/error.h b/include/mruby/error.h index 689cf4b8f..9dd4260c2 100644 --- a/include/mruby/error.h +++ b/include/mruby/error.h @@ -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 diff --git a/mrbgems/mruby-kernel-ext/mrbgem.rake b/mrbgems/mruby-kernel-ext/mrbgem.rake new file mode 100644 index 000000000..ab610c02b --- /dev/null +++ b/mrbgems/mruby-kernel-ext/mrbgem.rake @@ -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 diff --git a/mrbgems/mruby-kernel-ext/src/kernel.c b/mrbgems/mruby-kernel-ext/src/kernel.c new file mode 100644 index 000000000..640b62e65 --- /dev/null +++ b/mrbgems/mruby-kernel-ext/src/kernel.c @@ -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) +{ +} diff --git a/mrbgems/mruby-kernel-ext/test/kernel.rb b/mrbgems/mruby-kernel-ext/test/kernel.rb new file mode 100644 index 000000000..97ef95d54 --- /dev/null +++ b/mrbgems/mruby-kernel-ext/test/kernel.rb @@ -0,0 +1,4 @@ +assert('Kernel.fail, Kernel#fail') do + assert_raise(RuntimeError) { fail } + assert_raise(RuntimeError) { Kernel.fail } +end diff --git a/src/kernel.c b/src/kernel.c index c345ecbd1..d759661d4 100644 --- a/src/kernel.c +++ b/src/kernel.c @@ -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; @@ -1189,8 +1189,6 @@ mrb_init_kernel(mrb_state *mrb) mrb_define_method(mrb, krn, "to_s", mrb_any_to_s, MRB_ARGS_NONE()); /* 15.3.1.3.46 */ mrb_define_method(mrb, krn, "__case_eqq", mrb_obj_ceqq, MRB_ARGS_REQ(1)); /* internal */ - mrb_define_module_function(mrb, krn, "fail", mrb_f_raise, MRB_ARGS_NONE()); - mrb_include_module(mrb, mrb->object_class, mrb->kernel_module); mrb_alias_method(mrb, mrb->module_class, mrb_intern_lit(mrb, "dup"), mrb_intern_lit(mrb, "clone")); } diff --git a/test/t/kernel.rb b/test/t/kernel.rb index b405b492b..c6b65ddf7 100644 --- a/test/t/kernel.rb +++ b/test/t/kernel.rb @@ -563,7 +563,3 @@ assert('stack extend') do end end -assert('Kernel.fail, Kernel#fail') do - assert_raise(RuntimeError) { fail } - assert_raise(RuntimeError) { Kernel.fail } -end |
