`class Foo::Bar::Baz` does *not* open the Foo::Bar scope. `class
Foo::Bar; class Baz` does however.
// Magnus Holm



On Sat, May 28, 2011 at 16:51, John Feminella <johnf / bitsbuilder.com> wrote:
>
> Issue #4795 has been updated by John Feminella.
>
>
> But isn't Baz defined at the immediate Foo::Bar scope? Why does it keep going up the chain?
> ----------------------------------------
> Bug #4795: Nested classes don't seem to resolve correctly when another class exists with the same name
> http://redmine.ruby-lang.org/issues/4795
>
> Author: John Feminella
> Status: Open
> Priority: Normal
> Assignee:
> Category:
> Target version:
> ruby -v: ruby 1.9.2p180 (2011-02-18 revision 30909) [x86_64-linux]
>
>
> # in /tmp/foo.rb
> module Foo
> end
>
> module Foo::Bar
> class Baz; end
> end
>
> class Baz
> def say
>  "::Baz"
> end
> end
>
> class Foo::Bar::Baz
> def say
>  "::Foo::Bar::Baz"
> end
>
> def x
>  Baz.new.say
> end
> end
>
> # in irb:
>> load '/tmp/foo.rb'
> => true
>> Foo::Bar::Baz.new.x
> => "::Baz" # expected `"::Foo::Bar::Baz"`
>
> =begin
> This doesn't seem like the expected result. Have I misunderstood how constants work?
> =end
>
>
> --
> http://redmine.ruby-lang.org
>
>