Fix the repl when stdout is redirected.

The repl is sometimes failing to write anything to stdout when it is
being redirected to a file (as in test/Interpreter/repl.swift).  it
looks like an editline bug on 10.8.  explicitly fflushing stdout
seems to help.


Swift SVN r4669
This commit is contained in:
Chris Lattner
2013-04-10 23:32:27 +00:00
parent af3b55c1f0
commit aa5a195477

View File

@@ -457,6 +457,13 @@ public:
~REPLInput() {
if (ShowColors)
llvm::outs().resetColor();
// FIXME: This should not be needed, but seems to help when stdout is being
// redirected to a file. Perhaps there is some underlying editline bug
// where it is setting stdout into some weird state and not restoring it
// with el_end?
llvm::outs().flush();
fflush(stdout);
el_end(e);
}
@@ -507,8 +514,8 @@ public:
}
// Enter the line into the line history.
// FIXME: We should probably be a bit more clever here about which lines we
// put into the history and when we put them in.
// FIXME: We should probably be a bit more clever here about which lines
// we put into the history and when we put them in.
HistEventW ev;
history_w(h, &ev, H_ENTER, WLine);
@@ -576,7 +583,8 @@ private:
if (ShowColors) {
const char *colorCode =
llvm::sys::Process::OutputColor(llvm::raw_ostream::YELLOW, false, false);
llvm::sys::Process::OutputColor(llvm::raw_ostream::YELLOW,
false, false);
if (colorCode)
appendEscapeSequence(PromptString, colorCode);
}