summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/mruby/error.h3
-rw-r--r--mrbgems/mruby-kernel-ext/mrbgem.rake5
-rw-r--r--mrbgems/mruby-kernel-ext/src/kernel.c15
-rw-r--r--mrbgems/mruby-kernel-ext/test/kernel.rb4
-rw-r--r--src/kernel.c4
-rw-r--r--test/t/kernel.rb4
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