summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authora_matsuda <a_matsuda@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-12 12:12:38 +0000
committera_matsuda <a_matsuda@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2017-12-12 12:12:38 +0000
commit476a539ff6a22db1bdd565d7e64b57ad04bc841b (patch)
treed21854637432b33b035866c8bf21bae64565f75b
parent2ce0847e9e511f1e12157f38a5c8e246c4e950a3 (diff)
Add Method#=== that invokes #call
Patch by osyo via [Feature #14142] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@61158 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
-rw-r--r--proc.c1
-rw-r--r--test/ruby/test_method.rb6
2 files changed, 7 insertions, 0 deletions
diff --git a/proc.c b/proc.c
index ff862bee97..9dbc78ae4a 100644
--- a/proc.c
+++ b/proc.c
@@ -3124,6 +3124,7 @@ Init_Proc(void)
rb_define_method(rb_cMethod, "hash", method_hash, 0);
rb_define_method(rb_cMethod, "clone", method_clone, 0);
rb_define_method(rb_cMethod, "call", rb_method_call, -1);
+ rb_define_method(rb_cMethod, "===", rb_method_call, -1);
rb_define_method(rb_cMethod, "curry", rb_method_curry, -1);
rb_define_method(rb_cMethod, "[]", rb_method_call, -1);
rb_define_method(rb_cMethod, "arity", method_arity_m, 0);
diff --git a/test/ruby/test_method.rb b/test/ruby/test_method.rb
index 778fcdc9bc..b3d4098a1c 100644
--- a/test/ruby/test_method.rb
+++ b/test/ruby/test_method.rb
@@ -1017,4 +1017,10 @@ class TestMethod < Test::Unit::TestCase
# without trace insn
assert_separately [], "RubyVM::InstructionSequence.compile_option = {trace_instruction: false}\n" + body
end
+
+ def test_eqq
+ assert(Method.instance_methods(false).include? :===)
+ assert_operator(0.method(:<), :===, 5)
+ assert_not_operator(0.method(:<), :===, -5)
+ end
end