Change 31812 by [EMAIL PROTECTED] on 2007/09/07 09:25:24

        Remove the 'err' keyword

Affected files ...

... //depot/perl/MANIFEST#1618 edit
... //depot/perl/embed.h#705 edit
... //depot/perl/keywords.h#37 edit
... //depot/perl/keywords.pl#33 edit
... //depot/perl/lib/feature.pm#22 edit
... //depot/perl/pod/perlop.pod#166 edit
... //depot/perl/pp.c#599 edit
... //depot/perl/t/lib/feature/err#2 delete
... //depot/perl/t/lib/warnings/op#33 edit
... //depot/perl/t/op/cproto.t#13 edit
... //depot/perl/t/op/dor.t#8 edit
... //depot/perl/t/run/switches.t#22 edit
... //depot/perl/toke.c#791 edit

Differences ...

==== //depot/perl/MANIFEST#1618 (text) ====
Index: perl/MANIFEST
--- perl/MANIFEST#1617~31792~   2007-09-05 03:42:15.000000000 -0700
+++ perl/MANIFEST       2007-09-07 02:25:24.000000000 -0700
@@ -3460,7 +3460,6 @@
 t/lib/dprof/test8_v            Perl code profiler tests
 t/lib/dprof/V.pm               Perl code profiler tests
 t/lib/Dummy.pm                 Module for testing base.pm
-t/lib/feature/err              Tests for enabling/disabling err feature
 t/lib/feature/implicit         Tests for implicit loading of feature.pm
 t/lib/feature/nonesuch         Tests for enabling/disabling nonexistent feature
 t/lib/feature/say              Tests for enabling/disabling say feature

==== //depot/perl/embed.h#705 (text+w) ====
Index: perl/embed.h
--- perl/embed.h#704~31617~     2007-07-16 08:42:56.000000000 -0700
+++ perl/embed.h        2007-09-07 02:25:24.000000000 -0700
@@ -2175,6 +2175,7 @@
 #define pp_not                 Perl_pp_not
 #define pp_null                        Perl_pp_null
 #define pp_oct                 Perl_pp_oct
+#define pp_once                        Perl_pp_once
 #define pp_open                        Perl_pp_open
 #define pp_open_dir            Perl_pp_open_dir
 #define pp_or                  Perl_pp_or
@@ -4470,6 +4471,7 @@
 #define pp_not()               Perl_pp_not(aTHX)
 #define pp_null()              Perl_pp_null(aTHX)
 #define pp_oct()               Perl_pp_oct(aTHX)
+#define pp_once()              Perl_pp_once(aTHX)
 #define pp_open()              Perl_pp_open(aTHX)
 #define pp_open_dir()          Perl_pp_open_dir(aTHX)
 #define pp_or()                        Perl_pp_or(aTHX)

==== //depot/perl/keywords.h#37 (text+w) ====
Index: perl/keywords.h
--- perl/keywords.h#36~29747~   2007-01-10 08:00:17.000000000 -0800
+++ perl/keywords.h     2007-09-07 02:25:24.000000000 -0700
@@ -69,202 +69,201 @@
 #define KEY_endservent         54
 #define KEY_eof                        55
 #define KEY_eq                 56
