fix calling shadowed subs again
Graham Knop [Tue, 18 Jun 2013 13:00:00 +0000 (09:00 -0400)]
lib/Filter/Keyword/Parser.pm
t/simple.t

index 10cc3d1..86ab9a3 100644 (file)
@@ -29,6 +29,7 @@ has code => (is => 'rw', default => sub { '' });
 
 has current_keyword => (is => 'rw', clearer => 1);
 has keyword_matched => (is => 'rw');
+has keyword_parsed => (is => 'rw');
 
 sub get_next {
   my ($self) = @_;
@@ -38,10 +39,15 @@ sub get_next {
     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) {
index deec7d9..47b744a 100644 (file)
@@ -63,9 +63,11 @@ method spoon {
 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');