@@ -22,7 +22,14 @@ def mo4(a, *b, &c) end
22
22
def mo5 ( a , *b , c ) end
23
23
def mo6 ( a , *b , c , &d ) end
24
24
def mo7 ( a , b = nil , *c , d , &e ) end
25
- def ma1 ( ( a ) , &b ) end
25
+ def ma1 ( ( a ) , &b ) nil && a end
26
+ def mk1 ( **) end
27
+ def mk2 ( **o ) nil && o end
28
+ def mk3 ( a , **o ) nil && o end
29
+ def mk4 ( a = nil , **o ) nil && o end
30
+ def mk5 ( a , b = nil , **o ) nil && o end
31
+ def mk6 ( a , b = nil , c , **o ) nil && o end
32
+ def mk7 ( a , b = nil , *c , d , **o ) nil && o end
26
33
27
34
class Base
28
35
def foo ( ) :base end
@@ -68,6 +75,13 @@ def test_arity
68
75
assert_equal ( -2 , method ( :mo4 ) . arity )
69
76
assert_equal ( -3 , method ( :mo5 ) . arity )
70
77
assert_equal ( -3 , method ( :mo6 ) . arity )
78
+ assert_equal ( -1 , method ( :mk1 ) . arity )
79
+ assert_equal ( -1 , method ( :mk2 ) . arity )
80
+ assert_equal ( -2 , method ( :mk3 ) . arity )
81
+ assert_equal ( -1 , method ( :mk4 ) . arity )
82
+ assert_equal ( -2 , method ( :mk5 ) . arity )
83
+ assert_equal ( -3 , method ( :mk6 ) . arity )
84
+ assert_equal ( -3 , method ( :mk7 ) . arity )
71
85
end
72
86
73
87
def test_arity_special
@@ -293,7 +307,7 @@ def a
293
307
end
294
308
end
295
309
296
- assert_nothing_raised do
310
+ assert_nothing_raised ( bug8686 ) do
297
311
m . define_singleton_method ( :a , m . method ( :a ) )
298
312
end
299
313
end
@@ -456,7 +470,14 @@ def test_default_accessibility
456
470
define_method ( :pmo5 ) { |a , *b , c |}
457
471
define_method ( :pmo6 ) { |a , *b , c , &d |}
458
472
define_method ( :pmo7 ) { |a , b = nil , *c , d , &e |}
459
- define_method ( :pma1 ) { |( a ) , &b |}
473
+ define_method ( :pma1 ) { |( a ) , &b | nil && a }
474
+ define_method ( :pmk1 ) { |**|}
475
+ define_method ( :pmk2 ) { |**o |}
476
+ define_method ( :pmk3 ) { |a , **o |}
477
+ define_method ( :pmk4 ) { |a = nil , **o |}
478
+ define_method ( :pmk5 ) { |a , b = nil , **o |}
479
+ define_method ( :pmk6 ) { |a , b = nil , c , **o |}
480
+ define_method ( :pmk7 ) { |a , b = nil , *c , d , **o |}
460
481
461
482
def test_bound_parameters
462
483
assert_equal ( [ ] , method ( :m0 ) . parameters )
@@ -470,6 +491,13 @@ def test_bound_parameters
470
491
assert_equal ( [ [ :req , :a ] , [ :rest , :b ] , [ :req , :c ] , [ :block , :d ] ] , method ( :mo6 ) . parameters )
471
492
assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :rest , :c ] , [ :req , :d ] , [ :block , :e ] ] , method ( :mo7 ) . parameters )
472
493
assert_equal ( [ [ :req ] , [ :block , :b ] ] , method ( :ma1 ) . parameters )
494
+ assert_equal ( [ [ :keyrest ] ] , method ( :mk1 ) . parameters )
495
+ assert_equal ( [ [ :keyrest , :o ] ] , method ( :mk2 ) . parameters )
496
+ assert_equal ( [ [ :req , :a ] , [ :keyrest , :o ] ] , method ( :mk3 ) . parameters )
497
+ assert_equal ( [ [ :opt , :a ] , [ :keyrest , :o ] ] , method ( :mk4 ) . parameters )
498
+ assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :keyrest , :o ] ] , method ( :mk5 ) . parameters )
499
+ assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :req , :c ] , [ :keyrest , :o ] ] , method ( :mk6 ) . parameters )
500
+ assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :rest , :c ] , [ :req , :d ] , [ :keyrest , :o ] ] , method ( :mk7 ) . parameters )
473
501
end
474
502
475
503
def test_unbound_parameters
@@ -484,6 +512,13 @@ def test_unbound_parameters
484
512
assert_equal ( [ [ :req , :a ] , [ :rest , :b ] , [ :req , :c ] , [ :block , :d ] ] , self . class . instance_method ( :mo6 ) . parameters )
485
513
assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :rest , :c ] , [ :req , :d ] , [ :block , :e ] ] , self . class . instance_method ( :mo7 ) . parameters )
486
514
assert_equal ( [ [ :req ] , [ :block , :b ] ] , self . class . instance_method ( :ma1 ) . parameters )
515
+ assert_equal ( [ [ :keyrest ] ] , self . class . instance_method ( :mk1 ) . parameters )
516
+ assert_equal ( [ [ :keyrest , :o ] ] , self . class . instance_method ( :mk2 ) . parameters )
517
+ assert_equal ( [ [ :req , :a ] , [ :keyrest , :o ] ] , self . class . instance_method ( :mk3 ) . parameters )
518
+ assert_equal ( [ [ :opt , :a ] , [ :keyrest , :o ] ] , self . class . instance_method ( :mk4 ) . parameters )
519
+ assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :keyrest , :o ] ] , self . class . instance_method ( :mk5 ) . parameters )
520
+ assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :req , :c ] , [ :keyrest , :o ] ] , self . class . instance_method ( :mk6 ) . parameters )
521
+ assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :rest , :c ] , [ :req , :d ] , [ :keyrest , :o ] ] , self . class . instance_method ( :mk7 ) . parameters )
487
522
end
488
523
489
524
def test_bmethod_bound_parameters
@@ -498,6 +533,13 @@ def test_bmethod_bound_parameters
498
533
assert_equal ( [ [ :req , :a ] , [ :rest , :b ] , [ :req , :c ] , [ :block , :d ] ] , method ( :pmo6 ) . parameters )
499
534
assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :rest , :c ] , [ :req , :d ] , [ :block , :e ] ] , method ( :pmo7 ) . parameters )
500
535
assert_equal ( [ [ :req ] , [ :block , :b ] ] , method ( :pma1 ) . parameters )
536
+ assert_equal ( [ [ :keyrest ] ] , method ( :pmk1 ) . parameters )
537
+ assert_equal ( [ [ :keyrest , :o ] ] , method ( :pmk2 ) . parameters )
538
+ assert_equal ( [ [ :req , :a ] , [ :keyrest , :o ] ] , method ( :pmk3 ) . parameters )
539
+ assert_equal ( [ [ :opt , :a ] , [ :keyrest , :o ] ] , method ( :pmk4 ) . parameters )
540
+ assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :keyrest , :o ] ] , method ( :pmk5 ) . parameters )
541
+ assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :req , :c ] , [ :keyrest , :o ] ] , method ( :pmk6 ) . parameters )
542
+ assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :rest , :c ] , [ :req , :d ] , [ :keyrest , :o ] ] , method ( :pmk7 ) . parameters )
501
543
end
502
544
503
545
def test_bmethod_unbound_parameters
@@ -512,6 +554,14 @@ def test_bmethod_unbound_parameters
512
554
assert_equal ( [ [ :req , :a ] , [ :rest , :b ] , [ :req , :c ] , [ :block , :d ] ] , self . class . instance_method ( :pmo6 ) . parameters )
513
555
assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :rest , :c ] , [ :req , :d ] , [ :block , :e ] ] , self . class . instance_method ( :pmo7 ) . parameters )
514
556
assert_equal ( [ [ :req ] , [ :block , :b ] ] , self . class . instance_method ( :pma1 ) . parameters )
557
+ assert_equal ( [ [ :req ] , [ :block , :b ] ] , self . class . instance_method ( :pma1 ) . parameters )
558
+ assert_equal ( [ [ :keyrest ] ] , self . class . instance_method ( :pmk1 ) . parameters )
559
+ assert_equal ( [ [ :keyrest , :o ] ] , self . class . instance_method ( :pmk2 ) . parameters )
560
+ assert_equal ( [ [ :req , :a ] , [ :keyrest , :o ] ] , self . class . instance_method ( :pmk3 ) . parameters )
561
+ assert_equal ( [ [ :opt , :a ] , [ :keyrest , :o ] ] , self . class . instance_method ( :pmk4 ) . parameters )
562
+ assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :keyrest , :o ] ] , self . class . instance_method ( :pmk5 ) . parameters )
563
+ assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :req , :c ] , [ :keyrest , :o ] ] , self . class . instance_method ( :pmk6 ) . parameters )
564
+ assert_equal ( [ [ :req , :a ] , [ :opt , :b ] , [ :rest , :c ] , [ :req , :d ] , [ :keyrest , :o ] ] , self . class . instance_method ( :pmk7 ) . parameters )
515
565
end
516
566
517
567
def test_public_method_with_zsuper_method
@@ -659,6 +709,7 @@ def foo
659
709
prepend m
660
710
}
661
711
assert_raise ( NameError , bug7988 ) { Module . new { prepend m } . instance_method ( :bar ) }
712
+ true || c || bug7836
662
713
end
663
714
664
715
def test_gced_bmethod
0 commit comments