ebevhan added a comment. In D57464#1386614 <https://reviews.llvm.org/D57464#1386614>, @rjmccall wrote:
> Moving parsed attributes between lists isn't unreasonable if that's what you > have to do; we already do that when processing the ObjC ARC qualifiers. The > ambiguity with function attributes is pretty much inherent. The problem isn't strictly the moving of attributes; this would normally be possible. However, the problem is that the attributes cannot be parsed in the first place, as some attributes take a member variable argument and must therefore be parsed after a class is finalized to get proper member lookup. Doing this deferral in `ParseFunctionDeclarator` is not possible at the moment without passing down a `LateParsedAttributes` from `ParseCXXMemberDeclaratorBeforeInitializer`, and then further passing it into `ParseTypeQualifierListOpt` and `ParseGNUAttributes`. Then the member lookup-dependent attributes can be deferred, the AS attribute will be parsed on the spot, and any other attributes will be added to the `FnAttrs` for the function declarator. I think this would work, but it's a larger change, and it introduces a bit of complexity into the declarator parsing chain (suddenly, ParseDeclarator/ParseDirectDeclarator/ParseFunctionDeclarator will be made aware of whether or not a class is being parsed). Perhaps LateAttrs for a class could be stored in a class parsing scope and fetched directly in ParseFunctionDeclarator? I'm not terribly familiar with the scope handling part of the code. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D57464/new/ https://reviews.llvm.org/D57464 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits