The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
use strict;
use warnings;
use Test::More tests => 6;

{
    package MyClass;
    use Mouse;

    has lazy_weak_with_default => (
        is       => 'rw',
        isa      => 'Ref',
        weak_ref => 1,
        lazy     => 1,
        default  => sub{ [] },
    );

    has weak_with_default => (
        is       => 'rw',
        isa      => 'Ref',
        weak_ref => 1,
        default  => sub{ [] },
    );

}

my $o = MyClass->new();
is($o->weak_with_default, undef);
is($o->lazy_weak_with_default, undef);
is($o->lazy_weak_with_default, undef);

MyClass->meta->make_immutable();

$o = MyClass->new();
is($o->weak_with_default, undef);
is($o->lazy_weak_with_default, undef);
is($o->lazy_weak_with_default, undef);