Condition Coverage

lib/B/DeparseTree/PPfns.pm
Criterion Covered Total %
condition 187 364 51.3


and 3 conditions

line !l l&&!r l&&r condition
298 0 0 0 $pre eq '{' and $cx < 1
312 4429 12 4 $name eq 'concat' and $op->first->name eq 'concat'
316 3063 0 1378 $name eq 'null' and B::class($op) eq 'UNOP'
3063 1352 26 $name eq 'null' and B::class($op) eq 'UNOP' and $op->first->name =~ /^(and|x?or)$/
1352 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)
351 69 1322 5 $op->flags & 64 and $flags & 2
359 86 1310 0 $flags & 4 and not $lhs->{'text'} =~ /^(my|our|local|)[\@\(]/
414 0 0 0 $op->name eq 'null' and $op->flags & 128
447 4 1 1 $op->flags & 64 and $op->first->name ne 'concat'
489 0 1920 169 $warnings->isa('B::SPECIAL') and $$warnings == 4
0 0 1920 $warnings->isa('B::SPECIAL') and $$warnings == 5
502 0 2089 0 defined $warning_bits and !defined($self->{'warnings'}) || $self->{'warnings'} ne $warning_bits
566 2089 0 0 $self->{'linenums'} and $cx != 0.5
587 1386 83 14 $left{assoc_class($op)} and $left{assoc_class($left)}
1469 0 14 $left{assoc_class($op)} and $left{assoc_class($left)} and $left{assoc_class($op)} == $left{assoc_class($left)}
672 424 169 0 scalar @args == 1 and substr($args[0], 0, 1) eq '('
593 0 0 scalar @args == 1 and substr($args[0], 0, 1) eq '(' and substr($args[0], -1, 1) eq ')'
683 155 1328 0 $right{assoc_class($op)} and $right{assoc_class($right)}
1483 0 0 $right{assoc_class($op)} and $right{assoc_class($right)} and $right{assoc_class($op)} == $right{assoc_class($right)}
755 0 0 0 $last =~ /^[:'{\[\w_]/ and $first =~ s/([\$\@])([A-Za-z_]\w*)$/$1{$2}/
0 0 0 $last =~ /^[A-Z\\\^\[\]_?]/ and $first =~ s/([\$\@])\^$/$1{^}/
962 0 0 0 $indir_op->name eq 'const' and $indir_op->private & 64
981 7 1 0 $name eq 'sort' and $op->private & 3
7 1 0 $name eq 'sort' and $op->private & 16
995 0 0 8 not $fmt and $kid == $firstkid
0 7 1 not $fmt and $kid == $firstkid and $name eq 'sort'
7 0 1 not $fmt and $kid == $firstkid and $name eq 'sort' and $firstkid->name =~ /^enter(xs)?sub/
1012 7 1 0 $name eq 'sort' and $op->private & 4
1018 7 1 0 $name eq 'sort' and $op->private & 8
1027 8 0 0 $fmt ne '' and $name eq 'sort'
0 7 1 not $fmt and $name eq 'sort'
7 0 1 not $fmt and $name eq 'sort' and not B::Deparse::null($op->first->sibling)
7 0 1 not $fmt and $name eq 'sort' and not B::Deparse::null($op->first->sibling) and $op->first->sibling->name eq 'entersub'
1096 1764 0 4 $kid->name eq 'null' && $kid->targ == 3 && B::Deparse::_op_is_or_was($op, 157)
1121 72 35 0 $cx < 1 and B::Deparse::is_scope($right)
107 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
72 0 35 $cx < 1 and $blockname
72 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 8 24 $cx > $lowprec and $highop
1182 199 2 76 defined $proto && $proto =~ /^;?\*/ || $name eq 'select' and $kid->name eq 'rv2gv'
201 2 74 defined $proto && $proto =~ /^;?\*/ || $name eq 'select' and $kid->name eq 'rv2gv' and not $kid->private & 128
1194 273 4 0 $name eq 'chmod' and $first->{'text'} =~ /^\d+$/
1204 248 29 0 not $parens || $nollafr and substr($first->{'text'}, 0, 1) eq '('
1208 16 254 7 defined $proto and $proto =~ /^\*\*/
270 0 7 defined $proto and $proto =~ /^\*\*/ and $kid->name eq 'rv2gv'
254 1 6 defined $proto and $proto =~ /^\*\*/ and $kid->name eq 'rv2gv' and not $kid->private & 128
1217 273 4 0 $name eq 'reverse' and $op->private & 8
1227 265 8 4 $name =~ /^(system|exec)$/ and $op->flags & 64
273 0 4 $name =~ /^(system|exec)$/ and $op->flags & 64 and @exprs > 1
1233 0 4 0 $parens and $nollafr
1249 29 244 0 $parens and $nollafr
1321 0 0 0 $enter->flags & 128 and $] < 5.009
1349 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)
1409 2 1 0 $$cont_start != $$op and ${$cont_start;} != ${$body->last;}
1427 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
1624 0 2 0 $op->name eq 'match' and my $targ = $op->targ
1642 5 1 0 ${$bregexp = $op->pmregexp;} and ${$cv = $bregexp->qr_anoncv;}
1679 1 0 4 $matchop->name =~ /^(?:match|transr?|subst)\z/ and $matchop->flags & 128
1756 0 0 0 $matchop->name =~ /^(?:match|transr?|subst)\z/ and $matchop->flags & 128
1800 0 0 0 ref $expr eq 'ARRAY' and scalar @$expr == 2
1828 1032 0 78 ref $info and $info->isa('B::DeparseTree::Node')
1838 1090 14 6 $op->private & (128 | $our_intro) and not $self->{'avoid_local'}{$$op}
1844 0 0 0 utf8::decode($text) and $text =~ /^\W(\w+::)*\w+\z/
1856 1 2 0 not B::Deparse::want_scalar($op) and $self->func_needs_parens($text, $cx, 16)
1880 0 0 0 not B::Deparse::want_scalar($op) and $self->func_needs_parens($text, $cx, 16)
1891 1031 0 73 ref $info and $info->isa('B::DeparseTree::Node')
1902 901 3196 23 $op->private & 128 and not $self->{'avoid_local'}{$$op}
1955 258 2 0 $name eq 'umask' and $info->{'text'} =~ /^\d+$/
1996 38 777 705 $name =~ /^(?!\d)\w/ and not $v =~ /^\$[ab]\z/
815 127 578 $name =~ /^(?!\d)\w/ and not $v =~ /^\$[ab]\z/ and not $globalnames{$name}
904 569 9 $name =~ /^(?!\d)\w/ and not $v =~ /^\$[ab]\z/ and not $globalnames{$name} and $self->{'hints'} & $strict_bits{'vars'}
696 2 7 $name =~ /^(?!\d)\w/ and not $v =~ /^\$[ab]\z/ and not $globalnames{$name} and $self->{'hints'} & $strict_bits{'vars'} and not $self->lex_in_scope($v, 1)
2035 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'
2138 1757 3 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'readline'
1760 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'readline' and $kid->sibling->flags & 64
1757 3 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name =~ /^transr?\z/
1760 0 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name =~ /^transr?\z/ and $kid->sibling->flags & 64
1746 10 4 $op->flags & 128 and $cx < 1
1756 4 0 $op->flags & 128 and $cx < 1 and not $op->targ
1757 0 3 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'null'
1757 3 0 not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'null' and B::class($kid->sibling) eq 'UNOP'
3 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
3 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'
2505 29 6 198 defined prototype $builtinname and $builtinname ne 'CORE::readline'
35 174 24 defined prototype $builtinname and $builtinname ne 'CORE::readline' and prototype($builtinname) =~ /^;?\*/
180 0 24 defined prototype $builtinname and $builtinname ne 'CORE::readline' and prototype($builtinname) =~ /^;?\*/ and $kid->name eq 'rv2gv'
2541 5 1 0 $operator eq '-' and $operand->{'text'} =~ /^[a-zA-Z](?!\w)/
2672 0 0 25 $default and index($str, $default) == -1

or 2 conditions

line l !l condition
361 0 0 $lhs->{'maybe_parens'} ||= {}
374 1310 86 $type || 'binary operator'

or 3 conditions

line l !l&&r !l&&!r condition
180 0 0 168 $name eq 'integer' or $name eq 'bytes'
0 0 168 $name eq 'integer' or $name eq 'bytes' or $name eq 'utf8'
502 1288 0 801 !defined($self->{'warnings'}) || $self->{'warnings'} ne $warning_bits
636 0 0 0 $op->first->name eq 'stub' or $op->first->name eq 'nextstate'
914 0 0 9 $prec <= $cx && substr($first_param, 0, 1) ne '(' || $self->{'parens'}
1151 35 72 0 $type ||= $opname
1161 271 0 30 $cx >= 5 || $self->{'parens'}
1182 74 4 199 defined $proto && $proto =~ /^;?\*/ || $name eq 'select'
1204 248 0 29 $parens || $nollafr
1371 0 0 0 B::Deparse::is_state($body->first) or $body->first->name =~ /^(?:stub|leave|scope)$/
1844 3 0 0 $text =~ /^\W(\w+::)*\w+\z/ or utf8::decode($text) and $text =~ /^\W(\w+::)*\w+\z/
1906 6 10 7 $forbid_parens or B::Deparse::want_scalar($op)
1938 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'}
1963 3 0 257 $cx > 16 or $self->{'parens'}
1989 0 1 1520 not $prefix or $name =~ /::/
1996 7 0 1513 $name =~ /^(?!\d)\w/ and not $v =~ /^\$[ab]\z/ and not $globalnames{$name} and $self->{'hints'} & $strict_bits{'vars'} and not $self->lex_in_scope($v, 1) or $self->lex_in_scope($v)
2388 0 0 2 $array->name eq $regname or $array->name eq 'null'
2577 0 0 78 B::class($op) eq 'NULL' or not $op->can('first')