diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/files/jvm/manifests.check | 54 | ||||
-rw-r--r-- | test/files/jvm/manifests.scala | 79 |
2 files changed, 111 insertions, 22 deletions
diff --git a/test/files/jvm/manifests.check b/test/files/jvm/manifests.check index 995fb5f1e6..2539cd956b 100644 --- a/test/files/jvm/manifests.check +++ b/test/files/jvm/manifests.check @@ -3,23 +3,57 @@ x=true, m=boolean x=a, m=char x=1, m=int x=abc, m=java.lang.String +x='abc, m=scala.Symbol + x=List(()), m=scala.List[void] x=List(true), m=scala.List[boolean] x=List(1), m=scala.List[int] x=List(abc), m=scala.List[java.lang.String] -x=[Z, m=[Z[boolean] -x=[C, m=[C[char] -x=[I, m=[I[int] -x=Array(abc), m=[Ljava.lang.String;[java.lang.String] +x=List('abc), m=scala.List[scala.Symbol] + +x=[Z, m=Array[boolean] +x=[C, m=Array[char] +x=[I, m=Array[int] +x=Array(abc), m=Array[java.lang.String] +x=Array('abc), m=Array[scala.Symbol] + x=((),()), m=scala.Tuple2[void, void] x=(true,false), m=scala.Tuple2[boolean, boolean] x=(1,2), m=scala.Tuple2[int, int] x=(abc,xyz), m=scala.Tuple2[java.lang.String, java.lang.String] -x=Serialize$, m=Serialize$ +x=('abc,'xyz), m=scala.Tuple2[scala.Symbol, scala.Symbol] + x=Test$, m=Test$ x=scala.List$, m=scala.List$ -x=Test$Foo, m=Test$Foo[int] -x=Test$Foo, m=Test$Foo[scala.List[int]] -x=Test$Foo, m=Test$Foo[Test$Foo[int]] -x=Test$Foo, m=Test$Foo[scala.List[Test$Foo[int]]] -x=Test$$anon$1, m=Test$$anon$1 + +x=Foo, m=Foo[int] +x=Foo, m=Foo[scala.List[int]] +x=Foo, m=Foo[Foo[int]] +x=Foo, m=Foo[scala.List[Foo[int]]] + +x=Test1$$anon$1, m=Test1$$anon$1 + +()=() +true=true +a=a +1=1 +'abc='abc + +List(())=List(()) +List(true)=List(true) +List('abc)=List('abc) + +Array()=Array() +Array(true)=Array(true) +Array(a)=Array(a) +Array(1)=Array(1) + +((),())=((),()) +(true,false)=(true,false) + +List(List(1), List(2))=List(List(1), List(2)) + +Array(Array(1), Array(2))=Array(Array(1), Array(2)) + +x=char, m=scala.reflect.Manifest[char] + 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) + } } - |