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

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