diff options
author | BT Templeton <bpt@hcoop.net> | 2011-06-20 17:08:56 -0400 |
---|---|---|
committer | BT Templeton <bpt@hcoop.net> | 2012-02-03 18:53:48 -0500 |
commit | 80687f2e4b50a41cb3b3ebe0cd5a05d7d71d414c (patch) | |
tree | fbb268028710b7585c5a4fb4196430ddeaf37bfd | |
parent | a338fa3d87a89d5ea16e585ddabe20a254e37b02 (diff) | |
download | guile-80687f2e4b50a41cb3b3ebe0cd5a05d7d71d414c.tar.gz |
new elisp special form `eval-when-compile'
* module/language/elisp/compile-tree-il.scm (compile-eval-when-compile):
New function.
* module/language/elisp/runtime/function-slot.scm: Update module
definition.
-rw-r--r-- | module/language/elisp/compile-tree-il.scm | 4 | ||||
-rw-r--r-- | module/language/elisp/runtime/function-slot.scm | 2 |
2 files changed, 6 insertions, 0 deletions
diff --git a/module/language/elisp/compile-tree-il.scm b/module/language/elisp/compile-tree-il.scm index ecdd9c90b..e9fcf9457 100644 --- a/module/language/elisp/compile-tree-il.scm +++ b/module/language/elisp/compile-tree-il.scm @@ -31,6 +31,7 @@ #:use-module (srfi srfi-26) #:export (compile-tree-il compile-progn + compile-eval-when-compile compile-if compile-defconst compile-defvar @@ -632,6 +633,9 @@ (defspecial progn (loc args) (make-sequence loc (map compile-expr args))) +(defspecial eval-when-compile (loc args) + (make-const loc (compile `(progn ,@args) #:from 'elisp #:to 'value))) + (defspecial if (loc args) (pmatch args ((,cond ,then . ,else) diff --git a/module/language/elisp/runtime/function-slot.scm b/module/language/elisp/runtime/function-slot.scm index a3969c0e1..641173d86 100644 --- a/module/language/elisp/runtime/function-slot.scm +++ b/module/language/elisp/runtime/function-slot.scm @@ -32,6 +32,7 @@ #:use-module ((language elisp compile-tree-il) #:select ((compile-progn . progn) + (compile-eval-when-compile . eval-when-compile) (compile-if . if) (compile-defconst . defconst) (compile-defvar . defvar) @@ -54,6 +55,7 @@ #:duplicates (last) ;; special operators #:re-export (progn + eval-when-compile if defconst defvar |