On Mon Jan 11 05:46:19 2016, lloyd.fo...@gmail.com wrote: > role Foo { has $.foo; }; Foo.^attributes[0].package.^name.say #->$?CLASS
Just to note that this behavior is intentional rather than accidental (or at least, *I* intended it :-)). Roles undergo generic instantiation at the point of being composed into a class, during which the package is substituted for the type of the class itself. This is important for things like accessor generation to work, since after composition the attributes need to be resolved as if they really are in the class. We might want a declaring-package that is non-generic, if there's a strong enough use case. And the method inconsistency may want resolving.