Branch Coverage

Attribute.xs
Criterion Covered Total %
branch 47 82 57.3


line true false branch
14 2 0 if (PL_in_eval)
15 2 0 sv_catsv(ERRSV, err);
16 0 0 else if (PL_errors)
20 0 2 ++PL_error_count;
54 71 0 if(sv_true(ERRSV)){ /* dying by bad attributes */
2 69 if(sv_true(ERRSV)){ /* dying by bad attributes */
55 2 0 qerror(ERRSV);
62 0 69 if(MY_CXT.debug){
63 0 0 warn("apply attribute :%s%s to &%s in %"SVf,
65 0 0 SvOK(data) ? form("(%"SVf")", data) : "",
0 0 SvOK(data) ? form("(%"SVf")", data) : "",
71 0 69 PUSHMARK(SP);
72 0 69 EXTEND(SP, 5);
75 68 1 if(!CvANON(cv)){
91 69 0 if(sv_true(ERRSV)){
0 69 if(sv_true(ERRSV)){
93 0 0 sv_setpvf(msg, "Can't apply attribute %"SVf" because: %"SVf, name, ERRSV);
109 71 24 while(svp != end){
113 69 2 FREETMPS;
125 84 0 const char* const pv = SvPV_const(sv, len);
155 0 11 MY_CXT.debug = (d && *d != '\0' && strNE(d, "0"));
0 0 MY_CXT.debug = (d && *d != '\0' && strNE(d, "0"));
0 0 MY_CXT.debug = (d && *d != '\0' && strNE(d, "0"));
169 84 0 HV* const hinthv = GvHVn(PL_hintgv);
175 24 60 if(!mg){
182 88 84 for(i = 2; i < items; i++){
184 88 0 const char* const attr = SvPV_const(ST(i), attrlen);
187 14 74 STRLEN const namelen = data ? (STRLEN)(data - attr) : attrlen;
190 14 74 if(data){
192 6 14 while(isSPACE(*data)){
196 6 14 while(isSPACE(data[datalen-1])){
201 13 75 if(strnEQ(attr, META_ATTR, sizeof(META_ATTR))){ /* meta attribute */
202 0 13 if(!MgFind((SV*)code, &attr_handler_vtbl)){
0 0 if(!MgFind((SV*)code, &attr_handler_vtbl)){
209 0 13 if(MY_CXT.debug){
217 72 3 if(meth && MgFind((SV*)GvCV(meth), &attr_handler_vtbl)){
71 1 if(meth && MgFind((SV*)GvCV(meth), &attr_handler_vtbl)){
71 0 if(meth && MgFind((SV*)GvCV(meth), &attr_handler_vtbl)){
225 13 58 if(data){
232 0 4 if(MY_CXT.debug){
248 0 4 XPUSHs(ST(i));