2016-07-15 17 views
2

に表示されていない属性は、公式マニュアルに記載されているよう私が打ち鳴らすでカスタム属性を実装: http://clang.llvm.org/docs/InternalsManual.html#how-to-add-an-attribute打ち鳴らす:カスタムAST

をだから私は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になります。 clangを再構築した後は、属性を知っているので、属性を知っていることは明らかです。 libtoolingで新しい属性クラスにアクセスすることもできますが、属性定義に行let ASTNode = 1を追加しても、属性はASTに表示されません。

他に何か検討する必要があるのか​​、それとも問題になる可能性がありますか?

答えて

1

は、残念ながら、これは私のせいだった、行方不明のステップは、セクション「定型」のマニュアルに記載されて:私はちょうど新しいケースを追加することによって、SemaDeclAttr.cpp内の属性の意味処理を実装する必要がありました:

case AttributeList::AT_MyAttr: 
handleSimpleAttribute<MyAttrAttr>(S, D, Attr); 
break; 

だから今はうまく動作します。

関連する問題