Skip to content

Commit

Permalink
Add close method to interactive console
Browse files Browse the repository at this point in the history
  • Loading branch information
eed3si9n committed Aug 11, 2020
1 parent a3adcfd commit 7df6749
Show file tree
Hide file tree
Showing 4 changed files with 22 additions and 7 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -327,6 +327,10 @@ trait CompilingSpecification extends AbstractBridgeProviderTestkit {
def withInteractiveConsole[A](f: InteractiveConsoleInterface => A): A =
IO.withTemporaryDirectory { tempDir =>
val repl = interactiveConsole(tempDir.toPath)()
f(repl)
try {
f(repl)
} finally {
repl.close()
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -63,9 +63,13 @@ object InteractiveConsoleInterfaceSpecification
test("it should evaluate postfix op without warning when -language:postfixOps arg passed") {
IO.withTemporaryDirectory { tempDir =>
val repl = interactiveConsole(tempDir.toPath)("-language:postfixOps")
val response = repl.interpret(postfixOpExpression, false)
assert(!response.output.trim.startsWith("warning"))
assert(response.result == InteractiveConsoleResult.Success)
try {
val response = repl.interpret(postfixOpExpression, false)
assert(!response.output.trim.startsWith("warning"))
assert(response.result == InteractiveConsoleResult.Success)
} finally {
repl.close()
}
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ class InteractiveConsoleBridge(
val interpreter: IMain =
new IMain(compilerSettings, replReporter(compilerSettings, new PrintWriter(outWriter)))

def interpret(line: String, synthetic: Boolean): InteractiveConsoleResponse = {
override def interpret(line: String, synthetic: Boolean): InteractiveConsoleResponse = {
clearBuffer()
val r = interpreter.interpret(line, synthetic)
InteractiveConsoleResponse(r, outWriter.toString)
Expand All @@ -59,11 +59,18 @@ class InteractiveConsoleBridge(
outWriter.getBuffer.setLength(0)
}

def reset(): Unit = {
override def reset(): Unit = {
clearBuffer()
interpreter.reset()
}

override def close(): Unit = {
interpreter match {
case c: java.io.Closeable => c.close()
case _ => ()
}
}

private def onError(str: String) = log error Message(str)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

package xsbti;

public interface InteractiveConsoleInterface {
public interface InteractiveConsoleInterface extends java.io.Closeable {
void reset();
InteractiveConsoleResponse interpret(String line, boolean synthetic);
}

0 comments on commit 7df6749

Please sign in to comment.