Branch Coverage

src/xs/export.cc
Criterion Covered Total %
branch 73 228 32.0


line true false branch
13 1 5 if (!clists) clists = newHV();
14 6 0 SV* clist = *hv_fetch(clists, HvNAME(stash), HvNAMELEN(stash), 1);
6 0 SV* clist = *hv_fetch(clists, HvNAME(stash), HvNAMELEN(stash), 1);
0 6 SV* clist = *hv_fetch(clists, HvNAME(stash), HvNAMELEN(stash), 1);
0 0 SV* clist = *hv_fetch(clists, HvNAME(stash), HvNAMELEN(stash), 1);
6 0 SV* clist = *hv_fetch(clists, HvNAME(stash), HvNAMELEN(stash), 1);
0 6 SV* clist = *hv_fetch(clists, HvNAME(stash), HvNAMELEN(stash), 1);
6 0 SV* clist = *hv_fetch(clists, HvNAME(stash), HvNAMELEN(stash), 1);
6 0 SV* clist = *hv_fetch(clists, HvNAME(stash), HvNAMELEN(stash), 1);
0 6 SV* clist = *hv_fetch(clists, HvNAME(stash), HvNAMELEN(stash), 1);
0 0 SV* clist = *hv_fetch(clists, HvNAME(stash), HvNAMELEN(stash), 1);
6 0 SV* clist = *hv_fetch(clists, HvNAME(stash), HvNAMELEN(stash), 1);
0 6 SV* clist = *hv_fetch(clists, HvNAME(stash), HvNAMELEN(stash), 1);
16 3 3 if (!SvOK(clist)) {
3 0 if (!SvOK(clist)) {
3 0 if (!SvOK(clist)) {
17 3 0 SvUPGRADE(clist, SVt_RV);
27 0 13 if (!stash_constants_list) stash_constants_list = constants_list(aTHX_ stash);
29 1 12 if (!SvPOK(name)) EX_CROAK_BADNAME(HvNAME(stash), SvPV_nolen(name));
0 1 if (!SvPOK(name)) EX_CROAK_BADNAME(HvNAME(stash), SvPV_nolen(name));
1 0 if (!SvPOK(name)) EX_CROAK_BADNAME(HvNAME(stash), SvPV_nolen(name));
1 0 if (!SvPOK(name)) EX_CROAK_BADNAME(HvNAME(stash), SvPV_nolen(name));
0 1 if (!SvPOK(name)) EX_CROAK_BADNAME(HvNAME(stash), SvPV_nolen(name));
0 0 if (!SvPOK(name)) EX_CROAK_BADNAME(HvNAME(stash), SvPV_nolen(name));
1 0 if (!SvPOK(name)) EX_CROAK_BADNAME(HvNAME(stash), SvPV_nolen(name));
0 1 if (!SvPOK(name)) EX_CROAK_BADNAME(HvNAME(stash), SvPV_nolen(name));
30 0 12 if (!SvCUR(name)) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!SvCUR(name)) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!SvCUR(name)) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!SvCUR(name)) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!SvCUR(name)) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!SvCUR(name)) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!SvCUR(name)) EX_CROAK_NONAME(HvNAME(stash));
32 12 0 if (need_inc) {
33 12 0 if (SvIsCOW_shared_hash(name)) SvREFCNT_inc(name);
12 0 if (SvIsCOW_shared_hash(name)) SvREFCNT_inc(name);
42 0 0 HEK* hek = CvNAMED(sub) ? CvNAME_HEK(sub) : GvNAME_HEK(CvGV(sub));
43 0 0 if (!hek) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!hek) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!hek) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!hek) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!hek) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!hek) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!hek) EX_CROAK_NONAME(HvNAME(stash));
61 0 14 if (!name) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!name) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!name) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!name) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!name) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!name) EX_CROAK_NONAME(HvNAME(stash));
0 0 if (!name) EX_CROAK_NONAME(HvNAME(stash));
65 1 13 if (sym_he && HeVAL(sym_he) && isGV(HeVAL(sym_he)) && GvCV(HeVAL(sym_he))) EX_CROAK_EXISTS(HvNAME(stash), SvPV_nolen(name));
1 0 if (sym_he && HeVAL(sym_he) && isGV(HeVAL(sym_he)) && GvCV(HeVAL(sym_he))) EX_CROAK_EXISTS(HvNAME(stash), SvPV_nolen(name));
1 0 if (sym_he && HeVAL(sym_he) && isGV(HeVAL(sym_he)) && GvCV(HeVAL(sym_he))) EX_CROAK_EXISTS(HvNAME(stash), SvPV_nolen(name));
1 0 if (sym_he && HeVAL(sym_he) && isGV(HeVAL(sym_he)) && GvCV(HeVAL(sym_he))) EX_CROAK_EXISTS(HvNAME(stash), SvPV_nolen(name));
1 0 if (sym_he && HeVAL(sym_he) && isGV(HeVAL(sym_he)) && GvCV(HeVAL(sym_he))) EX_CROAK_EXISTS(HvNAME(stash), SvPV_nolen(name));
1 0 if (sym_he && HeVAL(sym_he) && isGV(HeVAL(sym_he)) && GvCV(HeVAL(sym_he))) EX_CROAK_EXISTS(HvNAME(stash), SvPV_nolen(name));
1 0 if (sym_he && HeVAL(sym_he) && isGV(HeVAL(sym_he)) && GvCV(HeVAL(sym_he))) EX_CROAK_EXISTS(HvNAME(stash), SvPV_nolen(name));
0 1 if (sym_he && HeVAL(sym_he) && isGV(HeVAL(sym_he)) && GvCV(HeVAL(sym_he))) EX_CROAK_EXISTS(HvNAME(stash), SvPV_nolen(name));
0 0 if (sym_he && HeVAL(sym_he) && isGV(HeVAL(sym_he)) && GvCV(HeVAL(sym_he))) EX_CROAK_EXISTS(HvNAME(stash), SvPV_nolen(name));
1 0 if (sym_he && HeVAL(sym_he) && isGV(HeVAL(sym_he)) && GvCV(HeVAL(sym_he))) EX_CROAK_EXISTS(HvNAME(stash), SvPV_nolen(name));
0 1 if (sym_he && HeVAL(sym_he) && isGV(HeVAL(sym_he)) && GvCV(HeVAL(sym_he))) EX_CROAK_EXISTS(HvNAME(stash), SvPV_nolen(name));
70 12 0 if (value) SvREFCNT_inc(value);
93 0 0 if (constant.svalue) create_constant(aTHX_ stash, constant.name, constant.svalue, stash_constants_list);
99 0 3 XS_HV_ITER(constants, {
3 0 XS_HV_ITER(constants, {
31 2 XS_HV_ITER(constants, {
13 30 XS_HV_ITER(constants, {
107 1 0 if (!list || !items) return;
0 1 if (!list || !items) return;
109 1 0 for (size_t i = 0; i < items - 1; i += 2) {
117 0 0 if (!list || !items) return;
0 0 if (!list || !items) return;
119 0 0 while (items--) {
121 0 0 if (!constant.name) break;
122 0 0 SV* namesv = newSVpvn_share(constant.name, strlen(constant.name), 0);
123 0 0 SV* valuesv = constant.svalue ? newSVpv(constant.svalue, 0) : newSViv(constant.value);
0 0 SV* valuesv = constant.svalue ? newSVpv(constant.svalue, 0) : newSViv(constant.value);
0 0 SV* valuesv = constant.svalue ? newSVpv(constant.svalue, 0) : newSViv(constant.value);
124 0 0 create_constant(aTHX_ stash, namesv, valuesv, clist);
125 0 0 SvREFCNT_dec_NN(namesv);
126 0 0 SvREFCNT_dec_NN(valuesv);
132 26 1 GV* symentry = symentry_ent ? (GV*)HeVAL(symentry_ent) : NULL;
133 26 1 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), SvPV_nolen(name));
26 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), SvPV_nolen(name));
0 26 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), SvPV_nolen(name));
1 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), SvPV_nolen(name));
1 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), SvPV_nolen(name));
1 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), SvPV_nolen(name));
0 1 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), SvPV_nolen(name));
0 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), SvPV_nolen(name));
1 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), SvPV_nolen(name));
0 1 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), SvPV_nolen(name));
141 0 0 GV* symentry = symentry_ref ? (GV*)(*symentry_ref) : NULL;
142 0 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), name);
0 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), name);
0 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), name);
0 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), name);
0 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), name);
0 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), name);
0 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), name);
0 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), name);
0 0 if (!symentry || (isGV(symentry) && !GvCV(symentry))) EX_CROAK_NOSUB(HvNAME(from), name);
156 28 5 while (items--) {
158 0 28 if (!name) continue;
160 1 27 if (name_str[0] == ':' && strEQ(name_str, ":const")) {
1 0 if (name_str[0] == ':' && strEQ(name_str, ":const")) {
163 1 0 if (AvARRAY(clist) != list) export_subs(aTHX_ from, to, AvARRAY(clist), AvFILLp(clist)+1);
171 0 0 while (items--) {
173 0 0 if (!name) break;
174 0 0 if (name[0] == ':' && strEQ(name, ":const")) {
0 0 if (name[0] == ':' && strEQ(name, ":const")) {
183 2 0 }}
2 0 }}