snippet compiler

粘着snippet。

スニペットが否定されるなら、そのコンパイラ作ればいいだけじゃないか。

List<IqConstraint> snippets = new ArrayList<IqConstraint>();

// cast.type = T
// cast.expression = a
snippets.addAll(Snippet.compile("cast", "($T) ($a)", context.expression()));

// override.spec = {@link Override}
// override.elements = ()
snippets.addAll(Snippet.compile("override", "@Override", context.annotation()));

基本的にコンパイルしたコードはソース上に残したくないわけで、でもコンパイル後のコードを変更するだろうから逆コンパイル必須な予感。逆コンパイラって調べたことないんだよなぁ…

しかも、テキストベースなのでalpha変換必須っぽい。しかもalpha変換はパラメータドライブと妙に相性が悪い。道のりは遠い。

追記

// override.spec = {@link Override}
// override.elements = ()
snippets.addAll(Snippet.compile("override", "@Override", context.annotation()));

ってちょっと誤解がありますね。"@Override"っていうスニペットがあったら、普通はコメントにあるような制約ではなく、「@Overrideという注釈そのもの」を新しく作ってドライブしてくれないと気持ちが悪いかも。

んー、こういうときはファクトリを叩くクエリがないといけないのかな。でもそれだと明らかに黒魔術だorz