diff --git a/ChangeLog b/ChangeLog index d06cc33275..565d2154d3 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +Tue Sep 3 21:41:37 2013 Akira Matsuda + + * eval.c (Init_eval): Make Module#include and Module#prepend public + + * test/ruby/test_module.rb (class TestModule): Test for above + Tue Sep 3 21:35:19 2013 Nobuyoshi Nakada * thread_pthread.c (sys/dyntune.h): for gettune(). diff --git a/eval.c b/eval.c index 445524b0c3..2b0838a180 100644 --- a/eval.c +++ b/eval.c @@ -1592,11 +1592,12 @@ Init_eval(void) rb_define_global_function("__callee__", rb_f_callee_name, 0); rb_define_global_function("__dir__", f_current_dirname, 0); + rb_define_method(rb_cModule, "include", rb_mod_include, -1); + rb_define_method(rb_cModule, "prepend", rb_mod_prepend, -1); + rb_define_private_method(rb_cModule, "append_features", rb_mod_append_features, 1); rb_define_private_method(rb_cModule, "extend_object", rb_mod_extend_object, 1); - rb_define_private_method(rb_cModule, "include", rb_mod_include, -1); rb_define_private_method(rb_cModule, "prepend_features", rb_mod_prepend_features, 1); - rb_define_private_method(rb_cModule, "prepend", rb_mod_prepend, -1); rb_define_private_method(rb_cModule, "refine", rb_mod_refine, 1); rb_define_private_method(rb_cModule, "using", mod_using, 1); rb_undef_method(rb_cClass, "refine"); diff --git a/test/ruby/test_module.rb b/test/ruby/test_module.rb index 7d5eb99ff0..9b253b3776 100644 --- a/test/ruby/test_module.rb +++ b/test/ruby/test_module.rb @@ -351,6 +351,12 @@ class TestModule < Test::Unit::TestCase refute_equal original, b.inspect, bug6454 end + def test_public_include + assert_nothing_raised('#8846') do + Module.new.include(Module.new { def foo; end }).instance_methods == [:foo] + end + end + def test_included_modules assert_equal([], Mixin.included_modules) assert_equal([Mixin], User.included_modules) @@ -1380,6 +1386,12 @@ class TestModule < Test::Unit::TestCase assert_equal(expected, obj.m1) end + def test_public_prepend + assert_nothing_raised('#8846') do + Class.new.prepend(Module.new) + end + end + def test_prepend_inheritance bug6654 = '[ruby-core:45914]' a = labeled_module("a")