This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Fatalize \N{}
authorKarl Williamson <khw@cpan.org>
Thu, 2 Mar 2017 18:31:36 +0000 (11:31 -0700)
committerKarl Williamson <khw@cpan.org>
Thu, 1 Jun 2017 14:30:25 +0000 (08:30 -0600)
This has been deprecated, scheduled to be fatal now.

pod/perldelta.pod
pod/perldeprecation.pod
pod/perldiag.pod
t/lib/warnings/regcomp
t/re/pat_advanced.t
toke.c

index 584474d..1a83f22 100644 (file)
@@ -55,6 +55,10 @@ allowed.  This has been deprecated since perl 5.000.
 These have been no-ops and deprecated since perl 5.12 and 5.10,
 respectively.
 
+=head2 C<\N{}> with nothing between the braces is now illegal.
+
+This has been deprecated since Perl 5.24.
+
 =head1 Deprecations
 
 XXX Any deprecated features, syntax, modules etc. should be listed here.
index c203655..b13483e 100644 (file)
@@ -323,17 +323,14 @@ It's allowed to use a list of variables in a format, without
 separating them with commas. This usage has been deprecated
 for a long time, and it will be a fatal error in Perl 5.28.
 
-
-
 =head3 Use of C<\N{}>
 
 Use of C<\N{}> with nothing between the braces was deprecated in
-Perl 5.24, and will throw a fatal error in Perl 5.28.
+Perl 5.24, and throws a fatal error as of Perl 5.28.
 
 Since such a construct is equivalent to using an empty string,
 you are recommended to remove such C<\N{}> constructs.
 
-
 =head3 Using the same symbol to open a filehandle and a dirhandle
 
 It used to be legal to use C<open()> to associate both a
index 5652b10..8768333 100644 (file)
@@ -6483,12 +6483,6 @@ exactly, regardless of whether C<:loose> is used or not.)  This error may
 also happen if the C<\N{}> is not in the scope of the corresponding
 C<S<use charnames>>.
 
-=item Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28
-
-(D deprecated) You had a C<\N{}> with nothing between the braces.  This
-usage was deprecated in Perl 5.24, and will be made a syntax error in 
-in Perl 5.28.
-
 =item Unknown error
 
 (P) Perl was about to print an error message in C<$@>, but the C<$@> variable
index 2b084c5..129b24a 100644 (file)
@@ -83,38 +83,15 @@ EXPECT
 ]]]]][\ ==> Unmatched [ in regex; marked by <-- HERE in m/]]]]][\ <-- HERE / at - line 2.
 ########
 # NAME [perl #123417]
-use warnings 'regexp';
-qr/[\N{}]/;
-qr/\N{}/;
-no warnings 'regexp';
-qr/[\N{}]/;
-qr/\N{}/;
-no warnings 'deprecated';
-qr/[\N{}]/;
-qr/\N{}/;
-EXPECT
-Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28 at - line 2.
-Ignoring zero length \N{} in character class in regex; marked by <-- HERE in m/[\N{} <-- HERE ]/ at - line 2.
-Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28 at - line 3.
-Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28 at - line 5.
-Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28 at - line 6.
-########
-# NAME [perl #123417]
 # OPTION fatal
-use warnings 'regexp';
-no warnings 'experimental::re_strict';
-use re 'strict';
 qr/[\N{}]/;
 EXPECT
-Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28 at - line 5.
-Zero length \N{} in regex; marked by <-- HERE in m/[\N{} <-- HERE ]/ at - line 5.
+Unknown charname '' at - line 2, within pattern
+Execution of - aborted due to compilation errors.
 ########
 # NAME [perl #123417]
 # OPTION fatal
-use warnings 'regexp';
-no warnings 'experimental::re_strict';
-use re 'strict';
 qr/\N{}/;
 EXPECT
-Unknown charname '' is deprecated. Its use will be fatal in Perl 5.28 at - line 5.
-Zero length \N{} in regex; marked by <-- HERE in m/\N{} <-- HERE / at - line 5.
+Unknown charname '' at - line 2, within pattern
+Execution of - aborted due to compilation errors.
index 79bed22..7f0859c 100644 (file)
@@ -2280,13 +2280,6 @@ EOF
         "afoot" =~ eval "qr/$qr/";
         is "$1" || $@, "foo", 'multichar \N{...} stringified and retoked';
     }
-    {   # empty \N{...} tripping roundly
-        no warnings 'deprecated';
-        BEGIN { $^H{charnames} = sub { "" } }
-        my $qr = qr$(a\N{foo}t)$;
-        "at" =~ eval "qr/$qr/";
-        is "$1" || $@, "at", 'empty \N{...} stringified and retoked';
-    }
 
     is (scalar split(/\b{sb}/, "Don't think twice.  It's all right."),
         2, '\b{wb} splits sentences correctly');
diff --git a/toke.c b/toke.c
index ce6fe22..e9d3979 100644 (file)
--- a/toke.c
+++ b/toke.c
@@ -2588,8 +2588,9 @@ S_get_and_check_backslash_N_name(pTHX_ const char* s, const char* const e)
     PERL_ARGS_ASSERT_GET_AND_CHECK_BACKSLASH_N_NAME;
 
     if (!SvCUR(res)) {
-        deprecate_fatal_in("5.28", "Unknown charname '' is deprecated");
-        return res;
+        /* diag_listed_as: Unknown charname '%s' */
+        yyerror("Unknown charname ''");
+        return NULL;
     }
 
     res = new_constant( NULL, 0, "charnames", res, NULL, backslash_ptr,