chiark / gitweb /
src/final.lisp (test-module): By default, just report and count up errors.
[sod] / src / final.lisp
index 96d82df8575b385ab987254dee675e21e60184bf..8cd42f83478d5834dd8424276a36a00d5c7a86f6 100644 (file)
@@ -39,17 +39,21 @@ (export '*debugout-pathname*)
 (defvar *debugout-pathname* #p"debugout.c")
 
 (export 'test-module)
-(defun test-module (path &key reason)
+(defun test-module (path &key reason clear backtrace)
   "Read a module from PATH, to exercise the machinery.
 
+   If CLEAR is non-nil, then reset the translator's state before proceeding.
+
    If REASON is non-nil, then output the module to `*debugout-pathname*' with
    that REASON.
 
    Return a two-element list (NERROR NWARNING) of the number of errors and
    warnings encountered while processing the module."
+  (when clear (clear-the-decks))
   (multiple-value-bind (module nerror nwarning)
-      (count-and-report-errors () (read-module path))
-    (when reason
+      (if backtrace (read-module path)
+         (count-and-report-errors () (read-module path)))
+    (when (and module reason)
       (with-open-file (out *debugout-pathname*
                       :direction :output
                       :if-exists :supersede