#!perl -T
use strict;
use warnings;
use Test::More tests => 6;
use constant Str => 'MyTypes::Str';
use constant Int => 'MyTypes::Int';
use constant Num => 'MyTypes::Num';
sub MyTypes::Str::new { "str:$_[0]" }
sub MyTypes::Int::new { "int:$_[0]" }
{ package MyTypes::Num }
{
use Lexical::Types as => sub { $_[0] =~ /(?:Str|Int)/ ? ($_[0], 'new') : () };
my Str $x;
is $x, "str:MyTypes::Str", 'my constant_type $x';
my Int ($y, $z);
is $y, "int:MyTypes::Int", 'my constant_type ($y,';
is $z, "int:MyTypes::Int", 'my constant_type $z)';
my Num $t;
is $t, undef, 'my constant_type_skipped $t';
my MyTypes::Str $u;
is $u, "str:MyTypes::Str", 'my MyTypes::Str $u';
my MyTypes::Num $v;
is $v, undef, 'my MyTypes::Num $v';
}