Use compute_all_applicable_attributes instead of get_attribute_map in the constructor...
Shawn M Moore [Wed, 11 Jun 2008 11:04:07 +0000 (11:04 +0000)]
lib/Mouse/Object.pm
t/028-subclass-attr.t

index bec6519..2138adf 100644 (file)
@@ -23,7 +23,7 @@ sub new {
 
     my $instance = bless {}, $class;
 
-    for my $attribute (values %{ $class->meta->get_attribute_map }) {
+    for my $attribute ($class->meta->compute_all_applicable_attributes) {
         my $from = $attribute->init_arg;
         my $key  = $attribute->name;
         my $default;
index 527e048..2ec4e6e 100644 (file)
@@ -1,7 +1,7 @@
 #!/usr/bin/env perl
 use strict;
 use warnings;
-use Test::More tests => 2;
+use Test::More tests => 3;
 
 do {
     package Class;
@@ -25,3 +25,9 @@ do {
 my $obj = Child->new(class => 1, child => 1);
 ok($obj->child, "local attribute set in constructor");
 ok($obj->class, "inherited attribute set in constructor");
+
+is_deeply([Child->meta->compute_all_applicable_attributes], [
+    Child->meta->get_attribute('child'),
+    Class->meta->get_attribute('class'),
+], "correct compute_all_applicable_attributes");
+