[StringList] Change LongestCommonPrefix API
authorJonas Devlieghere <jonas@devlieghere.com>
Wed, 31 Jul 2019 03:26:10 +0000 (03:26 +0000)
committerJonas Devlieghere <jonas@devlieghere.com>
Wed, 31 Jul 2019 03:26:10 +0000 (03:26 +0000)
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

lldb/include/lldb/Utility/StringList.h
lldb/source/Core/IOHandler.cpp
lldb/source/Interpreter/CommandInterpreter.cpp
lldb/source/Utility/StringList.cpp
lldb/unittests/Utility/StringListTest.cpp

index 68c1f87..22b5b2c 100644 (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);
 
index 203b9e8..51cae59 100644 (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
index 379251b..2bc4162 100644 (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);
 
index fb0d9be..03249e0 100644 (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) {
index 7d62631..a089080 100644 (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);
 }