{
package Foo;
- use Class::Tiny;
+ use Moo;
has one => (is => 'rw', trigger => sub { push @::tr, $_[1] });
}
package Bar;
use Sub::Quote;
- use Class::Tiny;
+ use Moo;
has one => (is => 'rw', trigger => quote_sub q{ push @::tr, $_[1] });
}
run_for 'Bar';
+{
+ package Baz;
+
+ use Sub::Quote;
+ use Moo;
+
+ has one => (
+ is => 'rw',
+ trigger => quote_sub(q{ push @{$tr}, $_[1] }, { '$tr' => \\@::tr })
+ );
+}
+
+run_for 'Baz';
+
+{
+ package Default;
+
+ use Sub::Quote;
+ use Moo;
+
+ has one => (
+ is => 'rw',
+ trigger => quote_sub(q{ push @{$tr}, $_[1] }, { '$tr' => \\@::tr }),
+ default => sub { 0 }
+ );
+}
+
+run_for 'Default';
+
+{
+ package LazyDefault;
+
+ use Sub::Quote;
+ use Moo;
+
+ has one => (
+ is => 'rw',
+ trigger => quote_sub(q{ push @{$tr}, $_[1] }, { '$tr' => \\@::tr }),
+ default => sub { 0 },
+ lazy => 1
+ );
+}
+
+run_for 'LazyDefault';
+
+{
+ package Shaz;
+
+ use Moo;
+
+ has one => (is => 'rw', trigger => 1 );
+
+ sub _trigger_one { push @::tr, $_[1] }
+}
+
+run_for 'Shaz';
+
done_testing;