
Issue #21154 has been updated by mame (Yusuke Endoh).
Should that second line always return "foo"?
No, not necessarily. The document says "if name is registered as autoload". And the document of Kernel#autoload says "If const is defined but not as autoload, does nothing." Thus, there is no guarantee that your second line will always return `"foo"`. I assume you have https://bugs.ruby-lang.org/issues/21035#note-3 in mind. IMO, in your case, the situation could be considered equivalent to the “If const is defined but not as autoload, does nothing.” case. Therefore, I don't think it is surprising that `autoload?` returns `nil`. So should the documentation be updated? I personally think that is not necessary either. Documentation is documentation, not a spec. I think it is more useful to have a simple description of typical behavior and usage. Currently, I feel the document is good enough. I admit people may have different opinions here, though. I think what you should do is not arguing about consistency with the documentation, but rather briefly explaining your purpose and why the current behavior is troubling against it. ---------------------------------------- Misc #21154: Document or change Module#autoload? https://bugs.ruby-lang.org/issues/21154#change-112098 * Author: fxn (Xavier Noria) * Status: Open ---------------------------------------- The documentation of `Module#autoload?` says
Returns filename to be loaded if name is registered as autoload in the namespace of mod or one of its ancestors.
Cool, but in the following snippet ```ruby autoload :Foo, 'foo' autoload?(:Foo) ``` the second line could evaluate to `nil`, and this does not seem to agree. I just registered an autoload, therefore (according to the documentation) I should get "foo" back in line 2. I'd like to ask for clarification from the Ruby team: 1. Is the documentation complete? Should that second line always return "foo"? 2. If the answer is no, which is the logic missing in the docs? Thank you! -- https://bugs.ruby-lang.org/