#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"
+#include "feature.h"
/* ... op => info map ................................................. */
STATIC IV current_base(pTHX) {
#define current_base() current_base(aTHX)
SV *hsv = ab_hint(0);
- assert(FEATURE_IS_ENABLED_d("arybase"));
+ assert(FEATURE_ARYBASE_IS_ENABLED);
if (!hsv || !SvOK(hsv)) return 0;
return SvIV(hsv);
}
STATIC OP *ab_ck_sassign(pTHX_ OP *o) {
o = (*ab_old_ck_sassign)(aTHX_ o);
- if (o->op_type == OP_SASSIGN && FEATURE_IS_ENABLED_d("arybase")) {
+ if (o->op_type == OP_SASSIGN && FEATURE_ARYBASE_IS_ENABLED) {
OP *right = cBINOPx(o)->op_first;
OP *left = right->op_sibling;
if (left) ab_process_assignment(left, right);
STATIC OP *ab_ck_aassign(pTHX_ OP *o) {
o = (*ab_old_ck_aassign)(aTHX_ o);
- if (o->op_type == OP_AASSIGN && FEATURE_IS_ENABLED_d("arybase")) {
+ if (o->op_type == OP_AASSIGN && FEATURE_ARYBASE_IS_ENABLED) {
OP *right = cBINOPx(o)->op_first;
OP *left = cBINOPx(right->op_sibling)->op_first->op_sibling;
right = cBINOPx(right)->op_first->op_sibling;
PL_op->op_type);
}
o = (*old_ck)(aTHX_ o);
- if (!FEATURE_IS_ENABLED_d("arybase")) return o;
+ if (!FEATURE_ARYBASE_IS_ENABLED) return o;
/* We need two switch blocks, as the type may have changed. */
switch (o->op_type) {
case OP_AELEM :
void
FETCH(...)
PREINIT:
- SV *ret = FEATURE_IS_ENABLED_d("arybase")
+ SV *ret = FEATURE_ARYBASE_IS_ENABLED
? cop_hints_fetch_pvs(PL_curcop, "$[", 0)
: 0;
PPCODE:
void
STORE(SV *sv, IV newbase)
CODE:
- if (FEATURE_IS_ENABLED_d("arybase")) {
+ if (FEATURE_ARYBASE_IS_ENABLED) {
SV *base = cop_hints_fetch_pvs(PL_curcop, "$[", 0);
if (SvOK(base) ? SvIV(base) == newbase : !newbase) XSRETURN_EMPTY;
Perl_croak(aTHX_ "That use of $[ is unsupported");
if (!SvROK(sv) || SvTYPE(SvRV(sv)) >= SVt_PVAV)
Perl_croak(aTHX_ "Not a SCALAR reference");
{
- SV *base = FEATURE_IS_ENABLED_d("arybase")
+ SV *base = FEATURE_ARYBASE_IS_ENABLED
? cop_hints_fetch_pvs(PL_curcop, "$[", 0)
: 0;
SvGETMAGIC(SvRV(sv));
if (!SvROK(sv) || SvTYPE(SvRV(sv)) >= SVt_PVAV)
Perl_croak(aTHX_ "Not a SCALAR reference");
{
- SV *base = FEATURE_IS_ENABLED_d("arybase")
+ SV *base = FEATURE_ARYBASE_IS_ENABLED
? cop_hints_fetch_pvs(PL_curcop, "$[", 0)
: 0;
SvGETMAGIC(newbase);
#include "perl.h"
#include "overload.c"
#include "keywords.h"
+#include "feature.h"
static const char S_autoload[] = "AUTOLOAD";
static const STRLEN S_autolen = sizeof(S_autoload)-1;
goto magicalize;
case '[': /* $[ */
if ((sv_type == SVt_PV || sv_type == SVt_PVGV)
- && FEATURE_IS_ENABLED_d("arybase")) {
+ && FEATURE_ARYBASE_IS_ENABLED) {
if (addmg) (void)hv_store(stash,name,len,(SV *)gv,0);
require_tie_mod(gv,name,newSVpvs("arybase"),"FETCH",0);
addmg = 0;
#define PERL_IN_KEYWORDS_C
#include "perl.h"
#include "keywords.h"
+#include "feature.h"
I32
Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
case 'a':
if (name[2] == 'y')
{ /* say */
- return (all_keywords || FEATURE_IS_ENABLED("say") ? KEY_say : 0);
+ return (all_keywords || FEATURE_SAY_IS_ENABLED ? KEY_say : 0);
}
goto unknown;
if (name[2] == 'e' &&
name[3] == 'n')
{ /* when */
- return (all_keywords || FEATURE_IS_ENABLED("switch") ? KEY_when : 0);
+ return (all_keywords || FEATURE_SWITCH_IS_ENABLED ? KEY_when : 0);
}
goto unknown;
name[3] == 'a' &&
name[4] == 'k')
{ /* break */
- return (all_keywords || FEATURE_IS_ENABLED("switch") ? -KEY_break : 0);
+ return (all_keywords || FEATURE_SWITCH_IS_ENABLED ? -KEY_break : 0);
}
goto unknown;
name[3] == 'e' &&
name[4] == 'n')
{ /* given */
- return (all_keywords || FEATURE_IS_ENABLED("switch") ? KEY_given : 0);
+ return (all_keywords || FEATURE_SWITCH_IS_ENABLED ? KEY_given : 0);
}
goto unknown;
if (name[3] == 't' &&
name[4] == 'e')
{ /* state */
- return (all_keywords || FEATURE_IS_ENABLED("state") ? KEY_state : 0);
+ return (all_keywords || FEATURE_STATE_IS_ENABLED ? KEY_state : 0);
}
goto unknown;
name[5] == '_' &&
name[6] == '_')
{ /* __SUB__ */
- return (all_keywords || FEATURE_IS_ENABLED("__SUB__") ? -KEY___SUB__ : 0);
+ return (all_keywords || FEATURE___SUB___IS_ENABLED ? -KEY___SUB__ : 0);
}
goto unknown;
name[5] == 'l' &&
name[6] == 't')
{ /* default */
- return (all_keywords || FEATURE_IS_ENABLED("switch") ? KEY_default : 0);
+ return (all_keywords || FEATURE_SWITCH_IS_ENABLED ? KEY_default : 0);
}
goto unknown;
name[7] == 'e' &&
name[8] == 's')
{ /* evalbytes */
- return (all_keywords || FEATURE_IS_ENABLED("evalbytes") ? -KEY_evalbytes : 0);
+ return (all_keywords || FEATURE_EVALBYTES_IS_ENABLED ? -KEY_evalbytes : 0);
}
goto unknown;
}
/* Generated from:
- * 76ce12941a02bdb120222155311eb8772ba4a4e8965a42ba347a077cac5b426e regen/keywords.pl
+ * 29732a698b229f9e5f475fbb191f71c335c9e8d05b6168fe29e61c34c4f10bd2 regen/keywords.pl
* ex: set ro: */
#define KEY_y 254
/* Generated from:
- * 76ce12941a02bdb120222155311eb8772ba4a4e8965a42ba347a077cac5b426e regen/keywords.pl
+ * 29732a698b229f9e5f475fbb191f71c335c9e8d05b6168fe29e61c34c4f10bd2 regen/keywords.pl
* ex: set ro: */
#define PERL_IN_OP_C
#include "perl.h"
#include "keywords.h"
+#include "feature.h"
#define CALL_PEEP(o) PL_peepp(aTHX_ o)
#define CALL_RPEEP(o) PL_rpeepp(aTHX_ o)
o->op_private |= OPpEVAL_HAS_HH;
if (!(o->op_private & OPpEVAL_BYTES)
- && FEATURE_IS_ENABLED("unieval"))
+ && FEATURE_UNIEVAL_IS_ENABLED)
o->op_private |= OPpEVAL_UNICODE;
}
return o;
#define PERL_IN_KEYWORDS_C
#include "perl.h"
#include "keywords.h"
+#include "feature.h"
I32
Perl_keyword (pTHX_ const char *name, I32 len, bool all_keywords)
elsif (my $feature = $feature_kw{$k}) {
$feature =~ s/([\\"])/\\$1/g;
return <<END;
-return (all_keywords || FEATURE_IS_ENABLED("$feature") ? ${sign}KEY_$k : 0);
+return (all_keywords || FEATURE_\U$feature\E_IS_ENABLED ? ${sign}KEY_$k : 0);
END
}
return <<END;