公式マニュアルで説明されているように、clang にカスタム属性を実装しました: http://clang.llvm.org/docs/InternalsManual.html#how-to-add-an-attribute
そこで、次のコードを Attr.td に追加しました。
def MyAttr: InheritableAttr {
let Spellings = [GNU<"my_attr">, CXX11<"me", "my_attr">, GCC<"my_attr">, Declspec<"my_attr">];
let Subjects = SubjectList<[Var, Function, CXXRecord]>;
let Documentation = [MyAttrDocs];
}
およびAttrDocs.tdへのドキュメント。クランを再構築した後、使用時に不明な属性の警告が表示されないため、明らかに属性を認識しています。libtoolingを使用して新しい属性クラスにアクセスすることもできますがlet ASTNode = 1
、属性定義に行を追加しても、属性は AST に表示されません。
他に検討する必要があるものはありますか、それとも何が問題なのですか?