# New Ticket Created by chromatic
# Please include the string: [perl #38598]
# in the subject line of all future correspondence about this issue.
# <URL: https://rt.perl.org/rt3/Ticket/Display.html?id=38598 >
Hi there,
The old PIR subroutine attributes ("method", "@MULTI", "@MAIN", "@LOAD",
"@IMMEDIATE", "@POSTCOMP", and "@ANON") are now deprecated in favor of the
lowercased colon-prefixed version. (At least, that's what the code appears
to say.)
A lot of the test suite and much of the library still uses the old form. I've
applied the following patch to the lexer and rebuild Parrot (run Configure.pl
with the --maintainer flag) to remove this code. Now you can run the tests
and the libraries to find the old attributes to update.
(Allison mentioned earlier today that she saw a difference in strict argument
checking between the "method" and ":method" forms. I can't verify that, but
this is an easy todo item for someone just getting started.)
This patch is definitely not suitable for application before the upcoming
release. I have patches to make Parrot finish building after applying the
patch and regenerating IMCC, but I'll hold off on those for a while too.
-- c
Index: compilers/imcc/imcc.l
===================================================================
--- compilers/imcc/imcc.l (revision 11686)
+++ compilers/imcc/imcc.l (working copy)
@@ -257,15 +257,6 @@
".pcc_begin_yield" return(PCC_BEGIN_YIELD);
".pcc_end_yield" return(PCC_END_YIELD);
-"method" return(METHOD); /* old compat cruft -
- the canonical colon names are below */
-<emit,INITIAL>"@MULTI" return(MULTI);
-<emit,INITIAL>"@MAIN" return(MAIN);
-<emit,INITIAL>"@LOAD" return(LOAD);
-<emit,INITIAL>"@IMMEDIATE" return(IMMEDIATE);
-<emit,INITIAL>"@POSTCOMP" return(POSTCOMP);
-<emit,INITIAL>"@ANON" return(ANON);
-
":method" return(METHOD);
<emit,INITIAL>":multi" return(MULTI);
<emit,INITIAL>":main" return(MAIN);