From: "tenderlovemaking (Aaron Patterson) via ruby-core" Date: 2025-05-23T18:43:48+00:00 Subject: [ruby-core:122257] [Ruby Bug#21363] `Namespace.current` should always return the Namespace in which it was defined Issue #21363 has been updated by tenderlovemaking (Aaron Patterson). To be more specific, given this program: ```ruby File.binwrite("ns.rb", <<-RUBY) # namespace 3 module M def self.test p test: Namespace.current end TEST = -> { p lambda: Namespace.current } end RUBY ns = Namespace.new ns.load "./ns.rb" p main: Namespace.current ns::M.test ns::M::TEST.call ``` I expect the following output: ``` {main: #} {test: #} {lambda: #} ``` But I got the following output: ``` {main: #} {test: #} {lambda: #} ``` ---------------------------------------- Bug #21363: `Namespace.current` should always return the Namespace in which it was defined https://bugs.ruby-lang.org/issues/21363#change-113402 * Author: tenderlovemaking (Aaron Patterson) * Status: Open * ruby -v: ruby 3.5.0dev (2025-05-22T23:07:21Z rm-assertion 17e71c7a24) +PRISM [arm64-darwin24] * Backport: 3.2: UNKNOWN, 3.3: UNKNOWN, 3.4: UNKNOWN ---------------------------------------- I think `Namespace.current` should always return the namespace in which it was defined. Here is an example to demonstrate what I mean: ```ruby File.binwrite("ns.rb", <<-RUBY) # namespace 3 module M def self.test p Namespace.current end TEST = -> { p Namespace.current } end RUBY ns = Namespace.new ns.load "./ns.rb" p Namespace.current ns::M.test ns::M::TEST.call ``` I expect the output of `ns::M.test` and `ns::M::TEST.call` to be the same. Instead the output is like this: ``` # # # ``` I think a method and lambda defined in the same namespace should return the same value for `Namespace.current` -- https://bugs.ruby-lang.org/ ______________________________________________ ruby-core mailing list -- ruby-core@ml.ruby-lang.org To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/