summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2008-01-24 15:09:09 +0000
committermichelou <michelou@epfl.ch>2008-01-24 15:09:09 +0000
commit8d886ca8fbf6e55fc1ab360e460df0c54c9bd53b (patch)
treec2292e4356ed29a5bda828d72a8d0cd4721ee152
parent3e249d85e40b5cf7795a4cdd5f64c0e68e5a4166 (diff)
downloadscala-8d886ca8fbf6e55fc1ab360e460df0c54c9bd53b.tar.gz
scala-8d886ca8fbf6e55fc1ab360e460df0c54c9bd53b.tar.bz2
scala-8d886ca8fbf6e55fc1ab360e460df0c54c9bd53b.zip
made println platform-independent in interpreter
-rw-r--r--src/compiler/scala/tools/nsc/Interpreter.scala25
-rw-r--r--src/compiler/scala/tools/nsc/InterpreterLoop.scala11
-rw-r--r--src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala11
-rw-r--r--src/compiler/scala/tools/nsc/reporters/Reporter.scala10
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Contexts.scala23
5 files changed, 41 insertions, 39 deletions
diff --git a/src/compiler/scala/tools/nsc/Interpreter.scala b/src/compiler/scala/tools/nsc/Interpreter.scala
index 07b029c1fe..46420c4b6d 100644
--- a/src/compiler/scala/tools/nsc/Interpreter.scala
+++ b/src/compiler/scala/tools/nsc/Interpreter.scala
@@ -6,7 +6,7 @@
package scala.tools.nsc
-import java.io.{File, PrintWriter, StringWriter}
+import java.io.{File, PrintWriter, StringWriter, Writer}
import java.lang.{Class, ClassLoader}
import java.net.{URL, URLClassLoader}
@@ -62,7 +62,7 @@ class Interpreter(val settings: Settings, out: PrintWriter) {
/* If the interpreter is running on pre-jvm-1.5 JVM,
it is necessary to force the target setting to jvm-1.4 */
- val major = System.getProperty("java.class.version").split("\\.")(0)
+ private val major = System.getProperty("java.class.version").split("\\.")(0)
if (major.toInt < 49) {
this.settings.target.value = "jvm-1.4"
}
@@ -83,7 +83,7 @@ class Interpreter(val settings: Settings, out: PrintWriter) {
/** construct an interpreter that reports to Console */
def this(settings: Settings) =
this(settings,
- new PrintWriter(new ConsoleWriter, true))
+ new NewLinePrintWriter(new ConsoleWriter, true))
/** whether to print out result lines */
private var printResults: Boolean = true
@@ -115,7 +115,8 @@ class Interpreter(val settings: Settings, out: PrintWriter) {
settings.outdir.value = classfilePath.getPath
object reporter extends ConsoleReporter(settings, null, out) {
- override def printMessage(msg: String) = out.println(clean(msg))
+ //override def printMessage(msg: String) { out.println(clean(msg)) }
+ override def printMessage(msg: String) { out.print(clean(msg) + "\n"); out.flush() }
}
/** Instantiate a compiler. Subclasses can override this to
@@ -156,7 +157,6 @@ class Interpreter(val settings: Settings, out: PrintWriter) {
Thread.currentThread.setContextClassLoader(classLoader)
}
-
/** XXX Let's get rid of this. I believe the Eclipse plugin is
* the only user of it, so this should be doable. */
protected def parentClassLoader: ClassLoader = null
@@ -188,7 +188,7 @@ class Interpreter(val settings: Settings, out: PrintWriter) {
/** generate a string using a routine that wants to write on a stream */
private def stringFrom(writer: PrintWriter => Unit): String = {
val stringWriter = new StringWriter()
- val stream = new PrintWriter(stringWriter)
+ val stream = new NewLinePrintWriter(stringWriter)
writer(stream)
stream.close
stringWriter.toString
@@ -223,14 +223,14 @@ class Interpreter(val settings: Settings, out: PrintWriter) {
stringFrom(str =>
for (line <- code.lines) {
- str.print(spaces)
- str.println(line)
+ str.print(spaces)
+ str.print(line + "\n")
+ str.flush()
})
}
implicit def name2string(name: Name) = name.toString
-
/** Compute imports that allow definitions from previous
* requests to be visible in a new request. Returns
* three pieces of related code:
@@ -303,7 +303,6 @@ class Interpreter(val settings: Settings, out: PrintWriter) {
select(prevRequests.toList.reverse, wanted).reverse
}
-
val code = new StringBuffer
val trailingBraces = new StringBuffer
val accessPath = new StringBuffer
@@ -929,6 +928,12 @@ class Interpreter(val settings: Settings, out: PrintWriter) {
}
}
+ class NewLinePrintWriter(out: Writer, autoFlush: Boolean)
+ extends PrintWriter(out, autoFlush) {
+ def this(out: Writer) = this(out, false)
+ override def println() { print("\n"); flush() }
+ }
+
/** Utility methods for the Interpreter. */
object Interpreter {
diff --git a/src/compiler/scala/tools/nsc/InterpreterLoop.scala b/src/compiler/scala/tools/nsc/InterpreterLoop.scala
index 50973bfb71..aa9e583355 100644
--- a/src/compiler/scala/tools/nsc/InterpreterLoop.scala
+++ b/src/compiler/scala/tools/nsc/InterpreterLoop.scala
@@ -1,18 +1,17 @@
/* NSC -- new Scala compiler
- * Copyright 2005-2007 LAMP/EPFL
+ * Copyright 2005-2008 LAMP/EPFL
* @author Alexander Spoon
*/
// $Id$
package scala.tools.nsc
-import java.lang.{ClassLoader, System}
-import java.io.{BufferedReader, InputStreamReader, File, FileReader, PrintWriter}
+import java.io.{BufferedReader, File, FileReader, PrintWriter}
import java.io.IOException
+import java.lang.{ClassLoader, System}
-import scala.tools.nsc.util.{ClassPath, Position}
-import nsc.{InterpreterResults=>IR}
-import nsc.interpreter._
+import scala.tools.nsc.{InterpreterResults => IR}
+import scala.tools.nsc.interpreter._
/** The
* <a href="http://scala-lang.org/" target="_top">Scala</a>
diff --git a/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala b/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala
index b2732df204..53cbbddcc7 100644
--- a/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala
+++ b/src/compiler/scala/tools/nsc/reporters/AbstractReporter.scala
@@ -1,5 +1,5 @@
/* NSC -- new Scala compiler
- * Copyright 2002-2007 LAMP/EPFL
+ * Copyright 2002-2008 LAMP/EPFL
* @author Martin Odersky
*/
// $Id$
@@ -7,8 +7,8 @@
package scala.tools.nsc.reporters
import scala.collection.mutable.HashSet
+import scala.tools.nsc.Settings
import scala.tools.nsc.util.Position
-import nsc.Settings
/**
* This reporter implements filtering.
@@ -26,7 +26,7 @@ abstract class AbstractReporter extends Reporter {
def display(pos: Position, msg: String, severity: Severity): Unit
def displayPrompt: Unit
- protected def info0(pos: Position, msg: String, severity: Severity, force: Boolean): Unit =
+ protected def info0(pos: Position, msg: String, severity: Severity, force: Boolean) {
severity match {
case INFO =>
if (force || settings.verbose.value) display(pos, msg, severity)
@@ -41,6 +41,7 @@ abstract class AbstractReporter extends Reporter {
if (!hidden || settings.prompt.value) display(pos, msg, severity)
if (settings.prompt.value) displayPrompt
}
+ }
/** Logs a position and returns <code>true</code> if it was already logged.
*
@@ -51,10 +52,8 @@ abstract class AbstractReporter extends Reporter {
if (pos eq null) return false
if (pos.offset.isEmpty) return false
if (positions contains pos) return true
- //Console.println("ERROR @ " + pos + " into " + positions)
positions += pos
-
- return false
+ false
}
}
diff --git a/src/compiler/scala/tools/nsc/reporters/Reporter.scala b/src/compiler/scala/tools/nsc/reporters/Reporter.scala
index 3b1f42b86d..aaecb06332 100644
--- a/src/compiler/scala/tools/nsc/reporters/Reporter.scala
+++ b/src/compiler/scala/tools/nsc/reporters/Reporter.scala
@@ -1,5 +1,5 @@
/* NSC -- new Scala compiler
- * Copyright 2002-2007 LAMP/EPFL
+ * Copyright 2002-2008 LAMP/EPFL
* @author Martin Odersky
*/
// $Id$
@@ -15,7 +15,7 @@ import scala.tools.nsc.util._
abstract class Reporter {
object severity extends Enumeration
abstract class Severity extends severity.Value {
- var count : Int = 0
+ var count: Int = 0
}
object INFO extends Severity { def id = 0 }
object WARNING extends Severity { def id = 1 }
@@ -37,9 +37,9 @@ abstract class Reporter {
protected def info0(pos: Position, msg: String, severity: Severity, force: Boolean): Unit
- private var source : SourceFile = _
- def setSource(source : SourceFile) : Unit = this.source = source
- def getSource : SourceFile = source
+ private var source: SourceFile = _
+ def setSource(source: SourceFile) { this.source = source }
+ def getSource: SourceFile = source
def info(pos: Position, msg: String, force: Boolean): Unit = info0(pos, msg, INFO, force)
def warning(pos: Position, msg: String ): Unit = info0(pos, msg, WARNING, false)
diff --git a/src/compiler/scala/tools/nsc/typechecker/Contexts.scala b/src/compiler/scala/tools/nsc/typechecker/Contexts.scala
index 782c003b25..c80c9ecf82 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Contexts.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Contexts.scala
@@ -1,5 +1,5 @@
/* NSC -- new Scala compiler
- * Copyright 2005-2007 LAMP/EPFL
+ * Copyright 2005-2008 LAMP/EPFL
* @author Martin Odersky
*/
// $Id$
@@ -36,9 +36,7 @@ trait Contexts { self: Analyzer =>
* a root context. This list is sensitive to the
* compiler settings.
*/
- protected def rootImports(unit: CompilationUnit, tree: Tree)
- :List[Symbol] =
- {
+ protected def rootImports(unit: CompilationUnit, tree: Tree) :List[Symbol] = {
import definitions._
val imps = new ListBuffer[Symbol]
if (!settings.noimports.value) {
@@ -65,7 +63,7 @@ trait Contexts { self: Analyzer =>
Import(qual, List((nme.WILDCARD, null)))
.setSymbol(NoSymbol.newImport(NoPosition).setFlag(SYNTHETIC).setInfo(ImportType(qual)))
.setType(NoType))
- sc.depth = sc.depth + 1
+ sc.depth += 1
}
for (imp <- rootImports(unit, tree))
addImport(imp)
@@ -87,8 +85,8 @@ trait Contexts { self: Analyzer =>
}
}
// IDE hooks
- protected def sanitize(tree : Tree) : Tree = tree
- protected def scopeFor(old : Scope, tree : Tree) : Scope = newScope(old)
+ protected def sanitize(tree: Tree): Tree = tree
+ protected def scopeFor(old: Scope, tree: Tree): Scope = newScope(old)
class Context private[typechecker] {
var unit: CompilationUnit = _
var tree: Tree = _ // Tree associated with this context
@@ -116,7 +114,6 @@ trait Contexts { self: Analyzer =>
var savedTypeBounds: List[(Symbol, Type)] = List()
-
def intern0 : Context = {
if (this eq NoContext) return this
val txt = new Context
@@ -145,11 +142,13 @@ trait Contexts { self: Analyzer =>
txt.savedTypeBounds = savedTypeBounds
txt
}
- override def equals(that : Any) : Boolean = that match {
- case that : AnyRef if (this eq that) => true
- case that if !inIDE => super.equals(that)
+ override def equals(that: Any): Boolean = that match {
+ case that: AnyRef if (this eq that) =>
+ true
+ case that if !inIDE =>
+ super.equals(that)
//case NoContext => false
- case that : Context =>
+ case that: Context =>
if (that eq NoContext) return this eq NoContext
assert(that ne NoContext)
if (this eq NoContext) return false