Allow use of an elaborated type specifier in a _Generic association in C++
Currently, Clang accepts this code in C mode (where the tag is required to be used) but rejects it in C++ mode thinking that the association is defining a new type. void foo(void) { struct S { int a; }; _Generic(something, struct S : 1); } Clang thinks this in C++ because it sees struct S : when parsing the class specifier and decides that must be a type definition (because the colon signifies the presence of a base class type). This patch adds a new declarator context to represent a _Generic association so that we can distinguish these situations properly. Fixes #55562 Differential Revision: https://reviews.llvm.org/D126969
Loading
Please sign in to comment