Branch Coverage

lib/B/DeparseTree/PPfns.pm
Criterion Covered Total %
branch 263 598 43.9


line true false branch
146 9 48 unless *{$_;}{'CODE'}
180 0 168 if ($name eq 'strict') { }
0 168 elsif ($name eq '$[') { }
0 168 elsif ($name eq 'integer' or $name eq 'bytes' or $name eq 'utf8') { }
0 168 elsif ($name eq 're') { }
0 168 elsif ($name eq 'warnings') { }
56 112 elsif ($name eq 'warning_bits') { }
56 56 elsif ($name eq 'hint_bits') { }
56 0 elsif ($name eq '%^H') { }
183 0 0 if ($val eq 'none')
189 0 0 if ($val eq 'all') { }
0 0 elsif (ref $val) { }
205 0 0 unless $val == 0
213 0 0 if ($val) { }
223 0 0 if ($val eq 'none')
229 0 0 if ($val eq 'all') { }
0 0 elsif (ref $val) { }
242 0 0 if ($val eq 'none')
248 0 0 if (ref $val) { }
255 0 0 unless defined $warning_bits
275 0 56 if (@_)
298 0 0 if ($pre eq '{' and $cx < 1)
312 4 4441 if ($name eq 'concat' and $op->first->name eq 'concat')
316 26 1352 if ($name eq 'null' and B::class($op) eq 'UNOP' and $op->first->name =~ /^(and|x?or)$/ and B::Deparse::null($op->first->sibling))
327 2656 1759 $op->flags & 64 ? :
344 1338 58 if (scalar @_ > 5)
346 1310 28 if scalar @_ > 6
351 5 1391 if ($op->flags & 64 and $flags & 2)
355 1322 74 if ($flags & 1)
359 0 1396 if ($flags & 4 and not $lhs->{'text'} =~ /^(my|our|local|)[\@\(]/)
367 1322 74 if ($flags & 1) { }
410 0 0 if $cv
414 0 0 if ($op->name eq 'null' and $op->flags & 128) { }
424 0 0 $multiline ? :
426 0 0 $multiline ? :
447 1 5 if ($op->flags & 64 and $op->first->name ne 'concat')
471 0 2089 if (@texts)
477 1286 803 if ($stash ne $self->{'curstash'})
489 169 1920 if ($warnings->isa('B::SPECIAL') and $$warnings == 4) { }
1920 0 elsif ($warnings->isa('B::SPECIAL') and $$warnings == 5) { }
0 0 elsif ($warnings->isa('B::SPECIAL')) { }
502 1288 801 if (defined $warning_bits and !defined($self->{'warnings'}) || $self->{'warnings'} ne $warning_bits)
511 0 2089 $] < 5.008009 ? :
513 1337 752 if ($self->{'hints'} != $hints)
522 2089 0 if ($] > 5.009)
526 2089 0 if ($] >= 5.015006)
530 8 2081 if ($from != $to)
531 4 4 if ($to == $feature::hint_mask) { }
532 4 0 if ($self->{'hinthash'}) { }
552 2089 0 if ($] > 5.009)
566 0 2089 if ($self->{'linenums'} and $cx != 0.5)
568 0 0 if $self->{'opaddr'}
573 0 2089 if ($op->label)
587 14 1469 if ($left{assoc_class($op)} and $left{assoc_class($left)} and $left{assoc_class($op)} == $left{assoc_class($left)}) { }
636 0 0 if ($op->first->name eq 'stub' or $op->first->name eq 'nextstate')
657 0 0 if @body
672 0 593 if (scalar @args == 1 and substr($args[0], 0, 1) eq '(' and substr($args[0], -1, 1) eq ')') { }
683 0 1483 if ($right{assoc_class($op)} and $right{assoc_class($right)} and $right{assoc_class($op)} == $right{assoc_class($right)}) { }
700 277 0 if scalar @{$exprs;}
703 333 0 if (defined $expr)
745 14 10 if ($type eq 'const') { }
0 10 elsif ($type eq 'concat') { }
0 10 elsif ($type eq 'join') { }
746 0 14 if $op->private & 0
755 0 0 unless $last =~ /^[A-Z\\\^\[\]_?]/ and $first =~ s/([\$\@])\^$/$1{^}/
769 0 0 if ($type eq 'uc') { }
0 0 elsif ($type eq 'lc') { }
0 0 elsif ($type eq 'ucfirst') { }
0 0 elsif ($type eq 'lcfirst') { }
0 0 elsif ($type eq 'quotemeta') { }
0 0 elsif ($type eq 'fc') { }
792 20 0 if ($op->flags & 4) { }
795 0 20 unless (B::Deparse::null($kid->sibling))
801 0 20 if ($pushmark_op)
806 0 0 unless $word_end > 0
815 0 0 if $op->flags & 128
827 0 0 if $self->{'unquote'}
842 0 1 unless ($array->name eq $padname)
849 1 0 if ($array_name) { }
850 1 0 unless ($array_name =~ /->\z/)
851 0 1 if ($array_name eq '#') { }
858 1 0 if $left
867 0 0 if (is_subscriptable($array)) { }
891 8 0 if (B::class($op) eq 'UNOP') { }
0 0 elsif (B::class($op) =~ /^(SV|PAD)OP$/) { }
894 0 8 if ($name =~ /^-/)
926 0 0 if ($enterop->flags & 128) { }
959 0 8 if ($op->flags & 64)
962 0 0 if (B::Deparse::is_scope($indir_op)) { }
0 0 elsif ($indir_op->name eq 'const' and $indir_op->private & 64) { }
964 0 0 if ($indir_info->{'text'} eq '') { }
981 0 8 if ($name eq 'sort' and $op->private & 3) { }
0 15 elsif ($name eq 'sort' and $op->private & 16) { }
983 0 0 $op->private & 16 ? :
995 1 7 if (not $fmt and $kid == $firstkid and $name eq 'sort' and $firstkid->name =~ /^enter(xs)?sub/) { }
1003 8 0 if (defined $expr)
1012 0 8 if ($name eq 'sort' and $op->private & 4) { }
1018 0 8 if ($name eq 'sort' and $op->private & 8)
1027 0 8 if ($fmt ne '' and $name eq 'sort') { }
1 7 elsif (not $fmt and $name eq 'sort' and not B::Deparse::null($op->first->sibling) and $op->first->sibling->name eq 'entersub') { }
1056 7 0 if (@exprs) { }
1058 0 7 if ($self->func_needs_parens($exprs[0]{'text'}, $cx, 5)) { }
1071 0 0 if 7 < $cx
1095 2623 1768 if $kid->name eq 'pushmark'
1108 0 0 $kid->name eq 'pushmark' ? :
1121 0 107 if ($cx < 1 and B::Deparse::is_scope($right) and $blockname and $self->{'expand'} < 7) { }
35 72 elsif ($cx < 1 and $blockname and not $self->{'parens'} and $self->{'expand'} < 7) { }
24 48 elsif ($cx > $lowprec and $highop) { }
1163 274 27 unless ($kid)
1172 24 277 if (B::Deparse::null($kid))
1174 2 22 $nollafr ? :
1182 74 203 if (defined $proto && $proto =~ /^;?\*/ || $name eq 'select' and $kid->name eq 'rv2gv' and not $kid->private & 128) { }
1194 0 277 if ($name eq 'chmod' and $first->{'text'} =~ /^\d+$/)
1204 0 277 if not $parens || $nollafr and substr($first->{'text'}, 0, 1) eq '('
1208 6 1 if (defined $proto and $proto =~ /^\*\*/ and $kid->name eq 'rv2gv' and not $kid->private & 128)
1217 0 277 if ($name eq 'reverse' and $op->private & 8)
1218 0 0 $parens ? :
1227 4 8 if ($name =~ /^(system|exec)$/ and $op->flags & 64 and @exprs > 1)
1233 0 4 if ($parens and $nollafr) { }
4 0 elsif ($parens) { }
1249 0 273 if ($parens and $nollafr) { }
244 29 elsif ($parens) { }
1260 0 273 if @new_nodes
1264 246 27 if (@skipped_ops)
1302 3 0 if ($kid->name eq 'lineseq') { }
0 0 elsif ($enter->name eq 'enteriter') { }
0 0 elsif ($kid->name eq 'null') { }
0 0 elsif ($kid->name eq 'stub') { }
1306 1 2 if ($kid->last->name eq 'unstack') { }
1320 0 0 if (B::Deparse::null($var)) { }
0 0 elsif ($var->name eq 'rv2gv') { }
0 0 elsif ($var->name eq 'gv') { }
1321 0 0 if ($enter->flags & 128 and $] < 5.009) { }
1333 0 0 if ($enter->private & 64) { }
1349 0 0 if ($ary->name eq 'null' and $enter->private & 2) { }
0 0 elsif ($enter->flags & 64 and not B::Deparse::null($ary->first->sibling->sibling)) { }
1371 0 0 unless (B::Deparse::is_state($body->first) or $body->first->name =~ /^(?:stub|leave|scope)$/)
1409 0 3 if ($$cont_start != $$op and ${$cont_start;} != ${$body->last;}) { }
1412 0 0 if ($bare) { }
1427 0 0 if (defined $cond_info and not B::Deparse::is_scope($cont) and $self->{'expand'} < 3) { }
1431 0 0 defined $init ? :
1446 0 3 unless defined $body
1448 0 3 if (defined $init)
1463 0 3 if (@cont_text)
1477 0 0 if (B::class($op) eq 'PVOP') { }
0 0 elsif (B::class($op) eq 'OP') { }
0 0 elsif (B::class($op) eq 'UNOP') { }
1488 0 0 if $text =~ /^(?!\d)\w/
1540 0 0 if (B::Deparse::is_scope($code_block)) { }
1571 0 0 if ($self->func_needs_parens($nodes[1]{'text'}, $cx, 5)) { }
1584 0 0 if ($is_block) { }
1611 0 6 $] < 5.022 ? :
1624 4 2 if ($op->flags & 64) { }
0 2 elsif ($op->name eq 'match' and my $targ = $op->targ) { }
1642 0 6 if (not B::Deparse::null(my $code_list = $op->code_list)) { }
0 6 elsif (${$bregexp = $op->pmregexp;} and ${$cv = $bregexp->qr_anoncv;}) { }
1 5 elsif (not $have_kid) { }
0 5 elsif ($kid->name ne 'regcomp') { }
1643 0 0 $op->name eq 'qr' ? :
1665 0 0 if ($op->name eq 'split') { }
1676 0 5 if ($matchop->name eq 'regcrest')
1679 4 1 if ($matchop->name =~ /^(?:match|transr?|subst)\z/ and $matchop->flags & 128)
1685 0 6 if $pmflags & 33554432
1688 0 6 if $matchwords{$flags}
1690 0 6 if ($pmflags & 1048576) { }
2 4 elsif ($quote) { }
1702 2 4 if $quote
1704 4 2 if ($binop) { }
1706 4 0 if ($rhs_bound_to_defsv) { }
1729 0 0 if ($op->flags & 64)
1739 0 0 if (B::Deparse::null($kid)) { }
0 0 elsif ($kid->name ne 'regcomp') { }
1741 0 0 if ($extended) { }
1753 0 0 if ($matchop->name eq 'regcrest')
1756 0 0 if ($matchop->name =~ /^(?:match|transr?|subst)\z/ and $matchop->flags & 128)
1762 0 0 if $pmflags & 33554432
1765 0 0 if $matchwords{$flags}
1767 0 0 if ($pmflags & 1048576) { }
0 0 elsif ($quote) { }
1777 0 0 if $quote
1779 0 0 if ($binop) { }
1780 0 0 if ($rhs_bound_to_defsv) { }
1800 0 0 if (ref $expr eq 'ARRAY' and scalar @$expr == 2) { }
1828 78 1032 if (ref $info and $info->isa('B::DeparseTree::Node')) { }
1836 1056 54 $op->name =~ /^(gv|rv2)[ash]v$/ ? :
1838 6 1104 if ($op->private & (128 | $our_intro) and not $self->{'avoid_local'}{$$op}) { }
1840 3 3 $op->private & 128 ? :
1841 3 3 if ($our_local eq 'our')
1844 0 0 unless ($text =~ /^\W(\w+::)*\w+\z/ or utf8::decode($text) and $text =~ /^\W(\w+::)*\w+\z/)
1850 3 0 if ($] >= 5.024)
1851 0 3 if ($type = $self->B::Deparse::find_our_type($text))
1856 0 3 if (not B::Deparse::want_scalar($op) and $self->func_needs_parens($text, $cx, 16)) { }
1865 14 9 $is_node ? :
1876 3 0 if (B::Deparse::want_scalar($op)) { }
1880 0 0 if (not B::Deparse::want_scalar($op) and $self->func_needs_parens($text, $cx, 16)) { }
1891 73 1031 if (ref $info and $info->isa('B::DeparseTree::Node')) { }
1902 23 4097 if ($op->private & 128 and not $self->{'avoid_local'}{$$op}) { }
1903 2 21 $op->private & 64 ? :
1906 16 7 if ($forbid_parens or B::Deparse::want_scalar($op)) { }
1923 1 7 if (&B::DeparseTree::Node::parens_test($self, $cx, $prec)) { }
1927 0 1 if $cx == 16
1938 0 1 if ($prec <= $cx or substr($params, 0, 1) eq '(' or $self->{'parens'}) { }
1955 0 260 if ($name eq 'umask' and $info->{'text'} =~ /^\d+$/)
1963 3 257 if ($cx > 16 or $self->{'parens'}) { }
1973 0 257 if (substr($info->{'text'}, 0, 1) eq '(') { }
1988 46 1475 $prefix eq '$#' ? :
1989 1 1520 if not $prefix or $name =~ /::/
1996 7 1513 if $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)
2005 0 159 if ($op->private & 16) { }
2022 0 0 if (B::class($op) eq 'OP') { }
0 0 elsif (B::class($op) eq 'COP') { }
2023 0 0 if ($op->targ == 5) { }
2035 0 0 if ($self->is_list_older($kid)) { }
0 0 elsif ($kid->name eq 'enter') { }
0 0 elsif ($kid->name eq 'leave') { }
0 0 elsif ($kid->name eq 'scope') { }
0 0 elsif ($op->targ == 67) { }
0 0 elsif ($op->targ == 24) { }
0 0 elsif (not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'readline' and $kid->sibling->flags & 64) { }
0 0 elsif (not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'trans' and $kid->sibling->flags & 64) { }
0 0 elsif ($op->flags & 128 and $cx < 1 and not $op->targ) { }
0 0 elsif (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') { }
2100 0 2627 if ($node->{'parens'}) { }
672 1955 elsif (exists $node->{'fmt'}) { }
2104 627 45 if ($node->{'fmt'} =~ /^(.*)%[cCF]/)
2109 1951 4 if ($node->{'text'} =~ /^(.*)\W/)
2113 2578 49 if (defined $l)
2114 2526 52 $l > 0 ? :
2126 1 4391 if (B::class($op) eq 'OP') { }
0 4391 elsif (B::class($op) eq 'COP') { }
2129 1 0 if $op->targ == 5
2131 0 0 if $op->targ == 67
2138 2627 1764 if ($self->is_list_newer($op)) { }
0 1764 elsif ($kid->name eq 'enter') { }
0 1764 elsif ($kid->name eq 'leave') { }
0 1764 elsif ($kid->name eq 'scope') { }
0 1764 elsif ($op->targ == 67) { }
4 1760 elsif ($op->targ == 24) { }
0 1760 elsif (not B::Deparse::null($kid->sibling) and $kid->sibling->name eq 'readline' and $kid->sibling->flags & 64) { }
0 1760 elsif (not B::Deparse::null($kid->sibling) and $kid->sibling->name =~ /^transr?\z/ and $kid->sibling->flags & 64) { }
0 1760 elsif ($op->flags & 128 and $cx < 1 and not $op->targ) { }
0 1760 elsif (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') { }
2200 2578 49 if ($position)
2228 0 9 if ($op->flags & 64)
2233 0 9 if (B::Deparse::null($right)) { }
2246 1 8 $dolist ? :
2248 1 8 if ($dolist)
2262 0 9 if (@skipped_ops)
2270 0 0 if ($start >= 0) { }
2310 0 0 if ($op->flags & 64)
2317 0 0 if (B::Deparse::null($op->pmreplroot)) { }
2331 0 0 if ($pmflags & 67108864) { }
2338 0 0 if (B::Deparse::null($kid)) { }
2340 0 0 if ($extended) { }
2350 0 0 if $pmflags & 134217728
2351 0 0 if $pmflags & 67108864
2354 0 0 if $substwords{$flags}
2361 0 0 if @other_ops
2362 0 0 if ($binop) { }
2379 2 0 if (B::class($op) eq 'LISTOP') { }
2388 0 2 if $array->name eq $regname or $array->name eq 'null'
2393 0 2 if ($kid->name eq 'list') { }
2404 0 2 if $op->name =~ /^kv/i
2407 2 0 if ($array_info) { }
2428 0 18 if ($op->flags & 64) { }
0 18 elsif (my $targ = $op->targ) { }
2439 14 4 if (B::Deparse::null($op->pmreplroot)) { }
2453 4 14 if ($pmflags & 67108864) { }
2459 0 18 if (not B::Deparse::null(my $code_list = $op->code_list)) { }
18 0 elsif (B::Deparse::null($kid)) { }
2467 1 17 if $pmflags & 134217728
2468 4 14 if $pmflags & 67108864
2471 0 18 if $substwords{$flags}
2476 4 14 if @other_ops
2479 0 18 if ($binop) { }
2497 233 58 if ($op->flags & 4) { }
2499 0 233 unless ($name)
2504 233 0 unless $builtinname =~ /^CORE::/
2505 24 174 if (defined prototype $builtinname and $builtinname ne 'CORE::readline' and prototype($builtinname) =~ /^;?\*/ and $kid->name eq 'rv2gv')
2512 1 232 if ($nollafr)
2526 8 50 if $op->flags & 128
2541 0 6 if ($flags & 1) { }
0 6 elsif ($operator eq '-' and $operand->{'text'} =~ /^[a-zA-Z](?!\w)/) { }
2577 0 78 if (B::class($op) eq 'NULL' or not $op->can('first'))
2584 78 0 if ($kid->name eq 'gv') { }
0 0 elsif (B::Deparse::is_scalar($kid)) { }
2591 0 0 if ($str =~ /^\$([^\w\d])\z/)
2620 4 3 if $real_block
2621 4 3 if ($real_block) { }
2623 0 4 if (B::Deparse::is_miniwhile($kid))
2626 0 0 if ($name eq 'and') { }
0 0 elsif ($name eq 'or') { }
2651 0 7 if ($cx > 0) { }
2655 0 0 if (B::Deparse::is_lexical_subs(@kids)) { }
2672 25 0 if $default and index($str, $default) == -1
2677 0 0 if ($q ne 'qr')
2679 0 0 if $succeed
2683 0 0 if index($str, $delim) == -1
2686 0 0 if ($default) { }