In perl.git, the branch blead has been updated

<https://perl5.git.perl.org/perl.git/commitdiff/b566b29e5c88fece94ab58e0f1af8522b9b90c6f?hp=9a84a9ba7a7ba718aa90dba54a5bdfedd507aac1>

- Log -----------------------------------------------------------------
commit b566b29e5c88fece94ab58e0f1af8522b9b90c6f
Merge: 9a84a9ba7a 219ba69c91
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Dec 31 17:03:36 2017 -0800

    [Merge] Make bitwise feature no longer experimental

commit 219ba69c91fc97b0ac4ae9224049d4116af7651e
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Dec 31 17:02:13 2017 -0800

    perldelta for bitwise ops

commit 193789ac15b87b3f3a23dc38e9e19500c69dbf28
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Dec 31 12:54:44 2017 -0800

    Update docs wrt bitwise ops

commit 401d2aaa50f74cc9e0d089bb6236d5960689c76c
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Dec 31 12:24:01 2017 -0800

    Enable bitwise feature with ‘use v5.28’

commit e4232c8a5f384f4b3948d62f8a5233654cd14f4d
Author: Father Chrysostomos <spr...@cpan.org>
Date:   Sun Dec 31 11:24:57 2017 -0800

    Remove experimental bitwise warning

-----------------------------------------------------------------------

Summary of changes:
 feature.h              | 28 +++++++++++++++++-----------
 lib/feature.pm         | 20 ++++++++------------
 lib/overload.pm        |  4 ++--
 op.c                   |  6 ------
 pod/perldelta.pod      | 32 ++++++++++++++++++++++++++++++++
 pod/perldiag.pod       | 12 ------------
 pod/perlexperiment.pod | 18 ++++++------------
 pod/perlop.pod         | 38 +++++++++++++++++++-------------------
 regen/feature.pl       | 14 +++++---------
 t/lib/croak/op         |  6 ------
 t/lib/warnings/op      | 30 ------------------------------
 t/op/bop.t             | 34 +++++++++++++++++++++++++++++++++-
 12 files changed, 122 insertions(+), 120 deletions(-)

diff --git a/feature.h b/feature.h
index 838d64883b..0e15fb5ffb 100644
--- a/feature.h
+++ b/feature.h
@@ -14,6 +14,7 @@
 #define FEATURE_BUNDLE_511     2
 #define FEATURE_BUNDLE_515     3
 #define FEATURE_BUNDLE_523     4
+#define FEATURE_BUNDLE_527     5
 #define FEATURE_BUNDLE_CUSTOM  (HINT_FEATURE_MASK >> HINT_FEATURE_SHIFT)
 
 #define CURRENT_HINTS \
@@ -33,7 +34,7 @@
 #define FEATURE_FC_IS_ENABLED \
     ( \
        (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
-        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_523) \
+        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
      || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
         FEATURE_IS_ENABLED("fc")) \
     )
@@ -41,7 +42,7 @@
 #define FEATURE_SAY_IS_ENABLED \
     ( \
        (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
-        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_523) \
+        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
      || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
         FEATURE_IS_ENABLED("say")) \
     )
@@ -49,7 +50,7 @@
 #define FEATURE_STATE_IS_ENABLED \
     ( \
        (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
-        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_523) \
+        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
      || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
         FEATURE_IS_ENABLED("state")) \
     )
@@ -57,21 +58,22 @@
 #define FEATURE_SWITCH_IS_ENABLED \
     ( \
        (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_510 && \
-        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_523) \
+        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
      || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
         FEATURE_IS_ENABLED("switch")) \
     )
 
 #define FEATURE_BITWISE_IS_ENABLED \
     ( \
-       CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
-        FEATURE_IS_ENABLED("bitwise") \
+       CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_527 \
+     || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
+        FEATURE_IS_ENABLED("bitwise")) \
     )
 
 #define FEATURE_EVALBYTES_IS_ENABLED \
     ( \
        (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
-        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_523) \
+        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
      || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
         FEATURE_IS_ENABLED("evalbytes")) \
     )
@@ -92,7 +94,7 @@
 #define FEATURE___SUB___IS_ENABLED \
     ( \
        (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
-        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_523) \
+        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
      || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
         FEATURE_IS_ENABLED("__SUB__")) \
     )
@@ -105,7 +107,8 @@
 
 #define FEATURE_POSTDEREF_QQ_IS_ENABLED \
     ( \
-       CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_523 \
+       (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_523 && \
+        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
      || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
         FEATURE_IS_ENABLED("postderef_qq")) \
     )
@@ -113,7 +116,7 @@
 #define FEATURE_UNIEVAL_IS_ENABLED \
     ( \
        (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_515 && \
-        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_523) \
+        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
      || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
         FEATURE_IS_ENABLED("unieval")) \
     )
@@ -127,7 +130,7 @@
 #define FEATURE_UNICODE_IS_ENABLED \
     ( \
        (CURRENT_FEATURE_BUNDLE >= FEATURE_BUNDLE_511 && \
-        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_523) \
+        CURRENT_FEATURE_BUNDLE <= FEATURE_BUNDLE_527) \
      || (CURRENT_FEATURE_BUNDLE == FEATURE_BUNDLE_CUSTOM && \
         FEATURE_IS_ENABLED("unicode")) \
     )
@@ -142,6 +145,9 @@ S_enable_feature_bundle(pTHX_ SV *ver)
     SV *comp_ver = sv_newmortal();
     PL_hints = (PL_hints &~ HINT_FEATURE_MASK)
             | (
+                 (sv_setnv(comp_ver, 5.027),
+                  vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
+                       ? FEATURE_BUNDLE_527 :
                  (sv_setnv(comp_ver, 5.023),
                   vcmp(ver, upg_version(comp_ver, FALSE)) >= 0)
                        ? FEATURE_BUNDLE_523 :
diff --git a/lib/feature.pm b/lib/feature.pm
index 70df619e49..97f789ad64 100644
--- a/lib/feature.pm
+++ b/lib/feature.pm
@@ -29,6 +29,7 @@ our %feature_bundle = (
     "5.11"    => [qw(array_base say state switch unicode_strings)],
     "5.15"    => [qw(current_sub evalbytes fc say state switch unicode_eval 
unicode_strings)],
     "5.23"    => [qw(current_sub evalbytes fc postderef_qq say state switch 
unicode_eval unicode_strings)],
+    "5.27"    => [qw(bitwise current_sub evalbytes fc postderef_qq say state 
switch unicode_eval unicode_strings)],
     "all"     => [qw(array_base bitwise current_sub declared_refs evalbytes fc 
postderef_qq refaliasing say signatures state switch unicode_eval 
unicode_strings)],
     "default" => [qw(array_base)],
 );
@@ -46,8 +47,7 @@ $feature_bundle{"5.22"} = $feature_bundle{"5.15"};
 $feature_bundle{"5.24"} = $feature_bundle{"5.23"};
 $feature_bundle{"5.25"} = $feature_bundle{"5.23"};
 $feature_bundle{"5.26"} = $feature_bundle{"5.23"};
-$feature_bundle{"5.27"} = $feature_bundle{"5.23"};
-$feature_bundle{"5.28"} = $feature_bundle{"5.23"};
+$feature_bundle{"5.28"} = $feature_bundle{"5.27"};
 $feature_bundle{"5.9.5"} = $feature_bundle{"5.10"};
 my %noops = (
     postderef => 1,
@@ -56,7 +56,7 @@ my %noops = (
 
 our $hint_shift   = 26;
 our $hint_mask    = 0x1c000000;
-our @hint_bundles = qw( default 5.10 5.11 5.15 5.23 );
+our @hint_bundles = qw( default 5.10 5.11 5.15 5.23 5.27 );
 
 # This gets set (for now) in $^H as well as in %^H,
 # for runtime speed of the uc/lc/ucfirst/lcfirst functions.
@@ -316,13 +316,6 @@ This feature is available from Perl 5.22 onwards.
 
 =head2 The 'bitwise' feature
 
-B<WARNING>: This feature is still experimental and the implementation may
-change in future versions of Perl.  For this reason, Perl will
-warn when you use the feature, unless you have explicitly disabled the
-warning:
-
-    no warnings "experimental::bitwise";
-
 This makes the four standard bitwise operators (C<& | ^ ~>) treat their
 operands consistently as numbers, and introduces four new dotted operators
 (C<&. |. ^. ~.>) that treat their operands consistently as strings.  The
@@ -330,7 +323,10 @@ same applies to the assignment variants (C<&= |= ^= &.= 
|.= ^.=>).
 
 See L<perlop/Bitwise String Operators> for details.
 
-This feature is available from Perl 5.22 onwards.
+This feature is available from Perl 5.22 onwards.  Starting in Perl 5.28,
+C<use v5.28> will enable the feature.  Before 5.28, it was still
+experimental and would emit a warning in the "experimental::bitwise"
+category.
 
 =head2 The 'declared_refs' feature
 
@@ -390,7 +386,7 @@ The following feature bundles are available:
 
   :5.28     say state switch unicode_strings
             unicode_eval evalbytes current_sub fc
-            postderef_qq
+            postderef_qq bitwise
 
 The C<:default> bundle represents the feature set that is enabled before
 any C<use feature> or C<no feature> declaration.
diff --git a/lib/overload.pm b/lib/overload.pm
index b19c5a53cb..f7d5d0f7cf 100644
--- a/lib/overload.pm
+++ b/lib/overload.pm
@@ -310,7 +310,7 @@ An appropriate implementation of C<--> might look like
         # ...
     sub decr { --${$_[0]}; }
 
-If the experimental "bitwise" feature is enabled (see L<feature>), a fifth
+If the "bitwise" feature is enabled (see L<feature>), a fifth
 TRUE argument is passed to subroutines handling C<&>, C<|>, C<^> and C<~>.
 This indicates that the caller is expecting numeric behaviour.  The fourth
 argument will be C<undef>, as that position (C<$_[3]>) is reserved for use
@@ -693,7 +693,7 @@ The specified function will be passed four parameters.
 The first three arguments coincide with those that would have been
 passed to the corresponding method if it had been defined.
 The fourth argument is the C<use overload> key for that missing
-method.  If the experimental "bitwise" feature is enabled (see L<feature>),
+method.  If the "bitwise" feature is enabled (see L<feature>),
 a fifth TRUE argument is passed to subroutines handling C<&>, C<|>, C<^> and 
C<~> to indicate that the caller is expecting numeric behaviour.
 
 For example, if C<$a> is an object blessed into a package declaring
diff --git a/op.c b/op.c
index b59433c683..8b91f60234 100644
--- a/op.c
+++ b/op.c
@@ -10946,12 +10946,6 @@ Perl_ck_bitop(pTHX_ OP *o)
 
     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 */
            && OP_IS_INFIX_BIT(o->op_type))
     {
diff --git a/pod/perldelta.pod b/pod/perldelta.pod
index 18f8251fed..3df2835290 100644
--- a/pod/perldelta.pod
+++ b/pod/perldelta.pod
@@ -52,6 +52,38 @@ And the digits matched will all be from the same set of 10.  
You won't
 get a look-alike digit from a different script that has a different
 value than what it appears to be.
 
+=head2 String- and number-specific bitwise ops are no longer experimental
+
+The new string-specific (C<&. |. ^. ~.>) and number-specific (C<& | ^ ~>)
+bitwise operators introduced in Perl 5.22 are no longer experimental.
+Because the number-specific ops are spelled the same way as the existing
+operators that choose their behaviour based on their operands, these
+operators must still be enabled via the "bitwise" feature, in either of
+these two ways:
+
+    use feature "bitwise";
+
+    use v5.28; # "bitwise" now included
+
+They are also now enabled by the B<-E> command-line switch.
+
+The "bitwise" feature no longer emits a warning.  Existing code that
+disables the "experimental::bitwise" warning category that the feature
+previously used will continue to work.
+
+One caveat that module authors ought to be aware of is that the numeric
+operators now pass a fifth TRUE argument to overload methods.  Any methods
+that check the number of operands may croak if they do not expect so many.
+XS authors in particular should be aware that this:
+
+    SV *
+    bitop_handler (lobj, robj, swap)
+
+may need to be changed to this:
+
+    SV *
+    bitop_handler (lobj, robj, swap, ...)
+
 =head1 Security
 
 XXX Any security-related notices go here.  In particular, any security
diff --git a/pod/perldiag.pod b/pod/perldiag.pod
index cca35e88bf..7867871998 100644
--- a/pod/perldiag.pod
+++ b/pod/perldiag.pod
@@ -6053,18 +6053,6 @@ as a compiler directive.  You may say only one of
 This is to prevent the problem of one module changing the array base out
 from under another module inadvertently.  See L<perlvar/$[> and L<arybase>.
 
-=item The bitwise feature is experimental
-
-(S experimental::bitwise) This warning is emitted if you use bitwise
-operators (C<& | ^ ~ &. |. ^. ~.>) with the "bitwise" feature enabled.
-Simply suppress the warning if you want to use the feature, but know
-that in doing so you are taking the risk of using an experimental
-feature which may change or be removed in a future Perl version:
-
-    no warnings "experimental::bitwise";
-    use feature "bitwise";
-    $x |.= $y;
-
 =item The crypt() function is unimplemented due to excessive paranoia.
 
 (F) Configure couldn't find the crypt() function on your machine,
diff --git a/pod/perlexperiment.pod b/pod/perlexperiment.pod
index 3918080820..8c2c8f0ffb 100644
--- a/pod/perlexperiment.pod
+++ b/pod/perlexperiment.pod
@@ -92,18 +92,6 @@ C<experimental::re_strict>.
 
 See L<re/'strict' mode>
 
-=item String- and number-specific bitwise operators
-
-Introduced in Perl 5.22.0
-
-See also: L<perlop/Bitwise String Operators>
-
-Using this feature triggers warnings in the category
-C<experimental::bitwise>.
-
-The ticket for this feature is
-L<[perl #123707]|https://rt.perl.org/rt3/Ticket/Display.html?id=123707>.
-
 =item The <:win32> IO pseudolayer
 
 The ticket for this feature is
@@ -256,6 +244,12 @@ Introduced in Perl 5.18.0
 
 Accepted in Perl 5.26.0
 
+=item String- and number-specific bitwise operators
+
+Introduced in Perl 5.22.0
+
+Accepted in Perl 5.28.0
+
 =back
 
 =head2 Removed features
diff --git a/pod/perlop.pod b/pod/perlop.pod
index 023353c12c..ceeb97fc47 100644
--- a/pod/perlop.pod
+++ b/pod/perlop.pod
@@ -266,12 +266,13 @@ X<~> X<negation, binary>
 Starting in Perl 5.28, it is a fatal error to try to complement a string
 containing a character with an ordinal value above 255.
 
-If the experimental "bitwise" feature is enabled via S<C<use feature
-'bitwise'>>, then unary C<"~"> always treats its argument as a number, and an
+If the "bitwise" feature is enabled via S<C<use
+feature 'bitwise'>> or C<use v5.28>, then unary
+C<"~"> always treats its argument as a number, and an
 alternate form of the operator, C<"~.">, always treats its argument as a
 string.  So C<~0> and C<~"0"> will both give 2**32-1 on 32-bit platforms,
-whereas C<~.0> and C<~."0"> will both yield C<"\xff">.  This feature
-produces a warning unless you use S<C<no warnings 'experimental::bitwise'>>.
+whereas C<~.0> and C<~."0"> will both yield C<"\xff">.  Until Perl 5.28,
+this feature produced a warning in the C<"experimental::bitwise"> category.
 
 Unary C<"+"> has no effect whatsoever, even on strings.  It is useful
 syntactically for separating a function name from a parenthesized expression
@@ -872,10 +873,10 @@ the parentheses are essential in a test like
 
     print "Even\n" if ($x & 1) == 0;
 
-If the experimental "bitwise" feature is enabled via S<C<use feature
-'bitwise'>>, then this operator always treats its operand as numbers.  This
-feature produces a warning unless you also use C<S<no warnings
-'experimental::bitwise'>>.
+If the "bitwise" feature is enabled via S<C<use feature 'bitwise'>> or
+C<use v5.28>, then this operator always treats its operands as numbers.
+Before Perl 5.28 this feature produced a warning in the
+C<"experimental::bitwise"> category.
 
 =head2 Bitwise Or and Exclusive Or
 X<operator, bitwise, or> X<bitwise or> X<|> X<operator, bitwise, xor>
@@ -895,10 +896,10 @@ for example the parentheses are essential in a test like
 
     print "false\n" if (8 | 2) != 10;
 
-If the experimental "bitwise" feature is enabled via S<C<use feature
-'bitwise'>>, then this operator always treats its operand as numbers.  This
-feature produces a warning unless you also use S<C<no warnings
-'experimental::bitwise'>>.
+If the "bitwise" feature is enabled via S<C<use feature 'bitwise'>> or
+C<use v5.28>, then this operator always treats its operands as numbers.
+Before Perl 5.28. this feature produced a warning in the
+C<"experimental::bitwise"> category.
 
 =head2 C-style Logical And
 X<&&> X<logical and> X<operator, logical, and>
@@ -1233,7 +1234,7 @@ the number of elements produced by the expression on the 
right hand
 side of the assignment.
 
 The three dotted bitwise assignment operators (C<&.=> C<|.=> C<^.=>) are new in
-Perl 5.22 and experimental.  See L</Bitwise String Operators>.
+Perl 5.22.  See L</Bitwise String Operators>.
 
 =head2 Comma Operator
 X<comma> X<operator, comma> X<,>
@@ -3376,16 +3377,15 @@ operation you intend by using C<""> or C<0+>, as in the 
examples below.
     $baz = 0+$foo & 0+$bar;    # both ops explicitly numeric
     $biz = "$foo" ^ "$bar";    # both ops explicitly stringy
 
-This somewhat unpredictable behavior can be avoided with the experimental
-"bitwise" feature, new in Perl 5.22.  You can enable it via S<C<use feature
-'bitwise'>>.  By default, it will warn unless the C<"experimental::bitwise">
-warnings category has been disabled.  (S<C<use experimental 'bitwise'>> will
-enable the feature and disable the warning.)  Under this feature, the four
+This somewhat unpredictable behavior can be avoided with the "bitwise"
+feature, new in Perl 5.22.  You can enable it via S<C<use feature
+'bitwise'>> or C<use v5.28>.  Before Perl 5.28, it used to emit a warning
+in the C<"experimental::bitwise"> category.  Under this feature, the four
 standard bitwise operators (C<~ | & ^>) are always numeric.  Adding a dot
 after each operator (C<~. |. &. ^.>) forces it to treat its operands as
 strings:
 
-    use experimental "bitwise";
+    use feature "bitwise";
     $foo =  150  |  105;       # yields 255  (0x96 | 0x69 is 0xFF)
     $foo = '150' |  105;       # yields 255
     $foo =  150  | '105';      # yields 255
diff --git a/regen/feature.pl b/regen/feature.pl
index 3ce2a6d44b..ca7a9b3e88 100755
--- a/regen/feature.pl
+++ b/regen/feature.pl
@@ -63,7 +63,7 @@ my %feature_bundle = (
     "5.25"   =>        [qw(say state switch unicode_strings unicode_eval
                    evalbytes current_sub fc postderef_qq)],
     "5.27"   =>        [qw(say state switch unicode_strings unicode_eval
-                   evalbytes current_sub fc postderef_qq)],
+                   evalbytes current_sub fc postderef_qq bitwise)],
 );
 
 my @noops = qw( postderef lexical_subs );
@@ -626,13 +626,6 @@ This feature is available from Perl 5.22 onwards.
 
 =head2 The 'bitwise' feature
 
-B<WARNING>: This feature is still experimental and the implementation may
-change in future versions of Perl.  For this reason, Perl will
-warn when you use the feature, unless you have explicitly disabled the
-warning:
-
-    no warnings "experimental::bitwise";
-
 This makes the four standard bitwise operators (C<& | ^ ~>) treat their
 operands consistently as numbers, and introduces four new dotted operators
 (C<&. |. ^. ~.>) that treat their operands consistently as strings.  The
@@ -640,7 +633,10 @@ same applies to the assignment variants (C<&= |= ^= &.= 
|.= ^.=>).
 
 See L<perlop/Bitwise String Operators> for details.
 
-This feature is available from Perl 5.22 onwards.
+This feature is available from Perl 5.22 onwards.  Starting in Perl 5.28,
+C<use v5.28> will enable the feature.  Before 5.28, it was still
+experimental and would emit a warning in the "experimental::bitwise"
+category.
 
 =head2 The 'declared_refs' feature
 
diff --git a/t/lib/croak/op b/t/lib/croak/op
index 002eb26692..c11803e306 100644
--- a/t/lib/croak/op
+++ b/t/lib/croak/op
@@ -69,7 +69,6 @@ No such class field "c" in variable $f of type main at - line 
3.
 use feature 'bitwise';
 @a &= 1;
 EXPECT
-The bitwise feature is experimental at - line 2.
 Can't modify array dereference in numeric bitwise and (&) at - line 2, near 
"1;"
 Execution of - aborted due to compilation errors.
 ########
@@ -77,7 +76,6 @@ Execution of - aborted due to compilation errors.
 use feature 'bitwise';
 @a |= 1;
 EXPECT
-The bitwise feature is experimental at - line 2.
 Can't modify array dereference in numeric bitwise or (|) at - line 2, near "1;"
 Execution of - aborted due to compilation errors.
 ########
@@ -85,7 +83,6 @@ Execution of - aborted due to compilation errors.
 use feature 'bitwise';
 @a ^= 1;
 EXPECT
-The bitwise feature is experimental at - line 2.
 Can't modify array dereference in numeric bitwise xor (^) at - line 2, near 
"1;"
 Execution of - aborted due to compilation errors.
 ########
@@ -93,7 +90,6 @@ Execution of - aborted due to compilation errors.
 use feature 'bitwise';
 @a &.= 1;
 EXPECT
-The bitwise feature is experimental at - line 2.
 Can't modify array dereference in string bitwise and (&.) at - line 2, near 
"1;"
 Execution of - aborted due to compilation errors.
 ########
@@ -101,7 +97,6 @@ Execution of - aborted due to compilation errors.
 use feature 'bitwise';
 @a |.= 1;
 EXPECT
-The bitwise feature is experimental at - line 2.
 Can't modify array dereference in string bitwise or (|.) at - line 2, near "1;"
 Execution of - aborted due to compilation errors.
 ########
@@ -109,7 +104,6 @@ Execution of - aborted due to compilation errors.
 use feature 'bitwise';
 @a ^.= 1;
 EXPECT
-The bitwise feature is experimental at - line 2.
 Can't modify array dereference in string bitwise xor (^.) at - line 2, near 
"1;"
 Execution of - aborted due to compilation errors.
 ########
diff --git a/t/lib/warnings/op b/t/lib/warnings/op
index a6434ff6be..54e2e3de20 100644
--- a/t/lib/warnings/op
+++ b/t/lib/warnings/op
@@ -87,8 +87,6 @@
 
     Use of /g modifier is meaningless in split
 
-    The bitwise feature is experimental                        [Perl_ck_bitop]
-
     Possible precedence problem on bitwise %c operator [Perl_ck_bitop]
 
     Mandatory Warnings 
@@ -1485,34 +1483,6 @@ $_ |.= $_;
 $_ &.= $_;
 $_ ^.= $_;
 EXPECT
-The bitwise feature is experimental at - line 2.
-The bitwise feature is experimental at - line 3.
-The bitwise feature is experimental at - line 4.
-The bitwise feature is experimental at - line 5.
-The bitwise feature is experimental at - line 6.
-The bitwise feature is experimental at - line 7.
-The bitwise feature is experimental at - line 8.
-The bitwise feature is experimental at - line 9.
-The bitwise feature is experimental at - line 10.
-The bitwise feature is experimental at - line 11.
-The bitwise feature is experimental at - line 12.
-The bitwise feature is experimental at - line 13.
-The bitwise feature is experimental at - line 14.
-The bitwise feature is experimental at - line 15.
-The bitwise feature is experimental at - line 17.
-The bitwise feature is experimental at - line 18.
-The bitwise feature is experimental at - line 19.
-The bitwise feature is experimental at - line 20.
-The bitwise feature is experimental at - line 21.
-The bitwise feature is experimental at - line 22.
-The bitwise feature is experimental at - line 23.
-The bitwise feature is experimental at - line 24.
-The bitwise feature is experimental at - line 25.
-The bitwise feature is experimental at - line 26.
-The bitwise feature is experimental at - line 27.
-The bitwise feature is experimental at - line 28.
-The bitwise feature is experimental at - line 29.
-The bitwise feature is experimental at - line 30.
 ########
 # op.c
 use warnings 'precedence';
diff --git a/t/op/bop.t b/t/op/bop.t
index c1be5883c8..7b77500659 100644
--- a/t/op/bop.t
+++ b/t/op/bop.t
@@ -18,7 +18,7 @@ BEGIN {
 # If you find tests are failing, please try adding names to tests to track
 # down where the failure is, and supply your new names as a patch.
 # (Just-in-time test naming)
-plan tests => 477;
+plan tests => 491;
 
 # numerics
 ok ((0xdead & 0xbeef) == 0x9ead);
@@ -355,6 +355,38 @@ SKIP: {
  ok (($cusp >> 1) == ($cusp / 2) &&
     do { use integer; abs($cusp >> 1) } == ($cusp / 2));
 }
+# Repeat some of those, with 'use v5.27'
+{
+  use v5.27;
+
+  is "22" & "66", 2,    'numeric & with strings';
+  is "22" | "66", 86,   'numeric | with strings';
+  is "22" ^ "66", 84,   'numeric ^ with strings';
+  is ~"22" & 0xff, 233, 'numeric ~ with string';
+  is 22 &. 66, 22,     '&. with numbers';
+  is 22 |. 66, 66,     '|. with numbers';
+  is 22 ^. 66, "\4\4", '^. with numbers';
+  if ($::IS_EBCDIC) {
+    # ord('2') is 0xF2 on EBCDIC
+    is ~.22, "\x0d\x0d", '~. with number';
+  }
+  else {
+    # ord('2') is 0x32 on ASCII
+    is ~.22, "\xcd\xcd", '~. with number';
+  }
+  $_ = "22";
+  is $_ &= "66", 2,  'numeric &= with strings';
+  $_ = "22";
+  is $_ |= "66", 86, 'numeric |= with strings';
+  $_ = "22";
+  is $_ ^= "66", 84, 'numeric ^= with strings';
+  $_ = 22;
+  is $_ &.= 66, 22,     '&.= with numbers';
+  $_ = 22;
+  is $_ |.= 66, 66,     '|.= with numbers';
+  $_ = 22;
+  is $_ ^.= 66, "\4\4", '^.= with numbers';
+}
 
 # ref tests
 

-- 
Perl5 Master Repository

Reply via email to