| line |
true |
false |
branch |
|
57
|
3 |
0 |
sv_catpvf(message, "%s at %s line %" IVdf, |
|
60
|
3 |
0 |
if(context) |
|
62
|
3 |
0 |
sv_catpvf(message, ", near \"%" UTF8f "\"", UTF8fARG(UTF, contlen, context)); |
|
|
0 |
3 |
sv_catpvf(message, ", near \"%" UTF8f "\"", UTF8fARG(UTF, contlen, context)); |
|
|
0 |
0 |
sv_catpvf(message, ", near \"%" UTF8f "\"", UTF8fARG(UTF, contlen, context)); |
|
|
3 |
0 |
sv_catpvf(message, ", near \"%" UTF8f "\"", UTF8fARG(UTF, contlen, context)); |
|
|
3 |
0 |
sv_catpvf(message, ", near \"%" UTF8f "\"", UTF8fARG(UTF, contlen, context)); |
|
78
|
0 |
23 |
if(lex_peek_unichar(0) != c) |
|
94
|
101 |
23 |
for(i = 0; s[i]; i++) { |
|
95
|
81 |
20 |
if(s[i] != PL_parser->bufptr[i]) |
|
99
|
1 |
22 |
if(boundarycheck && isALNUM(PL_parser->bufptr[i])) |
|
|
1 |
0 |
if(boundarycheck && isALNUM(PL_parser->bufptr[i])) |
|
109
|
0 |
7 |
if(!len) |
|
119
|
2 |
2 |
if(c == ';') |
|
121
|
0 |
2 |
else if(!c || c == '}') |
|
161
|
1 |
80 |
if(argi >= (SvLEN(argsv) / sizeof(XSParseKeywordPiece))) |
|
162
|
1 |
0 |
SvGROW(argsv, SvLEN(argsv) * 2); |
|
|
1 |
0 |
SvGROW(argsv, SvLEN(argsv) * 2); |
|
166
|
0 |
81 |
THISARG.line = |
|
180
|
4 |
5 |
if(lex_peek_unichar(0) != piece->u.c) |
|
190
|
16 |
20 |
if(!len) |
|
203
|
2 |
2 |
if(lex_peek_unichar(0) != '{') |
|
211
|
3 |
2 |
if(!THISARG.sv) |
|
218
|
1 |
1 |
if(!THISARG.sv) |
|
225
|
1 |
1 |
if(!THISARG.sv) |
|
233
|
0 |
0 |
if(!XSParseInfix_parse(aTHX_ piece->u.c, &THISARG.infix)) |
|
246
|
0 |
0 |
if(!probe_piece(aTHX_ argsv, argidx, pieces++, hookdata)) |
|
258
|
17 |
2 |
while(choices->type) { |
|
259
|
12 |
5 |
if(probe_piece(aTHX_ argsv, argidx, choices + 0, hookdata)) { |
|
273
|
9 |
1 |
while(choices->type) { |
|
274
|
4 |
5 |
if(probe_piece(aTHX_ argsv, argidx, choices + 0, hookdata)) { |
|
288
|
1 |
2 |
if(!probe_piece(aTHX_ argsv, argidx, pieces + 1, hookdata)) { |
|
294
|
0 |
2 |
if(pieces[2].type) |
|
297
|
1 |
1 |
if(!probe_piece(aTHX_ argsv, argidx, pieces + 0, hookdata)) |
|
304
|
0 |
1 |
if(!probe_piece(aTHX_ argsv, argidx, pieces + 0, hookdata)) |
|
311
|
0 |
2 |
if(piece->type & XPK_TYPEFLAG_MAYBEPARENS) |
|
314
|
1 |
1 |
if(lex_peek_unichar(0) != '(') |
|
321
|
1 |
1 |
if(lex_peek_unichar(0) != '[') |
|
328
|
1 |
1 |
if(lex_peek_unichar(0) != '{') |
|
335
|
1 |
1 |
if(lex_peek_unichar(0) != '<') |
|
347
|
6 |
3 |
while(pieces->type) { |
|
348
|
2 |
4 |
if(pieces->type == XS_PARSE_KEYWORD_SETUP) |
|
373
|
0 |
124 |
CHECK_GROW_ARGSV; |
|
|
0 |
0 |
CHECK_GROW_ARGSV; |
|
|
0 |
0 |
CHECK_GROW_ARGSV; |
|
375
|
0 |
124 |
THISARG.line = |
|
417
|
0 |
8 |
if(is_enterleave) |
|
422
|
2 |
6 |
if(piece->u.pieces) { |
|
425
|
1 |
1 |
if(*argidx > argi) { |
|
427
|
0 |
1 |
CHECK_GROW_ARGSV; |
|
|
0 |
0 |
CHECK_GROW_ARGSV; |
|
|
0 |
0 |
CHECK_GROW_ARGSV; |
|
432
|
0 |
8 |
if(lex_peek_unichar(0) != '{') |
|
436
|
0 |
8 |
CHECK_PARSEFAIL; |
|
440
|
2 |
6 |
if(is_special) |
|
443
|
2 |
6 |
if(want) |
|
448
|
0 |
8 |
if(is_enterleave) |
|
461
|
0 |
1 |
CHECK_PARSEFAIL; |
|
474
|
1 |
19 |
if(is_enterleave) |
|
477
|
1 |
19 |
if(piece->u.pieces) { |
|
480
|
0 |
1 |
if(*argidx > argi) { |
|
482
|
0 |
0 |
CHECK_GROW_ARGSV; |
|
|
0 |
0 |
CHECK_GROW_ARGSV; |
|
|
0 |
0 |
CHECK_GROW_ARGSV; |
|
489
|
2 |
18 |
if(lex_peek_unichar(0) == '(') { |
|
494
|
0 |
2 |
CHECK_PARSEFAIL; |
|
509
|
0 |
18 |
CHECK_PARSEFAIL; |
|
512
|
1 |
19 |
if(want) |
|
517
|
1 |
19 |
if(is_enterleave) |
|
525
|
0 |
3 |
CHECK_PARSEFAIL; |
|
527
|
0 |
3 |
if(want) |
|
535
|
2 |
8 |
if(!THISARG.sv && !is_optional) |
|
|
1 |
1 |
if(!THISARG.sv && !is_optional) |
|
542
|
1 |
1 |
if(!THISARG.sv && !is_optional) |
|
|
1 |
0 |
if(!THISARG.sv && !is_optional) |
|
552
|
0 |
5 |
if(!varname) |
|
556
|
0 |
3 |
if(!(piece->u.c & XPK_LEXVAR_SCALAR)) |
|
560
|
0 |
1 |
if(!(piece->u.c & XPK_LEXVAR_ARRAY)) |
|
564
|
0 |
1 |
if(!(piece->u.c & XPK_LEXVAR_HASH)) |
|
568
|
3 |
2 |
if(type == XS_PARSE_KEYWORD_LEXVARNAME) { |
|
577
|
0 |
2 |
if(SvCUR(varname) == 2 && SvPVX(varname)[1] == '_') |
|
|
0 |
0 |
if(SvCUR(varname) == 2 && SvPVX(varname)[1] == '_') |
|
580
|
2 |
0 |
if(is_special) |
|
594
|
3 |
1 |
if(lex_peek_unichar(0) == ':') { |
|
601
|
7 |
3 |
while(lex_scan_attrval_into(attrname, attrval)) { |
|
604
|
0 |
7 |
if(*argidx >= (SvLEN(argsv) / sizeof(XSParseKeywordPiece))) |
|
605
|
0 |
0 |
SvGROW(argsv, SvLEN(argsv) * 2); |
|
|
0 |
0 |
SvGROW(argsv, SvLEN(argsv) * 2); |
|
615
|
2 |
5 |
if(lex_peek_unichar(0) == ':') { |
|
632
|
1 |
3 |
if(!XSParseInfix_parse(aTHX_ piece->u.c, &THISARG.infix)) |
|
645
|
31 |
1 |
if(is_optional) { |
|
648
|
17 |
14 |
if(!probe_piece(aTHX_ argsv, argidx, pieces, hookdata)) |
|
661
|
6 |
2 |
while(probe_piece(aTHX_ argsv, argidx, piece->u.pieces + 0, hookdata)) { |
|
669
|
1 |
5 |
if(!probe_piece(aTHX_ argsv, argidx, piece, hookdata)) { |
|
682
|
2 |
2 |
if(!probe_piece(aTHX_ argsv, argidx, piece->u.pieces + 0, hookdata)) |
|
691
|
0 |
4 |
if(is_optional) { |
|
694
|
0 |
0 |
if(!has_paren) return; |
|
698
|
3 |
1 |
if(has_paren) { |
|
706
|
1 |
0 |
else if(piece->type & XPK_TYPEFLAG_MAYBEPARENS) { |
|
718
|
0 |
2 |
if(is_optional) { |
|
721
|
0 |
0 |
if(lex_peek_unichar(0) != '[') return; |
|
735
|
0 |
2 |
if(is_optional) { |
|
738
|
0 |
0 |
if(lex_peek_unichar(0) != '{') return; |
|
752
|
0 |
2 |
if(is_optional) { |
|
755
|
0 |
0 |
if(lex_peek_unichar(0) != '<') return; |
|
775
|
73 |
94 |
for(idx = 0; pieces[idx].type; idx++) { |
|
785
|
2 |
96 |
if(hooks->parse) |
|
796
|
55 |
41 |
if(hooks->build) |
|
801
|
2 |
91 |
if(hooks->flags & XPK_FLAG_AUTOSEMI) { |
|
810
|
55 |
38 |
if(hooks->build) { |
|
814
|
55 |
0 |
if(argidx) { |
|
822
|
83 |
55 |
for(i = 0; i < argidx; i++) |
|
827
|
0 |
38 |
else if(reg->apiver < 2) { |
|
840
|
0 |
0 |
if(ret && (ret != KEYWORD_PLUGIN_EXPR)) |
|
846
|
0 |
2 |
if(ret && (ret != KEYWORD_PLUGIN_STMT)) |
|
859
|
61 |
243 |
if(!hooks->build1 && !hooks->build && !hooks->parse) |
|
|
2 |
59 |
if(!hooks->build1 && !hooks->build && !hooks->parse) |
|
|
0 |
2 |
if(!hooks->build1 && !hooks->build && !hooks->parse) |
|
872
|
304 |
0 |
if(hooks->permit_hintkey) |
|
895
|
22753 |
0 |
if(PL_parser && PL_parser->error_count) |
|
|
0 |
22753 |
if(PL_parser && PL_parser->error_count) |
|
901
|
316685 |
22655 |
for(reg = registrations; reg; reg = reg->next) { |
|
902
|
2344 |
314341 |
if(reg->kwlen != kwlen || !strEQ(reg->kwname, kw)) |
|
|
2244 |
100 |
if(reg->kwlen != kwlen || !strEQ(reg->kwname, kw)) |
|
905
|
100 |
0 |
if(reg->hooks->permit_hintkey && |
|
|
100 |
0 |
if(reg->hooks->permit_hintkey && |
|
906
|
1 |
99 |
(!hints || !hv_fetch(hints, reg->hooks->permit_hintkey, reg->permit_hintkey_len, 0))) |
|
913
|
2 |
96 |
if(reg->hooks->check) |
|
924
|
95 |
0 |
if(ret && !*op) |
|
|
0 |
95 |
if(ret && !*op) |