6 use Test::More tests => (1 + 2) + (1 + 4) + (3 + 3);
8 sub Int::TYPEDSCALAR { join ':', (caller 0)[1, 2] }
15 eval 'use Lexical::Types; use Lexical::Types::TestRequired1';
16 is $@, '', 'first require test didn\'t croak prematurely';
20 eval 'use Lexical::Types; use Lexical::Types::TestRequired2';
21 is $@, '', 'second require test didn\'t croak prematurely';
26 sub cb3 { push @decls, $_[0]; @_ }
29 *{"Int3$_\::TYPEDSCALAR"} = \&Int::TYPEDSCALAR for qw<X Y Z>;
31 local $SIG{__WARN__} = sub { push @w, join '', 'warn:', @_ };
32 eval <<' TESTREQUIRED3';
34 package Lexical::Types::TestRequired3Z;
35 use Lexical::Types as => \&main::cb3;
36 use Lexical::Types::TestRequired3X;
37 use Lexical::Types::TestRequired3Y;
39 ::is($z, __FILE__.':6', 'pragma in use at the end');
42 @w = grep !/^warn:Attempt\s+to\s+free\s+unreferenced/, @w if "$]" <= 5.008_003;
43 is $@, '', 'third require test didn\'t croak prematurely';
44 is_deeply \@w, [ ], 'third require test didn\'t warn';
45 is_deeply \@decls, [ map "Int3$_", qw<X Z> ],
46 'third require test propagated in the right scopes';