[clang] [Clang] adjust caret placement for the suggested attribute location for enum class (PR #168092)

Oleksandr T. via cfe-commits cfe-commits at lists.llvm.org
Tue Nov 18 06:52:23 PST 2025


================
@@ -1100,30 +1100,32 @@ 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");
+    auto GetAdjustedAttrsLoc = [&]() {
+      auto TKind = DS.getTypeSpecType();
+      if (!DeclSpec::isDeclRep(TKind))
+        return SourceLocation();
+
+      if (TKind == DeclSpec::TST_enum) {
----------------
a-tarasyuk wrote:

@AaronBallman, whenever you have time, could you please review these changes?

https://github.com/llvm/llvm-project/pull/168092


More information about the cfe-commits mailing list