summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/interpreter/NamedParam.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-02-03 22:26:35 +0000
committerPaul Phillips <paulp@improving.org>2011-02-03 22:26:35 +0000
commit1038b708f23374439310f3a700a2e1170e2b61a0 (patch)
tree8179368c54ca2c1ad63ac1d05f9266d278ead0b4 /src/compiler/scala/tools/nsc/interpreter/NamedParam.scala
parentc332e580a3fec48dc193b518666f93c589163045 (diff)
downloadscala-1038b708f23374439310f3a700a2e1170e2b61a0.tar.gz
scala-1038b708f23374439310f3a700a2e1170e2b61a0.tar.bz2
scala-1038b708f23374439310f3a700a2e1170e2b61a0.zip
A couple long-threatened repl features.
1) :implicits command. scala> :implicits No implicits have been imported other than those in Predef. scala> import BigDecimal._ import BigDecimal._ scala> class Bippy[T] { implicit def makeMeABippy[U <: T] : Bippy[U] = new Bippy[U] } defined class Bippy scala> val bippy = new Bippy[String] bippy: Bippy[String] = Bippy@4f0bd71c scala> import bippy._ import bippy._ scala> :implicits /* 3 implicit members imported from scala.math.BigDecimal */ /* 3 defined in scala.math.BigDecimal */ implicit def double2bigDecimal(d: Double): scala.math.BigDecimal implicit def int2bigDecimal(i: Int): scala.math.BigDecimal implicit def long2bigDecimal(l: Long): scala.math.BigDecimal /* 1 implicit members imported from Bippy */ /* 1 defined in Bippy */ implicit def makeMeABippy[U <: T]: Bippy[U] 2) This one I will probably have to optionize, but: automatic rebinding to a more specific type, signalled via tab-completion failures. More easily demonstrated than explained. scala> val x: AnyRef = "abc" // does not apply to var/def x: AnyRef = abc scala> x.<tab> asInstanceOf isInstanceOf toString scala> x.<tab> Rebinding stable value x from AnyRef to java.lang.String + asInstanceOf charAt codePointAt codePointBefore codePointCount compareTo compareToIgnoreCase concat contains contentEquals endsWith equalsIgnoreCase getBytes getChars indexOf intern isEmpty isInstanceOf lastIndexOf length matches offsetByCodePoints regionMatches replace replaceAll replaceFirst split startsWith subSequence substring toCharArray toLowerCase toString toUpperCase trim scala> x res0: java.lang.String = abc Who's up for some reviewing? I'm taking volunteers! No review.
Diffstat (limited to 'src/compiler/scala/tools/nsc/interpreter/NamedParam.scala')
-rw-r--r--src/compiler/scala/tools/nsc/interpreter/NamedParam.scala3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/compiler/scala/tools/nsc/interpreter/NamedParam.scala b/src/compiler/scala/tools/nsc/interpreter/NamedParam.scala
index 878c5b20b1..e92888d89b 100644
--- a/src/compiler/scala/tools/nsc/interpreter/NamedParam.scala
+++ b/src/compiler/scala/tools/nsc/interpreter/NamedParam.scala
@@ -11,6 +11,7 @@ import NamedParam._
trait NamedParamCreator {
protected def freshName: () => String
+ def apply(name: String, tpe: String, value: Any): NamedParam = NamedParamClass(name, tpe, value)
def apply[T: Manifest](name: String, x: T): NamedParam = new Typed[T](name, x)
def apply[T: Manifest](x: T): NamedParam = apply(freshName(), x)
@@ -35,6 +36,8 @@ object NamedParam extends NamedParamCreator {
}
}
+case class NamedParamClass(name: String, tpe: String, value: Any) extends NamedParam { }
+
trait NamedParam {
def name: String
def tpe: String