Skip to content

Commit

Permalink
fix "prototype mismatch" from Parse::RecDescent
Browse files Browse the repository at this point in the history
Parse::RecDescent destroys the entire namespace it creates, but it does
so by first breaking potential cycles by saving a blank subref to the
stash. If that sub it's overwriting had a prototype, we get a warning.

We shouldn't do all this in the parsing anyway, we should build a tree
to comb through later, but for now, not importing the prototyped subs
fixes this.

Fixes #103
  • Loading branch information
preaction committed Jan 28, 2015
1 parent af37bfa commit e1da406
Showing 1 changed file with 9 additions and 9 deletions.
18 changes: 9 additions & 9 deletions lib/ETL/Yertl/Command/yq/RecDescent.pm
Expand Up @@ -13,7 +13,7 @@ $::RD_HINT = 1;
my $grammar = q{
{
use Data::Dumper;
use boolean qw( true false );
use boolean ();
sub one { return is_list( $_[0] ) ? $_[0]->[0] : $_[0] }
sub is_list { return ref $_[0] eq 'list' }
sub flatten { map { is_list( $_ ) ? @$_ : $_ } @_ }
Expand Down Expand Up @@ -87,33 +87,33 @@ my $grammar = q{
# another value. Undef will never be treated as '' or 0 here.
if ( $cond eq 'eq' ) {
$return = defined $lhs_value == defined $rhs_value
&& $lhs_value eq $rhs_value ? true : false;
&& $lhs_value eq $rhs_value ? boolean::true : boolean::false;
}
elsif ( $cond eq 'ne' ) {
$return = defined $lhs_value != defined $rhs_value
|| $lhs_value ne $rhs_value ? true : false;
|| $lhs_value ne $rhs_value ? boolean::true : boolean::false;
}
elsif ( $cond eq '==' ) {
$return = defined $lhs_value == defined $rhs_value
&& $lhs_value == $rhs_value ? true : false;
&& $lhs_value == $rhs_value ? boolean::true : boolean::false;
}
elsif ( $cond eq '!=' ) {
$return = defined $lhs_value != defined $rhs_value
|| $lhs_value != $rhs_value ? true : false;
|| $lhs_value != $rhs_value ? boolean::true : boolean::false;
}
# These operators allow undef warnings, since equating undef to 0 or ''
# can be a cause of problems.
elsif ( $cond eq '>' ) {
$return = $lhs_value > $rhs_value ? true : false;
$return = $lhs_value > $rhs_value ? boolean::true : boolean::false;
}
elsif ( $cond eq '>=' ) {
$return = $lhs_value >= $rhs_value ? true : false;
$return = $lhs_value >= $rhs_value ? boolean::true : boolean::false;
}
elsif ( $cond eq '<' ) {
$return = $lhs_value < $rhs_value ? true : false;
$return = $lhs_value < $rhs_value ? boolean::true : boolean::false;
}
elsif ( $cond eq '<=' ) {
$return = $lhs_value <= $rhs_value ? true : false;
$return = $lhs_value <= $rhs_value ? boolean::true : boolean::false;
}
$return = list( $return );
}
Expand Down

0 comments on commit e1da406

Please sign in to comment.