X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMouse%2FRole.pm;h=0ae49170a51bd7c606145066e3dcd8e1341a4708;hb=83fd4df5c46993d68fc0c2d84a1faffaef2b3cdd;hp=da5b302db0d9dfaccbdec4647351bf90f734793c;hpb=4352306000f5015a5984891845a5016fa7c831a4;p=gitmo%2FMouse.git diff --git a/lib/Mouse/Role.pm b/lib/Mouse/Role.pm index da5b302..0ae4917 100644 --- a/lib/Mouse/Role.pm +++ b/lib/Mouse/Role.pm @@ -109,19 +109,24 @@ sub excludes { } sub init_meta{ - my($class, %args) = @_; + shift; + my %args = @_; - my $for_class = $args{for_class} + my $class = $args{for_class} or Carp::confess("Cannot call init_meta without specifying a for_class"); my $metaclass = $args{metaclass} || 'Mouse::Meta::Role'; - my $meta = $metaclass->initialize($for_class); + my $meta = $metaclass->initialize($class); $meta->add_method(meta => sub{ $metaclass->initialize(ref($_[0]) || $_[0]); }); + # make a role type for each Mouse role + Mouse::Util::TypeConstraints::role_type($class) + unless Mouse::Util::TypeConstraints::find_type_constraint($class); + return $meta; }