[StringList] Change LongestCommonPrefix API

When investigating a completion bug I got confused by the API.
LongestCommonPrefix finds the longest common prefix of the strings in
the string list. Instead of returning that string through an output
argument, just return it by value.

llvm-svn: 367384
This commit is contained in:
Jonas Devlieghere
2019-07-31 03:26:10 +00:00
parent e825b834ec
commit 175f093090
5 changed files with 11 additions and 19 deletions

View File

@@ -69,7 +69,7 @@ public:
void Clear();
void LongestCommonPrefix(std::string &common_prefix);
std::string LongestCommonPrefix();
void InsertStringAtIndex(size_t idx, const std::string &str);

View File

@@ -243,8 +243,7 @@ int IOHandlerDelegate::IOHandlerComplete(
size_t num_matches = request.GetNumberOfMatches();
if (num_matches > 0) {
std::string common_prefix;
matches.LongestCommonPrefix(common_prefix);
std::string common_prefix = matches.LongestCommonPrefix();
const size_t partial_name_len = request.GetCursorArgumentPrefix().size();
// If we matched a unique single command, add a space... Only do this if

View File

@@ -1857,8 +1857,7 @@ int CommandInterpreter::HandleCompletion(
// element 0, otherwise put an empty string in element 0.
std::string command_partial_str = request.GetCursorArgumentPrefix().str();
std::string common_prefix;
matches.LongestCommonPrefix(common_prefix);
std::string common_prefix = matches.LongestCommonPrefix();
const size_t partial_name_len = command_partial_str.size();
common_prefix.erase(0, partial_name_len);

View File

@@ -100,10 +100,9 @@ void StringList::Join(const char *separator, Stream &strm) {
void StringList::Clear() { m_strings.clear(); }
void StringList::LongestCommonPrefix(std::string &common_prefix) {
common_prefix.clear();
std::string StringList::LongestCommonPrefix() {
if (m_strings.empty())
return;
return {};
auto args = llvm::makeArrayRef(m_strings);
llvm::StringRef prefix = args.front();
@@ -115,7 +114,7 @@ void StringList::LongestCommonPrefix(std::string &common_prefix) {
}
prefix = prefix.take_front(count);
}
common_prefix = prefix;
return prefix.str();
}
void StringList::InsertStringAtIndex(size_t idx, const char *str) {

View File

@@ -214,8 +214,7 @@ TEST(StringListTest, SplitIntoLinesEmpty) {
TEST(StringListTest, LongestCommonPrefixEmpty) {
StringList s;
std::string prefix = "this should be cleared";
s.LongestCommonPrefix(prefix);
std::string prefix = s.LongestCommonPrefix();
EXPECT_EQ("", prefix);
}
@@ -226,8 +225,7 @@ TEST(StringListTest, LongestCommonPrefix) {
s.AppendString("foo");
s.AppendString("foozar");
std::string prefix = "this should be cleared";
s.LongestCommonPrefix(prefix);
std::string prefix = s.LongestCommonPrefix();
EXPECT_EQ("foo", prefix);
}
@@ -235,8 +233,7 @@ TEST(StringListTest, LongestCommonPrefixSingleElement) {
StringList s;
s.AppendString("foo");
std::string prefix = "this should be cleared";
s.LongestCommonPrefix(prefix);
std::string prefix = s.LongestCommonPrefix();
EXPECT_EQ("foo", prefix);
}
@@ -245,8 +242,7 @@ TEST(StringListTest, LongestCommonPrefixDuplicateElement) {
s.AppendString("foo");
s.AppendString("foo");
std::string prefix = "this should be cleared";
s.LongestCommonPrefix(prefix);
std::string prefix = s.LongestCommonPrefix();
EXPECT_EQ("foo", prefix);
}
@@ -257,8 +253,7 @@ TEST(StringListTest, LongestCommonPrefixNoPrefix) {
s.AppendString("2foo");
s.AppendString("3foozar");
std::string prefix = "this should be cleared";
s.LongestCommonPrefix(prefix);
std::string prefix = s.LongestCommonPrefix();
EXPECT_EQ("", prefix);
}