Checking in changes prior to tagging of version 0.42. Changelog diff is:
[gitmo/Mouse.git] / lib / Mouse / Exporter.pm
index 8be55d9..fc3bfb0 100644 (file)
@@ -14,7 +14,7 @@ require Mouse::Util;
 
 sub import{
     $^H              |= _strict_bits;         # strict->import;
-    ${^WARNING_BITS}  = $warnings::Bits{all}; # warnings->import;
+    ${^WARNING_BITS} |= $warnings::Bits{all}; # warnings->import;
     return;
 }
 
@@ -149,7 +149,7 @@ sub do_import {
         my $arg = shift @args;
         if($arg =~ s/^-//){
             if($arg eq 'traits'){
-                push @traits, @{shift(@args)};
+                push @traits, ref($args[0]) ? @{shift(@args)} : shift(@args);
             }
             else {
                 Mouse::Util::not_supported("-$arg");
@@ -166,7 +166,7 @@ sub do_import {
     }
 
     $^H              |= _strict_bits;         # strict->import;
-    ${^WARNING_BITS}  = $warnings::Bits{all}; # warnings->import;
+    ${^WARNING_BITS} |= $warnings::Bits{all}; # warnings->import;
 
     if($spec->{INIT_META}){
         my $meta;
@@ -177,10 +177,11 @@ sub do_import {
         if(@traits){
             my $type = (split /::/, ref $meta)[-1]; # e.g. "Class" for "My::Meta::Class"
             @traits =
-                map{ ref($_) ? $_ : Mouse::Util::resolve_metaclass_alias($type => $_, trait => 1) }
-                @traits;
+                map{
+                    ref($_) ? $_
+                            : Mouse::Util::resolve_metaclass_alias($type => $_, trait => 1)
+                } @traits;
 
-            not_supported('-traits');
             require Mouse::Util::MetaRole;
             Mouse::Util::MetaRole::apply_metaclass_roles(
                 for_class       => $into,
@@ -188,6 +189,9 @@ sub do_import {
             );
         }
     }
+    elsif(@traits){
+        Carp::confess("Cannot provide traits when $package does not have an init_meta() method");
+    }
 
     if(@exports){
         foreach my $keyword(@exports){
@@ -249,7 +253,6 @@ sub _get_caller_package {
 #sub _spec{ %SPEC }
 
 1;
-
 __END__
 
 =head1 NAME
@@ -258,7 +261,7 @@ Mouse::Exporter - make an import() and unimport() just like Mouse.pm
 
 =head1 VERSION
 
-This document describes Mouse version 0.40_02
+This document describes Mouse version 0.42
 
 =head1 SYNOPSIS