jonathan.protzenko added a comment. In D86169#2241830 <https://reviews.llvm.org/D86169#2241830>, @aaron.ballman wrote:
>> - Upon encountering `[[ attr(X) ]]` where `attr` is a plugin-handled >> attribute: clang parses `X` as token soup, only caring about finding a >> matching parenthesis > > Just to be clear, what you mean is to lex all of the tokens comprising `X` > and store them off for later? Correct. >> Does this stand any chance of working? > > This is along the same lines of what I was thinking, but there is one > potential snag. Clang layers our library components and Sema should never > refer back to the Parser (it doesn't link the library in). Because you have > an odd requirement where you need to do further parsing during the semantics > stage, you may run into awkwardness from this. Also, you may have to worry > about needing this functionality recursively. e.g., `int x [[your_attr(int y > [[your_attr(int z;)]];)]];` which could be... interesting. I guess I'd have to i) call the action to create, say, a Decl, then later ii) call the plugin and extend the Decl with fresh attributes, assuming the attribute vector on the Decl can be grown *after* the Decl is created -- hopefully this can be driven from the parser, without a back-edge in the dependency graph? Or maybe I'm missing something? Do you have any example somewhere of how to store tokens and re-fill the lex buffer with them later on? This is much more involved than my current patch so may take me a while to figure out. >> Bonus question: seeing `diagAppertainsToDecl`, the name of this function led >> me to believe that for now, plugins could only handle attributes attached to >> declarations. Is this the case? > > Correct, the plugin system does not yet handle type or statement attributes > (it was focusing on declaration attributes first, which are the lion's share > of attributes in Clang). Ok, I was asking because if there's no plans to handle type or statement attributes via a plugin, then we're somewhat over-engineering this. Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D86169/new/ https://reviews.llvm.org/D86169 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits