[Lldb-commits] [lldb] r372858 - [lldb][NFC] Add CompletionRequest::AppendEmptyArgument

Raphael Isemann via lldb-commits lldb-commits at lists.llvm.org
Wed Sep 25 05:40:01 PDT 2019


Author: teemperor
Date: Wed Sep 25 05:40:01 2019
New Revision: 372858

URL: http://llvm.org/viewvc/llvm-project?rev=372858&view=rev
Log:
[lldb][NFC] Add CompletionRequest::AppendEmptyArgument

This is the only legitimate use we currently have for modifying
a CompletionRequest. Add a utility function for this purpose
and remove the remaining setters which go against the idea of
having an immutable CompletionRequest.

Modified:
    lldb/trunk/include/lldb/Utility/CompletionRequest.h
    lldb/trunk/source/Commands/CommandObjectMultiword.cpp
    lldb/trunk/source/Interpreter/CommandInterpreter.cpp
    lldb/trunk/unittests/Utility/CompletionRequestTest.cpp

Modified: lldb/trunk/include/lldb/Utility/CompletionRequest.h
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/include/lldb/Utility/CompletionRequest.h?rev=372858&r1=372857&r2=372858&view=diff
==============================================================================
--- lldb/trunk/include/lldb/Utility/CompletionRequest.h (original)
+++ lldb/trunk/include/lldb/Utility/CompletionRequest.h Wed Sep 25 05:40:01 2019
@@ -123,11 +123,15 @@ public:
     m_parsed_line.Shift();
   }
 
-  void SetCursorIndex(size_t i) { m_cursor_index = i; }
-  size_t GetCursorIndex() const { return m_cursor_index; }
+  /// Adds an empty argument at the end of the argument list and moves
+  /// the cursor to this new argument.
+  void AppendEmptyArgument() {
+    m_parsed_line.AppendArgument(llvm::StringRef());
+    m_cursor_index++;
+    m_cursor_char_position = 0;
+  }
 
-  void SetCursorCharPosition(size_t pos) { m_cursor_char_position = pos; }
-  size_t GetCursorCharPosition() const { return m_cursor_char_position; }
+  size_t GetCursorIndex() const { return m_cursor_index; }
 
   /// Adds a possible completion string. If the completion was already
   /// suggested before, it will not be added to the list of results. A copy of
@@ -193,7 +197,7 @@ public:
   }
 
   llvm::StringRef GetCursorArgumentPrefix() const {
-    return GetCursorArgument().substr(0, GetCursorCharPosition());
+    return GetCursorArgument().substr(0, m_cursor_char_position);
   }
 
 private:

Modified: lldb/trunk/source/Commands/CommandObjectMultiword.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Commands/CommandObjectMultiword.cpp?rev=372858&r1=372857&r2=372858&view=diff
==============================================================================
--- lldb/trunk/source/Commands/CommandObjectMultiword.cpp (original)
+++ lldb/trunk/source/Commands/CommandObjectMultiword.cpp Wed Sep 25 05:40:01 2019
@@ -195,8 +195,7 @@ void CommandObjectMultiword::HandleCompl
       if (cmd_obj != nullptr) {
         if (request.GetParsedLine().GetArgumentCount() != 1) {
           request.GetParsedLine().Shift();
-          request.SetCursorCharPosition(0);
-          request.GetParsedLine().AppendArgument(llvm::StringRef());
+          request.AppendEmptyArgument();
           cmd_obj->HandleCompletion(request);
         }
       }

Modified: lldb/trunk/source/Interpreter/CommandInterpreter.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/source/Interpreter/CommandInterpreter.cpp?rev=372858&r1=372857&r2=372858&view=diff
==============================================================================
--- lldb/trunk/source/Interpreter/CommandInterpreter.cpp (original)
+++ lldb/trunk/source/Interpreter/CommandInterpreter.cpp Wed Sep 25 05:40:01 2019
@@ -1779,9 +1779,7 @@ void CommandInterpreter::HandleCompletio
         look_for_subcommand = true;
         new_matches.DeleteStringAtIndex(0);
         new_descriptions.DeleteStringAtIndex(0);
-        request.GetParsedLine().AppendArgument(llvm::StringRef());
-        request.SetCursorIndex(request.GetCursorIndex() + 1U);
-        request.SetCursorCharPosition(0);
+        request.AppendEmptyArgument();
       }
     }
     request.AddCompletions(new_matches, new_descriptions);