-#define KEY_err                        57
-#define KEY_eval               58
-#define KEY_exec               59
-#define KEY_exists             60
-#define KEY_exit               61
-#define KEY_exp                        62
-#define KEY_fcntl              63
-#define KEY_fileno             64
-#define KEY_flock              65
-#define KEY_for                        66
-#define KEY_foreach            67
-#define KEY_fork               68
-#define KEY_format             69
-#define KEY_formline           70
-#define KEY_ge                 71
-#define KEY_getc               72
-#define KEY_getgrent           73
-#define KEY_getgrgid           74
-#define KEY_getgrnam           75
-#define KEY_gethostbyaddr      76
-#define KEY_gethostbyname      77
-#define KEY_gethostent         78
-#define KEY_getlogin           79
-#define KEY_getnetbyaddr       80
-#define KEY_getnetbyname       81
-#define KEY_getnetent          82
-#define KEY_getpeername                83
-#define KEY_getpgrp            84
-#define KEY_getppid            85
-#define KEY_getpriority                86
-#define KEY_getprotobyname     87
-#define KEY_getprotobynumber   88
-#define KEY_getprotoent                89
-#define KEY_getpwent           90
-#define KEY_getpwnam           91
-#define KEY_getpwuid           92
-#define KEY_getservbyname      93
-#define KEY_getservbyport      94
-#define KEY_getservent         95
-#define KEY_getsockname                96
-#define KEY_getsockopt         97
-#define KEY_given              98
-#define KEY_glob               99
-#define KEY_gmtime             100
-#define KEY_goto               101
-#define KEY_grep               102
-#define KEY_gt                 103
-#define KEY_hex                        104
-#define KEY_if                 105
-#define KEY_index              106
-#define KEY_int                        107
-#define KEY_ioctl              108
-#define KEY_join               109
-#define KEY_keys               110
-#define KEY_kill               111
-#define KEY_last               112
-#define KEY_lc                 113
-#define KEY_lcfirst            114
-#define KEY_le                 115
-#define KEY_length             116
-#define KEY_link               117
-#define KEY_listen             118
-#define KEY_local              119
-#define KEY_localtime          120
-#define KEY_lock               121
-#define KEY_log                        122
-#define KEY_lstat              123
-#define KEY_lt                 124
-#define KEY_m                  125
-#define KEY_map                        126
-#define KEY_mkdir              127
-#define KEY_msgctl             128
-#define KEY_msgget             129
-#define KEY_msgrcv             130
-#define KEY_msgsnd             131
-#define KEY_my                 132
-#define KEY_ne                 133
-#define KEY_next               134
-#define KEY_no                 135
-#define KEY_not                        136
-#define KEY_oct                        137
-#define KEY_open               138
-#define KEY_opendir            139
-#define KEY_or                 140
-#define KEY_ord                        141
-#define KEY_our                        142
-#define KEY_pack               143
-#define KEY_package            144
-#define KEY_pipe               145
-#define KEY_pop                        146
-#define KEY_pos                        147
-#define KEY_print              148
-#define KEY_printf             149
-#define KEY_prototype          150
-#define KEY_push               151
-#define KEY_q                  152
-#define KEY_qq                 153
-#define KEY_qr                 154
-#define KEY_quotemeta          155
-#define KEY_qw                 156
-#define KEY_qx                 157
-#define KEY_rand               158
-#define KEY_read               159
-#define KEY_readdir            160
-#define KEY_readline           161
-#define KEY_readlink           162
-#define KEY_readpipe           163
-#define KEY_recv               164
-#define KEY_redo               165
-#define KEY_ref                        166
-#define KEY_rename             167
-#define KEY_require            168
-#define KEY_reset              169
-#define KEY_return             170
-#define KEY_reverse            171
-#define KEY_rewinddir          172
-#define KEY_rindex             173
-#define KEY_rmdir              174
-#define KEY_s                  175
-#define KEY_say                        176
-#define KEY_scalar             177
-#define KEY_seek               178
-#define KEY_seekdir            179
-#define KEY_select             180
-#define KEY_semctl             181
-#define KEY_semget             182
-#define KEY_semop              183
-#define KEY_send               184
-#define KEY_setgrent           185
-#define KEY_sethostent         186
-#define KEY_setnetent          187
-#define KEY_setpgrp            188
-#define KEY_setpriority                189
-#define KEY_setprotoent                190
-#define KEY_setpwent           191
-#define KEY_setservent         192
-#define KEY_setsockopt         193
-#define KEY_shift              194
-#define KEY_shmctl             195
-#define KEY_shmget             196
-#define KEY_shmread            197
-#define KEY_shmwrite           198
-#define KEY_shutdown           199
-#define KEY_sin                        200
-#define KEY_sleep              201
-#define KEY_socket             202
-#define KEY_socketpair         203
-#define KEY_sort               204
-#define KEY_splice             205
-#define KEY_split              206
-#define KEY_sprintf            207
-#define KEY_sqrt               208
-#define KEY_srand              209
-#define KEY_stat               210
-#define KEY_state              211
-#define KEY_study              212
-#define KEY_sub                        213
-#define KEY_substr             214
-#define KEY_symlink            215
-#define KEY_syscall            216
-#define KEY_sysopen            217
-#define KEY_sysread            218
-#define KEY_sysseek            219
-#define KEY_system             220
-#define KEY_syswrite           221
-#define KEY_tell               222
-#define KEY_telldir            223
-#define KEY_tie                        224
-#define KEY_tied               225
-#define KEY_time               226
-#define KEY_times              227
-#define KEY_tr                 228
-#define KEY_truncate           229
-#define KEY_uc                 230
-#define KEY_ucfirst            231
-#define KEY_umask              232
-#define KEY_undef              233
-#define KEY_unless             234
-#define KEY_unlink             235
-#define KEY_unpack             236
-#define KEY_unshift            237
-#define KEY_untie              238
-#define KEY_until              239
-#define KEY_use                        240
-#define KEY_utime              241
-#define KEY_values             242
-#define KEY_vec                        243
-#define KEY_wait               244
-#define KEY_waitpid            245
-#define KEY_wantarray          246
-#define KEY_warn               247
-#define KEY_when               248
-#define KEY_while              249
-#define KEY_write              250
-#define KEY_x                  251
-#define KEY_xor                        252
-#define KEY_y                  253
+#define KEY_eval               57
+#define KEY_exec               58
+#define KEY_exists             59
+#define KEY_exit               60
+#define KEY_exp                        61
+#define KEY_fcntl              62
+#define KEY_fileno             63
+#define KEY_flock              64
+#define KEY_for                        65
+#define KEY_foreach            66
+#define KEY_fork               67
+#define KEY_format             68
+#define KEY_formline           69
+#define KEY_ge                 70
+#define KEY_getc               71
+#define KEY_getgrent           72
+#define KEY_getgrgid           73
+#define KEY_getgrnam           74
+#define KEY_gethostbyaddr      75
+#define KEY_gethostbyname      76
+#define KEY_gethostent         77
+#define KEY_getlogin           78
+#define KEY_getnetbyaddr       79
+#define KEY_getnetbyname       80
+#define KEY_getnetent          81
+#define KEY_getpeername                82
+#define KEY_getpgrp            83
+#define KEY_getppid            84
+#define KEY_getpriority                85
+#define KEY_getprotobyname     86
+#define KEY_getprotobynumber   87
+#define KEY_getprotoent                88
+#define KEY_getpwent           89
+#define KEY_getpwnam           90
+#define KEY_getpwuid           91
+#define KEY_getservbyname      92
+#define KEY_getservbyport      93
+#define KEY_getservent         94
+#define KEY_getsockname                95
+#define KEY_getsockopt         96
+#define KEY_given              97
+#define KEY_glob               98
+#define KEY_gmtime             99
+#define KEY_goto               100
+#define KEY_grep               101
+#define KEY_gt                 102
+#define KEY_hex                        103
+#define KEY_if                 104
+#define KEY_index              105
+#define KEY_int                        106
+#define KEY_ioctl              107
+#define KEY_join               108
+#define KEY_keys               109
+#define KEY_kill               110
+#define KEY_last               111
+#define KEY_lc                 112
+#define KEY_lcfirst            113
+#define KEY_le                 114
+#define KEY_length             115
+#define KEY_link               116
+#define KEY_listen             117
+#define KEY_local              118
+#define KEY_localtime          119
+#define KEY_lock               120
+#define KEY_log                        121
+#define KEY_lstat              122
+#define KEY_lt                 123
+#define KEY_m                  124
+#define KEY_map                        125
+#define KEY_mkdir              126
+#define KEY_msgctl             127
+#define KEY_msgget             128
+#define KEY_msgrcv             129
+#define KEY_msgsnd             130
+#define KEY_my                 131
+#define KEY_ne                 132
+#define KEY_next               133
+#define KEY_no                 134
+#define KEY_not                        135
+#define KEY_oct                        136
+#define KEY_open               137
+#define KEY_opendir            138
+#define KEY_or                 139
+#define KEY_ord                        140
+#define KEY_our                        141
+#define KEY_pack               142
+#define KEY_package            143
+#define KEY_pipe               144
+#define KEY_pop                        145
+#define KEY_pos                        146
+#define KEY_print              147
+#define KEY_printf             148
+#define KEY_prototype          149
+#define KEY_push               150
+#define KEY_q                  151
+#define KEY_qq                 152
+#define KEY_qr                 153
+#define KEY_quotemeta          154
+#define KEY_qw                 155
+#define KEY_qx                 156
+#define KEY_rand               157
+#define KEY_read               158
+#define KEY_readdir            159
+#define KEY_readline           160
+#define KEY_readlink           161
+#define KEY_readpipe           162
+#define KEY_recv               163
+#define KEY_redo               164
+#define KEY_ref                        165
+#define KEY_rename             166
+#define KEY_require            167
+#define KEY_reset              168
+#define KEY_return             169
+#define KEY_reverse            170
+#define KEY_rewinddir          171
+#define KEY_rindex             172
+#define KEY_rmdir              173
+#define KEY_s                  174
+#define KEY_say                        175
+#define KEY_scalar             176
+#define KEY_seek               177
+#define KEY_seekdir            178
+#define KEY_select             179
+#define KEY_semctl             180
+#define KEY_semget             181
+#define KEY_semop              182
+#define KEY_send               183
+#define KEY_setgrent           184
+#define KEY_sethostent         185
+#define KEY_setnetent          186
+#define KEY_setpgrp            187
+#define KEY_setpriority                188
+#define KEY_setprotoent                189
+#define KEY_setpwent           190
+#define KEY_setservent         191
+#define KEY_setsockopt         192
+#define KEY_shift              193
+#define KEY_shmctl             194
+#define KEY_shmget             195
+#define KEY_shmread            196
+#define KEY_shmwrite           197
+#define KEY_shutdown           198
+#define KEY_sin                        199
+#define KEY_sleep              200
+#define KEY_socket             201
+#define KEY_socketpair         202
+#define KEY_sort               203
+#define KEY_splice             204
+#define KEY_split              205
+#define KEY_sprintf            206
+#define KEY_sqrt               207
+#define KEY_srand              208
+#define KEY_stat               209
+#define KEY_state              210
+#define KEY_study              211
+#define KEY_sub                        212
+#define KEY_substr             213
+#define KEY_symlink            214
+#define KEY_syscall            215
+#define KEY_sysopen            216
+#define KEY_sysread            217
+#define KEY_sysseek            218
+#define KEY_system             219
+#define KEY_syswrite           220
+#define KEY_tell               221
+#define KEY_telldir            222
+#define KEY_tie                        223
+#define KEY_tied               224
+#define KEY_time               225
+#define KEY_times              226
+#define KEY_tr                 227
+#define KEY_truncate           228
+#define KEY_uc                 229
+#define KEY_ucfirst            230
+#define KEY_umask              231
+#define KEY_undef              232
+#define KEY_unless             233
+#define KEY_unlink             234
+#define KEY_unpack             235
+#define KEY_unshift            236
+#define KEY_untie              237
+#define KEY_until              238
+#define KEY_use                        239
+#define KEY_utime              240
+#define KEY_values             241
+#define KEY_vec                        242
+#define KEY_wait               243
+#define KEY_waitpid            244
+#define KEY_wantarray          245
+#define KEY_warn               246
+#define KEY_when               247
+#define KEY_while              248
+#define KEY_write              249
+#define KEY_x                  250
+#define KEY_xor                        251
+#define KEY_y                  252
 
 /* ex: set ro: */

