X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=ecmalisp.lisp;h=208532c43b410f3dcf2c9b3568a058d1071ef684;hb=8a40428e966c0d53d3397284531e672cd0224567;hp=ebfe8857210d1e795f3485095369209813a5882f;hpb=d7624ebb9aaf5c83a3f9b4a48c76fd3e19ba785f;p=jscl.git diff --git a/ecmalisp.lisp b/ecmalisp.lisp index ebfe885..208532c 100644 --- a/ecmalisp.lisp +++ b/ecmalisp.lisp @@ -1039,6 +1039,17 @@ "message: 'Throw uncatched.'" "})})()")) +(define-compilation unwind-protect (form &rest clean-up) + (concat "(function(){" *newline* + (indent "var ret = " (ls-compile nil) ";" *newline* + "try {" *newline* + (indent "ret = " (ls-compile form env) ";" *newline*) + "} finally {" *newline* + (indent (ls-compile-block clean-up env)) + "}" *newline* + "return ret;" *newline*) + "})()")) + ;;; A little backquote implementation without optimizations of any ;;; kind for ecmalisp.