On Thu, 29 Jun 2017 03:46:02 -0700, c...@zoffix.com wrote:
> Mu provides iterator method, but when you mix in a role that wants it
> implemented, it doesn't find it:
> 
> m: role Meow { method iterator {…} }; class Bar does Meow {}
> camelia     rakudo-moar 2a8d1e: OUTPUT: «5===SORRY!5=== Error while
> compiling <tmp>␤Method 'iterator' must be implemented by Bar because
> it is required by roles: Meow.␤at <tmp>:1␤»
> 
> Yet it all works fine if you are also doing `is SomethingUnrelated`:
> 
> m: class Foo { method x {} }; role Meow { method iterator {…} }; class
> Bar is Foo does Meow {}
> camelia     rakudo-moar 2a8d1e: ( no output )


Another example turned up; fails to notice the method is provided by `handles`:

    class HTTP::Header does Associative does Iterable {
        subset StrOrArrayOfStr where Str | ( Array & {.all ~~ Str} );

        has %!fields of StrOrArrayOfStr
                     handles <AT-KEY EXISTS-KEY DELETE-KEY push
                              iterator list kv keys values>;

        method Str { #`[not shown, for brevity] }
    }

This is from https://github.com/perl6/doc/issues/1438

Reply via email to