Project

General

Profile

Actions

Bug #15501

closed

private_methods(false) changes behavior based on singleton class allocation

Added by kddnewton (Kevin Newton) about 5 years ago. Updated about 5 years ago.

Status:
Closed
Target version:
-
[ruby-core:90872]

Description

class Module
  prepend Module.new
end

module Foo
end

p Foo.private_methods(false)
# => [:remove_const, :method_added, :method_removed, :method_undefined, :prepend_features, :extend_object, :refine, :using, :append_features, :initialize, :initialize_clone, :initialize_copy, :public, :private, :module_function, :protected, :included, :extended, :prepended]

Foo.singleton_class

p Foo.private_methods(false)
# => []

I have no idea what is causing this, but I tested it and it looks like this goes back to at least 2.1.5. It looks like before the singleton class is allocated private_methods(false) returns a whole host of methods, while after it returns the expected output. Any help/advice would be appreciated.

Updated by marcandre (Marc-Andre Lafortune) about 5 years ago

  • Assignee set to nobu (Nobuyoshi Nakada)

Good catch.

Actions #2

Updated by nobu (Nobuyoshi Nakada) about 5 years ago

  • Status changed from Open to Closed

Applied in changeset trunk|r66764.


class.c: refactor class_instance_method_list

  • class.c (class_instance_method_list): gather singleton and
    extended methods first separately from ancestors.
    [ruby-core:90872] [Bug #15501]
Actions

Also available in: Atom PDF

Like0
Like0Like0