From: David Vázquez Date: Sat, 22 Jun 2013 08:15:39 +0000 (+0200) Subject: WIP: Transactional: Wrap every JS expression with parenthesis X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=5b860e2f1eb2e39d559846cdee365b2639d1728d;p=jscl.git WIP: Transactional: Wrap every JS expression with parenthesis As CODE and codegen have to live together for a while, we can't deal with the precedence/associativity easily. We use parenthesis in every expression around ls-compile not to break the REPL. --- diff --git a/src/compiler.lisp b/src/compiler.lisp index 2edc334..1221ff7 100644 --- a/src/compiler.lisp +++ b/src/compiler.lisp @@ -1455,10 +1455,10 @@ " *newline*) ";" ,*newline*)))) -(defun ls-compile (sexp &optional multiple-value-p) +(defun ls-compile* (sexp &optional multiple-value-p) (multiple-value-bind (sexp expandedp) (!macroexpand-1 sexp) (when expandedp - (return-from ls-compile (ls-compile sexp multiple-value-p))) + (return-from ls-compile* (ls-compile sexp multiple-value-p))) ;; The expression has been macroexpanded. Now compile it! (let ((*multiple-value-p* multiple-value-p)) (cond @@ -1492,6 +1492,9 @@ (t (error "How should I compile `~S'?" sexp)))))) +(defun ls-compile (sexp &optional multiple-value-p) + `(code "(" ,(ls-compile* sexp multiple-value-p) ")")) + (defvar *compile-print-toplevels* nil)