Change 11256 by jhi@alpha on 2001/07/10 13:45:12
Subject: [PATCH] deprecate package with no arguments
From: Robin Houston <[EMAIL PROTECTED]>
Date: Tue, 10 Jul 2001 13:33:40 +0100
Message-ID: <[EMAIL PROTECTED]>
Affected files ...
... //depot/perl/op.c#410 edit
... //depot/perl/pod/perldiag.pod#228 edit
... //depot/perl/pod/perlfunc.pod#248 edit
... //depot/perl/t/lib/warnings/op#3 edit
Differences ...
==== //depot/perl/op.c#410 (text) ====
Index: perl/op.c
--- perl/op.c.~1~ Tue Jul 10 08:00:05 2001
+++ perl/op.c Tue Jul 10 08:00:05 2001
@@ -3197,6 +3197,7 @@
op_free(o);
}
else {
+ deprecate("\"package\" with no arguments");
sv_setpv(PL_curstname,"<none>");
PL_curstash = Nullhv;
}
==== //depot/perl/pod/perldiag.pod#228 (text) ====
Index: perl/pod/perldiag.pod
--- perl/pod/perldiag.pod.~1~ Tue Jul 10 08:00:05 2001
+++ perl/pod/perldiag.pod Tue Jul 10 08:00:05 2001
@@ -3868,6 +3868,13 @@
you should remove AutoLoader from @ISA and change C<use AutoLoader;> to
C<use AutoLoader 'AUTOLOAD';>.
+=item Use of "package" with no arguments is deprecated
+
+(D deprecated) You used the C<package> keyword without specifying a package
+name. So no namespace is current at all. Using this can cause many
+otherwise reasonable constructs to fail in baffling ways. C<use strict;>
+instead.
+
=item Use of %s in printf format not supported
(F) You attempted to use a feature of printf that is accessible from
==== //depot/perl/pod/perlfunc.pod#248 (text) ====
Index: perl/pod/perlfunc.pod
--- perl/pod/perlfunc.pod.~1~ Tue Jul 10 08:00:05 2001
+++ perl/pod/perlfunc.pod Tue Jul 10 08:00:05 2001
@@ -3404,8 +3404,10 @@
still seen in older code).
If NAMESPACE is omitted, then there is no current package, and all
-identifiers must be fully qualified or lexicals. This is stricter
-than C<use strict>, since it also extends to function names.
+identifiers must be fully qualified or lexicals. However, you are
+strongly advised not to make use of this feature. Its use can cause
+unexpected behaviour, even crashing some versions of Perl. It is
+deprecated, and will be removed from a future release.
See L<perlmod/"Packages"> for more information about packages, modules,
and classes. See L<perlsub> for other scoping issues.
==== //depot/perl/t/lib/warnings/op#3 (text) ====
Index: perl/t/lib/warnings/op
--- perl/t/lib/warnings/op.~1~ Tue Jul 10 08:00:05 2001
+++ perl/t/lib/warnings/op Tue Jul 10 08:00:05 2001
@@ -108,6 +108,9 @@
mkdir "foo", 777;
umask 222;
+ Use of "package" with no arguments is deprecated
+ package;
+
Mandatory Warnings
------------------
Prototype mismatch: [cv_ckproto]
@@ -958,3 +961,11 @@
EXPECT
Non-octal literal mode (777) specified at - line 3.
(Did you mean 0777 instead?)
+########
+# op.c
+use warnings 'deprecated' ;
+package;
+no warnings 'deprecated' ;
+package;
+EXPECT
+Use of "package" with no arguments is deprecated at - line 3.
End of Patch.