expand Class/Role clash error message
Lars Dɪᴇᴄᴋᴏᴡ 迪拉斯 [Mon, 7 Dec 2009 17:39:04 +0000 (18:39 +0100)]
* distinction on Moose::Meta::Class as per doy

lib/Moose.pm

index 6c9f6c7..315d6d8 100644 (file)
@@ -159,7 +159,12 @@ sub init_meta {
 
     if ( $meta = Class::MOP::get_metaclass_by_name($class) ) {
         unless ( $meta->isa("Moose::Meta::Class") ) {
-            Moose->throw_error("$class already has a metaclass, but it does not inherit $metaclass ($meta)");
+            my $error_message = "$class already has a metaclass, but it does not inherit $metaclass ($meta).";
+            if ( $meta->isa('Moose::Meta::Role') ) {
+                Moose->throw_error($error_message . ' You cannot make the same thing a role and a class. Remove either Moose or Moose::Role.');
+            } else {
+                Moose->throw_error($error_message);
+            }
         }
     } else {
         # no metaclass, no 'meta' method