File tree 3 files changed +41
-3
lines changed
3 files changed +41
-3
lines changed Original file line number Diff line number Diff line change @@ -726,8 +726,8 @@ class Module < Object
726
726
# I'm Dino!
727
727
# #<B:0x401b39e8>
728
728
#
729
- def define_method : (id arg0, ? Proc | Method | UnboundMethod arg1 ) -> Symbol
730
- | (id arg0 ) { () -> untyped } -> Symbol
729
+ def define_method : (id symbol, Proc | Method | UnboundMethod method ) -> Symbol
730
+ | (id symbol ) { () -> untyped } -> Symbol
731
731
732
732
# <!--
733
733
# rdoc-file=object.c
Original file line number Diff line number Diff line change @@ -205,7 +205,7 @@ class Object < BasicObject
205
205
# chris.define_singleton_method(:greet) {|greeting| "#{greeting}, I'm Chris!" }
206
206
# chris.greet("Hi") #=> "Hi, I'm Chris!"
207
207
#
208
- def define_singleton_method : (name, Method | UnboundMethod) -> Symbol
208
+ def define_singleton_method : (name, Method | UnboundMethod | Proc method ) -> Symbol
209
209
| (name) { (*untyped ) -> untyped } -> Symbol
210
210
211
211
# <!--
Original file line number Diff line number Diff line change @@ -206,3 +206,41 @@ def test_to_s
206
206
Object . new . to_s
207
207
end
208
208
end
209
+
210
+
211
+ class ObjectInstanceTest < Test ::Unit ::TestCase
212
+ include TypeAssertions
213
+
214
+ testing "::Object"
215
+
216
+ def test_define_singleton_method
217
+ obj = Object . new
218
+
219
+ assert_send_type (
220
+ "(::Symbol) { () -> void } -> Symbol" ,
221
+ obj , :define_singleton_method ,
222
+ :foo
223
+ ) do end
224
+
225
+ assert_send_type (
226
+ "(::Symbol, ::Proc) -> Symbol" ,
227
+ obj , :define_singleton_method ,
228
+ :bar ,
229
+ -> { }
230
+ )
231
+
232
+ assert_send_type (
233
+ "(::Symbol, ::Method) -> Symbol" ,
234
+ obj , :define_singleton_method ,
235
+ :bar ,
236
+ obj . method ( :to_s )
237
+ )
238
+
239
+ assert_send_type (
240
+ "(::Symbol, ::UnboundMethod) -> Symbol" ,
241
+ obj , :define_singleton_method ,
242
+ :bar ,
243
+ Object . instance_method ( :to_s )
244
+ )
245
+ end
246
+ end
You can’t perform that action at this time.
0 commit comments