==== //depot/perl/keywords.pl#33 (xtext) ====
Index: perl/keywords.pl
--- perl/keywords.pl#32~29739~  2007-01-09 13:37:31.000000000 -0800
+++ perl/keywords.pl    2007-09-07 02:25:24.000000000 -0700
@@ -105,7 +105,6 @@
 endservent
 eof
 eq
-err
 eval
 exec
 exists

==== //depot/perl/lib/feature.pm#22 (text) ====
Index: perl/lib/feature.pm
--- perl/lib/feature.pm#21~31811~       2007-09-07 01:55:19.000000000 -0700
+++ perl/lib/feature.pm 2007-09-07 02:25:24.000000000 -0700
@@ -6,12 +6,11 @@
 my %feature = (
     switch => 'feature_switch',
     say    => "feature_say",
-    err    => "feature_err",
     state  => "feature_state",
 );
 
 my %feature_bundle = (
-    "5.10.0" => [qw(switch say err state)],
+    "5.10.0" => [qw(switch say state)],
 );
 
 # latest version here
@@ -88,14 +87,6 @@
 
 See L<perlfunc/say> for details.
 
-=head2 the 'err' feature
-
-C<use feature 'err'> tells the compiler to enable the C<err>
-operator.
-
-C<err> is a low-precedence variant of the C<//> operator:
-see C<perlop> for details.
-
 =head2 the 'state' feature
 
 C<use feature 'state'> tells the compiler to enable C<state>
