Fix has()
[gitmo/Mouse.git] / lib / Mouse / Util.pm
index cac02a1..783f24a 100644 (file)
@@ -52,9 +52,9 @@ BEGIN{
         $xs = eval sprintf("#line %d %s\n", __LINE__, $hack_mouse_file) . q{
             require XSLoader;
             XSLoader::load('Mouse', $VERSION);
-
-            *Mouse::Meta::Method::Constructor::XS::meta = \&meta;
-            *Mouse::Meta::Method::Destructor::XS::meta  = \&meta;
+            Mouse::Util->import({ into => 'Mouse::Meta::Method::Constructor::XS' }, ':meta');
+            Mouse::Util->import({ into => 'Mouse::Meta::Method::Destructor::XS'  }, ':meta');
+            return 1;
         };
         #warn $@ if $@;
     }
@@ -88,6 +88,8 @@ BEGIN {
     generate_isa_predicate_for('Mouse::Meta::Role'           => 'is_a_metarole');
 }
 
+our $in_global_destruction = 0;
+END{ $in_global_destruction = 1 }
 
 # Moose::Util compatible utilities
 
@@ -272,7 +274,7 @@ sub apply_all_roles {
         load_class($role_name);
 
         is_a_metarole( get_metaclass_by_name($role_name) )
-            || $applicant->meta->throw_error("You can only consume roles, $role_name(".$role_name->meta.") is not a Mouse role");
+            || $applicant->meta->throw_error("You can only consume roles, $role_name is not a Mouse role");
     }
 
     if ( scalar @roles == 1 ) {