summaryrefslogtreecommitdiff
path: root/ext/attrs
diff options
context:
space:
mode:
Diffstat (limited to 'ext/attrs')
-rw-r--r--ext/attrs/attrs.pm19
-rw-r--r--ext/attrs/attrs.xs6
2 files changed, 14 insertions, 11 deletions
diff --git a/ext/attrs/attrs.pm b/ext/attrs/attrs.pm
index e97fa1ee39..cec5ea5fcd 100644
--- a/ext/attrs/attrs.pm
+++ b/ext/attrs/attrs.pm
@@ -8,7 +8,7 @@ $VERSION = "1.0";
=head1 NAME
-attrs - set/get attributes of a subroutine
+attrs - set/get attributes of a subroutine (deprecated)
=head1 SYNOPSIS
@@ -21,11 +21,17 @@ attrs - set/get attributes of a subroutine
=head1 DESCRIPTION
-This module lets you set and get attributes for subroutines.
+NOTE: Use of this pragma is deprecated. Use the syntax
+
+ sub foo : locked, method { }
+
+to declare attributes instead. See also L<attributes>.
+
+This pragma lets you set and get attributes for subroutines.
Setting attributes takes place at compile time; trying to set
invalid attribute names causes a compile-time error. Calling
-C<attr::get> on a subroutine reference or name returns its list
-of attribute names. Notice that C<attr::get> is not exported.
+C<attrs::get> on a subroutine reference or name returns its list
+of attribute names. Notice that C<attrs::get> is not exported.
Valid attributes are as follows.
=over
@@ -46,11 +52,6 @@ execution. The semantics of the lock are exactly those of one
explicitly taken with the C<lock> operator immediately after the
subroutine is entered.
-=item lvalue
-
-Setting this attribute enables the subroutine to be used in
-lvalue context. See L<perlsub/"Lvalue subroutines">.
-
=back
=cut
diff --git a/ext/attrs/attrs.xs b/ext/attrs/attrs.xs
index a92922d497..4c00cd7cb2 100644
--- a/ext/attrs/attrs.xs
+++ b/ext/attrs/attrs.xs
@@ -10,8 +10,6 @@ get_flag(char *attr)
return CVf_METHOD;
else if (strnEQ(attr, "locked", 6))
return CVf_LOCKED;
- else if (strnEQ(attr, "lvalue", 6))
- return CVf_LVALUE;
else
return 0;
}
@@ -29,6 +27,10 @@ char * Class
PPCODE:
if (!PL_compcv || !(cv = CvOUTSIDE(PL_compcv)))
croak("can't set attributes outside a subroutine scope");
+ if (ckWARN(WARN_DEPRECATED))
+ Perl_warner(aTHX_ WARN_DEPRECATED,
+ "pragma \"attrs\" is deprecated, "
+ "use \"sub NAME : ATTRS\" instead");
for (i = 1; i < items; i++) {
STRLEN n_a;
char *attr = SvPV(ST(i), n_a);