2024 年 Clojure 状态调查! 中分享您的想法。

欢迎!请参阅 关于 页面以获取有关如何使用此方法的更多信息。

0 投票
ClojureScript

相关讨论
- https://github.com/clojure-emacs/cider/issues/2099#issuecomment-661940099

(ns user
  (:require [cljs.analyzer :as analyzer]))

(let [ns-env (assoc-in (analyzer/empty-env) [:ns [:name]] 'cljs.user)]
  (analyzer/macroexpand-1 ns-env `(defn ~'foo [~'x] ~'x)))
;; (clojure.core/defn foo [x] x)

(macroexpand-1 `(defn ~'foo [~'x] ~'x))
;; (def foo (clojure.core/fn ([x] x)))

1 答案

0 投票

selected
 
最佳答案

您需要绑定 cljs.env/*compiler* 绑定(例如,通过 cljs.env/with-compiler-env)以及已分析的相关命名空间(例如,cljs.core)。

我不知道您需要做的确切顺序,但本质上您缺少编译环境(这不同于传递给宏展开调用自身的环境)。

感谢您的回复。我将尝试深入了解此问题。
...