summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/util/package.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-05-23 18:21:07 +0000
committerPaul Phillips <paulp@improving.org>2010-05-23 18:21:07 +0000
commit41d361a9d26cb550a11691a5b93fb7f3ab5223d3 (patch)
tree040c9276da673832295571af5585b60a846bf7c0 /src/compiler/scala/tools/nsc/util/package.scala
parent3bad6d54b19c9ccc01a491b6483bb205d855381a (diff)
downloadscala-41d361a9d26cb550a11691a5b93fb7f3ab5223d3.tar.gz
scala-41d361a9d26cb550a11691a5b93fb7f3ab5223d3.tar.bz2
scala-41d361a9d26cb550a11691a5b93fb7f3ab5223d3.zip
Changed the script runner mechanism to alchemiz...
Changed the script runner mechanism to alchemize from AST atoms rather than generating wrapper source, and fixed script position reporting. This patch does not include a discussed change to mark some positions as synthetic. Closes #3119, #3121. Review by milessabin.
Diffstat (limited to 'src/compiler/scala/tools/nsc/util/package.scala')
-rw-r--r--src/compiler/scala/tools/nsc/util/package.scala29
1 files changed, 29 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/util/package.scala b/src/compiler/scala/tools/nsc/util/package.scala
new file mode 100644
index 0000000000..92d4eab54f
--- /dev/null
+++ b/src/compiler/scala/tools/nsc/util/package.scala
@@ -0,0 +1,29 @@
+/* NSC -- new Scala compiler
+ * Copyright 2005-2010 LAMP/EPFL
+ * @author Paul Phillips
+ */
+
+package scala.tools.nsc
+
+import java.io.{ OutputStream, PrintStream, ByteArrayOutputStream, PrintWriter, StringWriter }
+
+package object util {
+ /** Apply a function and return the passed value */
+ def returning[T](x: T)(f: T => Unit): T = { f(x) ; x }
+
+ /** Generate a string using a routine that wants to write on a stream. */
+ def stringFromWriter(writer: PrintWriter => Unit): String = {
+ val stringWriter = new StringWriter()
+ val stream = new NewLinePrintWriter(stringWriter)
+ writer(stream)
+ stream.close()
+ stringWriter.toString
+ }
+ def stringFromStream(stream: OutputStream => Unit): String = {
+ val bs = new ByteArrayOutputStream()
+ val ps = new PrintStream(bs)
+ stream(ps)
+ ps.close()
+ bs.toString()
+ }
+}