Bug #6097

Weird constant behavior during inheritance...

Added by Denis de Bernardy about 2 years ago. Updated about 2 years ago.

[ruby-core:42979]
Status:Rejected
Priority:Normal
Assignee:-
Category:-
Target version:-
ruby -v:1.9.3 Backport:

Description

class Parent
class Child
def foo
end
end
end
=> nil
class Test < Parent
end
=> nil
Test.constdefined?(:Child)
=> true
class Test
class Child
def bar
end
end
end
=> nil
Test::Child.new.respond
to?(:bar)
=> true
Parent::Child.new.respond_to?(:bar)
=> false # true expected...

Obviously, testing the object_id shows that Parent::Child and Test::Child are not the same class, but is this to be expected?

History

#1 Updated by Xavier Noria about 2 years ago

Once Test::Child gets defined, both Parent and Test have Child among their very constants (and they are different classes). The ancestry chain is not even checked.

#2 Updated by Yukihiro Matsumoto about 2 years ago

  • Status changed from Open to Rejected

Learn Ruby-way, please.

Also available in: Atom PDF