Bug #11294
Updated by nobu (Nobuyoshi Nakada) over 9 years ago
~~~ruby ~~~ module Foo; end module Foo::Baz; end module Bar; end module Bar::Qux; end Object.const_get "Foo::Baz::Bar::Qux" # => Bar::Qux ~~~ Why on earth it is found at all? It seems pretty weird to me. The real problem arises later, when I add `Foo::Bar::Qux`: ~~~ruby ~~~ module Foo::Bar; end module Foo::Bar::Qux; end ~~~ then the tree becomes as following: ~~~ruby ~~~ Foo::Bar::Qux Foo::Baz Bar::Qux ~~~ But the result remains the same: ~~~ruby ~~~ Object.const_get "Foo::Baz::Bar::Qux" # => Bar::Qux ~~~ Here I'd expect searching `"Foo::Baz::Bar::Qux"` "Foo::Baz::Bar::Qux" to * either return nothing (this is less astonished, because there is no such constant), * or find the closest `Bar::Qux` to `Foo::Bar`, that is `Foo::Bar::Qux`, not the `Bar::Qux` I cannot even understand the logic that follows the `Object.const_get` in providing such a result.