Condition Coverage

lib/B/DeparseTree/PPfns.pm
Criterion Covered Total %
condition 203 394 51.5


and 3 conditions

line !l l&&!r l&&r condition
325 4365 12 4 $name eq 'concat' and $op->first->name eq 'concat'
329 3012 0 1365 $name eq 'null' and B::class($op) eq 'UNOP'
3012 1339 26 $name eq 'null' and B::class($op) eq 'UNOP' and $op->first->name =~ /^(and|x?or)$/
1339 0 26 $name eq 'null' and B::class($op) eq 'UNOP' and $op->first->name =~ /^(and|x?or)$/ and B::Deparse::null($op->first->sibling)
364 58 1315 5 $op->flags & 64 and $flags & 2
372 77 1301 0 $flags & 4 and not $lhs->{'text'} =~ /^(my|our|local|)[\@\(]/
429 0 0 0 $op->name eq 'null' and $op->flags & 128
462 4 1 1 $op->flags & 64 and $op->first->name ne 'concat'
507 0 1887 200 $warnings->isa('B::SPECIAL') and $$warnings == 4
0 0 1887 $warnings->isa('B::SPECIAL') and $$warnings == 5
520 0 2087 0 defined $warning_bits and !defined($self->{'warnings'}) || $self->{'warnings'} ne $warning_bits
584 2087 0 0 $self->{'linenums'} and $cx != 0.5
605 1351 84 16 $left{assoc_class($op)} and $left{assoc_class($left)}
1435 2 14 $left{assoc_class($op)} and $left{assoc_class($left)} and $left{assoc_class($op)} == $left{assoc_class($left)}
692 573 0 0 scalar @args == 1 && substr($args[0]{'text'}, 0, 1) eq '(' && substr($args[0]{'text'}, 0, 1) eq ')'
701 0 0 0 scalar @args == 1 and substr($args[0], 0, 1) eq '('
0 0 0 scalar @args == 1 and substr($args[0], 0, 1) eq '(' and substr($args[0], -1, 1) eq ')'
712 130 1321 0 $right{assoc_class($op)} and $right{assoc_class($right)}
1451 0 0 $right{assoc_class($op)} and $right{assoc_class($right)} and $right{assoc_class($op)} == $right{assoc_class($right)}
788 0 0 0 $last->{'text'} =~ /^[:'{\[\w_]/ and $first->{'text'} =~ s/([\$\@])([A-Za-z_]\w*)$/$1{$2}/
0 0 0 $last->{'text'} =~ /^[A-Z\\\^\[\]_?]/ and $first->{'text'} =~ s/([\$\@])\^$/$1{^}/
1012 0 0 0 $indir_op->name eq 'const' and $indir_op->private & 64
1029 34 15 0 $name eq 'sort' and $op->private & 3
34 15 0 $name eq 'sort' and $op->private & 16
1043 3 12 42 not $fmt and $kid == $firstkid
15 31 11 not $fmt and $kid == $firstkid and $name eq 'sort'
43 10 1 not $fmt and $kid == $firstkid and $name eq 'sort' and $firstkid->name =~ /^enter(xs)?sub/
1060 34 15 0 $name eq 'sort' and $op->private & 4
1066 34 13 2 $name eq 'sort' and $op->private & 8
1077 44 3 0 $fmt ne '' and $name eq 'sort'
3 31 13 not $fmt and $name eq 'sort'
34 4 9 not $fmt and $name eq 'sort' and not B::Deparse::null($op->first->sibling)
35 8 1 not $fmt and $name eq 'sort' and not B::Deparse::null($op->first->sibling) and $op->first->sibling->name eq 'entersub'
1175 2643 0 4 $kid->name eq 'null' && $kid->targ == 3 && B::Deparse::_op_is_or_was($op, 157)
1200 62 35 0 $cx < 1 and B::Deparse::is_scope($right)
97 0 0 $cx < 1 and B::Deparse::is_scope($right) and $blockname
35 0 0 $cx < 1 and B::Deparse::is_scope($right) and $blockname and $self->{'expand'} < 7
62 0 35 $cx < 1 and $blockname
62 0 35 $cx < 1 and $blockname and not $self->{'parens'}
0 0 35 $cx < 1 and $blockname and not $self->{'parens'} and $self->{'expand'} < 7
40 6 16 $cx > $lowprec and $highop
1261 196 2 76 defined $proto && $proto =~ /^;?\*/ || $name eq 'select' and $kid->name eq 'rv2gv'
198 2 74 defined $proto && $proto =~ /^;?\*/ || $name eq 'select' and $kid->name eq 'rv2gv' and not $kid->private & 128
1273 270 4 0 $name eq 'chmod' and $first->{'text'} =~ /^\d+$/
1283 245 29 0 not $parens || $nollafr and substr($first->{'text'}, 0, 1) eq '('
1287 15 252 7 defined $proto and $proto =~ /^\*\*/
267 0 7 defined $proto and $proto =~ /^\*\*/ and $kid->name eq 'rv2gv'
252 1 6 defined $proto and $proto =~ /^\*\*/ and $kid->name eq 'rv2gv' and not $kid->private & 128
1296 270 4 0 $name eq 'reverse' and $op->private & 8
1315 266 8 0 $name =~ /^(system|exec)$/ and $op->flags & 64
274 0 0 $name =~ /^(system|exec)$/ and $op->flags & 64 and @exprs > 1
1321 0 0 0 $parens and $nollafr
1337 29 242 3 $parens and $nollafr
1410 0 0 0 $enter->flags & 128 and $] < 5.009
1438 0 0 0 $ary->name eq 'null' and $enter->private & 2
0 0 0 $enter->flags & 64 and not B::Deparse::null($ary->first->sibling->sibling)
1498 4 1 0 $$cont_start != $$op and ${$cont_start;} != ${$body->last;}
1516 0 0 0 defined $cond_info and not B::Deparse::is_scope($cont)
0 0 0 defined $cond_info and not B::Deparse::is_scope($cont) and $self->{'expand'} < 3
1728 0 2 0 $op->name eq 'match' and my $targ = $op->targ
1746 5 1 0 ${$bregexp = $op->pmregexp;} and ${$cv = $bregexp->qr_anoncv;}
1783 1 0 4 $matchop->name =~ /^(?:match|transr?|subst)\z/ and $matchop->flags & 128
1860 0 0 0 $matchop->name =~ /^(?:match|transr?|subst)\z/ and $matchop->flags & 128
1904 0 0 0 ref $expr eq 'ARRAY' and scalar @$expr == 2
1932 1353 0 94 ref $info and $info->isa('B::DeparseTree::TreeNode')
1942 1426 14 7 $op->private & (128 | $our_intro) and not $self->{'avoid_local'}{$$op}
1948 0 0 0 utf8::decode($text) and $text =~ /^\W(\w+::)*\w+\z/
1960 1 3 0 not B::Deparse::want_scalar($op) and $self->func_needs_parens($text, $cx, 16)
1984 0 0 0 not B::Deparse::want_scalar($op) and $self->func_needs_parens($text, $cx, 16)
1995 1352 0 88 ref $info and $info->isa('B::DeparseTree::TreeNode')
2014 4378 0 0 !$forbid_parens && $self->{'in_refgen'} && $op->name =~ /[ah]v\z/ && ($op->flags & 24) == 8
2018 0 4400 0 not $need_parens and $self->{'in_refgen'}
2021 1230 3141 29 $op->private & 128 and not $self->{'avoid_local'}{$$op}
2051 0 0 0 $op->private & 128 and not $self->{'avoid_local'}{$$op}
2104 252 2 0 $name eq 'umask' and $info->{'text'} =~ /^\d+$/
2150 46 1044 706 $name =~ /^(?!\d)\w/ and not $v =~ /^\$[ab]\z/
1090 133 573 $name =~ /^(?!\d)\w/ and not $v =~ /^\$[ab]\z/ and not $globalnames{$name}
1177 539 34 $name =~ /^(?!\d)\w/ and not $v =~ /^\$[ab]\z/ and not $globalnames{$name} and $self->{'hints'} & $strict_bits{'vars'}
672 21 13 $name =~ /^(?!\d)\w/ and not $v =~ /^\$[ab]\z/ and not $globalnames{$name} and $self->{'hints'} & $strict_bits{'vars'} and not $self->B::Deparse::lex_in_scope($v, 1)
2178 2 0 0 $kid->name eq 'list' and B::Deparse::want_list($kid)
2272 2 0 0 $minfo->{'object'}->name eq 'scope' and B::Deparse::want_list($minfo->{'object'})
2330 0 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'readline'
0 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'readline' and $kid->sibling->flags & 64
0 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'trans'
0 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'trans' and $kid->sibling->flags & 64
0 0 0 $op->flags & 128 and $cx < 1
0 0 0 $op->flags & 128 and $cx < 1 and not $op->targ
0 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'null'
0 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'null' and B::class($kid->sibling) eq 'UNOP'
0 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'null' and B::class($kid->sibling) eq 'UNOP' and $kid->sibling->first->flags & 64
0 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'null' and B::class($kid->sibling) eq 'UNOP' and $kid->sibling->first->flags & 64 and $kid->sibling->first->name eq 'rcatline'
2423 5255 0 0 $] >= 5.028 and $op->targ == 157
2441 2638 5 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'readline'
2643 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'readline' and $kid->sibling->flags & 64
2638 5 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name =~ /^transr?\z/
2643 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name =~ /^transr?\z/ and $kid->sibling->flags & 64
2629 10 4 $op->flags & 128 and $cx < 1
2639 4 0 $op->flags & 128 and $cx < 1 and not $op->targ
2638 0 5 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'null'
2638 3 2 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'null' and B::class($kid->sibling) eq 'UNOP'
3 2 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'null' and B::class($kid->sibling) eq 'UNOP' and $kid->sibling->first->flags & 64
5 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'null' and B::class($kid->sibling) eq 'UNOP' and $kid->sibling->first->flags & 64 and $kid->sibling->first->name eq 'rcatline'
2620 0 0 0 $kid->name eq 'null' and not B::Deparse::null($kid->first)
2790 0 0 0 not ref $replroot and $replroot > 0
2930 33 6 192 defined prototype $builtinname and $builtinname ne 'CORE::readline'
39 168 24 defined prototype $builtinname and $builtinname ne 'CORE::readline' and prototype($builtinname) =~ /^;?\*/
174 0 24 defined prototype $builtinname and $builtinname ne 'CORE::readline' and prototype($builtinname) =~ /^;?\*/ and $kid->name eq 'rv2gv'
2968 5 1 0 $operator eq '-' and $operand->{'text'} =~ /^[a-zA-Z](?!\w)/
3109 0 0 31 $default and index($str, $default) == -1

