Skip to content

Commit 8f5afa7

Browse files
authored
Merge pull request #678 from Teemperor/ChangeREPLForSwift
Backport REPL changes for Swift REPL completion fix
2 parents c7e3ba3 + 43978f8 commit 8f5afa7

File tree

5 files changed

+12
-12
lines changed

5 files changed

+12
-12
lines changed

lldb/include/lldb/Expression/REPL.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -130,8 +130,8 @@ class REPL : public IOHandlerDelegate {
130130
lldb::ValueObjectSP &valobj_sp,
131131
ExpressionVariable *var = nullptr) = 0;
132132

133-
virtual int CompleteCode(const std::string &current_code,
134-
StringList &matches) = 0;
133+
virtual void CompleteCode(const std::string &current_code,
134+
CompletionRequest &request) = 0;
135135

136136
OptionGroupFormat m_format_options = OptionGroupFormat(lldb::eFormatDefault);
137137
OptionGroupValueObjectDisplay m_varobj_options;

lldb/include/lldb/Utility/CompletionRequest.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ class CompletionRequest {
104104

105105
llvm::StringRef GetRawLine() const { return m_command; }
106106
llvm::StringRef GetRawLineUntilCursor() const {
107-
return m_command.substr(0, m_cursor_index);
107+
return m_command.substr(0, m_raw_cursor_pos);
108108
}
109109

110110
unsigned GetRawCursorPos() const { return m_raw_cursor_pos; }

lldb/packages/Python/lldbsuite/test/lldbpexpect.py

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22
from __future__ import absolute_import
33

44
# System modules
5+
import os
56
import sys
67

78
# Third-party modules
@@ -30,16 +31,21 @@ def expect_prompt(self):
3031
def launch(self, executable=None, extra_args=None, timeout=30, dimensions=None):
3132
logfile = getattr(sys.stdout, 'buffer',
3233
sys.stdout) if self.TraceOn() else None
34+
3335
args = ['--no-lldbinit', '--no-use-colors']
3436
for cmd in self.setUpCommands():
3537
args += ['-O', cmd]
3638
if executable is not None:
3739
args += ['--file', executable]
3840
if extra_args is not None:
3941
args.extend(extra_args)
42+
43+
env = dict(os.environ)
44+
env["TERM"]="vt100"
45+
4046
self.child = pexpect.spawn(
4147
lldbtest_config.lldbExec, args=args, logfile=logfile,
42-
timeout=timeout, dimensions=dimensions)
48+
timeout=timeout, dimensions=dimensions, env=env)
4349
self.expect_prompt()
4450
for cmd in self.setUpCommands():
4551
self.child.expect_exact(cmd)

lldb/source/Expression/REPL.cpp

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -481,14 +481,7 @@ void REPL::IOHandlerComplete(IOHandler &io_handler,
481481
current_code.append("\n");
482482
current_code += request.GetRawLineUntilCursor();
483483

484-
StringList matches;
485-
int result = CompleteCode(current_code, matches);
486-
if (result == -2) {
487-
assert(matches.GetSize() == 1);
488-
request.AddCompletion(matches.GetStringAtIndex(0), "",
489-
CompletionMode::RewriteLine);
490-
} else
491-
request.AddCompletions(matches);
484+
CompleteCode(current_code, request);
492485
}
493486

494487
bool QuitCommandOverrideCallback(void *baton, const char **argv) {

lldb/unittests/Utility/CompletionRequestTest.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ TEST(CompletionRequest, Constructor) {
2626
EXPECT_EQ(request.GetRawCursorPos(), cursor_pos);
2727
EXPECT_EQ(request.GetCursorIndex(), arg_index);
2828
EXPECT_EQ(request.GetCursorCharPosition(), arg_cursor_pos);
29+
EXPECT_EQ(request.GetRawLineUntilCursor(), "a b");
2930

3031
EXPECT_EQ(request.GetPartialParsedLine().GetArgumentCount(), 2u);
3132
EXPECT_STREQ(request.GetPartialParsedLine().GetArgumentAtIndex(1), "b");

0 commit comments

Comments
 (0)