forked from OSchip/llvm-project
[include-fixer] Correct an incorrecst judgement about prefix scoped qualifiers.
Summary: The judgement that checks whether the fully-qualified name has scoped qualifiers prefix is incorrect. Should always check whether the first matched postion is the beginning position. Reviewers: bkramer Subscribers: cfe-commits Differential Revision: http://reviews.llvm.org/D22343 llvm-svn: 275386
This commit is contained in:
parent
b030411414
commit
0c05e2e4b6
|
@ -42,9 +42,12 @@ std::string createQualifiedNameForReplacement(
|
|||
}
|
||||
// Append the missing stripped qualifiers.
|
||||
std::string FullyQualifiedName = QualifiedName + StrippedQualifiers;
|
||||
auto pos = FullyQualifiedName.find(SymbolScopedQualifiers);
|
||||
return FullyQualifiedName.substr(
|
||||
pos == std::string::npos ? 0 : SymbolScopedQualifiers.size());
|
||||
|
||||
// Skips symbol scoped qualifiers prefix.
|
||||
if (llvm::StringRef(FullyQualifiedName).startswith(SymbolScopedQualifiers))
|
||||
return FullyQualifiedName.substr(SymbolScopedQualifiers.size());
|
||||
|
||||
return FullyQualifiedName;
|
||||
}
|
||||
|
||||
} // anonymous namespace
|
||||
|
|
|
@ -63,6 +63,9 @@ static std::string runIncludeFixer(
|
|||
SymbolInfo("bar", SymbolInfo::SymbolKind::Class, "\"bar.h\"", 1,
|
||||
{{SymbolInfo::ContextType::Namespace, "b"},
|
||||
{SymbolInfo::ContextType::Namespace, "a"}}),
|
||||
SymbolInfo("bar", SymbolInfo::SymbolKind::Class, "\"bar2.h\"", 1,
|
||||
{{SymbolInfo::ContextType::Namespace, "c"},
|
||||
{SymbolInfo::ContextType::Namespace, "a"}}),
|
||||
SymbolInfo("Green", SymbolInfo::SymbolKind::Class, "\"color.h\"", 1,
|
||||
{{SymbolInfo::ContextType::EnumDecl, "Color"},
|
||||
{SymbolInfo::ContextType::Namespace, "b"},
|
||||
|
@ -237,11 +240,15 @@ TEST(IncludeFixer, FixNamespaceQualifiers) {
|
|||
runIncludeFixer("namespace a {\nnamespace b{\nbar b;\n}\n}\n"));
|
||||
EXPECT_EQ("c::b::bar b;\n",
|
||||
runIncludeFixer("c::b::bar b;\n"));
|
||||
EXPECT_EQ("#include \"bar.h\"\nnamespace c {\na::b::bar b;\n}\n",
|
||||
EXPECT_EQ("#include \"bar.h\"\nnamespace d {\na::b::bar b;\n}\n",
|
||||
runIncludeFixer("namespace d {\nbar b;\n}\n"));
|
||||
EXPECT_EQ("#include \"bar2.h\"\nnamespace c {\na::c::bar b;\n}\n",
|
||||
runIncludeFixer("namespace c {\nbar b;\n}\n"));
|
||||
|
||||
// Test nested classes.
|
||||
EXPECT_EQ("#include \"bar.h\"\nnamespace c {\na::b::bar::t b;\n}\n",
|
||||
EXPECT_EQ("#include \"bar.h\"\nnamespace d {\na::b::bar::t b;\n}\n",
|
||||
runIncludeFixer("namespace d {\nbar::t b;\n}\n"));
|
||||
EXPECT_EQ("#include \"bar2.h\"\nnamespace c {\na::c::bar::t b;\n}\n",
|
||||
runIncludeFixer("namespace c {\nbar::t b;\n}\n"));
|
||||
EXPECT_EQ("#include \"bar.h\"\nnamespace a {\nb::bar::t b;\n}\n",
|
||||
runIncludeFixer("namespace a {\nbar::t b;\n}\n"));
|
||||
|
|
Loading…
Reference in New Issue