summaryrefslogtreecommitdiff
path: root/feature.h
diff options
context:
space:
mode:
authorPaul "LeoNerd" Evans <leonerd@leonerd.org.uk>2021-01-22 17:57:08 +0000
committerPaul "LeoNerd" Evans <leonerd@leonerd.org.uk>2021-02-04 14:20:53 +0000
commita1325b902d57aa7a99bed3d2ec0fa5ce42836207 (patch)
tree37ce967cbad3faa9d65d10d33aab6919ec353616 /feature.h
parent99dbf64538ee1c097b9f7e93df5a45dbf1fa3e22 (diff)
downloadperl-a1325b902d57aa7a99bed3d2ec0fa5ce42836207.tar.gz
Initial attempt at feature 'try'
* Add feature, experimental warning, keyword * Basic parsing * Basic implementation as optree fragment See also https://github.com/Perl/perl5/issues/18504
Diffstat (limited to 'feature.h')
-rw-r--r--feature.h19
1 files changed, 17 insertions, 2 deletions
diff --git a/feature.h b/feature.h
index 173719f2b9..501bc3a3b1 100644
--- a/feature.h
+++ b/feature.h
@@ -27,8 +27,9 @@
#define FEATURE_SIGNATURES_BIT 0x1000
#define FEATURE_STATE_BIT 0x2000
#define FEATURE_SWITCH_BIT 0x4000
-#define FEATURE_UNIEVAL_BIT 0x8000
-#define FEATURE_UNICODE_BIT 0x10000
+#define FEATURE_TRY_BIT 0x8000
+#define FEATURE_UNIEVAL_BIT 0x10000
+#define FEATURE_UNICODE_BIT 0x20000
#define FEATURE_BUNDLE_DEFAULT 0
#define FEATURE_BUNDLE_510 1
@@ -72,6 +73,12 @@
FEATURE_IS_ENABLED_MASK(FEATURE_SAY_BIT)) \
)
+#define FEATURE_TRY_IS_ENABLED \
+ ( \
+ CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+ FEATURE_IS_ENABLED_MASK(FEATURE_TRY_BIT) \
+ )
+
#define FEATURE_STATE_IS_ENABLED \
( \
(CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
@@ -337,6 +344,14 @@ S_magic_sethint_feature(pTHX_ SV *keysv, const char *keypv, STRLEN keylen,
}
return;
+ case 't':
+ if (keylen == sizeof("feature_try")-1
+ && memcmp(subf+1, "ry", keylen - sizeof("feature_")) == 0) {
+ mask = FEATURE_TRY_BIT;
+ break;
+ }
+ return;
+
case 'u':
if (keylen == sizeof("feature_unicode")-1
&& memcmp(subf+1, "nicode", keylen - sizeof("feature_")) == 0) {