From fac2498e0299f13dffe4f09a7dd7657fb49bf643 Mon Sep 17 00:00:00 2001 From: Nobuyoshi Nakada Date: Tue, 17 Nov 2020 21:17:19 +0900 Subject: [Bug #11213] let defined?(super) call respond_to_missing? --- test/ruby/test_defined.rb | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) (limited to 'test/ruby') diff --git a/test/ruby/test_defined.rb b/test/ruby/test_defined.rb index b22db700da..87f02055ab 100644 --- a/test/ruby/test_defined.rb +++ b/test/ruby/test_defined.rb @@ -302,6 +302,39 @@ class TestDefined < Test::Unit::TestCase assert_nil(defined?(TestDefined::Object)) end + def test_super_with_method_missing + c0 = EnvUtil.labeled_class("C0") do + attr_reader :calls + + def initialize + @calls = [] + end + + def method_missing(*args) + @calls << [:method_missing, *args] + end + + def respond_to_missing?(*args) + @calls << [:respond_to_missing?, *args] + true + end + end + + c1 = EnvUtil.labeled_class("C1", c0) do + def foo + super + defined?(super) + end + end + + c = c1.new + assert_not_nil(c.foo) + assert_equal([ + [:method_missing, :foo], + [:respond_to_missing?, :foo, true], + ], c.calls) + end + class RefinedClass end -- cgit v1.2.3