From 5b860e2f1eb2e39d559846cdee365b2639d1728d Mon Sep 17 00:00:00 2001 From: =?utf8?q?David=20V=C3=A1zquez?= Date: Sat, 22 Jun 2013 10:15:39 +0200 Subject: [PATCH] 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. --- src/compiler.lisp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) 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) -- 1.7.10.4