On Wed, 28 Dec 2016 19:46:01 -0800, [email protected] wrote: > Code: > unit module Foo; sub foo() is export {}; say Foo::EXPORT === > UNIT::EXPORT # unit makes the declared package the current UNIT > > Result (2016.04): > True > > Result (HEAD): > False > > > Bisectable is pointing to > https://github.com/rakudo/rakudo/commit/fe2be65806d907efbbaa0adc4f0175c2e23c3a40
Since that commit, https://github.com/rakudo/rakudo/commit/4d85cde90883e031650600b9f55a87e86acb632c also would have regressed this behavior if it had not already been regressed, and there have been other commits since that may also. The bug which 4d85cde9 was trying to address, #128931, pointed out that any two types with the same name had the same .WHICH. It is proper that we should have different .WHICH's on different type objects, even if they have the same name. However, it appears that in the case of UNIT:: and perhaps some other/future PseudoStash aliases, EXPORT may be being treated as a value type and copied around... (EXPORT is immutable outside of COMPILING and metaprogramming APIs): $ perl6 -e 'unit module Foo; use nqp; sub g is export { }; nqp::say(nqp::eqaddr(Foo::EXPORT, UNIT::EXPORT))' 0 ...that will either have to be fixed, or worked around.
