Index: clang-tools-extra/trunk/clang-tidy/misc/DefinitionsInHeadersCheck.cpp =================================================================== --- clang-tools-extra/trunk/clang-tidy/misc/DefinitionsInHeadersCheck.cpp +++ clang-tools-extra/trunk/clang-tidy/misc/DefinitionsInHeadersCheck.cpp @@ -124,13 +124,16 @@ } } - bool is_full_spec = FD->getTemplateSpecializationKind() != TSK_Undeclared; + bool IsFullSpec = FD->getTemplateSpecializationKind() != TSK_Undeclared; diag(FD->getLocation(), "%select{function|full function template specialization}0 %1 defined " "in a header file; function definitions in header files can lead to " "ODR violations") - << is_full_spec << FD << FixItHint::CreateInsertion( - FD->getReturnTypeSourceRange().getBegin(), "inline "); + << IsFullSpec << FD; + diag(FD->getLocation(), /*FixDescription=*/"make as 'inline'", + DiagnosticIDs::Note) + << FixItHint::CreateInsertion(FD->getReturnTypeSourceRange().getBegin(), + "inline "); } else if (const auto *VD = dyn_cast(ND)) { // Static data members of a class template are allowed. if (VD->getDeclContext()->isDependentContext() && VD->isStaticDataMember()) Index: clang-tools-extra/trunk/test/clang-tidy/misc-definitions-in-headers.hpp =================================================================== --- clang-tools-extra/trunk/test/clang-tidy/misc-definitions-in-headers.hpp +++ clang-tools-extra/trunk/test/clang-tidy/misc-definitions-in-headers.hpp @@ -2,6 +2,7 @@ int f() { // CHECK-MESSAGES: :[[@LINE-1]]:5: warning: function 'f' defined in a header file; function definitions in header files can lead to ODR violations [misc-definitions-in-headers] +// CHECK-MESSAGES: :[[@LINE-2]]:5: note: make as 'inline' // CHECK-FIXES: inline int f() { return 1; }