diff --git a/S10-packages/precompilation.t b/S10-packages/precompilation.t index 4a6e7fff2f..d39cdc7b87 100644 --- a/S10-packages/precompilation.t +++ b/S10-packages/precompilation.t @@ -3,7 +3,7 @@ use lib 't/spec/packages'; use Test; use Test::Util; -plan 40; +plan 41; my @*MODULES; # needed for calling CompUnit::Repository::need directly my $precomp-ext := $*VM.precomp-ext; @@ -205,3 +205,15 @@ is-deeply @keys2, [], 'Twisty maze of dependencies, all dif :compiler-args['-I', 't/spec/packages', '-M', 'RT127176'], 'no duplicate compilation error'; } + +# RT #128156 +{ + # precompile it in a different process + run $*EXECUTABLE,'-I','t/spec/packages','-e','use RT128156::One;'; + # trigger recompilation + my $trigger-file = 't/spec/packages/RT128156/Two.pm6'.IO; + $trigger-file.IO.spurt($trigger-file.slurp); + my $comp-unit = $*REPO.need(CompUnit::DependencySpecification.new(:short-name)); + ok $comp-unit.handle.globalish-package.WHO.WHO:exists.all, + 'GLOBAL symbols exist after re-precompiled'; +} diff --git a/packages/RT128156/One.pm6 b/packages/RT128156/One.pm6 new file mode 100644 index 0000000000..464ff93261 --- /dev/null +++ b/packages/RT128156/One.pm6 @@ -0,0 +1,2 @@ +class RT128156::One {}; +need RT128156::Two; diff --git a/packages/RT128156/Three.pm6 b/packages/RT128156/Three.pm6 new file mode 100644 index 0000000000..1b83a59454 --- /dev/null +++ b/packages/RT128156/Three.pm6 @@ -0,0 +1,2 @@ +# Empty +class RT128156::Three {}; diff --git a/packages/RT128156/Two.pm6 b/packages/RT128156/Two.pm6 new file mode 100644 index 0000000000..4c1c618dd9 --- /dev/null +++ b/packages/RT128156/Two.pm6 @@ -0,0 +1,3 @@ +need RT128156::Three; + +class RT128156::Two {};