giulianobelinassi added subscribers: erichkeane, giulianobelinassi. giulianobelinassi added a comment.
This patch do not address attributes in variables nor the __declspec case, as D141714 <https://reviews.llvm.org/D141714> do. His patch looks cleaner and I can surely coordinate with @strimo378 to also fix those cases, but I want an answer to the tblgen question first to see if we decide to drop the tblgen solution or not. ================ Comment at: clang/lib/AST/DeclPrinter.cpp:259 + case attr::Final: + case attr::Override: + return AttrLocation::AfterDecl; ---------------- @aaron.ballman @erichkeane Is this enough to describe the position of the attribute kind, or should it go for a tblgen approach, as I did in D141714? This here looks much cleaner than the tblgen IMHO. ================ Comment at: clang/lib/AST/DeclPrinter.cpp:267 + // C2x/C++11-style attributes must appear before the declarator. + if (S == Attr::AS_CXX11 || S == Attr::AS_C2x) + return AttrLocation::BeforeDecl; ---------------- You can use A->isStandardAttributeSyntax() ================ Comment at: clang/lib/AST/DeclPrinter.cpp:280 -void DeclPrinter::prettyPrintPragmas(Decl *D) { +void DeclPrinter::prettyPrintAttributes(Decl *D, AttrLocation AL) { if (Policy.PolishForDeclaration) ---------------- I am pretty sure this function when called with AttrLocation::BeforeDecl will print an extra space before it prints out the attribute. Unfortunately to fix this it needs to be print into a string and then remove the first space from the generated string. Or do something more clever and patch printPretty so it does not do that. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D157394/new/ https://reviews.llvm.org/D157394 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits