[PATCH] D41553: Support parsing double square-bracket attributes in ObjC
John McCall via Phabricator via cfe-commits
cfe-commits at lists.llvm.org
Tue Jan 2 19:29:40 PST 2018
rjmccall added inline comments.
Comment at: include/clang/Basic/Attr.td:239
+ bit IncludeC = includeC;
I have no objection to allowing ObjC attributes to be spelled in [[clang::objc_whatever]] style. We can debate giving them a more appropriate standard name in the objc namespace at a later time — or even the primary namespace, if we really want to flex our Somewhat Major Language muscles.
I feel like this IncludeC is not the best name for this tablegen property. Perhaps AllowInC?
Also, a random positional 1 argument is pretty obscure TableGen design. Do we really expect to be making very many attributes that intentionally disallow C2x? What would these be, just C++-specific attributes without C analogues? It doesn't seem important to prohibit those at the parsing level rather than at the semantic level, since, after all, we are still allowing the GNU-style spelling, and these would still qualified with ``clang::``.
I would suggest standardizing in the opposite direction: instead of forcing attributes to opt in to being allowed in C, we should make attributes that we really don't want to allow in the C2x [[clang::]] namespace be explicit about it. If there are a lot of C++-specific attributes like that, we can make a ClangCXXOnly subclass.
More information about the cfe-commits