X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/blobdiff_plain/5d7e65b98fa4e766cef5259a0470d6d7555e77a0..60529354d9cf7b479605366b103517af44927e02:/src/final.lisp diff --git a/src/final.lisp b/src/final.lisp index 96d82df..8cd42f8 100644 --- a/src/final.lisp +++ b/src/final.lisp @@ -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