Condition Coverage

blib/lib/ExtUtils/ParseXS/Node.pm
Criterion Covered Total %
condition 264 305 86.5


and 3 conditions

line !l l&&!r l&&r condition
298 224 560 952 @fields and $fields[0] eq "-parent"
421 1016 1106 440 $flags & $keywords_flag_MODULE and ExtUtils::ParseXS::Utilities::looks_like_MODULE_line($line)
1102 38 2 $flags & $keywords_flag_NOT_IMPLEMENTED_YET and $line =~ s/^(\s*)(NOT_IMPLEMENTED_YET)/$1/
452 1233 0 152 defined $max and $max >= $n
1142 430 1620 4 $pxs->{'line'} and @{$pxs->{'line'};}
1146 1131 0 460 not defined $self->{'line_no'} and defined $pxs->{'line_no'}[0]
1203 0 1 22 defined $last and $last->isa("ExtUtils::ParseXS::Node::global_cpp_line")
1 0 22 defined $last and $last->isa("ExtUtils::ParseXS::Node::global_cpp_line") and $last->{'is_cond'}
0 0 22 defined $last and $last->isa("ExtUtils::ParseXS::Node::global_cpp_line") and $last->{'is_cond'} and not $last->{'is_if'}
1318 1049 462 0 @{$pxs->{'line'};} and not $pxs->{'line'}[0] =~ /\S/
1465 0 2 2 defined $line0 and $line0 =~ /\S/
1479 0 0 4 $pxs->{'config_WantLineNumbers'} and @{$self->{'lines'};}
0 0 4 $pxs->{'config_WantLineNumbers'} and @{$self->{'lines'};} and not $self->{'lines'}[0] =~ /^\s*#\s*line\b/
2027 414 0 20 $self->{'map_alias_name_to_value'} and keys %{$$self{"map_alias_name_to_value"};}
2037 418 15 1 $self->{'map_interface_name_short_to_original'} and $self->{'map_alias_name_to_value'}
2228 413 0 20 $self->{'map_alias_name_to_value'} and keys %{$$self{"map_alias_name_to_value"};}
2365 452 5 1 defined $const and not defined $class
2371 452 4 2 $return_type->{'static'} and not defined $class
2487 1 394 67 $pxs->{'config_allow_argtypes'} and $type =~ s/^(.*?\w.*?) \s* \b (\w+\s*\(.*)/$1/sx
2516 0 8 244 $pxs->{'config_optimize'} and $outputmap
8 31 213 $pxs->{'config_optimize'} and $outputmap and $outputmap->targetable_legacy
2619 148 0 359 length $type and $type =~ /\S/
2629 7 4 18 $name eq "RETVAL" and $old_param->{'is_synthetic'}
4 2 16 $name eq "RETVAL" and $old_param->{'is_synthetic'} and not defined $old_param->{'arg_num'}
2669 141 351 2 defined $type and not $pxs->{'config_allow_argtypes'}
2766 0 409 4 defined $p and length $p
3188 11 288 8 not defined $output_code and $expr =~ /\bDO_ARRAY_ELEM\b/
3317 637 53 11 defined $xsub->{'decl'}{'class'} && $var eq 'CLASS'
3351 664 2 30 defined $default and not defined $init
666 2 28 defined $default and not defined $init and not $no_init
3574 209 45 35 $var ne "RETVAL" and not defined $out_num
3613 246 0 8 defined $output_code and not defined $out_num
3751 0 20 217 $pxs->{'config_optimize'} and "ExtUtils::Typemaps::OutputMap"->targetable($evalexpr)
20 17 200 $pxs->{'config_optimize'} and "ExtUtils::Typemaps::OutputMap"->targetable($evalexpr) and not $xbody->{'output_part'}{'targ_used'}
3797 46 179 21 $retvar eq "TARG" and not $xsub->{'decl'}{'return_type'}{'use_early_targ'}
4060 436 26 35 defined $param->{'in_out'} and $param->{'in_out'} eq "OUTLIST"
4082 29 2 2 defined $in_out and not $in_out =~ /^IN/
4136 27 174 2 $param->{'var'} eq 'RETVAL' && defined $param->{'arg_num'}
347 2 201 $param->{'is_synthetic'} and not $param->{'var'} eq 'RETVAL' && defined $param->{'arg_num'}
4178 25 0 68 defined $_->{'arg_num'} && $_->{'arg_num'} > 0
4340 0 377 99 $input->parse($pxs, $xsub, $xbody) and $input->{'kids'}
377 0 99 $input->parse($pxs, $xsub, $xbody) and $input->{'kids'} and @{$input->{'kids'};}
4396 440 14 2 defined $proto and $proto ne $ioproto
4630 718 48 17 defined $ioparam->{'in_out'} and $ioparam->{'in_out'} =~ /OUT$/
766 0 17 defined $ioparam->{'in_out'} and $ioparam->{'in_out'} =~ /OUT$/ and not $ioparam->{'in_output'}
492 87 187 $ioparam->{'var'} eq "RETVAL" and $ioparam->{'in_output'} || $xbody->{'seen_autocall'} && $xsub->{'decl'}{'return_type'}{'type'} ne 'void' && !$xsub->{'decl'}{'return_type'}{'no_output'}
514 0 23 $ioparam->{'in_output'} and $ioparam->{'var'} ne "RETVAL"
4642 718 17 48 defined $ioparam->{'in_out'} and $ioparam->{'in_out'} =~ /OUTLIST$/
4672 1 3 37 $retval && $retval->{'in_output'}
416 37 4 $xbody->{'seen_RETVAL_in_CODE'} and not $retval && $retval->{'in_output'}
453 1 3 $xbody->{'seen_RETVAL_in_CODE'} and not $retval && $retval->{'in_output'} and $xsub->{'decl'}{'return_type'}{'type'} ne "void"
4688 707 48 17 defined $_->{'in_out'} and $_->{'in_out'} =~ /OUT$/
4716 193 219 45 $retval and $retval->{'in_output'}
70 164 178 $xbody->{'seen_autocall'} and $xsub->{'decl'}{'return_type'}{'type'} ne "void"
234 4 174 $xbody->{'seen_autocall'} and $xsub->{'decl'}{'return_type'}{'type'} ne "void" and not $xsub->{'decl'}{'return_type'}{'no_output'}
4951 21 0 16 $param && defined $param->{'type'}
4978 320 26 1 defined $class and $name eq "DESTROY"
5166 4 0 0 $f =~ /\|\s*$/ and $f =~ /^\s*perl\s/
5254 2 2 1 $isPipe and $?
5540 101 95 373 @{$pxs->{'line'};} and not $pxs->{'line'}[0] =~ /^$ExtUtils::ParseXS::BLOCK_regexp/o
5577 1 47 6 @lines and not $lines[0] =~ /\S/
5868 0 125 6 defined $line0 and $line0 =~ /\S/
5887 5 124 0 @lines and not $lines[0] =~ /\S/
5893 5 110 0 defined $line0 && ($line0 =~ /^\s*#\s*line\b/ || $line0 =~ /^#if XSubPPtmp/)
14 0 115 $pxs->{'config_WantLineNumbers'} and not defined $line0 && ($line0 =~ /^\s*#\s*line\b/ || $line0 =~ /^#if XSubPPtmp/)
5939 56 4 41 $code =~ /\bRETVAL\b/ && !($code =~ /\bPERL_UNUSED_VAR\(RETVAL\)/)
5975 89 11 1 defined $xsub->{'CODE_sets_ST0'} and $xsub->{'CODE_sets_ST0'} ne $st0
6110 333 233 353 @{$pxs->{'line'};} and not $pxs->{'line'}[0] =~ /^$ExtUtils::ParseXS::BLOCK_regexp/o
6265 7 45 1 not $is_symbolic and $value =~ /:/
6310 42 1 3 $value eq 0 and not defined $xsub->{'map_alias_name_to_value'}{$fname}
6311 37 1 8 @keys and $pxs->{'config_author_warnings'}
6437 2 3 21 $var_init =~ /\S/ and not $var_init =~ /^\s*;\s*$/
6496 19 102 3 not $ioparam->{'is_synthetic'} and defined $ioparam->{'type'}
6504 107 3 11 $var_name eq "RETVAL" and $ioparam->{'is_synthetic'}
6543 2 109 20 not $no_init and defined $init_op
6547 3 16 1 $init_op =~ /^[=;]$/ and $var_init =~ /^NO_INIT\s*;?\s*$/
6567 3 0 3 $init_op eq '+' && !$is_alien
6698 3 71 2 $ioparam and $ioparam->{'in_output'}
6703 25 46 3 $outarg eq "RETVAL" and $xsub->{'decl'}{'return_type'}{'no_output'}
6711 45 23 0 $outarg ne "RETVAL" and not $ioparam->{'arg_num'}

or 2 conditions

line l !l condition
1530 167 0 $pxs->current_line_number || 0

or 3 conditions

line l !l&&r !l&&!r condition
421 980 0 1142 $line =~ s/^(\s*)($pat)\s*:\s*(?:#.*)?/$1/s or $flags & $keywords_flag_NOT_IMPLEMENTED_YET and $line =~ s/^(\s*)(NOT_IMPLEMENTED_YET)/$1/
1142 4 1674 376 $pxs->{'line'} and @{$pxs->{'line'};} or $pxs->fetch_para
2228 15 0 394 $self->{'seen_INTERFACE'} or $self->{'seen_INTERFACE_MACRO'}
2899 0 1 0 $xstype =~ s/OBJ$/REF/ or $xstype =~ s/^T_REF_IV_PTR$/T_PTRREF/
3351 1 303 364 $xsub->{'SCOPE_enabled'} or not $init_code =~ /^\s*\Q$var\E =/
3606 13 19 3 not $self->{'in_output'} or $do_setmagic
3985 4 7 14 $xsub->{'decl'}{'return_type'}{'static'} || $xsub->{'decl'}{'name'} eq 'new'
4060 35 34 428 defined $param->{'in_out'} and $param->{'in_out'} eq "OUTLIST" or $param->{'is_length'}
4152 272 30 46 defined $param->{'arg_num'} or $io eq "OUTLIST"
302 31 15 defined $param->{'arg_num'} or $io eq "OUTLIST" or $param->{'is_length'}
4155 2 52 279 $param->{'is_addr'} or $io =~ /OUT/
4600 3 255 210 $xsub->{'CODE_sets_ST0'} || $xsub->{'decl'}{'return_type'}{'type'} ne 'void' && !$xsub->{'decl'}{'return_type'}{'no_output'}
4630 45 184 45 $ioparam->{'in_output'} || $xbody->{'seen_autocall'} && $xsub->{'decl'}{'return_type'}{'type'} ne 'void' && !$xsub->{'decl'}{'return_type'}{'no_output'}
17 187 579 defined $ioparam->{'in_out'} and $ioparam->{'in_out'} =~ /OUT$/ and not $ioparam->{'in_output'} or $ioparam->{'var'} eq "RETVAL" and $ioparam->{'in_output'} || $xbody->{'seen_autocall'} && $xsub->{'decl'}{'return_type'}{'type'} ne 'void' && !$xsub->{'decl'}{'return_type'}{'no_output'}
184 190 347 defined $ioparam->{'in_out'} and $ioparam->{'in_out'} =~ /OUT$/ and not $ioparam->{'in_output'} or $ioparam->{'var'} eq "RETVAL" and $ioparam->{'in_output'} || $xbody->{'seen_autocall'} && $xsub->{'decl'}{'return_type'}{'type'} ne 'void' && !$xsub->{'decl'}{'return_type'}{'no_output'} or $ioparam->{'in_output'} and $ioparam->{'var'} ne "RETVAL"
4716 45 325 87 $retval and $retval->{'in_output'} or $xbody->{'seen_autocall'} and $xsub->{'decl'}{'return_type'}{'type'} ne "void" and not $xsub->{'decl'}{'return_type'}{'no_output'}
5025 16 0 330 $xsub->{'seen_INTERFACE'} or $xsub->{'seen_INTERFACE_MACRO'}
5150 1 1 3 $f =~ /^\s*\|/ or $f =~ /\|\s*$/
5184 3 0 4 $is_cmd || $pxs->{'in_filename'} =~ /\|\s*$/
6496 4 3 121 $ioparam->{'in_input'} or not $ioparam->{'is_synthetic'} and defined $ioparam->{'type'}
6711 3 0 68 not $ioparam or $outarg ne "RETVAL" and not $ioparam->{'arg_num'}