kid->op_next = kid;
o->op_flags |= OPf_SPECIAL;
}
+ else if (kid->op_type == OP_CONST
+ && kid->op_private & OPpCONST_BARE) {
+ char tmpbuf[256];
+ STRLEN len;
+ PADOFFSET off;
+ const char * const name = SvPV(kSVOP_sv, len);
+ *tmpbuf = '&';
+ assert (len < 256);
+ Copy(name, tmpbuf+1, len, char);
+ off = pad_findmy_pvn(tmpbuf, len+1, SvUTF8(kSVOP_sv));
+ if (off != NOT_IN_PAD) {
+ if (PAD_COMPNAME_FLAGS_isOUR(off)) {
+ SV * const new =
+ newSVhek(HvNAME_HEK(PAD_COMPNAME_OURSTASH(off)));
+ sv_catpvs(new, "::");
+ sv_catsv(new, kSVOP_sv);
+ SvREFCNT_dec_NN(kSVOP_sv);
+ kSVOP->op_sv = new;
+ }
+ else {
+ OP * const new = newOP(OP_PADCV, 0);
+ new->op_targ = off;
+ cUNOPx(firstkid)->op_first = new;
+ op_free(kid);
+ }
+ }
+ }
firstkid = OP_SIBLING(firstkid);
}
*bar::is = *is;
*bar::like = *like;
}
-plan 141;
+plan 142;
# -------------------- Errors with feature disabled -------------------- #
our sub j;
is j
=>, 'j', 'name_of_our_sub <newline> => is parsed properly';
+sub _cmp { $a cmp $b }
+sub bar::_cmp { $b cmp $a }
+{
+ package bar;
+ our sub _cmp;
+ package main;
+ is join(" ", sort _cmp split //, 'oursub'), 'u u s r o b', 'sort our_sub'
+}
# -------------------- state -------------------- #
state sub x { is +(caller 0)[3], 'x', 'state sub name in caller' }
x
}
-sub _cmp { $a cmp $b }
{
- local $::TODO = ' ';
state sub _cmp { $b cmp $a }
is join(" ", sort _cmp split //, 'lexsub'), 'x u s l e b',
'sort state_sub LIST'
x
}
{
- local $::TODO = ' ';
my sub _cmp { $b cmp $a }
is join(" ", sort _cmp split //, 'lexsub'), 'x u s l e b',
'sort my_sub LIST'