has current_keyword => (is => 'rw', clearer => 1);
has keyword_matched => (is => 'rw');
+has keyword_parsed => (is => 'rw');
sub get_next {
my ($self) = @_;
return ('', 0);
}
if (my $keyword = $self->current_keyword) {
- if ($self->keyword_matched) {
+ if ($self->keyword_parsed) {
$keyword->clear_globref;
$self->clear_current_keyword;
+ $self->keyword_parsed(0);
+ }
+ elsif ($self->keyword_matched) {
+ $keyword->clear_globref;
$self->short_circuit(1);
+ $self->keyword_parsed(1);
return $keyword->parse($self);
}
elsif ($keyword->have_match) {
is(__PACKAGE__->spoon, 'I HAZ A SPOON', 'result of second method correct');
#line 1
-shadowed fun { is(__LINE__, 1, 'line number correct inside second keyword'); 'OH WHAT FUN' }
+shadowed fun { is(__LINE__, 1, 'line number correct inside second keyword'); 'OH WHAT FUN' };
-is($shadowed_called, 1, 'shadowed sub called only by filter output');
+shadowed fun { is(__LINE__, 1, 'line number correct inside second keyword'); 'OH WHAT FUN' };
+
+is($shadowed_called, 2, 'shadowed sub called only by filter output');
is(__LINE__, 5, 'line number after shadowed correct');