Actions
Bug #21320
closedNamespaces leak with constant lookup
Bug #21320:
Namespaces leak with constant lookup
Description
The following program
X = :top
class C
X = :super
end
class D < C
p X
end
prints :super normally, and :top if running under a namespace.
Updated by fxn (Xavier Noria) 7 months ago
This is probably a consequence of https://bugs.ruby-lang.org/issues/21318.
Updated by Eregon (Benoit Daloze) 7 months ago
Full repro:
# Copy the description program to program.rb, e.g. $ xsel -b > program.rb
$ RUBY_NAMESPACE=1 ruby -ve 'puts "in main"; require "./program"; puts "in namespace"; Namespace.new.require "./program"'
ruby 3.5.0dev (2025-05-10T07:50:29Z namespace-on-read-.. bd4f57f96b) +PRISM [x86_64-linux]
ruby: warning: Namespace is experimental, and the behavior may change in the future!
See doc/namespace.md for know issues, etc.
in main
:super
in namespace
:top
Updated by hsbt (Hiroshi SHIBATA) 6 months ago
- Tags set to namespace
Updated by tagomoris (Satoshi Tagomori) 4 days ago
- Assignee set to tagomoris (Satoshi Tagomori)
Updated by tagomoris (Satoshi Tagomori) 4 days ago
- Status changed from Open to Closed
This issue is fixed now.
MBA:build s-tagomori$ cat b.rb
X = :top
class C
X = :super
end
class D < C
p X
end
MBA:build s-tagomori$ RUBY_BOX=1 ./exe/ruby -ve 'puts "in main"; require "./b"; puts "in box"; Ruby::Box.new.require "./b"'
ruby 4.0.0dev (2025-12-09T12:29:36Z box-news-documents.. c998717de8) +PRISM [arm64-darwin24]
./exe/ruby: warning: Ruby::Box is experimental, and the behavior may change in the future!
See doc/language/box.md for known issues, etc.
in main
:super
in box
:super
MBA:build s-tagomori$ ./exe/ruby -v
ruby 4.0.0dev (2025-12-09T12:29:36Z box-news-documents.. c998717de8) +PRISM [arm64-darwin24]
MBA:build s-tagomori$
Actions