Lazy load for Delegation class
gfx [Fri, 18 Dec 2009 04:42:25 +0000 (13:42 +0900)]
lib/Mouse/Meta/Attribute.pm
t/001_mouse/063-meta-of-metaclasses.t

index 0a12d95..0f0d088 100644 (file)
@@ -5,9 +5,6 @@ use Carp ();
 
 use Mouse::Meta::TypeConstraint;
 
-#use Mouse::Meta::Method::Accessor;
-use Mouse::Meta::Method::Delegation;
-
 sub _process_options{
     my($class, $name, $args) = @_;
 
@@ -415,6 +412,8 @@ sub install_accessors{
         my %handles = $attribute->_canonicalize_handles($attribute->{handles});
         my $reader  = $attribute->get_read_method_ref;
 
+        Mouse::Util::load_class($delegation_class);
+
         while(my($handle_name, $method_to_call) = each %handles){
             my $code = $delegation_class->_generate_delegation($attribute, $metaclass,
                 $reader, $handle_name, $method_to_call);
index 8ef6294..6582195 100644 (file)
@@ -5,10 +5,19 @@ use warnings;
 use Test::More tests => 10;
 
 {
+    package OtherClass;
+    sub method {}
+
     package Class;
     use Mouse;
 
-    has foo => (is => 'rw');
+    # this attribute definition is intended to load submodules
+
+    has foo => (
+        is => 'rw',
+        isa => 'OtherClass',
+        handles => qr/./,
+    );
 
     __PACKAGE__->meta->make_immutable; # ensure metaclasses loaded