=head1 DESCRIPTION
-Whenever a type handle function (e.g. C<Int()> can't find a type
+Whenever a type handle function (e.g. C<Int()> can't find a type
constraint under it's full name, it assumes it has not yet been defined.
-It will then return an instance of this class, handling only
+It will then return an instance of this class, handling only
stringification, name and possible identification of undefined types.
Later, when you try to use the Undefined Type Constraint, autovivification will
return $_[0]->{name};
}
-=head2 can_be_inlined
-
-Always returns false. Needed for compatbility with Moose 2.0100+.
-
-=cut
-
-sub can_be_inlined { 0 }
-
=head2 __autovivify
Try to see if the type constraint has yet been defined and if so create it.
}
}
+=head2 can_be_inlined
+
+Make sure that if a type hasn't been defined yet when Moose wants to inline it,
+we don't allow inlining.
+
+=cut
+
+sub can_be_inlined {
+ my $self = shift;
+ if(my $type_constraint = $self->__autovivify) {
+ return $type_constraint->can_be_inlined;
+ } else {
+ return;
+ }
+}
+
=head2 AUTOLOAD
Try to autovivify and delegate
sub AUTOLOAD {
my ($self, @args) = @_;
- my ($method) = our $AUTOLOAD =~ /([^:]+)$/;
+ my ($method) = our $AUTOLOAD =~ /([^:]+)$/;
if(my $type_constraint = $self->__autovivify) {
return $type_constraint->$method(@args);
=head1 SEE ALSO
L<MooseX::Types::Moose>,
-L<Moose::Util::TypeConstraints>,
+L<Moose::Util::TypeConstraints>,
L<Moose::Meta::TypeConstraint>,
L<Carp::Clan>