projects
/
jscl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
WIP: compiler.lisp uses a explicit back-end representation
[jscl.git]
/
src
/
compiler-codegen.lisp
diff --git
a/src/compiler-codegen.lisp
b/src/compiler-codegen.lisp
index
fbb3952
..
129f892
100644
(file)
--- a/
src/compiler-codegen.lisp
+++ b/
src/compiler-codegen.lisp
@@
-211,6
+211,8
@@
(let ((op1 (car args))
(op2 (cadr args)))
(case op
(let ((op1 (car args))
(op2 (cadr args)))
(case op
+ (code
+ (js-format "~a" (apply #'code args)))
;; Function call
(call
(js-expr (car args))
;; Function call
(call
(js-expr (car args))
@@
-358,7
+360,7
@@
(destructuring-bind (&body body) (cdr form)
(cond
((null body) '(empty))
(destructuring-bind (&body body) (cdr form)
(cond
((null body) '(empty))
- ((null (cdr body)) (car body))
+ ((null (cdr body)) (js-expand-stmt (car body)))
(t `(group ,@(cdr form))))))
(t
form)))
(t `(group ,@(cdr form))))))
(t
form)))
@@
-371,6
+373,8
@@
(js-expr form)
(js-format ";"))
(case (car form)
(js-expr form)
(js-format ";"))
(case (car form)
+ (code
+ (js-format "~a" (apply #'code (cdr form))))
(empty
(unless (and (consp parent) (eq (car parent) 'group))
(js-format ";")))
(empty
(unless (and (consp parent) (eq (car parent) 'group))
(js-format ";")))
@@
-415,7
+419,9
@@
(js-format " else ")
(js-stmt false))))
(group
(js-format " else ")
(js-stmt false))))
(group
- (let ((in-group-p (and (consp parent) (eq (car parent) 'group))))
+ (let ((in-group-p
+ (or (null parent)
+ (and (consp parent) (eq (car parent) 'group)))))
(unless in-group-p (js-format "{"))
(mapc #'js-stmt (cdr form))
(unless in-group-p (js-format "}"))))
(unless in-group-p (js-format "{"))
(mapc #'js-stmt (cdr form))
(unless in-group-p (js-format "}"))))