Index: t/compilers/imcc/syn/symbols.t
===================================================================
--- t/compilers/imcc/syn/symbols.t      (revision 27038)
+++ t/compilers/imcc/syn/symbols.t      (working copy)
@@ -7,7 +7,7 @@
 use lib qw( . lib ../lib ../../lib );
 use Test::More;
 use Parrot::Config;
-use Parrot::Test tests => 5;
+use Parrot::Test tests => 6;

 # 1 ##########################
 pir_error_output_like( <<'CODE', <<'OUT', "register names with one
letter only are invalid" );
@@ -56,6 +56,14 @@
 1
 OUT

+# 6 ##########################
+pasm_error_output_like(<<'CODE', <<'OUT', q|#52858: "$" vars in PASM
don't work, but aren't disallowed either| );
+    say $S0
+CODE
+/error:imcc:'\$S0' is not a valid register name in pasm mode/
+OUT
+
+
 # Local Variables:
 #   mode: cperl
 #   cperl-indent-level: 4
Index: /Users/stef/svn/parrot/compilers/imcc/imcc.l
===================================================================
--- /Users/stef/svn/parrot/compilers/imcc/imcc.l        (revision 27038)
+++ /Users/stef/svn/parrot/compilers/imcc/imcc.l        (working copy)
@@ -629,21 +629,33 @@

 <emit,INITIAL>\$I[0-9]+ {
         if (valp) (valp)->s = yytext;
+       if (IMCC_INFO(interp)->state->pasm_file)
+                IMCC_fataly(interp, E_SyntaxError,
+                    "'%s' is not a valid register name in pasm mode", yytext);
         return IREG;
     }

 <emit,INITIAL>\$N[0-9]+ {
         if (valp) (valp)->s = yytext;
+       if (IMCC_INFO(interp)->state->pasm_file)
+                IMCC_fataly(interp, E_SyntaxError,
+                    "'%s' is not a valid register name in pasm mode", yytext);
         return NREG;
     }

 <emit,INITIAL>\$S[0-9]+ {
         if (valp) (valp)->s = yytext;
+       if (IMCC_INFO(interp)->state->pasm_file)
+                IMCC_fataly(interp, E_SyntaxError,
+                    "'%s' is not a valid register name in pasm mode", yytext);
         return SREG;
     }

 <emit,INITIAL>\$P[0-9]+ {
         if (valp) (valp)->s = yytext;
+       if (IMCC_INFO(interp)->state->pasm_file)
+                IMCC_fataly(interp, E_SyntaxError,
+                    "'%s' is not a valid register name in pasm mode", yytext);
         return PREG;
     }



-- 
cognominal stef

Reply via email to