Branch Coverage

lib/Future/XS.xs
Criterion Covered Total %
branch 0 462 0.0


line true false branch
21 0 0 if(GIMME_V == G_VOID)
0 0 if(GIMME_V == G_VOID)
38 0 0 if(SvROK(proto) && SvOBJECT(SvRV(proto))) {
0 0 if(SvROK(proto) && SvOBJECT(SvRV(proto))) {
40 0 0 RETVAL = future_new(HvNAME(protostash));
0 0 RETVAL = future_new(HvNAME(protostash));
0 0 RETVAL = future_new(HvNAME(protostash));
0 0 RETVAL = future_new(HvNAME(protostash));
0 0 RETVAL = future_new(HvNAME(protostash));
0 0 RETVAL = future_new(HvNAME(protostash));
43 0 0 RETVAL = future_new(SvPV_nolen(proto));
55 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
63 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
71 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
79 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
87 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
89 0 0 if(!future_is_ready(self))
91 0 0 else if(future_is_failed(self))
93 0 0 else if(future_is_cancelled(self))
103 0 0 if(sv_is_future(self))
106 0 0 RETVAL = future_new(SvPV_nolen(ST(0)));
120 0 0 if(ix == 1 && /* ->die */
0 0 if(ix == 1 && /* ->die */
121 0 0 !SvROK(exception) && SvPV_nolen(exception)[SvCUR(exception)-1] != '\n') {
0 0 !SvROK(exception) && SvPV_nolen(exception)[SvCUR(exception)-1] != '\n') {
123 0 0 sv_catpvf(exception, " at %s line %d\n", CopFILE(PL_curcop), CopLINE(PL_curcop));
128 0 0 if(sv_is_future(self))
131 0 0 RETVAL = future_new(SvPV_nolen(ST(0)));
140 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
149 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
160 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
161 0 0 if(future_is_ready(self)) {
176 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
185 0 0 if(GIMME_V == G_LIST) {
0 0 if(GIMME_V == G_LIST) {
186 0 0 XPUSHs_from_AV(result);
0 0 XPUSHs_from_AV(result);
0 0 XPUSHs_from_AV(result);
0 0 XPUSHs_from_AV(result);
0 0 XPUSHs_from_AV(result);
0 0 XPUSHs_from_AV(result);
0 0 XPUSHs_from_AV(result);
187 0 0 XSRETURN(av_count(result));
190 0 0 if(av_count(result))
0 0 if(av_count(result))
191 0 0 XPUSHs(AvARRAY(result)[0]);
193 0 0 XPUSHs(&PL_sv_undef);
200 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
209 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
213 0 0 if(!failure)
216 0 0 if(GIMME_V == G_LIST) {
0 0 if(GIMME_V == G_LIST) {
217 0 0 XPUSHs_from_AV(failure);
0 0 XPUSHs_from_AV(failure);
0 0 XPUSHs_from_AV(failure);
0 0 XPUSHs_from_AV(failure);
0 0 XPUSHs_from_AV(failure);
0 0 XPUSHs_from_AV(failure);
0 0 XPUSHs_from_AV(failure);
218 0 0 XSRETURN(av_count(failure));
221 0 0 if(av_count(failure))
0 0 if(av_count(failure))
222 0 0 XPUSHs(AvARRAY(failure)[0]);
224 0 0 XPUSHs(&PL_sv_undef);
231 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
240 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
259 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
260 0 0 if(GIMME_V == G_VOID) {
0 0 if(GIMME_V == G_VOID) {
268 0 0 warn_void_context(ix ? "then_with_f" : "then");
275 0 0 if(items) {
281 0 0 if(items % 2) {
286 0 0 if(items) {
289 0 0 for(int i = 0; i < items/2; i++)
306 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
307 0 0 warn_void_context(ix ? "else_with_f" : "else");
318 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
319 0 0 warn_void_context(ix ? "catch_with_f" : "catch");
323 0 0 if(items % 2) {
330 0 0 for(int i = 0; i < items/2; i++)
340 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
349 0 0 RETVAL = future_new_waitallv(SvPV_nolen(cls), &ST(1), items - 1);
356 0 0 RETVAL = future_new_waitanyv(SvPV_nolen(cls), &ST(1), items - 1);
363 0 0 RETVAL = future_new_needsallv(SvPV_nolen(cls), &ST(1), items - 1);
370 0 0 RETVAL = future_new_needsanyv(SvPV_nolen(cls), &ST(1), items - 1);
383 0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
0 0 CHECK_INSTANCE(self);
404 0 0 if(t.tv_sec) {