X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcompiler-test-util.lisp;h=47ffa11c0925948ee3e90953f3d5a301addc9c9d;hb=b894cb41d869bda6ba0c54a491becc7bb58375c1;hp=938af5cf19dcaededbd4aafa899360a49cac7dae;hpb=e5b4fe643472dff0ea751fd7ac55fcba0fd0f4f9;p=sbcl.git diff --git a/tests/compiler-test-util.lisp b/tests/compiler-test-util.lisp index 938af5c..47ffa11 100644 --- a/tests/compiler-test-util.lisp +++ b/tests/compiler-test-util.lisp @@ -25,7 +25,7 @@ (cl:in-package :ctu) (unless (fboundp 'compiler-derived-type) - (defknown compiler-derived-type (t) (values t t) (movable flushable unsafe)) + (defknown compiler-derived-type (t) (values t t) (flushable)) (deftransform compiler-derived-type ((x) * * :node node) (sb-c::delay-ir1-transform node :optimize) `(values ',(type-specifier (sb-c::lvar-type x)) t)) @@ -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)))))