syncase macros compiling!
authorAndy Wingo <wingo@pobox.com>
Mon, 19 May 2008 08:38:18 +0000 (10:38 +0200)
committerAndy Wingo <wingo@pobox.com>
Mon, 19 May 2008 08:38:18 +0000 (10:38 +0200)
* module/system/base/compile.scm: Also import load-objcode from (system
  vm core).

* module/language/scheme/translate.scm (lookup-transformer): Use
  sc-expand3 in compilation mode when compiling macros. Yay, syncase
  macros compile!

module/language/scheme/translate.scm
module/system/base/compile.scm

index 87f4435..618544a 100644 (file)
 
      ((and (macro? val) (eq? (macro-name val) 'sc-macro))
       ;; syncase!
-      (let ((syncase (module-ref (resolve-interface '(ice-9 syncase)) 'syncase)))
+      (let* ((the-syncase-module (resolve-module '(ice-9 syncase)))
+             (eec (module-ref the-syncase-module 'expansion-eval-closure))
+             (sc-expand3 (module-ref the-syncase-module 'sc-expand3)))
         (lambda (env loc exp)
-          (retrans (syncase exp)))))
+          (retrans
+           (with-fluids ((eec (module-eval-closure (current-module))))
+             (sc-expand3 exp 'c '(compile load eval)))))))
 
      ((macro? val)
       (syntax-error #f "unknown kind of macro" head))
index 803dfc3..537d81e 100644 (file)
@@ -25,7 +25,7 @@
   :use-module (system il compile)
   :use-module (system il glil)
   :use-module ((system vm core)
-              :select (the-vm vm-load objcode->u8vector))
+              :select (the-vm vm-load objcode->u8vector load-objcode))
   :use-module (system vm assemble)
   :use-module (ice-9 regex)
   :export (syntax-error compile-file load-source-file load-file