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() { } + }; +}; _______________________________________________ cfe-commits mailing list [email protected] https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
