Correction du cas du defun + correction de tests unitaire dans lisp2li

This commit is contained in:
Bertrand BRUN 2010-11-08 14:56:06 +01:00
parent 43c4b6ae38
commit 34189f2e73
2 changed files with 8 additions and 7 deletions

View File

@ -132,7 +132,7 @@ par le compilateur et par linterpréteur"
`(:sclosure ,(cadr expr)))
;; defun
((eq 'defun (car expr))
`(:mcall set-defun (:const . ,(second expr))
`(:call set-defun (:const . ,(second expr))
,(lisp2li `(lambda ,(third expr) ,@(cdddr expr)) env)))
;; apply
((eq 'apply (car expr))
@ -215,11 +215,11 @@ par le compilateur et par linterpréteur"
(deftest (lisp2li defun)
(lisp2li '(defun bar (x) x) ())
'(:mcall set-defun (:const . bar) (:lclosure 1 :cvar 0 1)))
'(:call set-defun (:const . bar) (:lclosure 1 :cvar 0 1)))
(deftest (lisp2li defun)
(lisp2li '(defun foo (x y z) (list x y z)) ())
'(:mcall set-defun (:const . foo)
'(:call set-defun (:const . foo)
(:lclosure 3 :call list
(:cvar 0 1)
(:cvar 0 2)
@ -227,11 +227,11 @@ par le compilateur et par linterpréteur"
(deftest (lisp2li setf)
(lisp2li '(setf y 42) '((x 0 1) (y 0 2)))
'(:set-var (0 2) 42))
'(:set-var (0 2) (:const . 42)))
(deftest (lisp2li setf)
(lisp2li '(setf (cdr '(1 2 3)) 42) ())
'(:set-fun cdr 42 '(1 2 3)))
'(:set-fun cdr 42 '(1 2 3)))
(deftest (lisp2li lambda)
(lisp2li '(mapcar (lambda (x y z) (list x y z)) '(1 2 3)) ())

View File

@ -256,6 +256,7 @@ darguments dans un certain environnement."
(deftestvar (meval :set-var) env #(() 2))
(deftest (meval :set-var)
(progn
(meval (lisp2li '(setf x 42) ()) env)
(meval (lisp2li '(setf x 42) '((x 0 1))) env)
env)
#(() 42))
#(() 42)
#'equalp)