Modified: lldb/trunk/unittests/Utility/CompletionRequestTest.cpp
URL: http://llvm.org/viewvc/llvm-project/lldb/trunk/unittests/Utility/CompletionRequestTest.cpp?rev=372858&r1=372857&r2=372858&view=diff
==============================================================================
--- lldb/trunk/unittests/Utility/CompletionRequestTest.cpp (original)
+++ lldb/trunk/unittests/Utility/CompletionRequestTest.cpp Wed Sep 25 05:40:01 2019
@@ -15,7 +15,6 @@ TEST(CompletionRequest, Constructor) {
   std::string command = "a bad c";
   const unsigned cursor_pos = 3;
   const size_t arg_index = 1;
-  const size_t arg_cursor_pos = 1;
   StringList matches;
   CompletionResult result;
 
@@ -25,10 +24,9 @@ TEST(CompletionRequest, Constructor) {
   EXPECT_STREQ(request.GetRawLine().str().c_str(), command.c_str());
   EXPECT_EQ(request.GetRawCursorPos(), cursor_pos);
   EXPECT_EQ(request.GetCursorIndex(), arg_index);
-  EXPECT_EQ(request.GetCursorCharPosition(), arg_cursor_pos);
 
   EXPECT_EQ(request.GetParsedLine().GetArgumentCount(), 2u);
-  EXPECT_STREQ(request.GetParsedLine().GetArgumentAtIndex(1), "b");
+  EXPECT_EQ(request.GetCursorArgumentPrefix().str(), "b");
 }
 
 TEST(CompletionRequest, FakeLastArg) {
@@ -43,10 +41,9 @@ TEST(CompletionRequest, FakeLastArg) {
   EXPECT_STREQ(request.GetRawLine().str().c_str(), command.c_str());
   EXPECT_EQ(request.GetRawCursorPos(), cursor_pos);
   EXPECT_EQ(request.GetCursorIndex(), 3U);
-  EXPECT_EQ(request.GetCursorCharPosition(), 0U);
 
   EXPECT_EQ(request.GetParsedLine().GetArgumentCount(), 4U);
-  EXPECT_STREQ(request.GetParsedLine().GetArgumentAtIndex(3), "");
+  EXPECT_EQ(request.GetCursorArgumentPrefix().str(), "");
 }
 
 TEST(CompletionRequest, TryCompleteCurrentArgGood) {
@@ -90,7 +87,6 @@ TEST(CompletionRequest, ShiftArguments)
   std::string command = "a bad c";
   const unsigned cursor_pos = 3;
   const size_t arg_index = 1;
-  const size_t arg_cursor_pos = 1;
   StringList matches;
   CompletionResult result;
 
@@ -100,7 +96,6 @@ TEST(CompletionRequest, ShiftArguments)
   EXPECT_STREQ(request.GetRawLine().str().c_str(), command.c_str());
   EXPECT_EQ(request.GetRawCursorPos(), cursor_pos);
   EXPECT_EQ(request.GetCursorIndex(), arg_index);
-  EXPECT_EQ(request.GetCursorCharPosition(), arg_cursor_pos);
 
   EXPECT_EQ(request.GetParsedLine().GetArgumentCount(), 2u);
   EXPECT_STREQ(request.GetParsedLine().GetArgumentAtIndex(1), "b");
@@ -112,13 +107,10 @@ TEST(CompletionRequest, ShiftArguments)
   EXPECT_STREQ(request.GetRawLine().str().c_str(), command.c_str());
   EXPECT_EQ(request.GetRawCursorPos(), cursor_pos);
 
-  // Relative cursor position in arg is identical.
-  EXPECT_EQ(request.GetCursorCharPosition(), arg_cursor_pos);
-
   // Partially parsed line and cursor should be updated.
   EXPECT_EQ(request.GetCursorIndex(), arg_index - 1U);
   EXPECT_EQ(request.GetParsedLine().GetArgumentCount(), 1u);
-  EXPECT_STREQ(request.GetParsedLine().GetArgumentAtIndex(0), "b");
+  EXPECT_EQ(request.GetCursorArgumentPrefix().str(), "b");
 }
 
 TEST(CompletionRequest, DuplicateFiltering) {




More information about the lldb-commits mailing list