diff options
author | Paul Phillips <paulp@improving.org> | 2010-02-08 22:28:17 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-02-08 22:28:17 +0000 |
commit | 171d21f11a58e905de8f96a9bac41f6aced3e384 (patch) | |
tree | 1abc4a6ca8597e517b78f2faef13064d7c69cfc6 /src/compiler/scala/tools/nsc/CompileSocket.scala | |
parent | 53545e7af8d3455f97d88c1a455fea86461419fb (diff) | |
download | scala-171d21f11a58e905de8f96a9bac41f6aced3e384.tar.gz scala-171d21f11a58e905de8f96a9bac41f6aced3e384.tar.bz2 scala-171d21f11a58e905de8f96a9bac41f6aced3e384.zip |
Some work on classpaths.
at https://lampsvn.epfl.ch/trac/scala/wiki/Classpath modulo some minor
details which remain to be investigated. It is not entirely integrated,
and should not involve any behavioral changes. The patch also contains a
number of small improvements targetting widely duplicated code.
PathResolver offers a main method. If run with no arguments it will
output a pile of information about classpath relevant environment vars
and properties. If given arguments, it will output the classpath info
that any scala runner script would use if given the same args. There is
a wrapper in the tools directory. Example:
tools/pathResolver -extdirs /foo -sourcepath /bar | egrep
"sourcePath|scalaExtDirs"
scalaExtDirs = /foo
sourcePath = /bar
There is also a (probably temporary) command line option -Ylog-classpath
which will print out the settings.classpath value anytime it changes.
Review by community.
Diffstat (limited to 'src/compiler/scala/tools/nsc/CompileSocket.scala')
-rw-r--r-- | src/compiler/scala/tools/nsc/CompileSocket.scala | 17 |
1 files changed, 5 insertions, 12 deletions
diff --git a/src/compiler/scala/tools/nsc/CompileSocket.scala b/src/compiler/scala/tools/nsc/CompileSocket.scala index 06f0f15d9d..bad1cc9d1c 100644 --- a/src/compiler/scala/tools/nsc/CompileSocket.scala +++ b/src/compiler/scala/tools/nsc/CompileSocket.scala @@ -14,6 +14,7 @@ import java.security.SecureRandom import io.{ File, Path, Process, Socket } import scala.util.control.Exception.catching +import scala.tools.util.StringOps.splitWhere /** This class manages sockets for the fsc offline compiler. */ class CompileSocket { @@ -176,18 +177,10 @@ class CompileSocket { try { Some(x.toInt) } catch { case _: NumberFormatException => None } - def getSocket(serverAdr: String): Socket = { - def fail = fatal("Malformed server address: %s; exiting" format serverAdr) - (serverAdr indexOf ':') match { - case -1 => fail - case cpos => - val hostName: String = serverAdr take cpos - parseInt(serverAdr drop (cpos + 1)) match { - case Some(port) => getSocket(hostName, port) - case _ => fail - } - } - } + def getSocket(serverAdr: String): Socket = ( + for ((name, portStr) <- splitWhere(serverAdr, _ == ':', true) ; port <- parseInt(portStr)) yield + getSocket(name, port) + ) getOrElse fatal("Malformed server address: %s; exiting" format serverAdr) def getSocket(hostName: String, port: Int): Socket = Socket(hostName, port).opt getOrElse fatal("Unable to establish connection to server %s:%d; exiting".format(hostName, port)) |