From: rick.hull@... Date: 2017-12-02T08:07:02+00:00 Subject: [ruby-core:84056] [Ruby trunk Bug#14148] Ruby 2.5.0-preview1 - NameError on scoped constant after toplevel constant is defined Issue #14148 has been updated by RickHull (Rick Hull). After some clarifying discussions with @matthewd, I don't think is a problem for 2.5. The overall behavior is consistent with 2.4, if surprising. My surprise mostly revolves around the strange correspondence of toplevel with Object. This bug report is not about the escalation of warning to `NameError`. That said, it seems to me that constants defined on Kernel or BasicObject should be consistent with the behavior of constants defined on Object though. ~~~ ruby module Kernel K = 1 end class BasicObject B = 2 end class Object O = 3 end K #=> 1 B #=> 2 O #=> 3 String::K #=> 1 String::B #=> 2 String::O #=> NameError ~~~ I think we would want `NameError` for `String::K` and `String::B` ---------------------------------------- Bug #14148: Ruby 2.5.0-preview1 - NameError on scoped constant after toplevel constant is defined https://bugs.ruby-lang.org/issues/14148#change-68142 * Author: RickHull (Rick Hull) * Status: Open * Priority: Normal * Assignee: * Target version: * ruby -v: ruby 2.5.0preview1 (2017-10-10 trunk 60153) [x86_64-linux] * Backport: 2.3: UNKNOWN, 2.4: UNKNOWN ---------------------------------------- ~~~ ruby module Kernel X = 1 end puts String::X X = 2 puts String::X ~~~ ~~~ $ ruby test.rb 1 Traceback (most recent call last): test.rb:9:in `
': uninitialized constant String::X (NameError) Did you mean? X $ ruby --version ruby 2.5.0preview1 (2017-10-10 trunk 60153) [x86_64-linux] ~~~ -- https://bugs.ruby-lang.org/ Unsubscribe: