Signature-Attribute-Alias
view release on metacpan or search on metacpan
lib/Signature/Attribute/Alias.xs view on Meta::CPAN
padentry = &(PAD_SVl(o->op_targ));
save_clearsv(padentry);
SV **svp = av_fetch(defav, ix, FALSE);
*padentry = svp ? SvREFCNT_inc(*svp) : &PL_sv_undef;
return o->op_next;
}
static void apply_Alias(pTHX_ struct XPSSignatureParamContext *ctx, SV *attrvalue, void **attrdata_ptr, void *funcdata)
{
PADNAME *pn = PadnamelistARRAY(PL_comppad_name)[ctx->padix];
if(PadnamePV(pn)[0] != '$')
croak("Can only apply the :Alias attribute to scalar parameters");
if(ctx->is_named)
croak("Cannot apply the :Alias attribute to a named parameter");
}
static void post_defop_Alias(pTHX_ struct XPSSignatureParamContext *ctx, void *attrdata, void *funcdata)
{
if(ctx->defop)
croak("Cannot apply the :Alias attribute to a parameter with a defaulting expression");
OP *varop = ctx->varop;
assert(varop);
assert((varop->op_private & OPpARGELEM_MASK) == OPpARGELEM_SV);
assert(!(varop->op_flags & OPf_STACKED));
varop->op_ppaddr = &pp_argelem_alias;
( run in 0.236 second using v1.01-cache-2.11-cpan-454fe037f31 )