Subject: | Method name conflict error displayed instead of module import error message |
Take the following minimal example:
~$ cat -n BB.pm ; cat -n C.pm ; cat -n M.pm
1 use Moops; role BB { } 1
1 use Moops; role C {} 1
1 use Moops;
2 class M {
3 has m => ( is=>'ro', isa=>'MongoDB::Cursor' );
4 with qw(C BB);
5 }
~$ perl -c M.pm
Due to a method name conflict between roles 'BB and C', the method 'before' must be implemented by 'M'
Due to a method name conflict between roles 'BB and C', the method 'fun' must be implemented by 'M'
Due to a method name conflict between roles 'BB and C', the method 'multi' must be implemented by 'M'
Due to a method name conflict between roles 'BB and C', the method 'method' must be implemented by 'M'
Due to a method name conflict between roles 'BB and C', the method 'after' must be implemented by 'M'
Due to a method name conflict between roles 'BB and C', the method 'around' must be implemented by 'M' at /usr/local/share/perl/5.20.1/Role/Tiny.pm line 212.
BEGIN failed--compilation aborted at M.pm line 5.
~$
I'm not entirely sure what the real underlying error is, but the error messages displayed is irrelevant. Depending on which module is referred to in isa=>'' either this error message or no error message is displayed, but I can't identify the pattern.