Add UNWIND-PROTECT special operator
[jscl.git] / ecmalisp.lisp
index ebfe885..208532c 100644 (file)
           "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.