diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-06-06 14:02:45 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-06-08 15:23:13 +0200 |
commit | 8ce47873f2207a72d902e01cc54eef26f28d1213 (patch) | |
tree | bfa03485dffd18c00e651ccd82f35eb1f3a93fe9 /src/compiler/scala/tools/cmd | |
parent | 3a198976ef3732a894d71f7ca7f66be2f7674bed (diff) | |
download | scala-8ce47873f2207a72d902e01cc54eef26f28d1213.tar.gz scala-8ce47873f2207a72d902e01cc54eef26f28d1213.tar.bz2 scala-8ce47873f2207a72d902e01cc54eef26f28d1213.zip |
preparations: always explicitly provide type tags
In our codebase we now explicitly provide type tags even if they can be materialized.
This is necessary to ease the upcoming reflection refactoring (or refactorings :)).
Diffstat (limited to 'src/compiler/scala/tools/cmd')
-rw-r--r-- | src/compiler/scala/tools/cmd/FromString.scala | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/cmd/FromString.scala b/src/compiler/scala/tools/cmd/FromString.scala index 91356b3c19..dd3b680afe 100644 --- a/src/compiler/scala/tools/cmd/FromString.scala +++ b/src/compiler/scala/tools/cmd/FromString.scala @@ -7,7 +7,7 @@ package scala.tools package cmd import nsc.io.{ Path, File, Directory } -import scala.reflect.TypeTag +import scala.tools.reflect.StdTags._ /** A general mechanism for defining how a command line argument * (always a String) is transformed into an arbitrary type. A few @@ -29,19 +29,19 @@ object FromString { /** Path related stringifiers. */ - val ExistingFile: FromString[File] = new FromString[File] { + val ExistingFile: FromString[File] = new FromString[File]()(tagOfFile) { override def isDefinedAt(s: String) = toFile(s).isFile def apply(s: String): File = if (isDefinedAt(s)) toFile(s) else cmd.runAndExit(println("'%s' is not an existing file." format s)) } - val ExistingDir: FromString[Directory] = new FromString[Directory] { + val ExistingDir: FromString[Directory] = new FromString[Directory]()(tagOfDirectory) { override def isDefinedAt(s: String) = toDir(s).isDirectory def apply(s: String): Directory = if (isDefinedAt(s)) toDir(s) else cmd.runAndExit(println("'%s' is not an existing directory." format s)) } - def ExistingDirRelativeTo(root: Directory) = new FromString[Directory] { + def ExistingDirRelativeTo(root: Directory) = new FromString[Directory]()(tagOfDirectory) { private def resolve(s: String) = toDir(s) toAbsoluteWithRoot root toDirectory override def isDefinedAt(s: String) = resolve(s).isDirectory def apply(s: String): Directory = @@ -52,19 +52,19 @@ object FromString { /** Argument expander, i.e. turns single argument "foo bar baz" into argument * list "foo", "bar", "baz". */ - val ArgumentsFromString: FromString[List[String]] = new FromString[List[String]] { + val ArgumentsFromString: FromString[List[String]] = new FromString[List[String]]()(tagOfListOfString) { def apply(s: String) = toArgs(s) } /** Identity. */ - implicit val StringFromString: FromString[String] = new FromString[String] { + implicit val StringFromString: FromString[String] = new FromString[String]()(tagOfString) { def apply(s: String): String = s } /** Implicit as the most likely to be useful as-is. */ - implicit val IntFromString: FromString[Int] = new FromString[Int] { + implicit val IntFromString: FromString[Int] = new FromString[Int]()(tagOfInt) { override def isDefinedAt(s: String) = safeToInt(s).isDefined def apply(s: String) = safeToInt(s).get def safeToInt(s: String): Option[Int] = try Some(java.lang.Integer.parseInt(s)) catch { case _: NumberFormatException => None } |