Fix code example to match current api
[gitmo/Moose.git] / lib / Moose / Role.pm
index 1cbc9ff..48e40b7 100644 (file)
@@ -4,6 +4,7 @@ use warnings;
 
 use Scalar::Util 'blessed';
 use Carp         'croak';
+use Class::Load  'is_class_loaded';
 
 use Sub::Exporter;
 
@@ -106,6 +107,9 @@ sub init_meta {
     my $metaclass = $args{metaclass} || "Moose::Meta::Role";
     my $meta_name = exists $args{meta_name} ? $args{meta_name} : 'meta';
 
+    Moose->throw_error("The Metaclass $metaclass must be loaded. (Perhaps you forgot to 'use $metaclass'?)")
+        unless is_class_loaded($metaclass);
+
     Moose->throw_error("The Metaclass $metaclass must be a subclass of Moose::Meta::Role.")
         unless $metaclass->isa('Moose::Meta::Role');
 
@@ -177,6 +181,23 @@ __END__
       $self->as_float == $other->as_float;
   }
 
+  # ... and also
+
+  package Comparator;
+  use Moose;
+
+  has compare_to => (
+      is      => 'ro',
+      does    => 'Eq',
+      handles => 'Eq',
+  );
+
+  # ... which allows
+
+  my $currency1 = Currency->new(...);
+  my $currency2 = Currency->new(...);
+  Comparator->new(compare_to => $currency1)->equal($currency2);
+
 =head1 DESCRIPTION
 
 The concept of roles is documented in L<Moose::Manual::Roles>. This document