Branch Coverage

Parameters.xs
Criterion Covered Total %
branch 624 954 65.4


line true false branch
176 0 618 DEFVECTOR_INIT(spv_init, SpecParam);
183 196 618 DEFVECTOR_CLEAR(spv_clear, SpecParam, sp_clear);
185 0 196 DEFVECTOR_EXTEND(spv_extend, SpecParam);
0 0 DEFVECTOR_EXTEND(spv_extend, SpecParam);
223 6694 618 while (p) {
225 6694 0 if (cur->destroy) {
292 2101 14 p->needs_freed = o && !MY_OP_SLABBED(o);
0 2101 p->needs_freed = o && !MY_OP_SLABBED(o);
296 0 1922 if (p->needs_freed) {
316 3017 0 const char *sv_p = SvPV(sv, sv_len);
317 970 2047 return sv_len == n && memcmp(sv_p, p, n) == 0;
242 728 return sv_len == n && memcmp(sv_p, p, n) == 0;
334 28 11121 if (d - ds > 1) {
355 31 1998 if (lex_bufutf8()) {
362 12972 0 while (c != -1) {
363 2057 10915 if (at_substart ? MY_UNI_IDFIRST(c) : MY_UNI_IDCONT(c)) {
2055 2 if (at_substart ? MY_UNI_IDFIRST(c) : MY_UNI_IDCONT(c)) {
2055 0 if (at_substart ? MY_UNI_IDFIRST(c) : MY_UNI_IDCONT(c)) {
1555 500 if (at_substart ? MY_UNI_IDFIRST(c) : MY_UNI_IDCONT(c)) {
10909 6 if (at_substart ? MY_UNI_IDFIRST(c) : MY_UNI_IDCONT(c)) {
10909 0 if (at_substart ? MY_UNI_IDFIRST(c) : MY_UNI_IDCONT(c)) {
9354 1555 if (at_substart ? MY_UNI_IDFIRST(c) : MY_UNI_IDCONT(c)) {
10915 2057 if (at_substart ? MY_UNI_IDFIRST(c) : MY_UNI_IDCONT(c)) {
368 719 1338 } else if (allow_package && !at_substart && c == '\'') {
445 274 } else if (allow_package && !at_substart && c == '\'') {
0 445 } else if (allow_package && !at_substart && c == '\'') {
371 0 0 if (!MY_UNI_IDFIRST(c)) {
0 0 if (!MY_UNI_IDFIRST(c)) {
0 0 if (!MY_UNI_IDFIRST(c)) {
0 0 if (!MY_UNI_IDFIRST(c)) {
377 719 1338 } else if (allow_package && (at_start || !at_substart) && c == ':') {
445 274 } else if (allow_package && (at_start || !at_substart) && c == ':') {
445 0 } else if (allow_package && (at_start || !at_substart) && c == ':') {
30 689 } else if (allow_package && (at_start || !at_substart) && c == ':') {
379 0 30 if (lex_peek_unichar(0) != ':') {
385 30 0 if (!MY_UNI_IDFIRST(c)) {
30 0 if (!MY_UNI_IDFIRST(c)) {
2 28 if (!MY_UNI_IDFIRST(c)) {
2 28 if (!MY_UNI_IDFIRST(c)) {
397 1531 498 return SvCUR(sv) ? sv : NULL;
408 0 68 if (lex_bufutf8()) {
415 0 242 if (c == EOF) {
420 26 216 if (c == '\\') {
422 0 26 if (c == EOF) {
426 0 26 if (keep_backslash || (c != '(' && c != ')')) {
0 0 if (keep_backslash || (c != '(' && c != ')')) {
0 0 if (keep_backslash || (c != '(' && c != ')')) {
429 0 216 } else if (c == '(') {
431 68 148 } else if (c == ')') {
432 68 0 if (!nesting) {
449 67 0 start = SvPVbyte_force(proto, len);
452 199 67 for (w = r = start; r < end; r++) {
453 178 21 if (!isSPACE(*r)) {
462 22 45 if (!ckWARN(WARN_ILLEGALPROTO)) {
467 0 45 if (strspn(start, "$@%*;[]&\\_+") != len) {
469 0 0 warner(
487 58 23 for (r = start; r < end; r++) {
498 10 1 if (r[1] && !strchr(";@%", r[1])) {
6 4 if (r[1] && !strchr(";@%", r[1])) {
510 0 5 if (r[1]) {
522 2 10 if (strchr("$@%&*", *r)) {
525 4 6 if (*r == '[') {
527 4 0 for (; r < end && *r != ']'; r++) {
4 0 for (; r < end && *r != ']'; r++) {
528 4 0 if (!strchr("$@%&*", *r)) {
532 0 4 if (*r == ']' && r[-1] != '[') {
0 0 if (*r == ']' && r[-1] != '[') {
559 1 74 if (!(t = my_scan_word(aTHX_ sen, TRUE))) {
565 14 60 if (c == '[') {
577 8 13 } while (c == ',');
578 0 13 if (c != ']') {
596 4 77 while ((c = lex_peek_unichar(0)) == '~') {
604 2 75 if (c == '(') {
613 0 2 if (c != ')') {
634 2 73 while ((c = lex_peek_unichar(0)) == '/') {
654 4 69 while ((c = lex_peek_unichar(0)) == '&') {
674 11 58 while ((c = lex_peek_unichar(0)) == '|') {
696 58 4 if ((flags & G_WANT) == 0) {
704 0 62 PUSHMARK(SP);
705 12 50 if (!args) {
709 50 0 EXTEND(SP, (SSize_t)nargs);
0 50 EXTEND(SP, (SSize_t)nargs);
710 54 50 for (i = 0; i < nargs; i++) {
723 4 55 if (want == G_VOID) {
732 58 1 FREETMPS;
743 0 37 if (!sv_isobject(t)) {
781 0 1206 DEFVECTOR_INIT(pv_init, Param);
782 0 1206 DEFVECTOR_INIT(piv_init, ParamInit);
800 7 683 DEFVECTOR_EXTEND(pv_extend, Param);
0 7 DEFVECTOR_EXTEND(pv_extend, Param);
801 0 131 DEFVECTOR_EXTEND(piv_extend, ParamInit);
0 0 DEFVECTOR_EXTEND(piv_extend, ParamInit);
814 0 151 if (ps->used + n > ps->size) {
816 0 0 Renew(ps->data, n2, Param);
819 0 151 Move(ps->data, ps->data + n, ps->used, Param);
820 157 151 for (i = 0; i < n; i++) {
838 847 1206 DEFVECTOR_CLEAR(pv_clear, Param, p_clear);
839 131 1206 DEFVECTOR_CLEAR_THX(piv_clear, ParamInit, pi_clear);
854 45614 962 for (i = 0, lim = ps->positional_required.used; i < lim; i++) {
855 2 45612 if (sv_eq(sv, ps->positional_required.data[i].name)) {
860 70 962 for (i = 0, lim = ps->positional_optional.used; i < lim; i++) {
861 0 70 if (sv_eq(sv, ps->positional_optional.data[i].param.name)) {
866 104 961 for (i = 0, lim = ps->named_required.used; i < lim; i++) {
867 1 103 if (sv_eq(sv, ps->named_required.data[i].name)) {
872 12 961 for (i = 0, lim = ps->named_optional.used; i < lim; i++) {
873 0 12 if (sv_eq(sv, ps->named_optional.data[i].param.name)) {
891 504 21 if (ps->named_required.used || ps->named_optional.used || ps->slurpy.name) {
496 8 if (ps->named_required.used || ps->named_optional.used || ps->slurpy.name) {
31 465 if (ps->named_required.used || ps->named_optional.used || ps->slurpy.name) {
960 6 40 if ((can_has_coercion = gv_fetchmethod_autoload(SvSTASH(SvRV(type)), "has_coercion", TRUE))) {
962 6 0 if (SvTRUE(ret)) {
0 6 if (SvTRUE(ret)) {
0 6 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 6 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
6 0 if (SvTRUE(ret)) {
6 0 if (SvTRUE(ret)) {
3 3 if (SvTRUE(ret)) {
0 3 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
3 3 if (SvTRUE(ret)) {
970 0 46 if ((can_can_be_inlined = gv_fetchmethod_autoload(SvSTASH(SvRV(type)), "can_be_inlined", TRUE))) {
972 0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
0 0 if (SvTRUE(ret)) {
978 0 46 if (can_be_inlined) {
983 0 0 if (!can_inline_check) {
985 0 0 if (!can_inline_check) {
995 0 0 : name;
1004 0 0 if (PL_parser->error_count) {
1008 0 0 if (!chk) {
1009 0 0 Perl_croak(aTHX_ "In %"SVf": inlining type constraint %"SVf" for %s %lu (%"SVf") failed", SVfARG(declarator), SVfARG(type), is_invocant ? "invocant" : "parameter", (unsigned long)nr, SVfARG(name));
1012 0 0 FREETMPS;
1015 0 0 if (has_coercion) {
1019 0 0 args2 = op_append_elem(OP_LIST, args2, padoff == NOT_IN_PAD ? newDEFSVOP() : my_var(aTHX_ 0, padoff));
1026 0 0 coerce = newASSIGNOP(
1040 1 45 : my_var(aTHX_ 0, padoff);
1042 3 43 if (has_coercion) {
1053 0 3 arg = newASSIGNOP(
1070 3 43 err = mkconstsv(
1074 2 41 : newSVpvf("In %"SVf": %s %lu (%"SVf"): ", SVfARG(declarator), is_invocant ? "invocant" : "parameter", (unsigned long)nr, SVfARG(name))
1081 1 45 args = op_append_elem(
1148 889 0 if (spec->flags & FLAG_TYPES_OK) {
1149 12 877 if (c == '(') {
1160 0 12 if (!(expr = parse_fullexpr(PARSE_OPTIONAL))) {
1163 12 0 if (MY_OP_SLABBED(expr)) {
1171 0 12 if (c != ')') {
1177 12 0 SvREFCNT_inc_simple_void(PL_compcv);
1178 0 12 if (expr_sentinel) {
1182 5 7 if (!SvROK(*ptype)) {
1184 0 7 } else if (!sv_isobject(*ptype)) {
1189 877 0 } else if (MY_UNI_IDFIRST(c) || c == '~') {
877 0 } else if (MY_UNI_IDFIRST(c) || c == '~') {
36 841 } else if (MY_UNI_IDFIRST(c) || c == '~') {
841 36 } else if (MY_UNI_IDFIRST(c) || c == '~') {
0 0 } else if (MY_UNI_IDFIRST(c) || c == '~') {
0 841 } else if (MY_UNI_IDFIRST(c) || c == '~') {
1197 81 804 if (c == ':') {
1206 0 885 if (c == -1) {
1210 49 836 if (!(c == '$' || c == '@' || c == '%')) {
6 43 if (!(c == '$' || c == '@' || c == '%')) {
0 6 if (!(c == '$' || c == '@' || c == '%')) {
1219 0 885 if (c == '#') {
1225 17 868 if (!(name = my_scan_word(aTHX_ sen, FALSE))) {
1227 0 868 } else if (sv_eq_pvs(name, "_")) {
1237 17 868 if (c == '/') {
1240 0 17 if (c != '/') {
1241 0 0 Perl_croak(aTHX_ "In %"SVf": unexpected '%s' after '%"SVf"' (expecting '//=' or '=')", SVfARG(declarator), c == '=' ? "/=" : "/", SVfARG(name));
1246 0 17 if (c != '=') {
1254 137 748 if (c == '=') {
1259 135 2 if (c == ',' || c == ')') {
4 131 if (c == ',' || c == ')') {
1260 0 6 if (is_defined_or) {
1265 117 14 if (param_spec->shift == 0 && spec->shift.used) {
11 106 if (param_spec->shift == 0 && spec->shift.used) {
1268 12 11 for (i = 0; i < lim; i++) {
1284 35 850 if (c == ':') {
1288 553 297 } else if (c == ',') {
1291 0 297 } else if (c != ')') {
1292 0 0 if (c == -1) {
1300 868 17 : pad_add_name_sv(*pname, padadd_NO_DUP_CHECK, NULL, NULL)
1310 0 547 PUSHMARK(SP);
1311 0 547 EXTEND(SP, 9);
1318 547 0 char *p = SvPV(declarator, n);
1320 547 0 SV *tmp = newSVpvn_utf8(p, q ? (size_t)(q - p) : n, SvUTF8(declarator));
1333 331 216 if (lim) {
1335 770 331 for (i = 0; i < lim; i++) {
1338 45 725 av_push(av, cur->type ? SvREFCNT_inc_simple_NN(cur->type) : &PL_sv_undef);
1351 72 475 if (lim) {
1353 111 72 for (i = 0; i < lim; i++) {
1356 0 111 av_push(av, cur->type ? SvREFCNT_inc_simple_NN(cur->type) : &PL_sv_undef);
1369 22 525 if (lim) {
1371 56 22 for (i = 0; i < lim; i++) {
1374 0 56 av_push(av, cur->type ? SvREFCNT_inc_simple_NN(cur->type) : &PL_sv_undef);
1387 11 536 if (lim) {
1389 19 11 for (i = 0; i < lim; i++) {
1392 0 19 av_push(av, cur->type ? SvREFCNT_inc_simple_NN(cur->type) : &PL_sv_undef);
1399 36 511 if (ps->slurpy.name) {
1401 1 35 if (ps->slurpy.type) {
1415 547 0 FREETMPS;
1433 22 596 if (lex_bufutf8()) {
1443 616 2 if ((spec->flags & FLAG_NAME_OK) && (saw_name = my_scan_word(aTHX_ sen, TRUE))) {
347 269 if ((spec->flags & FLAG_NAME_OK) && (saw_name = my_scan_word(aTHX_ sen, TRUE))) {
1445 2 345 if (PL_parser->expect != XSTATE) {
1453 345 0 if (
1454 345 0 sv_eq_pvs(saw_name, "BEGIN") ||
1455 345 0 sv_eq_pvs(saw_name, "END") ||
1456 345 0 sv_eq_pvs(saw_name, "INIT") ||
1457 0 345 sv_eq_pvs(saw_name, "CHECK") ||
1464 3 268 } else if (!(spec->flags & FLAG_ANON_OK)) {
1471 345 268 floor_ix = start_subparse(FALSE, saw_name ? 0 : CVf_ANON);
1484 10 603 if (c != '(') {
1502 889 577 while ((c = lex_peek_unichar(0)) != ')') {
1510 868 17 if (padoff != NOT_IN_PAD) {
1514 885 0 sigil = SvPV_nolen(name)[0];
1517 81 804 if (flags & PARAM_NAMED) {
1518 0 81 if (padoff == NOT_IN_PAD) {
1521 1 80 if (flags & PARAM_INVOCANT) {
1524 0 80 if (sigil != '$') {
1525 0 0 Perl_croak(aTHX_ "In %"SVf": named parameter %"SVf" can't be a%s", SVfARG(declarator), SVfARG(name), sigil == '@' ? "n array" : " hash");
1527 34 770 } else if (flags & PARAM_INVOCANT) {
1528 0 34 if (init_sentinel->op) {
1531 2 32 if (sigil != '$') {
1532 1 1 Perl_croak(aTHX_ "In %"SVf": invocant %"SVf" can't be a%s", SVfARG(declarator), SVfARG(name), sigil == '@' ? "n array" : " hash");
1534 47 723 } else if (sigil != '$' && init_sentinel->op) {
4 43 } else if (sigil != '$' && init_sentinel->op) {
1535 2 2 Perl_croak(aTHX_ "In %"SVf": %s %"SVf" can't have a default value", SVfARG(declarator), sigil == '@' ? "array" : "hash", SVfARG(name));
1537 44 834 if (type && padoff == NOT_IN_PAD) {
0 44 if (type && padoff == NOT_IN_PAD) {
1542 5 873 if (param_spec->slurpy.name) {
1545 42 831 if (sigil != '$') {
1553 752 79 if (!(flags & PARAM_NAMED) && count_named_params(param_spec)) {
1 751 if (!(flags & PARAM_NAMED) && count_named_params(param_spec)) {
1554 1 0 Perl_croak(aTHX_ "In %"SVf": positional parameter %"SVf" can't appear after named parameter %"SVf"", SVfARG(declarator), SVfARG(name), SVfARG((param_spec->named_required.used ? param_spec->named_required.data[0] : param_spec->named_optional.data[0].param).name));
1557 32 798 if (flags & PARAM_INVOCANT) {
1558 0 32 if (param_spec->shift) {
1562 2 30 if (!(spec->flags & FLAG_INVOCANT)) {
1565 29 1 if (spec->shift.used && spec->shift.used != param_spec->positional_required.used + 1) {
3 26 if (spec->shift.used && spec->shift.used != param_spec->positional_required.used + 1) {
1570 746 79 if (!(flags & PARAM_NAMED) && !init_sentinel->op && param_spec->positional_optional.used) {
632 114 if (!(flags & PARAM_NAMED) && !init_sentinel->op && param_spec->positional_optional.used) {
0 632 if (!(flags & PARAM_NAMED) && !init_sentinel->op && param_spec->positional_optional.used) {
1574 133 692 if (init_sentinel->op && !(spec->flags & FLAG_DEFAULT_ARGS)) {
2 131 if (init_sentinel->op && !(spec->flags & FLAG_DEFAULT_ARGS)) {
1578 820 3 if (padoff != NOT_IN_PAD && ps_contains(aTHX_ param_spec, name)) {
1 819 if (padoff != NOT_IN_PAD && ps_contains(aTHX_ param_spec, name)) {
1582 78 744 if (flags & PARAM_NAMED) {
1583 0 78 if (!(spec->flags & FLAG_NAMED_PARAMS)) {
1587 19 59 if (init_sentinel->op) {
1596 1 58 if (param_spec->positional_optional.used) {
1603 112 632 if (init_sentinel->op) {
1614 27 605 if (flags & PARAM_INVOCANT) {
1625 539 38 if (param_spec->shift == 0 && spec->shift.used) {
140 399 if (param_spec->shift == 0 && spec->shift.used) {
1629 144 138 for (i = 0; i < lim; i++) {
1631 2 142 if (ps_contains(aTHX_ param_spec, cur->name)) {
1650 507 68 if (c == ':' || c == '{') /* '}' - hi, vim */ {
507 0 if (c == ':' || c == '{') /* '}' - hi, vim */ {
1653 575 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
0 575 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
0 575 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
0 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
0 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
575 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
575 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
403 172 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
0 403 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
0 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
0 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
0 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
0 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
0 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
0 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
172 403 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
172 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
172 0 if (SvTRUE(spec->attrs) && SvPV_nolen(spec->attrs)[0] == ':') {
1658 234 341 if (c == ':') {
1666 211 242 if (!(attr = my_scan_word(aTHX_ sen, FALSE))) {
1673 174 68 if (c != '(') {
1674 3 171 if (sv_eq_pvs(attr, "lvalue")) {
1677 171 0 } else if (sv_eq_pvs(attr, "method")) {
1684 0 68 if (!(sv = my_scan_parens_tail(aTHX_ sen, TRUE))) {
1688 68 0 if (sv_eq_pvs(attr, "prototype")) {
1689 1 67 if (proto) {
1705 0 219 if (attr) {
1709 9 210 if (c == ':') {
1719 1 551 if (c != '{') /* '}' - hi, vim */ {
1724 334 217 if (saw_name && !spec->install_sub && !(spec->flags & FLAG_RUNTIME)) {
323 11 if (saw_name && !spec->install_sub && !(spec->flags & FLAG_RUNTIME)) {
309 14 if (saw_name && !spec->install_sub && !(spec->flags & FLAG_RUNTIME)) {
1730 309 0 SvREFCNT_inc_simple_void(PL_compcv);
1743 15 294 newATTRSUB(
1752 3 548 if (builtin_attrs & MY_ATTR_LVALUE) {
1755 171 380 if (builtin_attrs & MY_ATTR_METHOD) {
1758 0 551 if (builtin_attrs & MY_ATTR_SPECIAL) {
1763 525 26 if (spec->flags & FLAG_CHECK_NARGS) {
1767 325 200 if (amin > 0) {
1793 465 60 if (amax >= 0) {
1820 496 29 if (count_named_params(param_spec) || (param_spec->slurpy.name && SvPV_nolen(param_spec->slurpy.name)[0] == '%')) {
31 465 if (count_named_params(param_spec) || (param_spec->slurpy.name && SvPV_nolen(param_spec->slurpy.name)[0] == '%')) {
31 0 if (count_named_params(param_spec) || (param_spec->slurpy.name && SvPV_nolen(param_spec->slurpy.name)[0] == '%')) {
0 31 if (count_named_params(param_spec) || (param_spec->slurpy.name && SvPV_nolen(param_spec->slurpy.name)[0] == '%')) {
1831 16 13 cond = newLOGOP(OP_AND, 0,
1847 176 375 if (param_spec->shift) {
1851 176 0 for (i = 0; i < param_spec->shift; i++) {
1852 176 0 if (param_spec->positional_required.data[i].padoff != NOT_IN_PAD) {
1858 169 7 if (param_spec->shift == 1) {
1859 0 169 if (all_anon) {
1885 0 7 if (all_anon) {
1900 14 7 for (i = 0, lim = param_spec->shift; i < lim; i++) {
1902 0 14 lhs = op_append_elem(
1935 592 551 for (i = param_spec->shift, lim = param_spec->positional_required.used; i < lim; i++) {
1937 1 591 lhs = op_append_elem(
1950 111 551 for (i = 0, lim = param_spec->positional_optional.used; i < lim; i++) {
1952 2 109 lhs = op_append_elem(
1987 37 514 slurpy_hash = param_spec->slurpy.name && SvPV_nolen(param_spec->slurpy.name)[0] == '%';
37 0 slurpy_hash = param_spec->slurpy.name && SvPV_nolen(param_spec->slurpy.name)[0] == '%';
2 35 slurpy_hash = param_spec->slurpy.name && SvPV_nolen(param_spec->slurpy.name)[0] == '%';
1988 521 30 if (!count_named_params(param_spec)) {
1989 31 490 if (param_spec->slurpy.name && param_spec->slurpy.padoff != NOT_IN_PAD) {
17 14 if (param_spec->slurpy.name && param_spec->slurpy.padoff != NOT_IN_PAD) {
1991 0 17 type = slurpy_hash ? OP_PADHV : OP_PADAV;
1996 2 28 } else if (slurpy_hash && param_spec->slurpy.padoff != NOT_IN_PAD) {
2 0 } else if (slurpy_hash && param_spec->slurpy.padoff != NOT_IN_PAD) {
2004 47 504 if (padoff != NOT_IN_PAD) {
2014 30 17 if (type == OP_PADHV) {
2020 279 272 if (lhs) {
2043 111 551 for (i = 0, lim = param_spec->positional_optional.used; i < lim; i++) {
2049 18 93 if (init_op->op_type == OP_UNDEF && !(init_op->op_flags & OPf_KIDS)) {
18 0 if (init_op->op_type == OP_UNDEF && !(init_op->op_flags & OPf_KIDS)) {
2058 1 11 if (cur->param.padoff == NOT_IN_PAD) {
2082 80 1 if (cur->param.padoff != NOT_IN_PAD) {
2102 30 521 if (count_named_params(param_spec)) {
2107 56 30 for (i = 0, lim = param_spec->named_required.used; i < lim; i++) {
2110 56 0 char *p = SvPV(cur->name, n);
2117 55 1 if (spec->flags & FLAG_CHECK_NARGS) {
2141 19 30 for (i = 0, lim = param_spec->named_optional.used; i < lim; i++) {
2144 19 0 char *p = SvPV(cur->param.name, n);
2152 1 18 if (!(init->op_type == OP_UNDEF && !(init->op_flags & OPf_KIDS))) {
0 1 if (!(init->op_type == OP_UNDEF && !(init->op_flags & OPf_KIDS))) {
2181 24 6 if (!param_spec->slurpy.name) {
2182 23 1 if (spec->flags & FLAG_CHECK_NARGS) {
2213 4 2 } else if (param_spec->slurpy.padoff != param_spec->rest_hash) {
2217 4 0 if (SvPV_nolen(param_spec->slurpy.name)[0] == '%') {
4 0 if (SvPV_nolen(param_spec->slurpy.name)[0] == '%') {
2223 4 0 if (param_spec->slurpy.padoff != NOT_IN_PAD) {
2248 551 0 if (spec->flags & FLAG_CHECK_TARGS) {
2252 775 551 for (i = 0, lim = param_spec->positional_required.used; i < lim; i++) {
2255 45 730 if (cur->type) {
2259 40 5 op_guard_update(prelude_sentinel, op_append_list(OP_LINESEQ, prelude_sentinel->op, newSTATEOP(0, NULL, mktypecheckpv(aTHX_ sen, declarator, base + i - (is_invocant ? 0 : shift), cur, !is_invocant ? 0 : shift == 1 ? -1 : 1))));
3 2 op_guard_update(prelude_sentinel, op_append_list(OP_LINESEQ, prelude_sentinel->op, newSTATEOP(0, NULL, mktypecheckpv(aTHX_ sen, declarator, base + i - (is_invocant ? 0 : shift), cur, !is_invocant ? 0 : shift == 1 ? -1 : 1))));
40 5 op_guard_update(prelude_sentinel, op_append_list(OP_LINESEQ, prelude_sentinel->op, newSTATEOP(0, NULL, mktypecheckpv(aTHX_ sen, declarator, base + i - (is_invocant ? 0 : shift), cur, !is_invocant ? 0 : shift == 1 ? -1 : 1))));
2264 111 551 for (i = 0, lim = param_spec->positional_optional.used; i < lim; i++) {
2267 0 111 if (cur->type) {
2274 56 551 for (i = 0, lim = param_spec->named_required.used; i < lim; i++) {
2277 0 56 if (cur->type) {
2284 19 551 for (i = 0, lim = param_spec->named_optional.used; i < lim; i++) {
2287 0 19 if (cur->type) {
2294 1 550 if (param_spec->slurpy.type) {
2302 1 0 if (SvPV_nolen(param_spec->slurpy.name)[0] == '@') {
1 0 if (SvPV_nolen(param_spec->slurpy.name)[0] == '@') {
2321 537 14 if (prelude_sentinel->op) {
2333 551 0 SvREFCNT_inc_simple_void(PL_compcv);
2338 44 507 cv = newATTRSUB(
334 217 cv = newATTRSUB(
313 21 cv = newATTRSUB(
309 4 cv = newATTRSUB(
2348 547 4 if (cv) {
2353 334 217 if (saw_name) {
2354 313 21 if (!runtime) {
2355 4 309 if (spec->install_sub) {
2363 7 14 *pop = newUNOP(
2395 72570 0 if (PL_parser && PL_parser->error_count) {
3 72567 if (PL_parser && PL_parser->error_count) {
2400 0 72567 if (kw_len > (STRLEN)I32_MAX) {
2404 0 72567 if (!(hints = GvHV(PL_hintgv))) {
2412 68346 4221 if (!(psv = hv_fetchs(hints, HINTK_CONFIG, 0))) {
2416 2 4219 if (!SvROK(sv)) {
2420 0 2 PUSHMARK(SP);
2429 0 4219 if (SvTYPE(sv2) != SVt_PVHV) {
2432 132 4087 if (lex_bufutf8()) {
2435 3601 618 if (!(psv = hv_fetch((HV *)sv2, kw_ptr, kw_xlen, 0))) {
2439 618 0 if (!(SvROK(sv) && (sv2 = SvRV(sv), SvTYPE(sv2) == SVt_PVHV))) {
0 618 if (!(SvROK(sv) && (sv2 = SvRV(sv), SvTYPE(sv2) == SVt_PVHV))) {
2471 0 618 FETCH_HINTSK_INTO(FLAGS, &sv);
2472 618 0 (*ppspec)->flags = SvIV(sv);
2474 0 618 FETCH_HINTSK_INTO(REIFY, &sv);
2475 618 0 if (!sv || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVCV) {
618 0 if (!sv || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVCV) {
0 618 if (!sv || !SvROK(sv) || SvTYPE(SvRV(sv)) != SVt_PVCV) {
2480 0 618 FETCH_HINTSK_INTO(SHIFT, &sv);
2483 501 117 const char *const sv_p = SvPVutf8(sv, sv_len);
2489 196 618 while (p < sv_p_end) {
2491 0 196 if (*p != '$') {
2495 196 0 if (p >= sv_p_end || !MY_UNI_IDFIRST_utf8(p, sv_p_end)) {
196 0 if (p >= sv_p_end || !MY_UNI_IDFIRST_utf8(p, sv_p_end)) {
0 196 if (p >= sv_p_end || !MY_UNI_IDFIRST_utf8(p, sv_p_end)) {
0 0 if (p >= sv_p_end || !MY_UNI_IDFIRST_utf8(p, sv_p_end)) {
0 0 if (p >= sv_p_end || !MY_UNI_IDFIRST_utf8(p, sv_p_end)) {
0 0 if (p >= sv_p_end || !MY_UNI_IDFIRST_utf8(p, sv_p_end)) {
0 0 if (p >= sv_p_end || !MY_UNI_IDFIRST_utf8(p, sv_p_end)) {
0 0 if (p >= sv_p_end || !MY_UNI_IDFIRST_utf8(p, sv_p_end)) {
2499 812 0 while (p < sv_p_end && MY_UNI_IDCONT_utf8(p, sv_p_end)) {
812 0 while (p < sv_p_end && MY_UNI_IDCONT_utf8(p, sv_p_end)) {
616 196 while (p < sv_p_end && MY_UNI_IDCONT_utf8(p, sv_p_end)) {
0 0 while (p < sv_p_end && MY_UNI_IDCONT_utf8(p, sv_p_end)) {
0 0 while (p < sv_p_end && MY_UNI_IDCONT_utf8(p, sv_p_end)) {
0 0 while (p < sv_p_end && MY_UNI_IDCONT_utf8(p, sv_p_end)) {
0 0 while (p < sv_p_end && MY_UNI_IDCONT_utf8(p, sv_p_end)) {
0 0 while (p < sv_p_end && MY_UNI_IDCONT_utf8(p, sv_p_end)) {
2503 0 196 if (v_end == v_start + 2 && v_start[1] == '_') {
0 0 if (v_end == v_start + 2 && v_start[1] == '_') {
2508 11 196 for (i = 0; i < lim; i++) {
2509 0 11 if (my_sv_eq_pvn(aTHX_ (*ppspec)->shift.data[i].name, v_start, v_end - v_start)) {
2514 196 0 if (p < sv_p_end && *p == '/') {
2 194 if (p < sv_p_end && *p == '/') {
2518 4 0 while (p < sv_p_end && isDIGIT(*p)) {
2 2 while (p < sv_p_end && isDIGIT(*p)) {
2523 2 0 if (!shift_types) {
2525 0 2 FETCH_HINTSK_INTO(SHIF2, &sv);
2526 2 0 if (!(SvROK(sv) && (sv2 = SvRV(sv), SvTYPE(sv2) == SVt_PVAV))) {
0 2 if (!(SvROK(sv) && (sv2 = SvRV(sv), SvTYPE(sv2) == SVt_PVAV))) {
2531 2 0 if (tix < 0 || tix > av_len(shift_types)) {
0 2 if (tix < 0 || tix > av_len(shift_types)) {
2535 0 2 if (!ptype) {
2539 0 2 if (!sv_isobject(type)) {
2545 196 0 if (p < sv_p_end) {
2546 0 196 if (*p != ' ') {
2554 0 618 FETCH_HINTSK_INTO(ATTRS, &sv);
2555 618 0 SvSetSV((*ppspec)->attrs, sv);
2557 0 618 FETCH_HINTSK_INTO(INSTL, &sv);
2558 618 0 if (SvTRUE(sv)) {
0 618 if (SvTRUE(sv)) {
0 618 if (SvTRUE(sv)) {
0 0 if (SvTRUE(sv)) {
0 0 if (SvTRUE(sv)) {
616 2 if (SvTRUE(sv)) {
616 0 if (SvTRUE(sv)) {
606 10 if (SvTRUE(sv)) {
0 606 if (SvTRUE(sv)) {
0 0 if (SvTRUE(sv)) {
0 2 if (SvTRUE(sv)) {
0 0 if (SvTRUE(sv)) {
0 0 if (SvTRUE(sv)) {
0 0 if (SvTRUE(sv)) {
0 0 if (SvTRUE(sv)) {
12 606 if (SvTRUE(sv)) {
2575 618 71952 if (kw_flags_enter(aTHX_ &psen, keyword_ptr, keyword_len, &pspec)) {
2578 84 467 FREETMPS;
2593 0 48 if (*old_plugin_p) {
2597 48 0 if (!*old_plugin_p) {
2659 18 0 RETVAL = PTR2UV(xcv ? CvROOT(xcv) : NULL);
2674 1 11 if (xcv) {
2675 1 0 if (!GvCVGEN(gv) && (CvROOT(xcv) || CvXSUB(xcv)) && ckWARN(WARN_REDEFINE)) {
0 1 if (!GvCVGEN(gv) && (CvROOT(xcv) || CvXSUB(xcv)) && ckWARN(WARN_REDEFINE)) {
0 0 if (!GvCVGEN(gv) && (CvROOT(xcv) || CvXSUB(xcv)) && ckWARN(WARN_REDEFINE)) {
0 1 if (!GvCVGEN(gv) && (CvROOT(xcv) || CvXSUB(xcv)) && ckWARN(WARN_REDEFINE)) {
2682 12 0 if (GvSTASH(gv)) {
2683 1 11 gv_method_changed(gv);