On Wed, 28 Dec 2016 19:46:01 -0800, alex.jakime...@gmail.com 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.

Reply via email to