Fix calling extended callback

The callback of extending module should be called, not of a singleton
class of an extended object.
This commit is contained in:
Paweł Świątkowski
2025-05-27 22:23:35 +02:00
parent bec5dbc4e9
commit bdcd496bc2
2 changed files with 28 additions and 2 deletions
+26
View File
@@ -477,3 +477,29 @@ assert('class with non-class/module outer raises TypeError') do
assert_raise(TypeError) { class 0::C1; end }
assert_raise(TypeError) { class []::C2; end }
end
assert('module with extended callback') do
module FooWithExtended
@@extended = []
def self.extended(base)
@@extended << base
end
def self.extended_classes
@@extended
end
def answer
42
end
end
class BarBeingExtended
extend FooWithExtended
end
assert_equal [BarBeingExtended], FooWithExtended.extended_classes
assert_true BarBeingExtended.respond_to?(:answer)
assert_equal 42, BarBeingExtended.answer
end