X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=gitmo%2FRole-Tiny.git;a=blobdiff_plain;f=lib%2FRole%2FTiny.pm;h=ff742d831f74faad1d2659c94ac48166304bf2a4;hp=45606373cecf422a798463d3e7ddffb31e52a634;hb=2c580674e210e2252672aa0bb691887f46c7d846;hpb=424256bb175371ed085d2b9b4932872f706c6561 diff --git a/lib/Role/Tiny.pm b/lib/Role/Tiny.pm index 4560637..ff742d8 100644 --- a/lib/Role/Tiny.pm +++ b/lib/Role/Tiny.pm @@ -106,6 +106,14 @@ sub create_class_with_roles { die "No roles supplied!" unless @roles; + { + my %seen; + $seen{$_}++ for @roles; + if (my @dupes = grep $seen{$_} > 1, @roles) { + die "Duplicated roles: ".join(', ', @dupes); + } + } + my $new_name = join( '__WITH__', $superclass, my $compose_name = join '__AND__', @roles ); @@ -167,7 +175,7 @@ sub apply_union_of_roles_to_package { sub _union_info_for { my ($me, @roles) = @_; - $UNION_INFO{join('|',@roles)} ||= do { + $UNION_INFO{join('|', sort @roles)} ||= do { _load_module($_) for @roles; my %methods; foreach my $role (@roles) {