Project

General

Profile

Actions

Feature #11491

closed

Add descriptive methods to Method & UnboundMethod

Added by searls (Justin Searls) over 8 years ago. Updated over 8 years ago.

Status:
Rejected
Assignee:
-
Target version:
-
[ruby-core:<unknown>]

Description

(Using Ruby Version 2.2.2)

I would like Method and Unbound Method to provide methods to provide the following additional information:

  • Method#instance_method? and UnboundMethod#instance_method? to indicate whether the method is an instance or a class method
  • UnboundMethod#receiver to provide the type required to be passed to UnboundMethod#bind

I believe this information is already probably readily available, because it can be gleaned from Method#to_s and UnboundMethod#to_s. For example:

> String.instance_method(:taint)
=> #<UnboundMethod: String(Kernel)#taint>

The above output tells us the eligible receiver type is String, the owner is Kernel, the "#" indicates an instance_method, and the name is taint. However, with the current UnboundMethod API, we can only tell the owner and the name.

It would be very useful to also see the receiver type and whether the method is an instance_method without performing Regex on the output of to_s.

In particular, UnboundMethod#receiver would be useful, even though UnboundMethod does not logically have a receiver, because it would make it easier to tell what type of objects can be passed to UnboundMethod#bind without raising a TypeError.

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0