On Sunday 20 July 2008 18:19:05 James Keenan via RT wrote:
> 1 test still not passing as of r29636:
>
> not ok 36 - invalid label syntax # TODO RT#47978, RT#51104
>
> # Failed (TODO) test 'invalid label syntax'
> # at t/compilers/imcc/syn/macro.t line 469.
> # 'compilers/imcc/imcc.l:1010: failed assertion 'valp->s'
> # Backtrace - Obtained 10 stack frames (max trace depth is 32).
> # (unknown)
> # Parrot_confess
> # (unknown)
> # yylex
> # yyparse
> # (unknown)
> # imcc_run
> # (unknown)
> # __libc_start_main
> # (unknown)
> # '
> # doesn't match '/syntax error(, unexpected LABEL)?/
> # '
> # './parrot
> "/home/jimk/work/parrot/t/compilers/imcc/syn/macro_36.pir"' failed with
> exit code [SIGNAL 6]
This patch isn't ideal, but it gets us closer (and avoiding SIGABRT is good).
-- c
--- t/compilers/imcc/syn/macro.t (revision 29628)
+++ t/compilers/imcc/syn/macro.t (working copy)
@@ -466,7 +466,7 @@
CODE
OUTPUT
-pir_error_output_like( <<'CODE', <<'OUTPUT', 'invalid label syntax', todo => 'RT#47978, RT#51104');
+pir_error_output_like( <<'CODE', <<'OUTPUT', 'invalid label syntax');
.sub test :main
.macro m()
.local $iter_loop:
@@ -476,7 +476,7 @@
.m()
.end
CODE
-/syntax error(, unexpected LABEL)?/
+/Syntax error in macro at: \('\$iter_loop:'\)/
OUTPUT
pir_output_is( <<'CODE', <<'OUTPUT', 'call a sub in a macro' );
Index: compilers/imcc/imcc.l
===================================================================
--- compilers/imcc/imcc.l (revision 29628)
+++ compilers/imcc/imcc.l (working copy)
@@ -1005,7 +1005,11 @@
"File ended before macro '%s' was complete",
IMCC_INFO(interp)->cur_macro_name);
- PARROT_ASSERT(valp->s);
+ if (!valp->s) {
+ yyerror(yyscanner, interp, "Syntax error in macro at:");
+ exit(1);
+ }
+
elem_len = strlen(valp->s);
if (buffer_used) {