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
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));
}
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));
}
=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
{
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),
sub STORE {
my $obj = shift;
$#$obj = 1;
- @$obj->[0,1] = ('=', shift);
+ $obj->[1] = shift;
}
}
sub STORE {
my $obj = shift;
$#$obj = 1;
- @$obj->[0,1] = ('=', shift);
+ $obj->[1] = shift;
}
}
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