X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoo%2FRole.pm;h=4055fbc7ff9547470dfbff17d45a6f4a28ad1321;hb=c69190f1086805f314dbe3bc2926aa940abd4001;hp=a8c2083cba0a5e70d90ebbd9ced3348607edcb7b;hpb=86fd58e79443f7642bb7d7dc2d9c20b64f6070f0;p=gitmo%2FRole-Tiny.git diff --git a/lib/Moo/Role.pm b/lib/Moo/Role.pm index a8c2083..4055fbc 100644 --- a/lib/Moo/Role.pm +++ b/lib/Moo/Role.pm @@ -34,7 +34,10 @@ sub apply_role_to_package { sub create_class_with_roles { my ($me, $superclass, @roles) = @_; - my $new_name = join('+', $superclass, my $compose_name = join '+', @roles); + my $new_name = join( + '__WITH__', $superclass, my $compose_name = join '__AND__', @roles + ); + return $new_name if $Role::Tiny::COMPOSED{class}{$new_name}; require Sub::Quote; @@ -45,6 +48,8 @@ sub create_class_with_roles { die "${role} is not a Role::Tiny" unless my $info = $INFO{$role}; } + $Moo::MAKERS{$new_name} = {}; + $me->_handle_constructor( $new_name, { map %{$INFO{$_}{attributes}||{}}, @roles }, $superclass );