|UV uv|NN char *s
Es |regnode*|regclass |NN struct RExC_state_t *pRExC_state \
|NN I32 *flagp|U32 depth|const bool stop_at_1 \
- |bool allow_multi_fold
+ |bool allow_multi_fold \
+ |const bool silence_non_portable
Es |regnode*|reg_node |NN struct RExC_state_t *pRExC_state|U8 op
Es |UV |reg_recode |const char value|NN SV **encp
Es |regnode*|regpiece |NN struct RExC_state_t *pRExC_state \
#define reganode(a,b,c) S_reganode(aTHX_ a,b,c)
#define regatom(a,b,c) S_regatom(aTHX_ a,b,c)
#define regbranch(a,b,c,d) S_regbranch(aTHX_ a,b,c,d)
-#define regclass(a,b,c,d,e) S_regclass(aTHX_ a,b,c,d,e)
+#define regclass(a,b,c,d,e,f) S_regclass(aTHX_ a,b,c,d,e,f)
#define reginsert(a,b,c,d) S_reginsert(aTHX_ a,b,c,d)
#define regpiece(a,b,c) S_regpiece(aTHX_ a,b,c)
#define regpposixcc(a,b,c) S_regpposixcc(aTHX_ a,b,c)
#define PERL_ARGS_ASSERT_REGBRANCH \
assert(pRExC_state); assert(flagp)
-STATIC regnode* S_regclass(pTHX_ struct RExC_state_t *pRExC_state, I32 *flagp, U32 depth, const bool stop_at_1, bool allow_multi_fold)
+STATIC regnode* S_regclass(pTHX_ struct RExC_state_t *pRExC_state, I32 *flagp, U32 depth, const bool stop_at_1, bool allow_multi_fold, const bool silence_non_portable)
__attribute__nonnull__(pTHX_1)
__attribute__nonnull__(pTHX_2);
#define PERL_ARGS_ASSERT_REGCLASS \
char * const oregcomp_parse = ++RExC_parse;
ret = regclass(pRExC_state, flagp,depth+1,
FALSE, /* means parse the whole char class */
- TRUE); /* allow multi-char folds */
+ TRUE, /* allow multi-char folds */
+ FALSE); /* don't silence non-portable warnings. */
if (*RExC_parse != ']') {
RExC_parse = oregcomp_parse;
vFAIL("Unmatched [");
ret = regclass(pRExC_state, flagp,depth+1,
TRUE, /* means just parse this element */
- FALSE); /* don't allow multi-char folds */
+ FALSE, /* don't allow multi-char folds */
+ FALSE); /* don't silence non-portable warnings.
+ It would be a bug if these returned
+ non-portables */
RExC_parse--;
STATIC regnode *
S_regclass(pTHX_ RExC_state_t *pRExC_state, I32 *flagp, U32 depth,
- const bool stop_at_1, bool allow_multi_folds)
+ const bool stop_at_1, bool allow_multi_folds,
+ const bool silence_non_portable)
{
/* parse a bracketed class specification. Most of these will produce an ANYOF node;
* but something like [a] will produce an EXACT node; [aA], an EXACTFish
&error_msg,
SIZE_ONLY,
FALSE, /* Not strict */
- TRUE, /* Output warnings for
- non-portables */
+ silence_non_portable,
UTF);
if (! valid) {
vFAIL(error_msg);
&error_msg,
TRUE, /* Output warnings */
FALSE, /* Not strict */
- TRUE, /* Output warnings for
- non-portables */
+ silence_non_portable,
UTF);
if (! valid) {
vFAIL(error_msg);