diff --git a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp index bca5d465f602..f3b29302ee5a 100644 --- a/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp +++ b/clang-tools-extra/clang-tidy/readability/IdentifierNamingCheck.cpp @@ -395,6 +395,9 @@ static StyleKind findStyleKind( if (Decl->isAnonymousStructOrUnion()) return SK_Invalid; + if (!Decl->getCanonicalDecl()->isThisDeclarationADefinition()) + return SK_Invalid; + if (Decl->hasDefinition() && Decl->isAbstract() && NamingStyles[SK_AbstractClass].isSet()) return SK_AbstractClass; diff --git a/clang-tools-extra/test/clang-tidy/readability-identifier-naming.cpp b/clang-tools-extra/test/clang-tidy/readability-identifier-naming.cpp index 5d865e88af53..1e59c6ada9d5 100644 --- a/clang-tools-extra/test/clang-tidy/readability-identifier-naming.cpp +++ b/clang-tools-extra/test/clang-tidy/readability-identifier-naming.cpp @@ -190,6 +190,11 @@ public: // CHECK-MESSAGES: :[[@LINE-1]]:16: warning: invalid case style for class member 'ClassMember_2' // CHECK-FIXES: {{^}} static int ClassMember2;{{$}} }; +class my_class; +// CHECK-MESSAGES: :[[@LINE-1]]:7: warning: invalid case style for class 'my_class' +// CHECK-FIXES: {{^}}class CMyClass;{{$}} + +class my_forward_declared_class; // No warning should be triggered. const int my_class::classConstant = 4; // CHECK-MESSAGES: :[[@LINE-1]]:21: warning: invalid case style for class constant 'classConstant'