Branch Coverage

lib/XS/Parse/Keyword/FromPerl.xs
Criterion Covered Total %
branch 99 162 61.1


line true false branch
32 15 2 if(!npieces)
36 19 15 for(U32 i = 0; i < npieces; i++) {
41 0 19 EXTEND(SP, 1);
42 0 19 PUSHMARK(SP);
54 19 0 FREETMPS;
72 0 1 PUSHMARK(SP);
73 1 0 if(data->hookdata)
74 0 1 XPUSHs(sv_mortalcopy(data->hookdata));
76 0 0 XPUSHs(&PL_sv_undef);
84 1 0 FREETMPS;
99 0 1 PUSHMARK(SP);
100 1 0 if(data->hookdata)
101 0 1 XPUSHs(sv_mortalcopy(data->hookdata));
103 0 0 XPUSHs(&PL_sv_undef);
108 1 0 FREETMPS;
120 18 21 for(U32 i = 0; i < nargs; i++) {
129 0 21 PUSHMARK(SP);
130 0 21 EXTEND(SP, 3);
133 1 20 if(data->hookdata)
144 19 2 if(SvOK(outsv)) {
148 21 0 FREETMPS;
196 9 0 case 3: RETVAL = arg->sv ? SvREFCNT_inc(arg->sv) : &PL_sv_undef; break;
197 1 1 case 4: RETVAL = arg->sv ? &PL_sv_yes : &PL_sv_no; break;
215 3 16 if (strEQ(type, "XPK_BLOCK")) piece = (struct XSParseKeywordPieceType)XPK_BLOCK;
216 0 16 else if(strEQ(type, "XPK_ANONSUB")) piece = (struct XSParseKeywordPieceType)XPK_ANONSUB;
217 0 16 else if(strEQ(type, "XPK_ARITHEXPR")) piece = (struct XSParseKeywordPieceType)XPK_ARITHEXPR;
218 0 16 else if(strEQ(type, "XPK_ARITHEXPR_OPT")) piece = (struct XSParseKeywordPieceType)XPK_ARITHEXPR_OPT;
219 2 14 else if(strEQ(type, "XPK_TERMEXPR")) piece = (struct XSParseKeywordPieceType)XPK_TERMEXPR;
220 0 14 else if(strEQ(type, "XPK_TERMEXPR_OPT")) piece = (struct XSParseKeywordPieceType)XPK_TERMEXPR_OPT;
221 0 14 else if(strEQ(type, "XPK_LISTEXPR")) piece = (struct XSParseKeywordPieceType)XPK_LISTEXPR;
222 0 14 else if(strEQ(type, "XPK_LISTEXPR_OPT")) piece = (struct XSParseKeywordPieceType)XPK_LISTEXPR_OPT;
223 3 11 else if(strEQ(type, "XPK_IDENT")) piece = (struct XSParseKeywordPieceType)XPK_IDENT;
224 1 10 else if(strEQ(type, "XPK_IDENT_OPT")) piece = (struct XSParseKeywordPieceType)XPK_IDENT_OPT;
225 1 9 else if(strEQ(type, "XPK_PACKAGENAME")) piece = (struct XSParseKeywordPieceType)XPK_PACKAGENAME;
226 0 9 else if(strEQ(type, "XPK_PACKAGENAME_OPT")) piece = (struct XSParseKeywordPieceType)XPK_PACKAGENAME_OPT;
227 1 8 else if(strEQ(type, "XPK_VSTRING")) piece = (struct XSParseKeywordPieceType)XPK_VSTRING;
228 0 8 else if(strEQ(type, "XPK_VSTRING_OPT")) piece = (struct XSParseKeywordPieceType)XPK_VSTRING_OPT;
229 1 7 else if(strEQ(type, "XPK_COMMA")) piece = (struct XSParseKeywordPieceType)XPK_COMMA;
230 0 7 else if(strEQ(type, "XPK_COLON")) piece = (struct XSParseKeywordPieceType)XPK_COLON;
231 0 7 else if(strEQ(type, "XPK_EQUALS")) piece = (struct XSParseKeywordPieceType)XPK_EQUALS;
232 0 7 else if(strEQ(type, "XPK_INTRO_MY")) piece = (struct XSParseKeywordPieceType)XPK_INTRO_MY;
234 1 6 else if(strEQ(type, "XPK_LEXVARNAME"))
236 1 5 else if(strEQ(type, "XPK_LEXVAR"))
238 0 5 else if(strEQ(type, "XPK_LEXVAR_MY"))
240 0 5 else if(strEQ(type, "XPK_LITERAL"))
242 1 4 else if(strEQ(type, "XPK_KEYWORD"))
244 0 4 else if(strEQ(type, "XPK_FAILURE"))
246 1 3 else if(strEQ(type, "XPK_WARNING"))
248 0 3 else if(strEQ(type, "XPK_WARNING_AMBIGUOUS"))
250 0 3 else if(strEQ(type, "XPK_WARNING_DEPRECATED"))
252 0 3 else if(strEQ(type, "XPK_WARNING_EXPERIMENTAL"))
254 0 3 else if(strEQ(type, "XPK_WARNING_PRECEDENCE"))
256 0 3 else if(strEQ(type, "XPK_WARNING_SYNTAX"))
259 0 3 else if(strEQ(type, "XPK_SEQUENCE"))
263 0 3 else if(strEQ(type, "XPK_OPTIONAL"))
267 1 2 else if(strEQ(type, "XPK_REPEATED"))
271 0 2 else if(strEQ(type, "XPK_CHOICE"))
275 2 0 else if(strEQ(type, "XPK_PARENS"))
279 0 0 else if(strEQ(type, "XPK_ARGS"))
283 0 0 else if(strEQ(type, "XPK_BRACKETS"))
287 0 0 else if(strEQ(type, "XPK_BRACES"))
291 0 0 else if(strEQ(type, "XPK_CHEVRONS"))
324 55 19 while(KWARG_NEXT(args))
332 14 0 if(!SvROK(kwval) || SvTYPE(SvRV(kwval)) != SVt_PVAV)
0 14 if(!SvROK(kwval) || SvTYPE(SvRV(kwval)) != SVt_PVAV)
343 1 0 if(!SvROK(kwval) || SvTYPE(SvRV(kwval)) != SVt_PVCV)
0 1 if(!SvROK(kwval) || SvTYPE(SvRV(kwval)) != SVt_PVCV)
345 1 0 data.permitcv = (CV *)SvREFCNT_inc((SV *)CV_FROM_REF(kwval));
349 1 0 if(!SvROK(kwval) || SvTYPE(SvRV(kwval)) != SVt_PVCV)
0 1 if(!SvROK(kwval) || SvTYPE(SvRV(kwval)) != SVt_PVCV)
351 1 0 data.checkcv = (CV *)SvREFCNT_inc((SV *)CV_FROM_REF(kwval));
355 19 0 if(!SvROK(kwval) || SvTYPE(SvRV(kwval)) != SVt_PVCV)
0 19 if(!SvROK(kwval) || SvTYPE(SvRV(kwval)) != SVt_PVCV)
357 19 0 data.buildcv = (CV *)SvREFCNT_inc((SV *)CV_FROM_REF(kwval));
365 0 19 if(!data.buildcv)
367 1 18 if(!permit_hintkeysv && !data.permitcv)
0 1 if(!permit_hintkeysv && !data.permitcv)
370 7 12 if(!pieces) {
381 18 1 if(permit_hintkeysv)
383 1 18 if(data.permitcv)
385 1 18 if(data.checkcv)