From: merch-redmine@... Date: 2019-07-08T01:21:52+00:00 Subject: [ruby-core:93602] [Ruby master Bug#10741] const_defined? triggers autoload where it did not before Issue #10741 has been updated by jeremyevans0 (Jeremy Evans). Status changed from Open to Closed This was fixed between 2.6 and 2.7.0-preview1: ``` $ ruby26 a.rb in b true $ ruby27 a.rb true ``` ---------------------------------------- Bug #10741: const_defined? triggers autoload where it did not before https://bugs.ruby-lang.org/issues/10741#change-79196 * Author: headius (Charles Nutter) * Status: Closed * Priority: Normal * Assignee: * Target version: * ruby -v: 2.0.0 * Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN ---------------------------------------- This should not cause b.rb to load, but it does in 2.2: ~/projects/jruby $ cat a.rb module Foo autoload :Bar, 'b.rb' end p Foo.const_defined?('Bar') ~/projects/jruby $ cat b.rb puts "in b" module Foo Bar = 1 end ~/projects/jruby $ rvm ruby-2.0 do ruby -I. a.rb true ~/projects/jruby $ rvm ruby-2.1 do ruby -I. a.rb in b true ~/projects/jruby $ rvm ruby-2.2 do ruby -I. a.rb in b true This is likely caused by the :: support in const_get/const_defined not doing autoload-free traversal. -- https://bugs.ruby-lang.org/ Unsubscribe: