# New Ticket Created by Pierre VIGIER # Please include the string: [perl #127959] # in the subject line of all future correspondence about this issue. # <URL: https://rt.perl.org/Ticket/Display.html?id=127959 >
Hi Basically, i have a trait that add a method to a class if applied to an attribute it's working well however, if i try to 'use' a class that uses that trait, i have a strange error: Missing serialize REPR function for REPR SCRef To show case the issue, here is a dummy module, that export a trait "mytrait". That trait if applied to any attribute of a class, will add a new method nn to the class that returns 'nn'. (the original module is AttrX::Lazy, just wanted to trimdown the code base) file mytraitmodule.pm6 contains that trait you can see that tiny trait in action with the following: > PERL6LIB=$PWD perl6 -e 'use mytraitmodule; class Foo { has $!att is mytrait; > }; say Foo.new().nn()' [22:18:23] > nn The trait is working fine. Now, if i create a class in a separate file, that does the same thing, and load the class, for the class see file myclass.pm6 and i just try to use that new class, with a simple code like: > PERL6LIB=$PWD perl6 -e 'use myclass;' > [22:18:12] ===SORRY!=== Missing serialize REPR function for REPR SCRef You see the issue, really strange, the trait is working by itself, but it's impossible to load a class that uses that trait RabidGravy on IRC told me to add a no precompilation statement on top of the file having the role to temporary solve the issue, and i can confirm it is working. Content of the files: myclass.pm6: -------------------- unit class myclass; use mytraitmodule; has $!bar is mytrait; -------------------- mytraitmodule.pm6: -------------------- unit module mytraitmodule; my role rrHOW { method compose(Mu \type) { type.^add_method('nn', method (Mu:D:) { return 'nn' ; } ); callsame; } } multi trait_mod:<is>(Attribute:D $attr, :$mytrait! ) is export { $attr.package.HOW does rrHOW; } -------------------- Pierre