@@ -109,7 +100,7 @@
 a I<feature bundle>. The name of a feature bundle is prefixed with
 a colon, to distinguish it from an actual feature. At present, the
 only feature bundles are C<use feature ":5.10"> and C<use feature ":5.10.0">,
-which both are equivalent to C<use feature qw(switch say err state)>.
+which both are equivalent to C<use feature qw(switch say state)>.
 
 In the forthcoming 5.10.X perl releases, C<use feature ":5.10"> will be
 equivalent to the latest C<use feature ":5.10.X">.

==== //depot/perl/pod/perlop.pod#166 (text) ====
Index: perl/pod/perlop.pod
--- perl/pod/perlop.pod#165~31683~      2007-08-07 02:41:31.000000000 -0700
+++ perl/pod/perlop.pod 2007-09-07 02:25:24.000000000 -0700
@@ -53,7 +53,7 @@
     nonassoc   list operators (rightward)
     right      not
     left       and
-    left       or xor err
+    left       or xor
 
 In the following sections, these operators are covered in precedence order.
 
@@ -522,9 +522,9 @@
     @a = scalar(@b) || @c;     # really meant this
     @a = @b ? @b : @c;         # this works fine, though
 
-As more readable alternatives to C<&&>, C<//> and C<||> when used for
-control flow, Perl provides C<and>, C<err> and C<or> operators (see below).
-The short-circuit behavior is identical.  The precedence of "and", "err"
+As more readable alternatives to C<&&> and C<||> when used for
+control flow, Perl provides the C<and> and C<or> operators (see below).
+The short-circuit behavior is identical.  The precedence of "and"
 and "or" is much lower, however, so that you can safely use them after a
 list operator without the need for parentheses:
 
