it's fixable with the following strategy
1.  cc: for void's, don't emit anything from the compiler's acid generator
2.  acid: accept empty aggrs.

i haven't pushed it to see if i can get acid to crash, and i don't have time
to right now, but this does improve the situation.

- erik

; diff -c /n/dump/2012/0701/sys/src/cmd/acid/dbg.y /sys/src/cmd/acid/dbg.y
/n/dump/2012/0701/sys/src/cmd/acid/dbg.y:75,82 - /sys/src/cmd/acid/dbg.y:75,85
  zsemi         :
                | ';' zsemi
  
- members               : member
-               | members member
+ members               :
+               {
+                       $$ = nil;
+               }
+               | member members
                {
                        $$ = an(OLIST, $1, $2);
                }
; diff -c `{yesterday -n2 /sys/src/cmd/cc/acid.c} /sys/src/cmd/cc/acid.c
/n/dump/2012/0629/sys/src/cmd/cc/acid.c:112,117 - /sys/src/cmd/cc/acid.c:112,120
                Bprint(&outbuf, "       T%d\n", t->etype);
                break;
  
+       case TVOID:
+               break;          /* relies on acid being able to handle empty 
aggrs. */
+ 
        case TIND:
                if(s == S)
                        break;

Reply via email to