chiark / gitweb /
src/final.lisp (test-module): By default, just report and count up errors.
[sod] / src / final.lisp
index ee75705ceb4ff4898794e38f7af75ebc0f67bb48..8cd42f83478d5834dd8424276a36a00d5c7a86f6 100644 (file)
@@ -39,12 +39,21 @@ (export '*debugout-pathname*)
 (defvar *debugout-pathname* #p"debugout.c")
 
 (export 'test-module)
-(defun test-module (path reason)
-  "Reset the translator's state, read a module from PATH and output it with
-   REASON, returning the result as a string."
+(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