diff options
author | Paul "LeoNerd" Evans <leonerd@leonerd.org.uk> | 2021-01-22 17:57:08 +0000 |
---|---|---|
committer | Paul "LeoNerd" Evans <leonerd@leonerd.org.uk> | 2021-02-04 14:20:53 +0000 |
commit | a1325b902d57aa7a99bed3d2ec0fa5ce42836207 (patch) | |
tree | 37ce967cbad3faa9d65d10d33aab6919ec353616 /feature.h | |
parent | 99dbf64538ee1c097b9f7e93df5a45dbf1fa3e22 (diff) | |
download | perl-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.h | 19 |
1 files changed, 17 insertions, 2 deletions
@@ -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) { |