summaryrefslogtreecommitdiff
path: root/test/files/run
diff options
context:
space:
mode:
authormichelou <michelou@epfl.ch>2007-11-02 15:20:38 +0000
committermichelou <michelou@epfl.ch>2007-11-02 15:20:38 +0000
commit42b43e8b3884edf42bf07a24c711854a8a6bcee9 (patch)
treea54b84125ae5b61fda80101f348fb3e30a805917 /test/files/run
parentb9d874ba4ea8952f852810abd57d6742d53030ce (diff)
downloadscala-42b43e8b3884edf42bf07a24c711854a8a6bcee9.tar.gz
scala-42b43e8b3884edf42bf07a24c711854a8a6bcee9.tar.bz2
scala-42b43e8b3884edf42bf07a24c711854a8a6bcee9.zip
added basic support for runtime types
Diffstat (limited to 'test/files/run')
-rw-r--r--test/files/run/typerep.check40
-rw-r--r--test/files/run/typerep.scala101
2 files changed, 141 insertions, 0 deletions
diff --git a/test/files/run/typerep.check b/test/files/run/typerep.check
new file mode 100644
index 0000000000..d554d335b2
--- /dev/null
+++ b/test/files/run/typerep.check
@@ -0,0 +1,40 @@
+Boolean
+Byte
+Char
+Int
+Long
+Float
+Double
+String
+Unit
+Class
+
+Some[Int]
+
+List[Int]
+List[Int]
+List[List[Int]]
+List[Any]
+
+Array[Int]
+Array[Array[Int]]
+Array[Int]
+Array[Int]
+Array[Int]
+Array[Int]
+
+Tuple2[Int, String]
+Tuple3[Char, Char, String]
+Tuple2[Tuple2[Int, String], Tuple2[Int, String]]
+
+Function1[Int, Int]
+Int
+Function1[Int, Int]
+Int
+Function1[Int, Function1[Int, Int]]
+Function1[Int, Int]
+Int
+Function3[Boolean, List[Char], Int, Int]
+Function2[Function1[Int, Int], Int, Int]
+Int
+
diff --git a/test/files/run/typerep.scala b/test/files/run/typerep.scala
new file mode 100644
index 0000000000..9d848db762
--- /dev/null
+++ b/test/files/run/typerep.scala
@@ -0,0 +1,101 @@
+object Test extends Application {
+ testPrimitives
+ testOptions
+ testLists
+ testArrays
+ testTuples
+ testFuncs
+ //test4 // todo
+}
+
+object testPrimitives {
+ println(getType(true))
+ println(getType(16.toByte))
+ println(getType('a'))
+ println(getType(3))
+ println(getType(3l))
+ println(getType(0.0f))
+ println(getType(0.0d))
+ println(getType("abc"))
+ println(getType(())) // Unit
+ println(getType(classOf[Int])) // Class
+ println
+}
+
+object testOptions {
+ println(getType(Some(2)))
+ //println(getType(Some(Some(3)))) // ambiguous implicit values
+ //println(getType(None)) // no implicit argument matching parameter
+ println
+}
+
+object testLists {
+ println(getType(List(3)))
+ println(getType(3 :: Nil))
+ println(getType(List(List(3))))
+ //println(getType(Nil)) // no implicit argument matching parameter type
+ println(getType(List(1, "abc")))
+ println
+}
+
+object testArrays {
+ println(getType(Array(3)))
+ println(getType(Array(Array(3), Array(4))))
+ println(getType(new Array[Int](0)))
+ println(getType(List(1).toArray))
+ println(getType(List[Int]().toArray))
+ println(getType(Array(3).drop(1).toArray)) // empty
+ println
+}
+
+object testTuples {
+ println(getType((3, "abc")))
+ println(getType(Triple('a', 'b', "c")))
+ println(getType(((3, "abc"), (4, "xyz"))))
+ println
+}
+
+object testFuncs {
+ def f1(x: Int): Int = 2 * x
+ println(getType(f1 _))
+ println(getType(f1(2)))
+ val f2 = (x: Int) => 2 * x
+ println(getType(f2))
+ println(getType(f2(2)))
+ val f3 = (x: Int) => (y: Int) => x + y
+ println(getType(f3))
+ println(getType(f3(2)))
+ println(getType(f3(2)(2)))
+ def f4(b: Boolean, c: List[Char], i: Int): Int = i
+ println(getType(f4 _))
+ def f5(f: Int => Int, x: Int) = f(x)
+ println(getType(f5 _))
+ println(getType(f5(f1, 1)))
+ println
+}
+
+class Foo {
+ class Bar(x: Int)
+}
+
+object foo extends Foo
+
+package pkg1 {
+ class C1
+ object c1 extends C1
+}
+/*
+object test4 {
+ println(getType(foo))
+ println(getType(new foo.Bar(0)))
+ val foo2 = new Foo
+ println(getType(foo2))
+ println(getType(new foo2.Bar(1)))
+ println
+
+ println(getType(pkg1.c1))
+ val c1 = new pkg1.C1
+ println(getType(c1))
+ println
+}
+*/