@@ -312,7 +312,7 @@ def bar; end
312312 end
313313
314314 # With the array version
315- assert_send_type '(Array[String ]) -> Array[String ]' ,
315+ assert_send_type '(Array[Symbol ]) -> Array[Symbol ]' ,
316316 mod , visibility , [ :foo ]
317317 with_string 'foo' do |foo |
318318 assert_send_type '[T < _ToStr] (Array[T]) -> Array[T]' ,
@@ -346,8 +346,10 @@ def self.foo; end
346346 def self . bar ; end
347347 end
348348
349- assert_send_type '() -> Module' ,
350- mod , :private_class_method
349+ disable_verbose do
350+ assert_send_type '() -> Module' ,
351+ mod , :private_class_method
352+ end
351353
352354 with_interned :foo do |foo |
353355 assert_send_type '(interned) -> Module' ,
@@ -368,8 +370,10 @@ def self.foo; end
368370 def self . bar ; end
369371 end
370372
371- assert_send_type '() -> Module' ,
372- mod , :public_class_method
373+ disable_verbose do
374+ assert_send_type '() -> Module' ,
375+ mod , :public_class_method
376+ end
373377
374378 with_interned :foo do |foo |
375379 assert_send_type '(interned) -> Module' ,
@@ -455,8 +459,8 @@ def test_attr_accessor
455459
456460 def test_ruby2_keywords
457461 mod = Module . new do
458- def a ( *x ) = 3
459- def b ( *x ) = 3
462+ def foo ( *x ) = 3
463+ def bar ( *x ) = 3
460464 end
461465
462466 assert_visibility :private ,
@@ -612,7 +616,22 @@ def test_const_get
612616 end
613617
614618 def test_const_missing
615- omit 'todo'
619+ assert_type_meth = method ( :assert_type )
620+ mod = Module . new do
621+ define_singleton_method :const_missing do |name |
622+ assert_type_meth . call ( 'Symbol' , name )
623+ 1 r
624+ end
625+ end
626+
627+ assert_type 'Rational' ,
628+ mod ::Foo # Test the `::` syntax works
629+
630+ # Make sure that `const_get` also always passes a symbol
631+ with_interned :Foo do |name |
632+ assert_send_type '(interned) -> Rational' ,
633+ mod , :const_get , name
634+ end
616635 end
617636
618637 def test_const_set
@@ -625,7 +644,19 @@ def test_const_set
625644 end
626645
627646 def test_define_method
628- omit 'todo'
647+ with_interned :meth do |name |
648+ assert_send_type '(interned, ^(?) [self: top] -> untyped) -> Symbol' ,
649+ Module . new , :define_method , name , proc { }
650+
651+ assert_send_type '(interned, Method) -> Symbol' ,
652+ Module . new , :define_method , name , method ( :puts )
653+
654+ assert_send_type '(interned, UnboundMethod) -> Symbol' ,
655+ Module . new , :define_method , name , method ( :puts ) . unbind
656+
657+ assert_send_type '(interned) { (?) [self: top] -> untyped } -> Symbol' ,
658+ Module . new , :define_method , name do end
659+ end
629660 end
630661
631662 def constant_visibility_helper ( method )
@@ -668,11 +699,22 @@ def test_included_modules
668699 end
669700
670701 def test_initialize
671- omit 'todo'
702+ assert_send_type '() -> void' ,
703+ Module . new , :initialize
704+
705+ assert_send_type '() { (Module) [self: Module] -> void } -> void' ,
706+ Module . new , :initialize do end
672707 end
673708
674709 def test_initialize_clone
675- omit 'todo'
710+ assert_send_type '(Module) -> void' ,
711+ Module . new , :initialize_clone , Module . new
712+
713+
714+ with_bool . and_nil do |freeze |
715+ assert_send_type '(Module, freeze: bool?) -> void' ,
716+ Module . new , :initialize_clone , Module . new , freeze : freeze
717+ end
676718 end
677719
678720 def test_instance_method
@@ -1027,50 +1069,74 @@ def foo = 4
10271069 end
10281070
10291071 def test_append_features
1030- omit 'todo' # private
1072+ assert_visibility :private ,
1073+ Module . new , :append_features
1074+ omit 'todo'
10311075 end
10321076
10331077 def test_const_added
1034- omit 'todo' # private
1078+ assert_visibility :private ,
1079+ Module . new , :const_added
1080+ omit 'todo'
10351081 end
10361082
10371083 def test_extend_object
1038- omit 'todo' # private
1084+ assert_visibility :private ,
1085+ Module . new , :extend_object
1086+ omit 'todo'
10391087 end
10401088
10411089 def test_extended
1042- omit 'todo' # private
1090+ assert_visibility :private ,
1091+ Module . new , :extended
1092+ omit 'todo'
10431093 end
10441094
10451095 def test_included
1046- omit 'todo' # private
1096+ assert_visibility :private ,
1097+ Module . new , :included
1098+ omit 'todo'
10471099 end
10481100
10491101 def test_method_added
1050- omit 'todo' # private
1102+ assert_visibility :private ,
1103+ Module . new , :method_added
1104+ omit 'todo'
10511105 end
10521106
10531107 def test_method_removed
1054- omit 'todo' # private
1108+ assert_visibility :private ,
1109+ Module . new , :method_removed
1110+ omit 'todo'
10551111 end
10561112
10571113 def test_method_undefined
1058- omit 'todo' # private
1114+ assert_visibility :private ,
1115+ Module . new , :method_undefined
1116+ omit 'todo'
10591117 end
10601118
10611119 def test_prepend_features
1062- omit 'todo' # private
1120+ assert_visibility :private ,
1121+ Module . new , :prepend_features
1122+ omit 'todo'
10631123 end
10641124
10651125 def test_prepended
1066- omit 'todo' # private
1126+ assert_visibility :private ,
1127+ Module . new , :prepended
1128+ omit 'todo'
10671129 end
10681130
10691131 def test_remove_const
1070- omit 'todo' # private
1132+ assert_visibility :private ,
1133+ Module . new , :remove_const
1134+ omit 'todo'
10711135 end
10721136
10731137 def test_using
1074- omit 'todo' # private
1138+ assert_visibility :private ,
1139+ Module . new , :using
1140+ omit 'todo'
10751141 end
10761142end
0 commit comments