diff --git a/src/indexer.cc b/src/indexer.cc index acebd3fd..4c7a262c 100644 --- a/src/indexer.cc +++ b/src/indexer.cc @@ -947,11 +947,12 @@ public: } } [[fallthrough]]; + case Decl::Enum: case Decl::Record: - if (auto *rd = dyn_cast(d)) { + if (auto *tag_d = dyn_cast(d)) { if (type->def.detailed_name[0] == '\0' && info->short_name.empty()) { StringRef tag; - switch (rd->getTagKind()) { + switch (tag_d->getTagKind()) { case TTK_Struct: tag = "struct"; break; @@ -968,7 +969,7 @@ public: tag = "enum"; break; } - if (TypedefNameDecl *td = rd->getTypedefNameForAnonDecl()) { + if (TypedefNameDecl *td = tag_d->getTypedefNameForAnonDecl()) { StringRef name = td->getName(); std::string detailed = ("anon " + tag + " " + name).str(); type->def.detailed_name = intern(detailed); @@ -979,7 +980,7 @@ public: type->def.short_name_size = name.size(); } } - if (is_def) + if (is_def && !isa(d)) if (auto *ord = dyn_cast(origD)) collectRecordMembers(*type, ord); }