Avatar
Kishikawa Katsumi 7/30/2023 9:32 AM
マクロのプログラムの入力をTextでなくASTにしたいという話ではないってこと?
マクロプラグインは、ASTを受け取ってASTを返すインターフェースにする。
マクロの出力をTextからASTにしたいという話なのですが、今はマクロのインターフェースはASTを受け取ってASTを返すというものになってるんです。 けれど実際は、マクロが返したASTがテキストになって、コンパイラは再度そのテキストをParseしてコンパイルするっていう動作をします。私はそこをASTのまま扱ってほしいと考えています。
9:36 AM
で、具体的に起こってる問題は マクロはASTを返すのだけどSwiftSyntaxのSyntax Treeはスペース等も含めた構造を構築しないと後続でコンパイルエラーになるからちょっと大変。 なので少し前にスペース等を自動的に挿入してくれるようにデフォルトで自動フォーマットする処理が入った(BasicFormat)。 ただ、そのために複数文字列リテラルで不要なインデントを挿入してしまってコンパイルエラーが起こるなど本来なら起こらないはずの問題が起こっている。 なので、AST => Text => コンパイラじゃなくてAST => コンパイラの方がいいのでは、という意見です。 (edited)