projects
/
jscl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Migrate toplevel code emitted as result of literals
[jscl.git]
/
src
/
compiler.lisp
diff --git
a/src/compiler.lisp
b/src/compiler.lisp
index
a806cf3
..
931e9a2
100644
(file)
--- a/
src/compiler.lisp
+++ b/
src/compiler.lisp
@@
-54,11
+54,6
@@
(js-expr arg)))))
args))
(js-expr arg)))))
args))
-;;; Wrap X with a Javascript code to convert the result from
-;;; Javascript generalized booleans to T or NIL.
-(defun js!bool (x)
- `(if ,x ,(ls-compile t) ,(ls-compile nil)))
-
;;; Concatenate the arguments and wrap them with a self-calling
;;; Javascript anonymous function. It is used to make some Javascript
;;; statements valid expressions and provide a private scope as well.
;;; Concatenate the arguments and wrap them with a self-calling
;;; Javascript anonymous function. It is used to make some Javascript
;;; statements valid expressions and provide a private scope as well.
@@
-550,9
+545,9
@@
dumped
(let ((jsvar (genlit)))
(push (cons sexp jsvar) *literal-table*)
dumped
(let ((jsvar (genlit)))
(push (cons sexp jsvar) *literal-table*)
- (toplevel-compilation `(code "var " ,jsvar " = " ,dumped))
+ (toplevel-compilation `(var (,(make-symbol jsvar) ,dumped)))
(when (keywordp sexp)
(when (keywordp sexp)
- (toplevel-compilation `(code ,jsvar ".value = " ,jsvar)))
+ (toplevel-compilation `(= ,(get (make-symbol jsvar) "value") ,(make-symbol jsvar))))
jsvar)))))))
jsvar)))))))
@@
-1021,7
+1016,7
@@
`(define-raw-builtin ,op (x &rest args)
(let ((args (cons x args)))
(variable-arity args
`(define-raw-builtin ,op (x &rest args)
(let ((args (cons x args)))
(variable-arity args
- (js!bool (comparison-conjuntion args ',sym))))))
+ `(bool ,(comparison-conjuntion args ',sym))))))
(define-builtin-comparison > >)
(define-builtin-comparison < <)
(define-builtin-comparison > >)
(define-builtin-comparison < <)
@@
-1475,11
+1470,10
@@
(let ((form-string (prin1-to-string sexp)))
(format t "Compiling ~a..." (truncate-string form-string))))
(let ((code (ls-compile sexp multiple-value-p)))
(let ((form-string (prin1-to-string sexp)))
(format t "Compiling ~a..." (truncate-string form-string))))
(let ((code (ls-compile sexp multiple-value-p)))
- `(code
- ,@(interleave (get-toplevel-compilations) ";
-" t)
- ,(when code
- `(code ,code ";"))))))))
+ `(progn
+ ,@(interleave (get-toplevel-compilations) '(code ";
+") t)
+ (code ,code ";")))))))
(defun ls-compile-toplevel (sexp &optional multiple-value-p)
(with-output-to-string (*standard-output*)
(defun ls-compile-toplevel (sexp &optional multiple-value-p)
(with-output-to-string (*standard-output*)