X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=test.lisp;h=233362153ceba8c338ac7b201e77b6079ca4162f;hb=ba6c08871676f70a779acffd50d48526fb8a9ddc;hp=d4ff11f55732111a8b7650878c0f4235c15ca638;hpb=1f7914504ed7424902f66d1760c413ef39ac6f1e;p=jscl.git diff --git a/test.lisp b/test.lisp index d4ff11f..2333621 100644 --- a/test.lisp +++ b/test.lisp @@ -837,10 +837,16 @@ c(defmacro eval-when-compile (&body body) "; return (typeof tmp == 'object' && 'car' in tmp);})()"))) (define-compilation car (x) - (concat "(" (ls-compile x env fenv) ").car")) + (concat "(function () { var tmp = " (ls-compile x env fenv) + "; return tmp === " (ls-compile nil nil nil) "? " + (ls-compile nil nil nil) + ": tmp.car; })()")) (define-compilation cdr (x) - (concat "(" (ls-compile x env fenv) ").cdr")) + (concat "(function () { var tmp = " (ls-compile x env fenv) + "; return tmp === " (ls-compile nil nil nil) "? " + (ls-compile nil nil nil) + ": tmp.cdr; })()")) (define-compilation setcar (x new) (concat "((" (ls-compile x env fenv) ").car = " (ls-compile new env fenv) ")")) @@ -958,11 +964,12 @@ c(defmacro eval-when-compile (&body body) (and (symbolp x) (eq (binding-type (lookup-function x *fenv*)) 'macro))) (defun ls-macroexpand-1 (form env fenv) - (when (macrop (car form)) - (let ((binding (lookup-function (car form) *env*))) - (if (eq (binding-type binding) 'macro) - (apply (eval (binding-translation binding)) (cdr form)) - form)))) + (if (macrop (car form)) + (let ((binding (lookup-function (car form) *env*))) + (if (eq (binding-type binding) 'macro) + (apply (eval (binding-translation binding)) (cdr form)) + form)) + form)) (defun compile-funcall (function args env fenv) (cond