diff options
author | Robin Houston <robin@cpan.org> | 2001-05-08 20:38:00 +0100 |
---|---|---|
committer | Jarkko Hietaniemi <jhi@iki.fi> | 2001-05-08 22:41:49 +0000 |
commit | a1063b2d347f61fd47f71876da72ed835b315f8a (patch) | |
tree | 5acfac5f57302e9b42647499cf4ec310f57e8419 | |
parent | 41f3e7ef1e9972c4d0bb1ddef78e045c6a2b4d74 (diff) | |
download | perl-a1063b2d347f61fd47f71876da72ed835b315f8a.tar.gz |
[PATCH op.c] Deprecate %x->{'foo'}, @y->[23] etc
Date: Tue, 8 May 2001 19:38:00 +0100
Message-ID: <20010508193800.A4389@penderel>
Subject: Re: [PATCH op.c] Deprecate %x->{'foo'}, @y->[23] etc
From: Robin Houston <robin@kitsite.com>
Date: Tue, 8 May 2001 20:03:57 +0100
Message-ID: <20010508200357.A4614@penderel>
Subject: Re: [PATCH op.c] Deprecate %x->{'foo'}, @y->[23] etc
From: Robin Houston <robin@kitsite.com>
Date: Wed, 9 May 2001 00:12:05 +0100
Message-ID: <20010509001205.A18521@puffinry.freeserve.co.uk>
p4raw-id: //depot/perl@10043
-rw-r--r-- | op.c | 10 | ||||
-rw-r--r-- | pod/perldiag.pod | 15 | ||||
-rwxr-xr-x | t/pragma/overload.t | 4 | ||||
-rw-r--r-- | t/pragma/warn/op | 30 |
4 files changed, 56 insertions, 3 deletions
@@ -5210,6 +5210,11 @@ Perl_newAVREF(pTHX_ OP *o) o->op_ppaddr = PL_ppaddr[OP_PADAV]; return o; } + else if ((o->op_type == OP_RV2AV || o->op_type == OP_PADAV) + && ckWARN(WARN_DEPRECATED)) { + Perl_warner(aTHX_ WARN_DEPRECATED, + "Using an array as a reference is deprecated"); + } return newUNOP(OP_RV2AV, 0, scalar(o)); } @@ -5229,6 +5234,11 @@ Perl_newHVREF(pTHX_ OP *o) o->op_ppaddr = PL_ppaddr[OP_PADHV]; return o; } + else if ((o->op_type == OP_RV2HV || o->op_type == OP_PADHV) + && ckWARN(WARN_DEPRECATED)) { + Perl_warner(aTHX_ WARN_DEPRECATED, + "Using a hash as a reference is deprecated"); + } return newUNOP(OP_RV2HV, 0, scalar(o)); } diff --git a/pod/perldiag.pod b/pod/perldiag.pod index cd32d72146..7b69b63e89 100644 --- a/pod/perldiag.pod +++ b/pod/perldiag.pod @@ -2751,7 +2751,7 @@ could be a potential Year 2000 problem. =item pragma "attrs" is deprecated, use "sub NAME : ATTRS" instead -(W deprecated) You have written something like this: +(D deprecated) You have written something like this: sub doit { @@ -3812,6 +3812,19 @@ usually optimized into C<"that " . $foo>, and the warning will refer to the C<concatenation (.)> operator, even though there is no C<.> in your program. +=item Using a hash as a reference is deprecated + +(D deprecated) You tried to use a hash as a reference, as in C<%foo->{"bar"}> +or C<%$ref->{"hello"}. Versions of perl <= 5.6.1 used to allow this syntax, +but shouldn't have. It is now deprecated, and will be removed in a future +version. + +=item Using an array as a reference is deprecated + +(D deprecated) You tried to use an array as a reference, as in C<@foo->[23]> +or C<@$ref->[99]>. Versions of perl <= 5.6.1 used to allow this syntax, but +shouldn't have. It is now deprecated, and will be removed in a future version. + =item Value of %s can be "0"; test with defined() (W misc) In a conditional expression, you used <HANDLE>, <*> (glob), diff --git a/t/pragma/overload.t b/t/pragma/overload.t index b3105309c3..d07506261d 100755 --- a/t/pragma/overload.t +++ b/t/pragma/overload.t @@ -494,7 +494,7 @@ test($c, "bareword"); # 135 sub STORE { my $obj = shift; $#$obj = 1; - @$obj->[0,1] = ('=', shift); + $obj->[1] = shift; } } @@ -615,7 +615,7 @@ test($c, "bareword"); # 135 sub STORE { my $obj = shift; $#$obj = 1; - @$obj->[0,1] = ('=', shift); + $obj->[1] = shift; } } diff --git a/t/pragma/warn/op b/t/pragma/warn/op index b4b8e4e468..2f847ad14c 100644 --- a/t/pragma/warn/op +++ b/t/pragma/warn/op @@ -205,6 +205,36 @@ EXPECT Use of implicit split to @_ is deprecated at - line 3. ######## # op.c +use warnings 'deprecated'; +my (@foo, %foo); +%main::foo->{"bar"}; +%foo->{"bar"}; +@main::foo->[23]; +@foo->[23]; +$main::foo = {}; %$main::foo->{"bar"}; +$foo = {}; %$foo->{"bar"}; +$main::foo = []; @$main::foo->[34]; +$foo = []; @$foo->[34]; +no warnings 'deprecated'; +%main::foo->{"bar"}; +%foo->{"bar"}; +@main::foo->[23]; +@foo->[23]; +$main::foo = {}; %$main::foo->{"bar"}; +$foo = {}; %$foo->{"bar"}; +$main::foo = []; @$main::foo->[34]; +$foo = []; @$foo->[34]; +EXPECT +Using a hash as a reference is deprecated at - line 4. +Using a hash as a reference is deprecated at - line 5. +Using an array as a reference is deprecated at - line 6. +Using an array as a reference is deprecated at - line 7. +Using a hash as a reference is deprecated at - line 8. +Using a hash as a reference is deprecated at - line 9. +Using an array as a reference is deprecated at - line 10. +Using an array as a reference is deprecated at - line 11. +######## +# op.c use warnings 'void' ; close STDIN ; 1 x 3 ; # OP_REPEAT # OP_GVSV |