+++ /dev/null
-#!perl -T
-
-use strict;
-use warnings;
-
-use Test::More tests => 4;
-
-sub Str::TYPEDSCALAR { }
-
-sub Str1::TYPEDSCALAR {
- $_[0] = 'derp';
- ();
-}
-
-sub Str2::TYPEDSCALAR {
- $_[2] = 'herp';
- ();
-}
-
-sub ro_re {
- my ($file, $line) = map quotemeta, @_;
- $file = '\\(eval \\d+\\)' unless $file;
- return qr/^Modification of a read-only value attempted at $file line $line/;
-}
-
-sub maybe_warn {
- diag 'This will throw two warnings' if "$]" >= 5.008_008 and "$]" < 5.009;
-}
-
-{
- maybe_warn();
- local $@;
- eval q!
- use Lexical::Types as => sub { $_[0] = 'derp'; () };
- my Str $x;
- !;
- like $@, ro_re('', 2), '$_[0] in initializer is read only';
-}
-
-SKIP: {
- skip 'Kinda broken on old 5.8.x' => 1 if "$]" <= 5.008_006;
- maybe_warn();
- local $@;
- eval q!
- use Lexical::Types as => sub { $_[1] = 'herp'; () };
- my Str $x;
- !;
- like $@, ro_re('', 2), '$_[1] in initializer is read only';
-}
-
-{
- local $@;
- eval q[
- use Lexical::Types;
- my Str1 $x;
- ];
- like $@, ro_re($0, 11), '$_[0] in initializer is read only';
-}
-
-{
- local $@;
- eval q[
- use Lexical::Types;
- my Str2 $x;
- ];
- like $@, ro_re($0, 16), '$_[2] in initializer is read only';
-}