diff --git a/NEWS b/NEWS index ce4768631..02b824dff 100644 --- a/NEWS +++ b/NEWS @@ -180,6 +180,7 @@ Search the manual for these identifiers and modules, for more. ** Fix erroneous check in `set-procedure-properties!'. ** Fix generalized-vector-{ref,set!} for slices. ** Fix error messages involving definition forms. +** Fix primitive-eval to return # for definitions. ** HTTP: Extend handling of "Cache-Control" header. ** HTTP: Fix qstring writing of cache-extension values ** HTTP: Fix validators for various list-style headers. diff --git a/module/ice-9/eval.scm b/module/ice-9/eval.scm index c0fa64c90..74b85329d 100644 --- a/module/ice-9/eval.scm +++ b/module/ice-9/eval.scm @@ -428,7 +428,8 @@ (let ((x (eval x env))) (if (and (procedure? x) (not (procedure-property x 'name))) (set-procedure-property! x 'name name)) - (define! name x))) + (define! name x) + (if #f #f))) (('toplevel-set! (var-or-sym . x)) (variable-set! diff --git a/test-suite/tests/eval.test b/test-suite/tests/eval.test index b0bfd4c44..a5fbfece2 100644 --- a/test-suite/tests/eval.test +++ b/test-suite/tests/eval.test @@ -75,6 +75,10 @@ (with-test-prefix "evaluator" + (pass-if "definitions return #" + (eq? (primitive-eval '(define test-var 'foo)) + (if #f #f))) + (with-test-prefix "symbol lookup" (with-test-prefix "top level"