# 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);

Reply via email to