diff options
author | Kadir Cetinkaya <kadircet@google.com> | 2019-09-05 08:11:21 +0000 |
---|---|---|
committer | Kadir Cetinkaya <kadircet@google.com> | 2019-09-05 08:11:21 +0000 |
commit | 4a16c295519319242f496f8206589f2a6343b0e2 (patch) | |
tree | 48d0520423b549faefb6c360d5ce1c192cd91299 | |
parent | caa42792f33d68b7706c00d217e2d8b239ab0985 (diff) | |
download | bcm5719-llvm-4a16c295519319242f496f8206589f2a6343b0e2.tar.gz bcm5719-llvm-4a16c295519319242f496f8206589f2a6343b0e2.zip |
[clang-tidy] Fix definitions in headers check to respect qualifiers
Summary:
The check was generating a fix without taking qualifiers in return type
into account. This patch changes the insertion location to be before qualifers.
Reviewers: gribozavr
Subscribers: xazax.hun, cfe-commits
Tags: #clang
Differential Revision: https://reviews.llvm.org/D67213
llvm-svn: 371022
-rw-r--r-- | clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp | 3 | ||||
-rw-r--r-- | clang-tools-extra/test/clang-tidy/misc-definitions-in-headers.hpp | 12 |
2 files changed, 13 insertions, 2 deletions
diff --git a/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp b/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp index a496e3b292f..1d41edd2083 100644 --- a/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp +++ b/clang-tools-extra/clang-tidy/misc/DefinitionsInHeadersCheck.cpp @@ -132,8 +132,7 @@ void DefinitionsInHeadersCheck::check(const MatchFinder::MatchResult &Result) { << IsFullSpec << FD; diag(FD->getLocation(), /*FixDescription=*/"make as 'inline'", DiagnosticIDs::Note) - << FixItHint::CreateInsertion(FD->getReturnTypeSourceRange().getBegin(), - "inline "); + << FixItHint::CreateInsertion(FD->getInnerLocStart(), "inline "); } else if (const auto *VD = dyn_cast<VarDecl>(ND)) { // Static data members of a class template are allowed. if (VD->getDeclContext()->isDependentContext() && VD->isStaticDataMember()) diff --git a/clang-tools-extra/test/clang-tidy/misc-definitions-in-headers.hpp b/clang-tools-extra/test/clang-tidy/misc-definitions-in-headers.hpp index 662b0619cdc..25009ebe2bb 100644 --- a/clang-tools-extra/test/clang-tidy/misc-definitions-in-headers.hpp +++ b/clang-tools-extra/test/clang-tidy/misc-definitions-in-headers.hpp @@ -180,3 +180,15 @@ int CD<T, int>::f() { // OK: partial template specialization. constexpr int k = 1; // OK: constexpr variable has internal linkage. constexpr int f10() { return 0; } // OK: constexpr function definition. + +const int f11() { return 0; } +// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: function 'f11' defined in a header file; +// CHECK-FIXES: inline const int f11() { return 0; } + +template <typename T> +const T f12(); + +template <> +const int f12() { return 0; } +// CHECK-MESSAGES: :[[@LINE-1]]:11: warning: full function template specialization 'f12<int>' defined in a header file; +// CHECK-FIXES: inline const int f12() { return 0; } |