[clang-tools-extra] 85fca8f - [clang-tidy] Fix crash in readability-identifier-naming (#220221)
via cfe-commits
cfe-commits at lists.llvm.org
Tue Sep 22 22:41:23 PDT 2026
Author: Purna Chandra
Date: 2026-09-23T13:41:17+08:00
New Revision: 85fca8f1f49103bd709e33a308356c67f04de2be
URL: https://github.com/llvm/llvm-project/commit/85fca8f1f49103bd709e33a308356c67f04de2be
DIFF: https://github.com/llvm/llvm-project/commit/85fca8f1f49103bd709e33a308356c67f04de2be.diff
LOG: [clang-tidy] Fix crash in readability-identifier-naming (#220221)
This PR contains the fix for the `readability-identifier-naming` crash.
The crash happens because the checker calls `hasMemberName` on a base
class without checking if that base class actually has a definition
first (like when it's just forward-declared). I added a
`RD->hasDefinition()` guard to fix it.
Fixes #213948
Added:
Modified:
clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
clang-tools-extra/docs/ReleaseNotes.md
clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming.cpp
Removed:
################################################################################
diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
index 279a7f8df5abf..396dcc57139d2 100644
--- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
+++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp
@@ -1279,7 +1279,7 @@ StyleKind IdentifierNamingCheck::findStyleKind(
// necessary even if it's not an override. e.g. CRTP.
for (const CXXBaseSpecifier &Base : Decl->getParent()->bases())
if (const auto *RD = Base.getType()->getAsCXXRecordDecl();
- RD && RD->hasMemberName(Decl->getDeclName()))
+ RD && RD->hasDefinition() && RD->hasMemberName(Decl->getDeclName()))
return SK_Invalid;
if (Decl->isConstexpr() && NamingStyles[SK_ConstexprMethod])
diff --git a/clang-tools-extra/docs/ReleaseNotes.md b/clang-tools-extra/docs/ReleaseNotes.md
index 4973bef42e3bf..833638a47abc6 100644
--- a/clang-tools-extra/docs/ReleaseNotes.md
+++ b/clang-tools-extra/docs/ReleaseNotes.md
@@ -270,6 +270,8 @@ infrastructure are described first, followed by tool-specific sections.
- Improved {doc}`readability-identifier-naming
<clang-tidy/checks/readability/identifier-naming>` check:
+ - Fixed a crash when a class inherits from a forward-declared base class.
+
- Fixed a crash when checking forward-declared classes with
{option}`DefaultHungarianPrefix` enabled.
diff --git a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming.cpp b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming.cpp
index d00235aa6f28f..a4b86e6f4af10 100644
--- a/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming.cpp
+++ b/clang-tools-extra/test/clang-tidy/checkers/readability/identifier-naming.cpp
@@ -836,3 +836,11 @@ Some_struct g_s1{ .SomeMember = 1 };
// CHECK-FIXES: Some_struct g_s1{ .some_member = 1 };
Some_struct g_s2{.SomeMember=1};
// CHECK-FIXES: Some_struct g_s2{.some_member=1};
+
+template<class t_t>
+struct X {
+ struct B;
+ struct A : public B {
+ virtual void v_Foo() { }
+ };
+};
More information about the cfe-commits
mailing list