or 2 conditions

line l !l condition
374 0 0 $lhs->{'maybe_parens'} ||= {}
387 1301 77 $type || 'binary operator'

or 3 conditions

line l !l&&r !l&&!r condition
185 0 0 183 $name eq 'integer' or $name eq 'bytes'
0 0 183 $name eq 'integer' or $name eq 'bytes' or $name eq 'utf8'
520 1266 0 821 !defined($self->{'warnings'}) || $self->{'warnings'} ne $warning_bits
654 0 0 0 $op->first->name eq 'stub' or $op->first->name eq 'nextstate'
963 56 0 21 $prec <= $cx || substr($first_param, 0, 1) eq '(' || $self->{'parens'}
1230 35 62 0 $type ||= $opname
1240 268 0 30 $cx >= 5 || $self->{'parens'}
1261 74 4 196 defined $proto && $proto =~ /^;?\*/ || $name eq 'select'
1283 245 0 29 $parens || $nollafr
1460 0 0 0 B::Deparse::is_state($body->first) or $body->first->name =~ /^(?:stub|leave|scope)$/
1948 4 0 0 $text =~ /^\W(\w+::)*\w+\z/ or utf8::decode($text) and $text =~ /^\W(\w+::)*\w+\z/
2033 7 14 8 $forbid_parens or B::Deparse::want_scalar($op)
2055 0 0 0 $forbid_parens or B::Deparse::want_scalar($op)
2087 0 0 1 $prec <= $cx or substr($params, 0, 1) eq '('
0 0 1 $prec <= $cx or substr($params, 0, 1) eq '(' or $self->{'parens'}
2112 3 0 251 $cx > 16 or $self->{'parens'}
2143 0 1 1796 not $prefix or $name =~ /::/
2150 13 0 1783 $name =~ /^(?!\d)\w/ and not $v =~ /^\$[ab]\z/ and not $globalnames{$name} and $self->{'hints'} & $strict_bits{'vars'} and not $self->B::Deparse::lex_in_scope($v, 1) or $self->B::Deparse::lex_in_scope($v)
2201 2 0 1 B::Deparse::null($kid->sibling) || $kid->name =~ /^method(?:_named)?\z/
2739 0 0 2 $array->name eq $regname or $array->name eq 'null'
3004 0 0 75 B::class($op) eq 'NULL' or not $op->can('first')