@@ -838,9 +838,9 @@
 expression is evaluated only if the left expression is true.
 
 =head2 Logical or, Defined or, and Exclusive Or
-X<operator, logical, or> X<operator, logical, xor> X<operator, logical, err>
+X<operator, logical, or> X<operator, logical, xor>
 X<operator, logical, defined or> X<operator, logical, exclusive or>
-X<or> X<xor> X<err>
+X<or> X<xor>
 
 Binary "or" returns the logical disjunction of the two surrounding
 expressions.  It's equivalent to || except for the very low precedence.
@@ -865,13 +865,6 @@
 
 Then again, you could always use parentheses.
 
-Binary "err" is equivalent to C<//>--it's just like binary "or", except it
-tests its left argument's definedness instead of its truth.  There are two
-ways to remember "err":  either because many functions return C<undef> on
-an B<err>or, or as a sort of correction:  C<$a = ($b err 'default')>. This
-keyword is only available when the 'err' feature is enabled: see
-L<feature> for more information.
-
 Binary "xor" returns the exclusive-OR of the two surrounding expressions.
 It cannot short circuit, of course.
 

==== //depot/perl/pp.c#599 (text) ====
Index: perl/pp.c
--- perl/pp.c#598~31798~        2007-09-06 02:18:41.000000000 -0700
+++ perl/pp.c   2007-09-07 02:25:24.000000000 -0700
@@ -416,7 +416,7 @@
                char str[ MAX_ARGS_OP * 2 + 2 ]; /* One ';', one '\0' */
 
                if (code == -KEY_chop || code == -KEY_chomp
-                       || code == -KEY_exec || code == -KEY_system || code == 
-KEY_err)
+                       || code == -KEY_exec || code == -KEY_system)
                    goto set;
                if (code == -KEY_mkdir) {
                    ret = sv_2mortal(newSVpvs("_;$"));

==== //depot/perl/t/lib/warnings/op#33 (text) ====
Index: perl/t/lib/warnings/op
--- perl/t/lib/warnings/op#32~31049~    2007-04-24 03:31:28.000000000 -0700
+++ perl/t/lib/warnings/op      2007-09-07 02:25:24.000000000 -0700
@@ -680,15 +680,10 @@
 ########
 # op.c
 use warnings 'misc';
-use feature 'err';
 open FH, "<abc";
-$_ = <FH> err $_ = 1;
 ($_ = <FH>) // ($_ = 1);
 opendir DH, ".";
-$_ = readdir DH err $_ = 1;
-$_ = <*> err $_ = 1;
 %a = (1,2,3,4) ;
-$_ = each %a err $_ = 1;
 EXPECT
 ########
 # op.c

==== //depot/perl/t/op/cproto.t#13 (text) ====
Index: perl/t/op/cproto.t
--- perl/t/op/cproto.t#12~30749~        2007-03-24 09:58:28.000000000 -0700
+++ perl/t/op/cproto.t  2007-09-07 02:25:24.000000000 -0700
@@ -7,7 +7,7 @@
 }
 
 BEGIN { require './test.pl'; }
