Fixed multiline expressions, and removed some dead code.

IOHandlerLinesUpdated() does nothing, and IOHandlerIsInputComplete should be
implemented but isn't.  This means that multiline expressions don't work.  This
patch fixes that.  Test case to follow in the next commit.

llvm-svn: 268970
This commit is contained in:
Sean Callanan 2016-05-09 21:13:27 +00:00
parent a12f6d3c7b
commit f52c40c57f
2 changed files with 16 additions and 24 deletions

View File

@ -451,28 +451,21 @@ CommandObjectExpression::IOHandlerInputComplete (IOHandler &io_handler, std::str
error_sp->Flush();
}
LineStatus
CommandObjectExpression::IOHandlerLinesUpdated (IOHandler &io_handler,
StringList &lines,
uint32_t line_idx,
Error &error)
bool
CommandObjectExpression::IOHandlerIsInputComplete (IOHandler &io_handler,
StringList &lines)
{
if (line_idx == UINT32_MAX)
// An empty lines is used to indicate the end of input
const size_t num_lines = lines.GetSize();
if (num_lines > 0 && lines[num_lines - 1].empty())
{
// Remove the last line from "lines" so it doesn't appear
// in our final expression
// Remove the last empty line from "lines" so it doesn't appear
// in our resulting input and return true to indicate we are done
// getting lines
lines.PopBack();
error.Clear();
return LineStatus::Done;
return true;
}
else if (line_idx + 1 == lines.GetSize())
{
// The last line was edited, if this line is empty, then we are done
// getting our multiple lines.
if (lines[line_idx].empty())
return LineStatus::Done;
}
return LineStatus::Success;
return false;
}
void

View File

@ -82,12 +82,11 @@ protected:
void
IOHandlerInputComplete(IOHandler &io_handler,
std::string &line) override;
virtual LineStatus
IOHandlerLinesUpdated (IOHandler &io_handler,
StringList &lines,
uint32_t line_idx,
Error &error);
bool
IOHandlerIsInputComplete (IOHandler &io_handler,
StringList &lines) override;
bool
DoExecute(const char *command,
CommandReturnObject &result) override;