マクロ内の変数が未定義エラーになる
VSCodeでclojureのマクロ(記事冒頭の図はpedestalのbuddyののinterceptor)を記述すると、error-dispatchマクロを利用する記述で下記の未定義エラーが発生しました。Unresolved symbol: ctx clj-kondo(unresolved-symbol)
対応: declareで定義する
記述前にdeclareで定義しておけば、静的解析の意味付けはできませんがエラーは回避できます。(declare ctx)
(declare ex)
変数にマウスカーソルを重ねると表示される定義は、declareで定義した情報が表示され、マクロで扱われる役割とは異なります。
参考: How to avoid unresolved symbol with clj-kond when using hugSQL def-db-fns macro?
おわり
解析で赤線が出るものの動きはするコードが出てきて戸惑いましたが、とりあえずエラーの赤線は消せて良かったです。他に良い解決方法があれば、コメントなどで教えていただけると嬉しいです。
この記事は Clojure Advent Calendar 2023 18日目の記事です。
0 件のコメント :
コメントを投稿