X-Git-Url: https://perl5.git.perl.org/perl5.git/blobdiff_plain/3c3f8cd64edb32a0dac554f7a524cc222184c3ec..87ebf1e3df9537a204b21f0405c6e60f2acdcc47:/op.c diff --git a/op.c b/op.c index 5aeedfc..2a76ae4 100644 --- a/op.c +++ b/op.c @@ -9481,10 +9481,15 @@ Perl_ck_bitop(pTHX_ OP *o) PERL_ARGS_ASSERT_CK_BITOP; o->op_private = (U8)(PL_hints & HINT_INTEGER); + + if (o->op_type == OP_NBIT_OR || o->op_type == OP_SBIT_OR + || o->op_type == OP_NBIT_XOR || o->op_type == OP_SBIT_XOR + || o->op_type == OP_NBIT_AND || o->op_type == OP_SBIT_AND + || o->op_type == OP_NCOMPLEMENT || o->op_type == OP_SCOMPLEMENT) + Perl_ck_warner_d(aTHX_ packWARN(WARN_EXPERIMENTAL__BITWISE), + "The bitwise feature is experimental"); if (!(o->op_flags & OPf_STACKED) /* Not an assignment */ - && (o->op_type == OP_BIT_OR - || o->op_type == OP_BIT_AND - || o->op_type == OP_BIT_XOR)) + && OP_IS_INFIX_BIT(o->op_type)) { const OP * const left = cBINOPo->op_first; const OP * const right = OpSIBLING(left); @@ -9493,9 +9498,15 @@ Perl_ck_bitop(pTHX_ OP *o) (OP_IS_NUMCOMPARE(right->op_type) && (right->op_flags & OPf_PARENS) == 0)) Perl_ck_warner(aTHX_ packWARN(WARN_PRECEDENCE), - "Possible precedence problem on bitwise %c operator", - o->op_type == OP_BIT_OR ? '|' - : o->op_type == OP_BIT_AND ? '&' : '^' + "Possible precedence problem on bitwise %s operator", + o->op_type == OP_BIT_OR + ||o->op_type == OP_NBIT_OR ? "|" + : o->op_type == OP_BIT_AND + ||o->op_type == OP_NBIT_AND ? "&" + : o->op_type == OP_BIT_XOR + ||o->op_type == OP_NBIT_XOR ? "^" + : o->op_type == OP_SBIT_OR ? "|." + : o->op_type == OP_SBIT_AND ? "&." : "^." ); } return o; @@ -9865,8 +9876,10 @@ Perl_ck_ftst(pTHX_ OP *o) } if ((PL_hints & HINT_FILETEST_ACCESS) && OP_IS_FILETEST_ACCESS(o->op_type)) o->op_private |= OPpFT_ACCESS; - if (PL_check[kidtype] == Perl_ck_ftst - && kidtype != OP_STAT && kidtype != OP_LSTAT) { + if (type != OP_STAT && type != OP_LSTAT + && PL_check[kidtype] == Perl_ck_ftst + && kidtype != OP_STAT && kidtype != OP_LSTAT + ) { o->op_private |= OPpFT_STACKED; kid->op_private |= OPpFT_STACKING; if (kidtype == OP_FTTTY && ( @@ -12880,7 +12893,8 @@ Perl_rpeep(pTHX_ OP *o) * update the code accordingly. This applies to all the * other ASSUMEs in the block of code too. */ - ASSUME(!(o2->op_flags & ~(OPf_WANT|OPf_MOD|OPf_SPECIAL))); + ASSUME(!(o2->op_flags & + ~(OPf_WANT|OPf_MOD|OPf_PARENS|OPf_SPECIAL))); ASSUME(!(o2->op_private & ~OPpEARLY_CV)); o2 = o2->op_next;