FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

Bugs in `Method`/`UnboundMethod#original_name` · Issue #9257 · jruby/jruby · GitHub

/ jruby Public

Bugs in Method/UnboundMethod#original_name #9257

Description

Environment Information

Provide at least:

  • jruby 10.0.4.0-SNAPSHOT (3.4.5) 2026-02-22 ffffffffff OpenJDK 64-Bit Server VM 21.0.10+7 on 21.0.10+7 +indy +jit [x86_64-linux] (master)
  • Linux meow4 6.18.4-1-MANJARO #1 SMP PREEMPT_DYNAMIC Thu, 08 Jan 2026 12:46:08 +0000 x86_64 GNU/Linux

Issue 1: transplanted and/or aliased methods display wrong #original_name

Expected Behavior

Given this file:

class A < BasicObject
  define_method(:method, ::Kernel.instance_method(:method))

  define_method(:is_a?, ::Kernel.instance_method(:is_a?))
  alias is_stuff? is_a?
  define_method(:kind_of?, ::Kernel.instance_method(:kind_of?))
  alias kind_of_stuff? kind_of?

  define_method(:my_inspect, ::Kernel.instance_method(:inspect))
end

puts A.instance_method(:is_a?).original_name
puts A.new.method(:is_a?).original_name
puts A.instance_method(:is_stuff?).original_name
puts A.new.method(:is_stuff?).original_name

puts A.instance_method(:kind_of?).original_name
puts A.new.method(:kind_of?).original_name
puts A.instance_method(:kind_of_stuff?).original_name
puts A.new.method(:kind_of_stuff?).original_name

puts A.instance_method(:my_inspect).original_name
puts A.new.method(:my_inspect).original_name

Running it, I expect to see:

is_a?
is_a?
is_a?
is_a?
kind_of?
kind_of?
kind_of?
kind_of?
inspect
inspect

(on MRI ruby 3.3.9 (2025-07-24 revision f5c772fc7c) [x86_64-linux])

Actual Behavior

kind_of?
is_a?
kind_of?
kind_of?
kind_of?
kind_of?
kind_of?
kind_of?
inspect
my_inspect
  1. is_a? appears only for unaliased Method, but it shouldn't be considered an alias of kind_of?
  2. my_inspect appears only for Method, but it shouldn't

Issue 2: attr_accessor and co are named by ivar

Expected Behavior

Given this file:

class A
  attr_accessor :var
  alias var_r var
  alias var_w var=
end

puts A.instance_method(:var).original_name
puts A.new.method(:var).original_name
puts A.instance_method(:var=).original_name
puts A.new.method(:var=).original_name

puts A.instance_method(:var_r).original_name
puts A.new.method(:var_r).original_name
puts A.instance_method(:var_w).original_name
puts A.new.method(:var_w).original_name

I expect to see:

var
var
var=
var=
var
var
var=
var=

Actual Behavior

@var
var
@var=
var=
@var
@var
@var=
@var=
  1. Only unaliased Methods have correct names
  2. This also happens with attr_reader and attr_writer

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions


      Back | FazBrowse Home | New Git URL