summaryrefslogtreecommitdiff
path: root/test/-ext-/method/test_arity.rb
diff options
context:
space:
mode:
authornobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-01-29 07:49:22 +0000
committernobu <nobu@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2013-01-29 07:49:22 +0000
commitb0c4ac77799fdf60a489f9e735158647c630865a (patch)
tree9ce10d018542a7dc056975f659fa064ce0c1c9e8 /test/-ext-/method/test_arity.rb
parent2d55537dce5fde5e3581351bd274ecabf1e284d7 (diff)
proc.c: original arity
* proc.c (rb_mod_method_arity): return original arity of the method if aliased because of visibility change, like as Method#arity. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38967 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/-ext-/method/test_arity.rb')
-rw-r--r--test/-ext-/method/test_arity.rb37
1 files changed, 37 insertions, 0 deletions
diff --git a/test/-ext-/method/test_arity.rb b/test/-ext-/method/test_arity.rb
new file mode 100644
index 0000000000..79ef23b34f
--- /dev/null
+++ b/test/-ext-/method/test_arity.rb
@@ -0,0 +1,37 @@
+require '-test-/method'
+require 'test/unit'
+
+class TestMethod < Test::Unit::TestCase
+ class TestArity < Test::Unit::TestCase
+ class A
+ def foo0()
+ end
+ def foom1(*a)
+ end
+ def foom2(a,*b)
+ end
+ def foo1(a)
+ end
+ def foo2(a,b)
+ end
+ end
+
+ class B<A
+ private :foo1, :foo2
+ end
+
+ METHODS = {foo0: 0, foo1: 1, foo2: 2, foom1: -1, foom2: -2}
+
+ def test_base
+ METHODS.each do |name, arity|
+ assert_equal(arity, Bug::Method.mod_method_arity(A, name), "A##{name}")
+ end
+ end
+
+ def test_zsuper
+ METHODS.each do |name, arity|
+ assert_equal(arity, Bug::Method.mod_method_arity(B, name), "B##{name}")
+ end
+ end
+ end
+end