Branch Coverage

blib/lib/XS/Install/FrozenShit/ParseXS.pm
Criterion Covered Total %
branch 125 396 31.5


line true false branch
335 1 0 if (eval "require Hash::Util; 1;")
364 1 0 if (@_ % 2) { }
366 1 0 ref $invocant ? :
403 0 1 if ($^O eq "VMS")
440 0 1 unless $Options{'filename'}
444 0 1 if (ref $Options{'filename'}) { }
450 0 0 unless $Options{'outfile'}
462 0 1 unless (ref $Options{'output'})
463 0 0 unless open my $fh, "> $Options{'output'}"
476 1 0 if ($self->{'config_WantLineNumbers'}) { }
479 0 1 if ($Options{'outfile'}) { }
484 1 0 unless $cfile =~ s/\.xs$/$csuffix/i
515 1 0 if $self->{'config_WantLineNumbers'}
522 0 1 if ref $opfn
523 0 1 unless open $self->{'in_fh'}, "<", $fn
534 0 223 if (/^=/)
537 0 0 if (/^=cut\s*$/)
553 0 0 if $self->{'config_WantLineNumbers'}
563 0 0 unless $self->{'lastline'}
566 1 222 if ($self->{'PACKAGE_name'}, $self->{'PREFIX_pattern'}) = /^MODULE\s*=\s*[\w:]+(?:\s+PACKAGE\s*=\s*([\w:]+))?(?:\s+PREFIX\s*=\s*(\S+))?\s*$/
572 0 1 unless (defined $_)
578 1 0 if $self->{'config_WantLineNumbers'}
583 1 0 if $self->{'config_WantLineNumbers'}
611 0 0 unless $ln =~ /^\#\s*((if)(?:n?def)?|elsif|else|endif)\b/
617 2 7 unless @{$self->{'line'};}
619 0 7 if ($self->{'XS_parse_stack_top_if_idx'} and not $self->{'XS_parse_stack'}[$self->{'XS_parse_stack_top_if_idx'}]{'varname'})
655 0 7 if $self->{'line'}[0] =~ /^\s/
703 2 0 unless @{$self->{'line'};}
707 1 4 if ($self->check_keyword("BOOT"))
726 0 4 if $self->{'xsub_return_type'} =~ s/^NO_OUTPUT\s+//
743 0 4 if $self->{'config_allow_argtypes'} and $self->{'xsub_return_type'} =~ s/^(.*?\w.*?)\s*\b(\w+\s*\(.*)/$1/s
747 0 4 unless @{$self->{'line'};}
750 0 4 if $self->{'xsub_return_type'} =~ s/^extern "C"\s+//
752 0 4 if $self->{'xsub_return_type'} =~ s/^static\s+//
769 0 4 unless $func_header =~ /^(?:([\w:]*)::)?(\w+)\s*\(\s*(.*?)\s*\)\s*(const)?\s*(;\s*)?$/s
775 0 4 if $4
777 0 4 if ($self->{'xsub_seen_static'} and not defined $self->{'xsub_class'})
791 0 4 if ($Is_VMS)
814 4 0 unless defined $tmp->{'functions'}{$self->{'xsub_func_full_C_name'}}
877 0 4 if $EXPLICIT_RETURN
886 0 4 $self->{'xsub_seen_extern_C'} ? :
898 0 4 if $self->{'xsub_seen_ALIAS'}
902 0 4 if $self->{'xsub_seen_INTERFACE'}
914 0 4 if $self->{'config_allow_exceptions'}
919 4 0 if ($condition_code) { }
941 2 2 if $self->{'xsub_seen_PPCODE'}
945 2 2 if $self->{'xsub_seen_PPCODE'}
987 0 4 if $self->check_keyword("CASE")
1017 0 4 $self->{'config_allow_exceptions'} ? :
1044 0 4 if $self->{'xsub_SCOPE_enabled'}
1064 0 4 if (/^\s*NOT_IMPLEMENTED_YET/) { }
1071 2 2 if ($self->{'xsub_return_type'} ne "void")
1080 0 2 if ($self->{'config_optimize'} and $outputmap and $outputmap->targetable_legacy)
1103 0 6 unless $param->check($self)
1132 2 2 if ($self->check_keyword('PPCODE')) { }
2 0 elsif ($self->check_keyword('CODE')) { }
0 0 elsif (defined $self->{'xsub_class'} and $self->{'xsub_func_name'} eq 'DESTROY') { }
1141 0 2 if @{$self->{'line'};}
1143 0 2 if $self->{'xsub_SCOPE_enabled'}
1146 0 2 if $^O eq "hpux"
1154 0 2 if $^O eq "hpux"
1167 2 0 if ($consumed_code =~ /\bRETVAL\b/ and not $consumed_code =~ /\bPERL_UNUSED_VAR\(RETVAL\)/)
1191 0 0 if ($self->{'xsub_return_type'} ne "void")
1194 0 0 unless $self->{'xsub_seen_NO_OUTPUT'}
1197 0 0 if (defined $self->{'xsub_class'})
1198 0 0 if ($self->{'xsub_seen_static'}) { }
1200 0 0 if ($self->{'xsub_func_name'} eq 'new') { }
1208 0 0 if ($self->{'xsub_func_name'} eq 'new') { }
1219 0 0 if defined $strip
1223 0 0 if $self->{'xsub_seen_INTERFACE_or_MACRO'}
1227 0 0 unless defined $args
1251 0 2 if ($self->{'xsub_seen_RETVAL_in_CODE'} and not $retval && $retval->{'in_output'} and $self->{'xsub_return_type'} ne "void")
1266 0 8 if defined $_->{'in_out'} and $_->{'in_out'} =~ /OUT$/
1275 0 8 if defined $_->{'in_out'}
1278 0 4 if ($outlist_count)
1280 0 0 if $retval and $retval->{'in_output'} or $implicit_OUTPUT_RETVAL
1290 0 0 if $ext > $self->{'xsub_sig'}{'min_args'} + 1
1300 2 2 if ($retval and $retval->{'in_output'} or $implicit_OUTPUT_RETVAL)
1306 2 2 if $self->{'xsub_return_type'} ne "void" and not $self->{'xsub_seen_NO_OUTPUT'}
1312 0 8 if defined $_->{'in_out'}
1334 0 4 if $self->{'xsub_SCOPE_enabled'}
1338 0 4 if $self->{'xsub_SCOPE_enabled'} and not $self->{'xsub_seen_PPCODE'}
1346 0 4 if $self->{'config_allow_exceptions'}
1353 0 4 if ($self->check_keyword("CASE"))
1355 0 0 unless $self->{'xsub_CASE_condition_count'}
1360 4 0 if $_ eq "${END}:"
1362 0 0 /^$BLOCK_regexp/o ? :
1373 0 4 if $self->{'config_allow_exceptions'}
1384 0 4 if $^O eq "hpux"
1389 2 2 if ($XSRETURN_count) { }
1390 2 0 unless $self->{'xsub_seen_PPCODE'}
1395 0 2 unless $self->{'xsub_seen_PPCODE'}
1401 0 4 if $^O eq "hpux"
1429 0 4 if ($self->{'xsub_prototype'}) { }
1439 0 0 if ($self->{'xsub_prototype'} eq 2) { }
0 0 elsif ($self->{'xsub_prototype'} eq 1) { }
1459 0 4 if ($self->{'xsub_map_alias_name_to_value'} and keys %{$$self{'xsub_map_alias_name_to_value'};}) { }
0 4 elsif (@{$self->{'xsub_attributes'};}) { }
0 4 elsif ($self->{'xsub_seen_INTERFACE_or_MACRO'}) { }
4 0 elsif ($newXS eq 'newXS_deffile') { }
1467 0 0 unless defined $self->{'xsub_map_alias_name_to_value'}{$self->{'xsub_func_full_perl_name'}}
1492 0 0 unless $yname =~ /::/
1613 1 0 $self->{'VERSIONCHECK_value'} ? :
1631 1 0 if $self->{'xsub_func_full_C_name'}
1649 1 0 if ($self->{'VERSIONCHECK_value'}) { }
1676 0 1 if (defined $self->{'xsub_map_alias_name_to_value'} or defined $self->{'seen_INTERFACE_or_MACRO'})
1688 0 1 if (keys %{$$self{"map_overloaded_package_to_C_package"};})
1725 0 1 if (defined $self->{'xsub_map_alias_name_to_value'} or defined $self->{'seen_INTERFACE_or_MACRO'})
1738 1 0 if (@{$self->{'bootcode_later'};})
1742 1 0 if $self->{'config_WantLineNumbers'}
1766 0 1 unless $self->{'proto_behaviour_specified'}
1770 1 0 if tied *PSEUDO_STDOUT
1778 1 0 if (@_) { }
1805 9 35 if s/^(\s*)($_[0])\s*:\s*(?:#.*)?/$1/s
1828 4 0 if $self->{'config_WantLineNumbers'} and not /^\s*#\s*line\b/ and not /^#if XSubPPtmp/
1838 4 0 if $self->{'config_WantLineNumbers'}
1890 1 0 if ($self->{'config_WantLineNumbers'} and not $self->{'line'}[0] =~ /^\s*#\s*line\b/)
1913 0 0 if $self->{'xsub_CASE_condition_count'} and $self->{'xsub_CASE_condition'} eq ""
1920 0 0 $self->{'xsub_CASE_condition_count'}++ ? :
0 0 $self->{'xsub_CASE_condition'} ? :
1948 6 2 if defined $num
2154 2 2 unless /\S/
2156 0 2 if (/^\s*SETMAGIC\s*:\s*(ENABLE|DISABLE)\s*/)
2157 0 0 $1 eq 'ENABLE' ? :
2170 0 2 if ($param and $param->{'in_output'})
2175 0 2 if ($outarg eq "RETVAL" and $self->{'xsub_seen_NO_OUTPUT'})
2180 0 2 if (not $param or $outarg ne "RETVAL" and not $param->{'arg_num'})
2192 2 0 $outarg eq 'RETVAL' ? :
2193 0 2 if length $outcode
2195 2 0 if ($outarg eq "RETVAL")
2228 0 0 if ($in =~ /\s/) { }
2314 0 0 if not $is_symbolic and $value =~ /:/
2319 0 0 unless $alias =~ /::/
2321 0 0 if ($is_symbolic)
2323 0 0 unless $value =~ /::/
2324 0 0 if (defined $self->{'xsub_map_alias_name_to_value'}{$value}) { }
0 0 elsif ($value eq $fname) { }
2335 0 0 if (defined $prev_value)
2336 0 0 if ($prev_value eq $value) { }
2349 0 0 unless ($is_symbolic)
2350 0 0 unless $self->{'xsub_map_alias_value_to_name_seen_hash'}{$value}
2354 0 0 if $value eq 0 and not defined $self->{'xsub_map_alias_name_to_value'}{$fname}
2355 0 0 if (@keys and $self->{'config_author_warnings'})
2371 0 0 $value eq '0' ? :
0 0 !$self->{'xsub_alias_clash_hinted'}++ ? :
2382 0 0 if $line
2398 0 0 unless /\S/
2413 0 0 unless /\S/
2415 0 0 if $_
2429 0 0 unless /\S/
2455 0 0 unless exists $map{$setting}
2469 0 0 unless $ver
2473 0 0 unless $ver =~ /^\d+(\.\d*)?/
2476 0 0 unless $VERSION >= $ver
2490 0 0 unless $setting =~ /^(ENABLE|DISABLE)/i
2493 0 0 if $1 eq "ENABLE"
2494 0 0 if $1 eq "DISABLE"
2514 0 0 if $self->{'xsub_seen_PROTOTYPE'}++
2517 0 0 unless /\S/
2520 0 0 if ($_ eq 'DISABLE') { }
0 0 elsif ($_ eq 'ENABLE') { }
2529 0 0 unless valid_proto_string($_)
2536 0 0 unless $specified
2550 0 0 if $self->{'xsub_seen_SCOPE'}++
2553 0 0 unless $setting =~ /^(ENABLE|DISABLE)\b/i
2568 0 2 unless $setting =~ /^(ENABLE|DISABLE)/i
2571 0 2 if $1 eq "ENABLE"
2572 2 0 if $1 eq "DISABLE"
2586 0 0 unless $setting =~ /^(ENABLE|DISABLE)/i
2589 0 0 $1 eq 'ENABLE' ? :
2635 0 0 unless $_
2638 0 0 if /^\s*\|/
2643 0 0 if $self->{'IncludedFiles'}{$_}
2645 0 0 unless /\|\s*$/
2647 0 0 if (/\|\s*$/ and /^\s*perl\s/)
2661 0 0 unless open $self->{'in_fh'}, $_
2674 0 0 $^O =~ /^mswin/i ? :
2681 0 0 unless /^\s*$/
2696 0 0 if not /^\"/ and length $_ > 0
2715 0 0 if (defined $command and $command =~ /\s/ and not $command =~ /[$quote]/)
2732 0 0 if $^O eq "VMS"
2734 0 0 unless $_
2737 0 0 if /^\s*\|/ or /\|\s*$/
2750 0 0 unless open $self->{'in_fh'}, "-|", $_
2769 0 0 unless /^\s*$/
2784 1 0 unless $self->{'XS_parse_stack'}[-1]{'type'} eq "file"
2791 0 0 unless $isPipe
2806 0 0 if ($isPipe and $?)
2834 0 92 unless (s/^(\s*)\|//)
2838 0 92 if $pre =~ /\t/
2841 60 32 if (defined $first) { }
2842 0 60 if $pre ne $first
2884 0 0 if $self->{'lastline'} =~ /^=cut\s*$/
2886 0 0 unless defined $self->{'lastline'}
2902 0 60 if ($self->{'lastline'} =~ /^TYPEMAP\s*:\s*<<\s*(?:(["'])(.+?)\1|([^\s'"]+?))\s*;?\s*$/)
2904 0 0 defined $1 ? :
2910 0 0 unless defined $self->{'lastline'}
2911 0 0 if $self->{'lastline'} =~ /^$end_marker\s*$/