X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~mdw/git/sod/blobdiff_plain/aa14a4cddcb96b681d5c19a2ec8bad382f43b264..239fa5bd3dff0b38b0cebdd3438311f21c24ba4f:/src/module-impl.lisp diff --git a/src/module-impl.lisp b/src/module-impl.lisp index 753ca0a..5343ad0 100644 --- a/src/module-impl.lisp +++ b/src/module-impl.lisp @@ -91,6 +91,19 @@ (defun build-module (when (and truename (not (eq (module-state *module*) t))) (remhash truename *module-map*))))) +(defun call-with-temporary-module (thunk) + "Invoke THUNK in the context of a temporary module, returning its values. + + This is mainly useful for testing things which depend on module variables. + This is the functionality underlying `with-temporary-module'." + (let ((*module* (make-instance 'module + :name "" + :state nil))) + (call-with-module-environment + (lambda () + (module-import *builtin-module*) + (funcall thunk))))) + ;;;-------------------------------------------------------------------------- ;;; Type definitions.