Signal an error for invalid go tags in tagbody
authorDavid Vázquez <davazp@gmail.com>
Wed, 22 May 2013 17:09:24 +0000 (18:09 +0100)
committerDavid Vázquez <davazp@gmail.com>
Wed, 22 May 2013 17:09:24 +0000 (18:09 +0100)
experimental/compiler.lisp

index 11fc293..03b7499 100644 (file)
               (push (cons tag (current-block)) tag-blocks))))
       ;; Convert the statements into the correct block.
       (dolist (stmt statements)
-        (if (go-tag-p stmt)
-            (set-cursor :block (cdr (assoc stmt tag-blocks)))
-            (ir-convert stmt))))))
+        (cond
+          ((go-tag-p stmt)
+           (set-cursor :block (cdr (assoc stmt tag-blocks))))
+          ((atom stmt)
+           (error "Invalid tag `~S'" stmt))
+          (t
+           (ir-convert stmt)))))))
 
 (define-ir-translator go (label)
   (let ((tag-binding