Avatar
omochimetaru 1/10/2026 2:39 AM
Problem and Background MacroTestingTests are tests to verify the operation of the MacroTesting module, which provides a mechanism for testing macros. For this verification, sample macros are includ...
2:40 AM
ワイの一推しマクロの swift-memberwise-init-macro がSwiftSyntax対応でイカつい事になっている
2:41 AM
このマクロ、SwiftSyntax509から602まで5バージョン全部で利用できるようにしていて
2:41 AM
それだけでも大変なんだけど
2:41 AM
マクロをテストするための機構として、 pointfreecoの、スナップショットテストでマクロをテストできる assertMacro を採用しつつ
2:41 AM
それをさらに改良してオリジナル実装になっているので、
2:42 AM
改造 assertMacro の動作を確認するためのテストも含まれていて、
2:42 AM
テストするための仕組みをテストするための入力としてサンプルマクロの実装をテストに同梱しているが(ややこしい) (edited)
2:43 AM
このサンプルマクロはSwiftSyntaxからパクってきているが、これをクロスバージョン対応させる必要が生じて、
2:43 AM
memberwiseinit macroのクロスコンパイルとは関係ない部分でサンプルマクロをクロスサポートさせる要らん努力が発生していた
2:44 AM
それがブロッカーになって新しいSwiftSyntaxで使えるようになるのが遅れる問題が起きていたので、対処しようとしているのが↑のプルリク。
2:46 AM
そもそもなんだけど、マクロの実行はホスト上であってターゲット上じゃないんだから、SwiftPMがマクロごとに別のSwiftSyntaxがリンクできる機構になってれば、クロスサポートなんて要らんのに・・・
2:46 AM
ターゲット上で使うものと、ホスト上の各種のマクロ全部が、同一のSwiftSyntaxとリンクしないといけないことで
2:47 AM
このような苦労がいろんなマクロ実装上で起きてそう