use guile eval for elisp tree-il
[bpt/guile.git] / module / language / elisp / compile-tree-il.scm
index 22b437b..3e4f74b 100644 (file)
@@ -30,6 +30,7 @@
   #:use-module (srfi srfi-11)
   #:use-module (srfi srfi-26)
   #:use-module (ice-9 format)
+  #:use-module (language tree-il eval)
   #:export (compile-tree-il
             compile-progn
             compile-eval-when-compile
                  (map compile-expr-1 args))))
 
 (defspecial eval-when-compile (loc args)
-  (make-const loc (compile `(progn ,@args) #:from 'elisp #:to 'value)))
+  (make-const loc (eval-elisp `(progn ,@args))))
 
 (define toplevel? (make-fluid))
 
 (defspecial eval-when (loc args)
   (pmatch args
     ((,situations . ,forms)
-     (let ((compile? (memq ':compile-toplevel situations))
-           (load? (memq ':load-toplevel situations))
-           (execute? (memq ':execute situations)))
+     (let ((compile? (or (memq ':compile-toplevel situations)
+                         (memq 'compile situations)))
+           (load? (or (memq ':load-toplevel situations)
+                      (memq 'load situations)))
+           (execute? (or (memq ':execute situations)
+                         (memq 'eval situations))))
        (cond
         ((not (fluid-ref toplevel?))
          (if execute?
                                           body))))
                   (make-const loc name))))
            (when (fluid-ref toplevel?)
-             (compile tree-il #:from 'tree-il #:to 'value))
+             (eval-tree-il tree-il))
            tree-il)))
     (else (report-error loc "bad defmacro" args))))