diff options
Diffstat (limited to 'test/files/jvm/manifests.scala')
-rw-r--r-- | test/files/jvm/manifests.scala | 79 |
1 files changed, 67 insertions, 12 deletions
diff --git a/test/files/jvm/manifests.scala b/test/files/jvm/manifests.scala index 61c5152283..a240278eaa 100644 --- a/test/files/jvm/manifests.scala +++ b/test/files/jvm/manifests.scala @@ -1,50 +1,100 @@ object Test extends Application { - import scala.reflect._ + Test1 + Test2 + Test3 +} - def manifestOf[T](implicit m: Manifest[T]): Manifest[T] = m +class Foo[T](x: T) +trait Bar[T] { def f: T } - def print[T](x: T)(implicit m: Manifest[T]) { - val m1: Manifest[T] = Serialize.read(Serialize.write(m)) - val x1 = x.toString.replaceAll("@[0-9a-z]+$", "") - println("x="+x1+", m="+m1) - } +object Test1 extends TestUtil { print(()) print(true) print('a') print(1) print("abc") + print('abc) + println() print(List(())) print(List(true)) print(List(1)) print(List("abc")) + print(List('abc)) + println() //print(Array(())) //Illegal class name "[V" in class file Test$ print(Array(true)) print(Array('a')) print(Array(1)) print(Array("abc")) + print(Array('abc)) + println() print(((), ())) print((true, false)) print((1, 2)) print(("abc", "xyz")) + print(('abc, 'xyz)) + println() - print(Serialize) print(Test) print(List) + println() - class Foo[T](x: T) print(new Foo(2)) print(new Foo(List(2))) print(new Foo(new Foo(2))) print(new Foo(List(new Foo(2)))) + println() - trait Bar[T] { def f: T } print(new Bar[String] { def f = "abc" }) + println() } -object Serialize { +object Test2 { + import scala.util.Marshal._ + println("()="+load[Unit](dump(()))) + println("true="+load[Boolean](dump(true))) + println("a="+load[Char](dump('a'))) + println("1="+load[Int](dump(1))) + println("'abc="+load[Symbol](dump('abc))) + println() + + println("List(())="+load[List[Unit]](dump(List(())))) + println("List(true)="+load[List[Boolean]](dump(List(true)))) + println("List('abc)="+load[List[Symbol]](dump(List('abc)))) + println() + + def loadArray[T](x: Array[Byte])(implicit m: reflect.Manifest[Array[T]]) = + load[Array[T]](x)(m).deepToString + println("Array()="+loadArray[Int](dump(Array(): Array[Int]))) + println("Array(true)="+loadArray[Boolean](dump(Array(true)))) + println("Array(a)="+loadArray[Char](dump(Array('a')))) + println("Array(1)="+loadArray[Int](dump(Array(1)))) + println() + + println("((),())="+load[(Unit, Unit)](dump(((), ())))) + println("(true,false)="+load[(Boolean, Boolean)](dump((true, false)))) + println() + + println("List(List(1), List(2))="+load[List[List[Int]]](dump(List(List(1), List(2))))) + println() + + println("Array(Array(1), Array(2))="+loadArray[Array[Int]](dump(Array(Array(1), Array(2))))) + println() +} + +object Test3 extends TestUtil { + import scala.reflect.Manifest._ + val ct1 = classType(classOf[Char]) + val ct2 = classType(classOf[List[_]], ct1) + print(ct1) + //print(ct2) // ??? x=scala.List[char], m=scala.reflect.Manifest[scala.runtime.Nothing$] + println() +} + +trait TestUtil { import java.io._ def write[A](o: A): Array[Byte] = { val ba = new ByteArrayOutputStream(512) @@ -57,5 +107,10 @@ object Serialize { val in = new ObjectInputStream(new ByteArrayInputStream(buffer)) in.readObject().asInstanceOf[A] } + import scala.reflect._ + def print[T](x: T)(implicit m: Manifest[T]) { + val m1: Manifest[T] = read(write(m)) + val x1 = x.toString.replaceAll("@[0-9a-z]+$", "") + println("x="+x1+", m="+m1) + } } - |