summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/interpreter/NamedParam.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-01-29 01:43:10 +0000
committerPaul Phillips <paulp@improving.org>2011-01-29 01:43:10 +0000
commitcf492f472aa6d1154cd7336c37bab0b78125b872 (patch)
tree8735c22a25c019a5e694d8f93a0d66e9b4f47940 /src/compiler/scala/tools/nsc/interpreter/NamedParam.scala
parentb06bfabfa42cc089521e551acb9876a564ec027f (diff)
downloadscala-cf492f472aa6d1154cd7336c37bab0b78125b872.tar.gz
scala-cf492f472aa6d1154cd7336c37bab0b78125b872.tar.bz2
scala-cf492f472aa6d1154cd7336c37bab0b78125b872.zip
There is a lot of housecleaning to be done.
up the stray interpreter files and put them in the interpreter package. Would really love to change the name of that package. Went looking for some consistent divisions of responsibility and consistent naming. Made some progress. There are deprecated versions of most everything I changed so hopefully the carnage will be limited. This isn't completely baked but I just realized I broke the build earlier and this should fix it. I'll keep the oven on. No review.
Diffstat (limited to 'src/compiler/scala/tools/nsc/interpreter/NamedParam.scala')
-rw-r--r--src/compiler/scala/tools/nsc/interpreter/NamedParam.scala42
1 files changed, 27 insertions, 15 deletions
diff --git a/src/compiler/scala/tools/nsc/interpreter/NamedParam.scala b/src/compiler/scala/tools/nsc/interpreter/NamedParam.scala
index 62255b2aaf..878c5b20b1 100644
--- a/src/compiler/scala/tools/nsc/interpreter/NamedParam.scala
+++ b/src/compiler/scala/tools/nsc/interpreter/NamedParam.scala
@@ -6,26 +6,38 @@
package scala.tools.nsc
package interpreter
-object NamedParam {
- def apply[T: Manifest](name: String, x: T): NamedParam[T] = new NamedParam[T](name, x)
- def apply[T: Manifest](x: T): NamedParam[T] = apply(getParamName(), x)
+import NamedParam._
- implicit def fromValue[T: Manifest](x: T) = apply(x)
- implicit def fromNameAndValue[T: Manifest](name: String, x: T) = apply(name, x)
- implicit def fromTuple[T: Manifest](pair: (String, T)) = apply(pair._1, pair._2)
+trait NamedParamCreator {
+ protected def freshName: () => String
- private val getParamName = {
+ def apply[T: Manifest](name: String, x: T): NamedParam = new Typed[T](name, x)
+ def apply[T: Manifest](x: T): NamedParam = apply(freshName(), x)
+
+ def clazz(name: String, x: Any): NamedParam = new Untyped(name, x)
+ def clazz(x: Any): NamedParam = clazz(freshName(), x)
+
+ implicit def namedValue[T: Manifest](name: String, x: T): NamedParam = apply(name, x)
+ implicit def tuple[T: Manifest](pair: (String, T)): NamedParam = apply(pair._1, pair._2)
+}
+
+object NamedParam extends NamedParamCreator {
+ class Typed[T: Manifest](val name: String, val value: T) extends NamedParam {
+ val tpe = TypeStrings.fromManifest[T]
+ }
+ class Untyped(val name: String, val value: Any) extends NamedParam {
+ val tpe = TypeStrings.fromValue(value)
+ }
+
+ protected val freshName = {
var counter = 0
() => { counter += 1; "p" + counter }
}
}
-class NamedParam[T: Manifest](val name: String, val value: T) {
- val clazz = manifest[T].erasure.getName
- val tparams = manifest[T].typeArguments match {
- case Nil => ""
- case xs => xs.mkString("[", ", ", "]")
- }
- val tpe = clazz + tparams
+trait NamedParam {
+ def name: String
+ def tpe: String
+ def value: Any
override def toString = name + ": " + tpe
-}
+} \ No newline at end of file