diff options
-rw-r--r-- | insns.def | 2 | ||||
-rw-r--r-- | test/ruby/test_method.rb | 13 |
2 files changed, 14 insertions, 1 deletions
@@ -699,7 +699,7 @@ checktype ret = (TYPE(val) == (int)type) ? Qtrue : Qfalse; } -/* get method reference. */ +/* get frozen method reference. */ DEFINE_INSN methodref (ID id) diff --git a/test/ruby/test_method.rb b/test/ruby/test_method.rb index 1d59ddb594..d85f9010c7 100644 --- a/test/ruby/test_method.rb +++ b/test/ruby/test_method.rb @@ -1141,6 +1141,19 @@ class TestMethod < Test::Unit::TestCase assert_nil(o.method(:foo)) end + def test_method_reference_freeze_state + m = 1.:succ + assert_predicate(m, :frozen?, "dot-symbol method reference should be frozen") + m = 1.method(:succ) + assert_not_predicate(m, :frozen?, "#method method reference should not be frozen") + o = Object.new + def o.foo; 42; end + m = o.:foo + assert_predicate(m, :frozen?, "dot-symbol method reference should be frozen") + m = o.method(:foo) + assert_not_predicate(m, :frozen?, "#method method reference should not be frozen") + end + def test_umethod_bind_call foo = Base.instance_method(:foo) assert_equal(:base, foo.bind_call(Base.new)) |