-plan tests => 238;
+plan tests => 237;
 
 while (<DATA>) {
     chomp;
@@ -68,7 +68,6 @@
 endservent ()
 eof (;*)
 eq ($$)
-err ()
 eval undef
 exec undef
 exists undef

==== //depot/perl/t/op/dor.t#8 (text) ====
Index: perl/t/op/dor.t
--- perl/t/op/dor.t#7~26432~    2005-12-21 08:16:19.000000000 -0800
+++ perl/t/op/dor.t     2007-09-07 02:25:24.000000000 -0700
@@ -8,10 +8,9 @@
 }
 
 package main;
-use feature "err";
 require './test.pl';
 
-plan( tests => 35 );
+plan( tests => 31 );
 
 my($x);
 
@@ -26,17 +25,6 @@
 
 like([] // 0, qr/^ARRAY/,      '       // : left-hand operand a referece');
 
-$x=1;
-is(($x err 0), 1,      '       err: left-hand operand defined');
-
-$x = undef;
-is(($x err 1), 1,      '       err: left-hand operand undef');
-
-$x='';
-is(($x err 0), '',     '       err: left-hand operand defined but empty');
-
-like(([] err 0), qr/^ARRAY/,   '       err: left-hand operand a referece');
-
 $x=undef;
 $x //= 1;
 is($x, 1,              '       //=: left-hand operand undefined');

==== //depot/perl/t/run/switches.t#22 (text) ====
Index: perl/t/run/switches.t
--- perl/t/run/switches.t#21~31754~     2007-08-25 15:04:06.000000000 -0700
+++ perl/t/run/switches.t       2007-09-07 02:25:24.000000000 -0700
@@ -11,7 +11,7 @@
 
 BEGIN { require "./test.pl"; }
 
-plan(tests => 62);
+plan(tests => 61);
 
 use Config;
 
@@ -310,11 +310,6 @@
 
 
 $r = runperl(
-    switches   => [ '-E', '"undef err say q(Hello, world!)"']
-);
-is( $r, "Hello, world!\n", "-E err" );
-
-$r = runperl(
     switches   => [ '-E', '"undef ~~ undef and say q(Hello, world!)"']
 );
 is( $r, "Hello, world!\n", "-E ~~" );

==== //depot/perl/toke.c#791 (text) ====
Index: perl/toke.c
--- perl/toke.c#790~31700~      2007-08-10 06:37:42.000000000 -0700
+++ perl/toke.c 2007-09-07 02:25:24.000000000 -0700
@@ -4235,7 +4235,6 @@
                    switch (tmp) {
                    case KEY_or:
                    case KEY_and:
-                   case KEY_err:
                    case KEY_for:
                    case KEY_unless:
                    case KEY_if:
@@ -5922,9 +5921,6 @@
        case KEY_eof:
            UNI(OP_EOF);
 
-       case KEY_err:
-           OPERATOR(DOROP);
-
        case KEY_exp:
            UNI(OP_EXP);
 
@@ -7328,14 +7324,6 @@
 
               goto unknown;
 
-            case 'r':
-              if (name[2] == 'r')
-              {                                   /* err        */
-                return (all_keywords || FEATURE_IS_ENABLED("err") ? -KEY_err : 
0);
-              }
-
-              goto unknown;
-
             case 'x':
               if (name[2] == 'p')
               {                                   /* exp        */
End of Patch.

Reply via email to