Checking in changes prior to tagging of version 0.40_04. Changelog diff is:
[gitmo/Mouse.git] / lib / Mouse / Role.pm
index 33350cc..be99409 100644 (file)
@@ -1,11 +1,14 @@
 package Mouse::Role;
-use Mouse::Util qw(not_supported); # enables strict and warnings
+use Mouse::Exporter; # enables strict and warnings
 
-use Carp ();
-use Scalar::Util ();
+our $VERSION = '0.40_04';
 
+use Carp         qw(confess);
+use Scalar::Util qw(blessed);
+
+use Mouse::Util  qw(not_supported);
+use Mouse::Meta::Role;
 use Mouse ();
-use Mouse::Exporter;
 
 Mouse::Exporter->setup_import_methods(
     as_is => [qw(
@@ -22,6 +25,18 @@ Mouse::Exporter->setup_import_methods(
     ],
 );
 
+# XXX: for backward compatibility
+our @EXPORT = qw(
+    extends with
+    has
+    before after around
+    override super
+    augment  inner
+
+    requires excludes
+
+    blessed confess
+);
 
 sub before {
     my $meta = Mouse::Meta::Role->initialize(scalar caller);
@@ -97,19 +112,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;
 }
 
@@ -121,6 +141,10 @@ __END__
 
 Mouse::Role - The Mouse Role
 
+=head1 VERSION
+
+This document describes Mouse version 0.40_04
+
 =head1 SYNOPSIS
 
     package MyRole;