Issue #11155 has been updated by Usaku NAKAMURA.

Backport changed from 2.0.0: REQUIRED, 2.1: REQUIRED, 2.2: REQUIRED to 2.0.0: REQUIRED, 2.1: DONE, 2.2: REQUIRED

ruby_2_1 r50805 merged revision(s) 50515.

----------------------------------------
Bug #11155: Files named 'b' cannot be autoloaded
https://bugs.ruby-lang.org/issues/11155#change-52799

* Author: Aaron Patterson
* Status: Closed
* Priority: Normal
* Assignee: 
* ruby -v: ruby 2.3.0dev (2015-05-14 trunk 50494) [x86_64-darwin14]
* Backport: 2.0.0: REQUIRED, 2.1: DONE, 2.2: REQUIRED
----------------------------------------
I have two files:

a.rb

~~~ruby
module A
  autoload :C, 'b'
end

p ::A::C
~~~

b.rb

~~~ruby
puts "START"
module A
  class C
  end
end
puts "FINISH"
~~~

When I run a.rb, I get an exception:

~~~
[aaron@TC xxx (master)]$ ruby --disable-gems -I. a.rb 
START
/Users/aaron/git/xxx/b.rb:3:in `<module:A>': uninitialized constant A::C (NameError)
	from /Users/aaron/git/xxx/b.rb:2:in `<top (required)>'
	from a.rb:5:in `require'
	from a.rb:5:in `<main>'
[aaron@TC xxx (master)]$
~~~

If I change the file to something else, like `c`, then the exception will not happen.  This seems to break on every version that implements `autoload`.



-- 
https://bugs.ruby-lang.org/