Branch Coverage

Custom.xs
Criterion Covered Total %
branch 102 184 55.4


line true false branch
50 0 13 if (strEQ(name, "low")) return INFIX_PREC_LOW;
51 0 13 if (strEQ(name, "logical_or_low")) return INFIX_PREC_LOGICAL_OR_LOW;
52 0 13 if (strEQ(name, "logical_and_low")) return INFIX_PREC_LOGICAL_AND_LOW;
53 0 13 if (strEQ(name, "assign")) return INFIX_PREC_ASSIGN;
54 0 13 if (strEQ(name, "logical_or")) return INFIX_PREC_LOGICAL_OR;
55 0 13 if (strEQ(name, "logical_and")) return INFIX_PREC_LOGICAL_AND;
56 0 13 if (strEQ(name, "rel")) return INFIX_PREC_REL;
57 10 3 if (strEQ(name, "add")) return INFIX_PREC_ADD;
58 3 0 if (strEQ(name, "mul")) return INFIX_PREC_MUL;
59 0 0 if (strEQ(name, "pow")) return INFIX_PREC_POW;
60 0 0 if (strEQ(name, "high")) return INFIX_PREC_HIGH;
69 2 2 if (strEQ(sym, "+")) return OP_ADD;
70 0 2 if (strEQ(sym, "-")) return OP_SUBTRACT;
71 1 1 if (strEQ(sym, "*")) return OP_MULTIPLY;
72 0 1 if (strEQ(sym, "/")) return OP_DIVIDE;
73 0 1 if (strEQ(sym, "%")) return OP_MODULO;
74 0 1 if (strEQ(sym, "**")) return OP_POW;
75 1 0 if (strEQ(sym, ".")) return OP_CONCAT;
76 0 0 if (strEQ(sym, "x")) return OP_REPEAT;
77 0 0 if (strEQ(sym, "|")) return OP_BIT_OR;
78 0 0 if (strEQ(sym, "&")) return OP_BIT_AND;
79 0 0 if (strEQ(sym, "^")) return OP_BIT_XOR;
80 0 0 if (strEQ(sym, "<<")) return OP_LEFT_SHIFT;
81 0 0 if (strEQ(sym, ">>")) return OP_RIGHT_SHIFT;
101 87 27 for (i = 0; i < glyph_len; i++) {
120 0 43 if (!hints)
123 39 4 return hent && *hent && SvIOK(*hent) && SvIV(*hent) == e->id;
39 0 return hent && *hent && SvIOK(*hent) && SvIV(*hent) == e->id;
39 0 return hent && *hent && SvIOK(*hent) && SvIV(*hent) == e->id;
34 5 return hent && *hent && SvIOK(*hent) && SvIV(*hent) == e->id;
162 74 0 while ((c = lex_peek_unichar(0)) != -1 && isWORDCHAR(c)) {
74 0 while ((c = lex_peek_unichar(0)) != -1 && isWORDCHAR(c)) {
62 12 while ((c = lex_peek_unichar(0)) != -1 && isWORDCHAR(c)) {
180 12 0 SV *name = (opdata && *opdata) ? *opdata : NULL;
12 0 SV *name = (opdata && *opdata) ? *opdata : NULL;
183 12 0 if (rhs) /* method mode does not use a parsed rhs */
185 12 0 nameop = newSVOP(OP_CONST, 0, name ? newSVsv(name) : newSVpvs(""));
203 440112 270783 for (e = ic_registry; e; e = e->next) {
204 76067 364045 if (e->glyph_len <= oplen
205 43 76024 && memEQ(opname, e->glyph, e->glyph_len)
206 34 9 && ic_active(aTHX_ e)
207 2 32 && (!best || e->glyph_len > best->glyph_len))
0 2 && (!best || e->glyph_len > best->glyph_len))
211 32 270751 if (best) {
231 8 5 e->cv = cv ? (CV *)SvREFCNT_inc((SV *)cv) : NULL;
253 13 0 if (hints) {
268 1 0 if (hints)
282 0 0 if (!hints)
286 0 0 while ((he = hv_iternext(hints))) {
288 0 0 char *k = HePV(he, kl);
289 0 0 if (kl >= sizeof("Infix::Custom/") - 1
290 0 0 && memEQ(k, "Infix::Custom/", sizeof("Infix::Custom/") - 1))
293 0 0 for (i = 0; i <= av_top_index(doomed); i++) {
0 0 for (i = 0; i <= av_top_index(doomed); i++) {
295 0 0 if (kp && *kp) {
0 0 if (kp && *kp) {
324 2 13 if (items <= 1) /* bare `use Infix::Custom;` */
328 13 0 if (items >= 3 && !SvROK(ST(1))
13 0 if (items >= 3 && !SvROK(ST(1))
329 1 12 && SvROK(ST(2)) && SvTYPE(SvRV(ST(2))) == SVt_PVCV) {
1 0 && SvROK(ST(2)) && SvTYPE(SvRV(ST(2))) == SVt_PVCV) {
335 0 13 if ((items - start) % 2 != 0)
338 38 13 for (i = start; i + 1 < items; i += 2) {
341 12 26 if (strEQ(k, "op")) op_sv = v;
342 7 19 else if (strEQ(k, "call")) call_sv = v;
343 4 15 else if (strEQ(k, "binop")) binop_sv = v;
344 1 14 else if (strEQ(k, "build_op")) build_sv = v;
345 13 1 else if (strEQ(k, "prec")) prec_sv = v;
346 1 0 else if (strEQ(k, "method")) method = SvTRUE(v);
350 13 0 if (!op_sv || !SvOK(op_sv) || !SvCUR(op_sv))
13 0 if (!op_sv || !SvOK(op_sv) || !SvCUR(op_sv))
0 13 if (!op_sv || !SvOK(op_sv) || !SvCUR(op_sv))
356 42 13 for (j = 0; j < gl; j++)
357 0 42 if (isSPACE(g[j]))
362 0 13 if (modes == 0)
364 0 13 if (modes > 1)
367 13 0 prec = ic_prec_value(prec_sv ? SvPV_nolen(prec_sv) : "low");
368 0 13 if (prec < 0)
369 0 0 croak("Infix::Custom: unknown prec '%s' (low logical_or_low "
373 1 12 if (method && !call_sv)
0 1 if (method && !call_sv)
376 8 5 if (call_sv) {
378 8 0 if (SvROK(call_sv) && SvTYPE(SvRV(call_sv)) == SVt_PVCV)
8 0 if (SvROK(call_sv) && SvTYPE(SvRV(call_sv)) == SVt_PVCV)
382 0 8 if (!cv)
384 1 7 if (method)
392 4 1 else if (binop_sv) {
394 0 4 if (ot == OP_NULL)
400 0 1 if (!fn)
442 0 1 if (items <= 1)
445 1 1 for (i = 1; i < items; i++)
458 0 2 RETVAL = PTR2IV(ic_sample_build);