forked from OSchip/llvm-project
[include-fixer] Don't add qualifiers to symbols which have global scope operator.
Reviewers: bkramer Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D22127 llvm-svn: 274848
This commit is contained in:
parent
46c4c3d31c
commit
5d9482d887
|
@ -34,6 +34,10 @@ tooling::Replacement
|
|||
IncludeFixerContext::createSymbolReplacement(llvm::StringRef FilePath,
|
||||
size_t Idx) {
|
||||
assert(Idx < MatchedSymbols.size());
|
||||
// No need to add missing qualifiers if SymbolIndentifer has a global scope
|
||||
// operator "::".
|
||||
if (getSymbolIdentifier().startswith("::"))
|
||||
return tooling::Replacement();
|
||||
std::string QualifiedName = MatchedSymbols[Idx].getQualifiedName();
|
||||
// For nested classes, the qualified name constructed from database misses
|
||||
// some stripped qualifiers, because when we search a symbol in database,
|
||||
|
|
|
@ -30,6 +30,7 @@ public:
|
|||
/// symbol.
|
||||
tooling::Replacement createSymbolReplacement(llvm::StringRef FilePath,
|
||||
size_t Idx = 0);
|
||||
|
||||
/// \brief Get symbol name.
|
||||
llvm::StringRef getSymbolIdentifier() const { return SymbolIdentifier; }
|
||||
|
||||
|
|
|
@ -242,18 +242,18 @@ TEST(IncludeFixer, FixNamespaceQualifiers) {
|
|||
EXPECT_EQ("#include \"bar.h\"\nnamespace a {\nb::bar::t b;\n}\n",
|
||||
runIncludeFixer("namespace a {\nbar::t b;\n}\n"));
|
||||
|
||||
EXPECT_EQ(
|
||||
"#include \"color.h\"\nint test = a::b::Green;\n",
|
||||
runIncludeFixer("int test = Green;\n"));
|
||||
EXPECT_EQ("#include \"color.h\"\nint test = a::b::Green;\n",
|
||||
runIncludeFixer("int test = Green;\n"));
|
||||
EXPECT_EQ("#include \"color.h\"\nnamespace d {\nint test = a::b::Green;\n}\n",
|
||||
runIncludeFixer("namespace d {\nint test = Green;\n}\n"));
|
||||
EXPECT_EQ("#include \"color.h\"\nnamespace a {\nint test = b::Green;\n}\n",
|
||||
runIncludeFixer("namespace a {\nint test = Green;\n}\n"));
|
||||
|
||||
// FIXME: Fix-namespace should not fix the global qualified identifier.
|
||||
EXPECT_EQ(
|
||||
"#include \"bar.h\"\na::b::bar b;\n",
|
||||
runIncludeFixer("::a::b::bar b;\n"));
|
||||
// Test global scope operator.
|
||||
EXPECT_EQ("#include \"bar.h\"\n::a::b::bar b;\n",
|
||||
runIncludeFixer("::a::b::bar b;\n"));
|
||||
EXPECT_EQ("#include \"bar.h\"\nnamespace a {\n::a::b::bar b;\n}\n",
|
||||
runIncludeFixer("namespace a {\n::a::b::bar b;\n}\n"));
|
||||
}
|
||||
|
||||
} // namespace
|
||||
|
|
Loading…
Reference in New Issue