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