X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=lib%2FMoose%2FMeta%2FAttribute.pm;fp=lib%2FMoose%2FMeta%2FAttribute.pm;h=c126884accd65042cc86ef99eb1d02907d243257;hb=30718b50031e1d5202f509cb83abaa2f904a3e4b;hp=46a8412f0ecd474a7641091acfeb3475864c798c;hpb=0fc3ab3516f65e07f2af3fa41a8b344e1db2d0ca;p=gitmo%2FMoose.git diff --git a/lib/Moose/Meta/Attribute.pm b/lib/Moose/Meta/Attribute.pm index 46a8412..c126884 100644 --- a/lib/Moose/Meta/Attribute.pm +++ b/lib/Moose/Meta/Attribute.pm @@ -231,12 +231,14 @@ sub clone_and_inherit_options { if (blessed($options{isa}) && $options{isa}->isa('Moose::Meta::TypeConstraint')) { $type_constraint = $options{isa}; } + elsif (blessed($options{isa}) && Moose::Util::does_role($options{isa}, 'Type::Constraint::Role::Interface')) { + $type_constraint = $options{isa}; + } else { $type_constraint = Moose::Util::TypeConstraints::find_or_create_isa_type_constraint($options{isa}, { package_defined_in => $options{definition_context}->{package} }); (defined $type_constraint) || $self->throw_error("Could not find the type constraint '" . $options{isa} . "'", data => $options{isa}); } - $options{type_constraint} = $type_constraint; } @@ -374,6 +376,14 @@ sub _process_isa_option { && $options->{isa}->isa('Moose::Meta::TypeConstraint') ) { $options->{type_constraint} = $options->{isa}; } + elsif ( + blessed( $options->{isa} ) + && Moose::Util::does_role( + $options->{isa}, 'Type::Constraint::Role::Interface' + ) + ) { + $options->{type_constraint} = $options->{isa}; + } else { $options->{type_constraint} = Moose::Util::TypeConstraints::find_or_create_isa_type_constraint(