#: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))))