Change 32910 by [EMAIL PROTECTED] on 2008/01/09 10:11:10 Remove the warning "v-string in require/use non portable"
Affected files ... ... //depot/perl/ext/B/B/Deparse.pm#191 edit ... //depot/perl/pod/perldiag.pod#492 edit ... //depot/perl/pod/perlfunc.pod#587 edit ... //depot/perl/pp_ctl.c#651 edit ... //depot/perl/t/lib/warnings/pp_ctl#7 edit Differences ... ==== //depot/perl/ext/B/B/Deparse.pm#191 (text) ==== Index: perl/ext/B/B/Deparse.pm --- perl/ext/B/B/Deparse.pm#190~32909~ 2008-01-09 01:55:33.000000000 -0800 +++ perl/ext/B/B/Deparse.pm 2008-01-09 02:11:10.000000000 -0800 @@ -21,7 +21,7 @@ PMf_KEEP PMf_GLOBAL PMf_CONTINUE PMf_EVAL PMf_ONCE PMf_MULTILINE PMf_SINGLELINE PMf_FOLD PMf_EXTENDED), ($] < 5.009 ? 'PMf_SKIPWHITE' : 'RXf_SKIPWHITE'); -$VERSION = 0.85; +$VERSION = 0.86; use strict; use vars qw/$AUTOLOAD/; use warnings (); @@ -1456,8 +1456,7 @@ my %ignored_hints = ( 'open<' => 1, 'open>' => 1, - 'v_string' => 1, - ); +); sub declare_hinthash { my ($from, $to, $indent) = @_; ==== //depot/perl/pod/perldiag.pod#492 (text) ==== Index: perl/pod/perldiag.pod --- perl/pod/perldiag.pod#491~32204~ 2007-10-30 05:42:28.000000000 -0700 +++ perl/pod/perldiag.pod 2008-01-09 02:11:10.000000000 -0800 @@ -4935,18 +4935,6 @@ (W misc) The version string contains invalid characters at the end, which are being ignored. -=item v-string in use/require is non-portable - -(W portable) The use of v-strings is non-portable to older, pre-5.6, Perls. -If you want your scripts to be backward portable, use the floating -point version number: for example, instead of C<use 5.6.1> say -C<use 5.006_001>. This of course won't make older Perls suddenly start -understanding newer features, but at least they will show a sensible -error message indicating the required minimum version. - -This warning is suppressed if the C<use 5.x.y> is preceded by a -C<use 5.006> (see C<use VERSION> in L<perlfunc/use>). - =item Warning: something's wrong (W) You passed warn() an empty string (the equivalent of C<warn "">) or ==== //depot/perl/pod/perlfunc.pod#587 (text) ==== Index: perl/pod/perlfunc.pod --- perl/pod/perlfunc.pod#586~32904~ 2008-01-08 14:33:31.000000000 -0800 +++ perl/pod/perlfunc.pod 2008-01-09 02:11:10.000000000 -0800 @@ -6873,22 +6873,16 @@ Specifying VERSION as a literal of the form v5.6.1 should generally be avoided, because it leads to misleading error messages under earlier -versions of Perl that do not support this syntax. The equivalent numeric -version should be used instead. - -Alternatively, you can use a numeric version C<use 5.006> followed by a -v-string version like C<use v5.10.1>, to avoid the unintuitive C<use -5.010_001>. (older perl versions fail gracefully at the first C<use>, -later perl versions understand the v-string syntax in the second). +versions of Perl (that is, prior to 5.6.0) that do not support this +syntax. The equivalent numeric version should be used instead. use v5.6.1; # compile time version check use 5.6.1; # ditto use 5.006_001; # ditto; preferred for backwards compatibility - use 5.006; use 5.6.1; # ditto, for compatibility and readability This is often useful if you need to check the current Perl version before -C<use>ing library modules that have changed in incompatible ways from -older versions of Perl. (We try not to do this more than we have to.) +C<use>ing library modules that won't work with older versions of Perl. +(We try not to do this more than we have to.) Also, if the specified perl version is greater than or equal to 5.9.5, C<use VERSION> will also load the C<feature> pragma and enable all ==== //depot/perl/pp_ctl.c#651 (text) ==== Index: perl/pp_ctl.c --- perl/pp_ctl.c#650~32862~ 2008-01-05 14:55:02.000000000 -0800 +++ perl/pp_ctl.c 2008-01-09 02:11:10.000000000 -0800 @@ -3084,14 +3084,6 @@ sv = POPs; if ( (SvNIOKp(sv) || SvVOK(sv)) && PL_op->op_type != OP_DOFILE) { - if ( SvVOK(sv) && ckWARN(WARN_PORTABLE) ) { /* require v5.6.1 */ - HV * hinthv = GvHV(PL_hintgv); - SV ** ptr = NULL; - if (hinthv) ptr = hv_fetchs(hinthv, "v_string", FALSE); - if ( !(ptr && *ptr && SvIOK(*ptr) && SvIV(*ptr)) ) - Perl_warner(aTHX_ packWARN(WARN_PORTABLE), - "v-string in use/require non-portable"); - } sv = new_version(sv); if (!sv_derived_from(PL_patchlevel, "version")) upg_version(PL_patchlevel, TRUE); @@ -3143,26 +3135,14 @@ /* We do this only with use, not require. */ if (PL_compcv && - /* If we request a version >= 5.6.0, then v-string are OK - so set $^H{v_string} to suppress the v-string warning */ - vcmp(sv, sv_2mortal(upg_version(newSVnv(5.006), FALSE))) >= 0) { - HV * hinthv = GvHV(PL_hintgv); - if( hinthv ) { - SV *hint = newSViv(1); - (void)hv_stores(hinthv, "v_string", hint); - /* This will call through to Perl_magic_sethint() which in turn - sets PL_hints correctly. */ - SvSETMAGIC(hint); - } /* If we request a version >= 5.9.5, load feature.pm with the * feature bundle that corresponds to the required version. */ - if (vcmp(sv, sv_2mortal(upg_version(newSVnv(5.009005), FALSE))) >= 0) { + vcmp(sv, sv_2mortal(upg_version(newSVnv(5.009005), FALSE))) >= 0) { SV *const importsv = vnormal(sv); *SvPVX_mutable(importsv) = ':'; ENTER; Perl_load_module(aTHX_ 0, newSVpvs("feature"), NULL, importsv, NULL); LEAVE; - } } RETPUSHYES; ==== //depot/perl/t/lib/warnings/pp_ctl#7 (text) ==== Index: perl/t/lib/warnings/pp_ctl --- perl/t/lib/warnings/pp_ctl#6~32031~ 2007-10-05 04:45:25.000000000 -0700 +++ perl/t/lib/warnings/pp_ctl 2008-01-09 02:11:10.000000000 -0800 @@ -222,18 +222,6 @@ Use of uninitialized value $foo in print at (eval 1) line 1. ######## # pp_ctl.c -use warnings 'portable'; -eval 'use 5.6.1'; -EXPECT -v-string in use/require non-portable at (eval 1) line 2. -######## -# pp_ctl.c -use warnings 'portable'; -eval 'use v5.6.1'; -EXPECT -v-string in use/require non-portable at (eval 1) line 2. -######## -# pp_ctl.c use warnings; { no warnings; @@ -245,15 +233,3 @@ use warnings; eval 'use 5.006; use 5.10.0'; EXPECT -######## -# pp_ctl.c -use warnings; -eval '{use 5.006;} use 5.10.0'; -EXPECT -v-string in use/require non-portable at (eval 1) line 2. -######## -# pp_ctl.c -use warnings; -eval 'use vars; use 5.10.0'; -EXPECT -v-string in use/require non-portable at (eval 1) line 2. End of Patch.