================
@@ -1100,30 +1100,33 @@ Parser::DeclGroupPtrTy
Parser::ParseDeclOrFunctionDefInternal(
// C99 6.7.2.3p6: Handle "struct-or-union identifier;", "enum { X };"
// declaration-specifiers init-declarator-list[opt] ';'
if (Tok.is(tok::semi)) {
- auto LengthOfTSTToken = [](DeclSpec::TST TKind) {
- assert(DeclSpec::isDeclRep(TKind));
- switch(TKind) {
- case DeclSpec::TST_class:
- return 5;
- case DeclSpec::TST_struct:
- return 6;
- case DeclSpec::TST_union:
- return 5;
- case DeclSpec::TST_enum:
- return 4;
- case DeclSpec::TST_interface:
- return 9;
- default:
- llvm_unreachable("we only expect to get the length of the
class/struct/union/enum");
+ // Suggest correct location to fix '[[attrib]] struct' to 'struct
+ // [[attrib]]'
+ SourceLocation CorrectLocationForAttributes{};
+ TypeSpecifierType TKind = DS.getTypeSpecType();
+ if (DeclSpec::isDeclRep(TKind)) {
+ if (TKind == DeclSpec::TST_enum) {
+ if (const auto *ED = dyn_cast_or_null<EnumDecl>(DS.getRepAsDecl())) {
+ if (ED->getIdentifier()) {
+ CorrectLocationForAttributes = ED->getLocation();
+ } else {
+ const auto Begin = ED->getBraceRange().getBegin();
----------------
a-tarasyuk wrote:
@erichkeane Yeah, definitely — thanks for pointing that out. I’ve updated it.
https://github.com/llvm/llvm-project/pull/168092
_______________________________________________
cfe-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits