From d9071ea62a0de0085b329d530e33177936adeb45 Mon Sep 17 00:00:00 2001 From: Earlopain <14981592+Earlopain@users.noreply.github.com> Date: Mon, 8 Sep 2025 13:14:59 +0200 Subject: [PATCH 1/2] Add a spec for `autoload` with `private_constant` This recently regressed in JRuby. The autload should be accessible and only fire on actual access. --- core/module/autoload_spec.rb | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/core/module/autoload_spec.rb b/core/module/autoload_spec.rb index bba911e752..213414b388 100644 --- a/core/module/autoload_spec.rb +++ b/core/module/autoload_spec.rb @@ -718,6 +718,21 @@ def r end end + it "should trigger the autoload when using `private_constant`" do + @remove << :DynClass + module ModuleSpecs::Autoload + autoload :DynClass, fixture(__FILE__, "autoload_c.rb") + private_constant :DynClass + + ScratchPad.recorded.should be_nil + + DynClass::C.new.loaded.should == :dynclass_c + ScratchPad.recorded.should == :loaded + end + + -> { ModuleSpecs::Autoload::DynClass }.should raise_error(NameError) + end + # [ruby-core:19127] [ruby-core:29941] it "does NOT raise a NameError when the autoload file did not define the constant and a module is opened with the same name" do module ModuleSpecs::Autoload From 454e7feee13402743113b218babca0936ac94e5e Mon Sep 17 00:00:00 2001 From: Benoit Daloze Date: Fri, 12 Sep 2025 21:16:21 +0200 Subject: [PATCH 2/2] Update core/module/autoload_spec.rb --- core/module/autoload_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/module/autoload_spec.rb b/core/module/autoload_spec.rb index 213414b388..625d945686 100644 --- a/core/module/autoload_spec.rb +++ b/core/module/autoload_spec.rb @@ -730,7 +730,7 @@ module ModuleSpecs::Autoload ScratchPad.recorded.should == :loaded end - -> { ModuleSpecs::Autoload::DynClass }.should raise_error(NameError) + -> { ModuleSpecs::Autoload::DynClass }.should raise_error(NameError, /private constant/) end # [ruby-core:19127] [ruby-core:29941]