} else {
$TYPE{$name} = sub { local $_=$_[0]; $constraint->($_) };
}
+ return $name;
}
sub coerce {
}
sub class_type {
- my $pkg = caller(0);
my($name, $conf) = @_;
- my $class = $conf->{class};
- subtype(
- $name => where => sub { $_->isa($class) }
- );
+ if ($conf && $conf->{class}) {
+ # No, you're using this wrong
+ warn "class_type() should be class_type(ClassName). Perhaps you're looking for subtype $name => as '$conf->{class}'?";
+ subtype($name, as => $conf->{class});
+ } else {
+ subtype(
+ $name => where => sub { $_->isa($name) }
+ );
+ }
}
sub role_type {
require t::lib::ClassType_Foo;
- class_type Headers => { class => 't::lib::ClassType_Foo' };
+ # XXX: This below API is different from that of Moose.
+ # class_type() should be class_type 'ClassName';
+ # class_type 'Headers' => { class => 't::lib::ClassType_Foo' };
+ # this should be subtype Headers => as 't::lib::ClassType_foo';
+ subtype 'Headers'
+ => as 't::lib::ClassType_Foo'
+ ;
+
coerce 'Headers' =>
from 'HashRef' => via {
t::lib::ClassType_Foo->new(%{ $_ });