diff options
author | Eugene Burmako <xeno.by@gmail.com> | 2012-04-14 21:11:37 +0200 |
---|---|---|
committer | Eugene Burmako <xeno.by@gmail.com> | 2012-04-14 21:11:37 +0200 |
commit | 5e4c47f33b8e25feb59ab4599231b1b8d3150de8 (patch) | |
tree | ff2ded10d14c5a6e859ac216e60244029a17a505 /test/files/pos/implicits.scala | |
parent | 3a2901da406f2478b5634b0636e56de9c4cd676d (diff) | |
download | scala-5e4c47f33b8e25feb59ab4599231b1b8d3150de8.tar.gz scala-5e4c47f33b8e25feb59ab4599231b1b8d3150de8.tar.bz2 scala-5e4c47f33b8e25feb59ab4599231b1b8d3150de8.zip |
implements reification of tough types
Diffstat (limited to 'test/files/pos/implicits.scala')
-rw-r--r-- | test/files/pos/implicits.scala | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/test/files/pos/implicits.scala b/test/files/pos/implicits.scala new file mode 100644 index 0000000000..2c01dd0ba8 --- /dev/null +++ b/test/files/pos/implicits.scala @@ -0,0 +1,89 @@ +// #1435 +object t1435 { + implicit def a(s:String):String = error("") + implicit def a(i:Int):String = error("") + implicit def b(i:Int):String = error("") +} + +class C1435 { + val v:String = { + import t1435.a + 2 + } +} + +// #1492 +class C1492 { + + class X + + def foo(x: X => X) {} + + foo ( implicit x => implicitly[X] ) + foo { implicit x => implicitly[X] } +} + +// #1579 +object Test1579 { + class Column + class Query[E](val value: E) + class Invoker(q: Any) { val foo = null } + + implicit def unwrap[C](q: Query[C]) = q.value + implicit def invoker(q: Query[Column]) = new Invoker(q) + + val q = new Query(new Column) + q.foo +} +// #1625 +object Test1625 { + + class Wrapped(x:Any) { + def unwrap() = x + } + + implicit def byName[A](x: =>A) = new Wrapped(x) + + implicit def byVal[A](x: A) = x + + def main(args: Array[String]) = { + +// val res:Wrapped = 7 // works + + val res = 7.unwrap() // doesn't work + + println("=> result: " + res) + } +} + +object Test2188 { + implicit def toJavaList[A: ClassManifest](t:collection.Seq[A]):java.util.List[A] = java.util.Arrays.asList(t.toArray:_*) + + val x: java.util.List[String] = List("foo") +} + +object TestNumericWidening { + val y = 1 + val x: java.lang.Long = y +} + +// #2709 +package foo2709 { + class A + class B + + package object bar { + implicit def a2b(a: A): B = new B + } + + package bar { + object test { + new A: B + } + } +} + +// Problem with specs +object specsProblem { + println(implicitly[Manifest[Class[_]]]) +} |