--- trunk/lib/Frey/Introspect.pm 2008/11/18 13:52:26 409
+++ trunk/lib/Frey/Introspect.pm 2008/11/18 14:42:58 416
@@ -169,17 +169,17 @@
@attributes = map {
my $name = $_;
my $attr = $meta->get_attribute($name);
- confess "$class attribute $name isn't blessed ",dump( $attr ) unless ref $attr;
+ confess "$class attribute $name isn't blessed ",dump( $attr ) unless blessed $attr;
warn "## attr $name ref ",ref( $attr ) if $self->debug;
my ( $before, $title, $after ) = ( '', '', '' );
- ( $before, $title, $after ) = ( '', ' title="required"', '' ) if $attr->is_required;
+ ( $before, $title, $after ) = ( '', ' title="required"', '' ) if $attr->can('is_required') && $attr->is_required;
foreach my $check ( qw/has_type_constraint has_handles is_weak_ref is_required is_lazy should_coerce should_auto_deref has_default has_trigger has_documentation has_applied_traits/ ) {
my $getter;
$getter = $check;
$getter =~ s/^has_//;
- if ( $attr->$check ) {
+ if ( $attr->can($check) && $attr->$check ) {
if ( $getter eq $check ) {
$after .= "$check";
} else {
@@ -191,7 +191,7 @@
}
$after .= ' ';
}
- my $type = $attr->has_type_constraint ? $attr->type_constraint->name : '';
+ my $type = $attr->can('has_type_constraint') && $attr->has_type_constraint ? $attr->type_constraint->name : '';
if ( $role_attribute->{$name} ) {
my ( $role_name, $nr ) = each %{ $role_attribute->{$name} };