[clang-tidy] Fix invalid fixit for readability-static-accessed-through-instance (bug 40544)

Summary:
Fixed https://bugs.llvm.org/show_bug.cgi?id=40544
Before, we would generate a fixit like `(anonymous namespace)::Foo::fun();` for
the added test case.

Reviewers: aaron.ballman, alexfh, xazax.hun

Subscribers: rnkovacs, cfe-commits

Tags: #clang, #clang-tools-extra

Differential Revision: https://reviews.llvm.org/D61874

llvm-svn: 360698
This commit is contained in:
Matthias Gehre 2019-05-14 18:23:10 +00:00
parent 80c6e79602
commit 094584cd52
2 changed files with 29 additions and 0 deletions

View File

@ -67,6 +67,7 @@ void StaticAccessedThroughInstanceCheck::check(
const ASTContext *AstContext = Result.Context;
PrintingPolicy PrintingPolicyWithSupressedTag(AstContext->getLangOpts());
PrintingPolicyWithSupressedTag.SuppressTagKeyword = true;
PrintingPolicyWithSupressedTag.SuppressUnwrittenScope = true;
std::string BaseTypeName =
BaseType.getAsString(PrintingPolicyWithSupressedTag);

View File

@ -220,3 +220,31 @@ int func(Qptr qp) {
qp->y = 10; // OK, the overloaded operator might have side-effects.
qp->K = 10; //
}
namespace {
struct Anonymous {
static int I;
};
}
void use_anonymous() {
Anonymous Anon;
Anon.I;
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: static member
// CHECK-FIXES: {{^}} Anonymous::I;{{$}}
}
namespace Outer {
inline namespace Inline {
struct S {
static int I;
};
}
}
void use_inline() {
Outer::S V;
V.I;
// CHECK-MESSAGES: :[[@LINE-1]]:3: warning: static member
// CHECK-FIXES: {{^}} Outer::S::I;{{$}}
}