Branch Coverage

blib/lib/XS/Install/FrozenShit/ParseXS/Node.pm
Criterion Covered Total %
branch 57 162 35.1


line true false branch
54 1 0 if (eval "require Hash::Util; 1;")
67 4 16 unless defined $args
70 20 0 if ($USING_FIELDS) { }
127 1 0 if $USING_FIELDS
150 6 2 if ($self->{'arg_num'})
153 0 6 if defined $p and length $p
533 2 0 if ($var eq "RETVAL")
542 0 2 if $do_setmagic
565 0 2 unless (defined $type)
586 0 2 unless $pxs->{'config_RetainCplusplusHierarchicalTypes'}
592 0 2 if defined $out_num
604 0 2 if (defined $output_code) { }
0 2 elsif ($type =~ /^array\(([^,]*),(.*)\)/) { }
618 0 0 if ($var ne "RETVAL")
621 0 0 defined $out_num ? :
634 0 2 unless ($typemap)
640 0 2 unless ($outputmap)
653 0 2 defined $out_num ? :
670 0 2 if (not defined $output_code and $expr =~ /\bDO_ARRAY_ELEM\b/)
674 0 0 if ($var ne "RETVAL")
684 0 0 defined $out_num ? :
691 0 0 unless ($subtypemap)
697 0 0 unless ($suboutputmap)
735 0 2 if ($var ne "RETVAL" and not defined $out_num)
751 0 0 unless (defined $num)
758 0 0 defined $output_code ? :
766 0 0 if not $self->{'in_output'} or $do_setmagic
774 0 2 if (defined $output_code and not defined $out_num)
779 0 0 if $pxs->{'xsub_stack_was_reset'}
859 2 0 if ($evalexpr =~ /^\s*\Q$arg\E\s*=/) { }
864 0 2 if ($evalexpr =~ /^\s* \Q$arg\E \s*=\s* ( boolSV\(.*\) | &PL_sv_yes | &PL_sv_no | &PL_sv_undef | &PL_sv_zero ) \s*;\s*$ /x) { }
886 2 0 if $ntype eq "SVPtr"
914 0 0 if ($pxs->{'config_optimize'} and 'XS::Install::FrozenShit::Typemaps::OutputMap'->targetable($evalexpr) and not $pxs->{'xsub_targ_used'}) { }
959 0 2 if ($retvar eq 'TARG' and not $pxs->{'xsub_targ_declared_early'}) { }
0 2 elsif ($retvar eq 'RETVALSV') { }
968 0 2 if $want_newmortal
977 2 0 if $retvar ne "RETVALSV"
979 0 2 unless ($evalexpr =~ /^\s*\Q$var\E\s*=\s*\Q$var\E\s*;\s*$/)
984 2 0 if $do_mortalize
988 2 0 unless $retvar eq $orig_arg
990 0 2 if ($do_scope)
1002 0 2 if $pxs->{'xsub_stack_was_reset'}
1046 1 0 if $USING_FIELDS
1116 4 0 if ($sig_text =~ /\S/) { }
1122 4 0 if ($can_use_regex) { }
1143 0 4 if (defined $pxs->{'xsub_class'})
1145 0 0 $pxs->{'xsub_seen_static'} || $pxs->{'xsub_func_name'} eq 'new' ? :
1182 2 2 if ($pxs->{'xsub_return_type'} ne "void")
1220 0 8 if $self->{'seen_ellipsis'}
1222 2 6 if ($_ eq "...")
1249 0 6 unless (defined $name)
1250 0 0 if (/^ SV \s* \* $/x) { }
1265 0 6 unless length $type and $type =~ /\S/
1275 0 6 if ($old_param)
1276 0 0 if ($name eq 'RETVAL' and $old_param->{'is_synthetic'} and not defined $old_param->{'arg_num'}) { }
1290 0 0 unless defined $type
1304 0 6 if (defined $out_type) { }
1305 0 0 if ($pxs->{'config_allow_inout'}) { }
1306 0 0 $out_type eq 'IN' ? :
1318 0 6 if (defined $type and not $pxs->{'config_allow_argtypes'})
1328 0 6 if ($name =~ /^length\( \s* (\w+) \s* \)\z/x)
1329 0 0 if ($pxs->{'config_allow_argtypes'}) { }
1332 0 0 if (defined $default)
1345 6 0 if (defined $type or $is_length)
1348 0 6 if ($is_length)
1355 0 6 if length $out_type
1356 0 6 if $out_type =~ /^OUT/
1361 0 6 if (defined $default)
1365 0 0 defined $type || $is_length ? :
1371 0 6 if ($out_type eq 'OUTLIST' or $is_length) { }
1393 0 6 defined $_->{'default_usage'} ? :
1401 2 2 if $self->{'seen_ellipsis'}
1421 0 0 if $param->{'is_synthetic'} and not $param->{'var'} eq 'RETVAL' && defined $param->{'arg_num'}
1423 0 0 if ($param->{'is_length'})
1428 0 0 if ($param->{'var'} eq "SV *")
1435 0 0 unless defined $io
1440 0 0 unless defined $param->{'arg_num'} or $io eq "OUTLIST"
1443 0 0 if $param->{'is_addr'} or $io =~ /OUT/
1464 0 0 defined $_->{'proto'} ? :
1468 0 0 if ($min < $self->{'nargs'})
1473 0 0 if $self->{'seen_ellipsis'}