Branch Coverage

blib/lib/Language/P/Parser.pm
Criterion Covered Total %
branch 274 436 62.8


line true false branch
125 61 0 unless $self->_options
133 0 0 if ($option eq 'dump-parse-tree')
152 0 15 unless open my $fh, '<', $file
172 0 387 if ($type == 2)
176 387 0 $self->_package eq 'main' ? :
184 0 61 if ($self->_options->{'dump-parse-tree'} and -f $self->lexer->file)
202 0 202 if $dumper
219 82 90 if ($is_sub or $top_level) { }
90 0 elsif (@{$$self{'_lexical_state'};} > 1) { }
239 82 90 if $$state{'is_sub'} or $$state{'top_level'}
247 3 0 if ($$labels{$goto->left})
265 10 433 unless $value or $type
267 0 433 if ($type and $type != $$token[1] or $value and $value eq $$token[2])
279 328 11 if ($$token[1] == 4 or $$token[1] == 13) { }
11 0 elsif ($$token[1] == 21) { }
296 389 7 if ($$label[1] != 71) { }
315 0 396 if ($$token[1] == 13) { }
7 389 elsif ($$token[1] == 20) { }
87 302 elsif ($$token[1] == 1 and is_keyword $tokidt) { }
0 302 elsif ($special_sub{$$token[2]}) { }
318 0 0 $no_empty ? :
324 17 70 if ($tokidt == 76) { }
10 60 elsif ($tokidt == 4 or $tokidt == 8) { }
12 48 elsif ($tokidt == 28 or $tokidt == 32) { }
11 37 elsif ($tokidt == 20 or $tokidt == 24) { }
0 37 elsif ($tokidt == 80) { }
37 0 elsif ($tokidt == 60 or $tokidt == 64 or $tokidt == 68 or $tokidt == 56 or $tokidt == 44 or $tokidt == 48 or $tokidt == 52 or $tokidt == 72) { }
374 17 4 unless $no_sub_token
376 17 4 $name ? :
379 17 4 if ($fqname) { }
380 0 17 unless $flags & 1
384 0 17 if ($$next[1] == 13) { }
0 17 elsif ($$next[1] != 20) { }
395 0 4 unless $flags & 2
399 17 4 $fqname ? :
413 17 4 if ($fqname)
446 10 10 if $$else[1] != 1 or $$else[3] != 12 and $$else[3] != 16
451 4 6 if ($$else[3] == 16)
459 4 6 if ($expr) { }
489 4 7 if ($$token[1] == 16) { }
3 4 elsif ($$token[1] == 1 and $$token[3] == 60 || $$token[3] == 64 || $$token[3] == 68) { }
4 0 elsif ($$token[1] == 47) { }
493 0 4 if ($$sep[1] == 17) { }
4 0 elsif ($$sep[1] == 13) { }
530 0 3 unless $name
547 7 0 unless ($foreach_expr)
600 19 7 unless $$token[1] == 1 and $$token[3] == 36
613 10 329 if ($$keyword[1] == 1 and is_keyword($$keyword[3]))
616 10 0 if ($keyidt == 4 or $keyidt == 8) { }
0 0 elsif ($keyidt == 28 or $keyidt == 32) { }
0 0 elsif ($keyidt == 20 or $keyidt == 24) { }
664 8 313 if ($self->_in_declaration) { }
0 313 elsif ($type == 2) { }
678 22 291 if ($lex)
679 5 17 if $level > 0
698 8 650 if ($$next[1] == 56) { }
638 12 elsif ($arrow_only) { }
0 12 elsif ($$next[1] == 16 or $$next[1] == 18 or $$next[1] == 20) { }
702 8 0 if ($$bracket[1] == 16 or $$bracket[1] == 18 or $$bracket[1] == 20) { }
724 8 0 if ($with_arguments)
732 8 0 if (not $subscripted->is_symbol or $subscripted->sigil != 4)
740 0 8 if ($ampersand and not $with_arguments) { }
757 8 0 if ($$bracket[1] == 16) { }
761 0 0 $$bracket[1] == 20 ? :
775 6 0 $bracket == 18 ? :
0 6 $bracket == 20 ? :
779 6 0 unless $no_consume_opening
780 0 6 if ($allow_empty)
782 0 0 if ($$next[1] == $close)
797 0 0 if ($indir)
812 0 0 if ($args)
813 0 0 if ($args->isa('Language::P::ParseTree::List')) { }
814 0 0 @{$args->expressions;} ? :
819 0 0 if ref $indir eq 'ARRAY'
845 0 0 if ($$token[1] == 1) { }
0 0 elsif ($$token[1] == 47) { }
857 0 0 if ($$oppar[1] == 16)
876 0 0 if ($$token[7]) { }
906 0 0 if ($match->flags & 128) { }
940 192 200 if ($$value[1] == 8) { }
171 29 elsif ($$value[1] == 4) { }
29 0 elsif ($$value[1] == 47 or $$value[1] == 49) { }
957 144 27 if (@values == 1 and $values[0]->is_constant) { }
2 25 elsif (@values == 0) { }
971 0 171 if ($quote == 134) { }
0 171 elsif ($quote == 133) { }
994 171 877 if ($$token[1] == 10) { }
0 877 elsif ($$token[1] == 7) { }
244 633 elsif ($$token[1] == 9) { }
0 633 elsif ($$token[1] == 5) { }
0 633 elsif ($$token[1] == 8) { }
288 345 elsif ($$token[1] == 47 or $$token[1] == 49 or $$token[1] == 48 or $$token[1] == 46 or $$token[1] == 50 or $$token[1] == 55) { }
230 115 elsif ($$token[1] == 1) { }
0 115 elsif ($$token[1] == 22) { }
0 115 elsif ($$token[1] == 18) { }
997 0 171 if ($$token[2] == 130)
999 0 0 if ($qstring->isa('Language::P::ParseTree::QuotedString') and $#{$qstring->components;} == 0 and $qstring->components->[0]->is_symbol) { }
0 0 elsif ($qstring->is_constant) { }
1006 0 0 if ($qstring->value =~ /^[a-zA-Z_]/)
1012 0 0 if ($id and not length ${$lexer->buffer;})
1034 0 0 if ($$token[2] == 131 or $$token[2] == 132) { }
0 0 elsif ($$token[2] == 135) { }
1042 0 0 if (not $is_bind and $$token[2] != 132)
1076 183 47 if (not is_keyword($$token[3])) { }
8 39 elsif ($tokidt == 60 or $tokidt == 64 or $tokidt == 68) { }
4 35 elsif ($tokidt == 76) { }
15 20 elsif ($tokidt == 56 or $tokidt == 44 or $tokidt == 48 or $tokidt == 52) { }
14 6 elsif ($tokidt == 72) { }
1090 6 9 if ($$id[1] == 1 and $$id[3] == 1) { }
1095 0 9 if ($dest)
1096 0 0 if $dest->isa('Language::P::ParseTree::Parentheses')
1098 0 0 if $dest->is_constant
1106 3 12 if $tokidt == 56 and not ref $dest
1138 409 639 if $no_subscr or not $term
1149 0 317 if ($sigil == 3)
1150 0 0 $is_id ? :
1159 0 317 if ($sigil == 4)
1160 0 0 $is_id ? :
1170 1 316 if ($sigil == 6 and $is_id)
1175 5 312 if ($$next[1] == 56)
1176 5 0 $is_id ? :
1186 6 306 if ($sigil == 2 || $sigil == 1 and $$next[1] == 18 || $$next[1] == 20) { }
0 306 elsif ($sigil == 5 and $$next[1] == 20) { }
1188 0 6 $$next[1] == 20 ? :
1193 305 1 $is_id ? :
1201 6 0 $is_id ? :
1203 0 6 $$next[1] == 20 ? :
1205 0 6 if ($is_slice) { }
1206 0 0 $is_id ? :
1213 6 0 $is_id ? :
1227 0 8 unless $keyword == 60 or $keyword == 64
1238 4 11 if ($decl->isa('Language::P::ParseTree::List')) { }
11 0 elsif ($decl->isa('Language::P::ParseTree::Symbol')) { }
1262 338 710 if $terminal and not $lookahead
1264 589 121 if ($terminal) { }
0 121 elsif ($$token[1] == 6) { }
6 115 elsif (my $p = $prec_assoc_un{$$token[1]}) { }
15 100 elsif ($$token[1] == 16) { }
1268 370 219 if (not $binprec or $$binprec[0] > $prec) { }
9 210 elsif ($$la[1] == 25) { }
210 0 elsif ($binprec) { }
1295 0 15 if (not $term) { }
9 6 elsif (not $term->isa('Language::P::ParseTree::List')) { }
1330 347 963 unless ($terminal)
1334 0 347 unless ($terminal)
1343 0 1642 if ($$token[1] == 51 or $$token[1] == 52)
1345 0 0 $$token[1] == 51 ? :
1354 1310 332 if (not $bin or $$bin[0] > $prec) { }
58 274 elsif ($$token[1] == 25) { }
1361 0 274 if $$token[1] == 14
1364 106 168 $$bin[1] == 2 ? :
1369 21 253 if ($$token[1] == 15) { }
1370 7 14 if ($terminal->isa('Language::P::ParseTree::List')) { }
1371 7 0 if ($rterm)
1376 14 0 $rterm ? :
1398 601 100 if ($terminal)
1413 4 18 if ($term->isa('Language::P::ParseTree::Parentheses'))
1425 14 14 unless $line->can_implicit_return
1426 8 6 unless ($line->is_compound)
1434 3 3 if ($line->isa('Language::P::ParseTree::Block') and @{$line->lines;}) { }
1 2 elsif ($line->isa('Language::P::ParseTree::Conditional')) { }
2 0 elsif ($line->isa('Language::P::ParseTree::ConditionalBlock')) { }
1438 1 0 if $line->iffalse
1452 57 21 if $flags & 1
1457 78 133 if ($$token[1] == $end_token) { }
1458 21 57 if ($flags & 2 and @lines)
1460 0 21 if $lines[$i]->is_declaration
1466 57 21 if $flags & 1
1467 7 71 if ($flags & 4) { }
1482 133 0 if $line
1491 317 0 if ($id)
1497 0 0 if ($$token[1] == 20) { }
0 0 elsif ($$token[1] == 47) { }
0 0 elsif ($allow_fail) { }
1504 0 0 if (ref $indir eq 'ARRAY' and $$indir[1] == 1) { }
1526 7 176 if (is_overridable $opidt) { }
140 36 elsif (is_builtin $opidt) { }
1529 0 7 if ($st->get_symbol(_qualify($self, $$op[2], $opidt), '&'))
1546 33 3 if ($st->get_symbol(_qualify($self, $$op[2], $opidt), '&'))
1563 147 36 $call ? :
1564 0 35 $$proto[2] & 72 ? :
112 35 $$proto[2] & 768 ? :
36 147 !$proto ? :
1571 36 147 unless ($call and $declared)
1574 0 36 if ($$next[1] == 56) { }
0 69 elsif (not $declared and $$next[1] != 16) { }
1578 0 0 if ($$la[1] == 1 or $$la[1] == 47) { }
0 0 elsif ($$la[1] == 16) { }
1599 0 36 if ($$next[1] == 1 and $st->get_package($$next[2]))
1615 47 136 if ($$next[1] == 16) { }
5 131 elsif ($$proto[1] == 1) { }
125 6 elsif ($$proto[1] != 0) { }
1622 0 125 unless $declared
1628 112 71 if ($$proto[2] & 768) { }
38 33 elsif ($args) { }
1650 0 183 if (@$args < $$proto[0])
1653 0 183 if ($$proto[1] != -1 and @$args > $$proto[1])
1658 27 150 if $i - 3 > $#$args
1663 11 139 if ($proto_char & 128)
1664 0 11 if ($term->isa('Language::P::ParseTree::SpecialFunctionCall') and $term->flags & 1)
1669 0 150 if ($proto_char & 1040 and $term->is_bareword)
1681 112 76 $indirect_term ? :
1682 183 5 $prec > 19 ? :
1685 112 76 if ($indirect_term) { }
0 152 elsif ($proto_char & 72 and $$la[1] == 20) { }
1686 0 112 if ($$la[1] == 20) { }
0 112 elsif ($proto_char & 512 and $$la[1] == 1 and $$la[3] == 1) { }
1700 0 0 if ($declared) { }
0 0 elsif ($prec_assoc_bin{$tt} and not $prec_assoc_un{$tt} and $tt != 46 and $tt != 48 and $tt != 47 and $tt != 50) { }
0 0 elsif ($tt == 1 and is_id($$la2[3])) { }
1724 0 112 if (not $term) { }
109 3 elsif (not $term->is_symbol && $term->sigil == 1 || $term->isa('Language::P::ParseTree::Block')) { }
1739 30 158 unless $term
1740 3 155 if $is_unary
1742 3 152 if ($indirect_term)
1745 3 0 if ($$la[1] != 15)
1748 3 0 if (not $args and $term->is_symbol and $term->sigil == 1) { }
1758 0 152 $term && $term->isa('Language::P::ParseTree::List') ? :