diff options
author | Paul Phillips <paulp@improving.org> | 2011-01-29 01:43:10 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2011-01-29 01:43:10 +0000 |
commit | cf492f472aa6d1154cd7336c37bab0b78125b872 (patch) | |
tree | 8735c22a25c019a5e694d8f93a0d66e9b4f47940 /src/compiler/scala/tools/nsc/interpreter/NamedParam.scala | |
parent | b06bfabfa42cc089521e551acb9876a564ec027f (diff) | |
download | scala-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.scala | 42 |
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 |