X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcompiler-test-util.lisp;h=6a7bca337a1c4b809fef8c05fd2dccf366ea5cd6;hb=9045aca85bf17b5a49c01e419a03b84704316fbe;hp=938af5cf19dcaededbd4aafa899360a49cac7dae;hpb=d6d9685c52de37bd25233512984b412798c1be60;p=sbcl.git diff --git a/tests/compiler-test-util.lisp b/tests/compiler-test-util.lisp index 938af5c..6a7bca3 100644 --- a/tests/compiler-test-util.lisp +++ b/tests/compiler-test-util.lisp @@ -108,3 +108,20 @@ (values warn fail))) (ignore-errors (delete-file lisp)) (ignore-errors (delete-file fasl))))) + +(defun file-compile (toplevel-forms &key load) + (let* ((lisp (merge-pathnames "file-compile-tmp.lisp")) + (fasl (compile-file-pathname lisp))) + (unwind-protect + (progn + (with-open-file (f lisp :direction :output) + (if (stringp toplevel-forms) + (write-line toplevel-forms f) + (dolist (form toplevel-forms) + (prin1 form f)))) + (multiple-value-bind (fasl warn fail) (compile-file lisp) + (when load + (load fasl)) + (values warn fail))) + (ignore-errors (delete-file lisp)) + (ignore-errors (delete-file fasl)))))