+++ /dev/null
-#!perl -T
-
-use strict;
-use warnings;
-
-{
- package Lexical::Types::Test::Str;
-
- sub TIESCALAR {
- my ($class, $buf) = @_;
- $class = ref($class) || $class;
- unless (defined $buf) {
- $buf = '';
- } elsif ($buf->isa($class)) {
- $buf = $buf->{buffer};
- }
- bless { buffer => $buf }, $class;
- }
-
- sub FETCH { shift->{buffer} }
-
- sub STORE {
- my ($self, $val) = @_;
- $self->{buffer} = (ref($val) && $val->isa(ref($self))) ? $val->{buffer}
- : $val;
- }
-
- sub TYPEDSCALAR { tie $_[1], __PACKAGE__; () }
-}
-
-{ package Str; }
-
-use Test::More tests => 2 * 6;
-
-use Lexical::Types as => 'Lexical::Types::Test';
-
-for (1 .. 2) {
- my Str $x = "abc";
-
- is ref(tied($x)), 'Lexical::Types::Test::Str', '$x';
- is "$x", 'abc', '$x contains the right thing';
-
- $x .= "foo";
- is ref(tied($x)), 'Lexical::Types::Test::Str', '$x . "foo"';
- is "$x", 'abcfoo', '$x . "foo" contains the right thing';
-
- my Str $y = "bar" . $x;
-
- is ref(tied($y)), 'Lexical::Types::Test::Str', '$y';
- is "$y", 'barabcfoo', '$y contains the right thing';
-}