summaryrefslogtreecommitdiff
path: root/test/files/run/byname.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2007-08-27 14:15:03 +0000
committerMartin Odersky <odersky@gmail.com>2007-08-27 14:15:03 +0000
commit44c08fe2e46779d465fd231726b7ee01d27a8c56 (patch)
treea1f513528b379250a4957bfb47ebc1c41773126a /test/files/run/byname.scala
parent6d8a7e73764bfeaeec795e9d4281ca5a87569791 (diff)
downloadscala-44c08fe2e46779d465fd231726b7ee01d27a8c56.tar.gz
scala-44c08fe2e46779d465fd231726b7ee01d27a8c56.tar.bz2
scala-44c08fe2e46779d465fd231726b7ee01d27a8c56.zip
fixed bug1292
Diffstat (limited to 'test/files/run/byname.scala')
-rw-r--r--test/files/run/byname.scala84
1 files changed, 84 insertions, 0 deletions
diff --git a/test/files/run/byname.scala b/test/files/run/byname.scala
new file mode 100644
index 0000000000..af545d5e7d
--- /dev/null
+++ b/test/files/run/byname.scala
@@ -0,0 +1,84 @@
+object Test extends Application {
+
+def test[A](name: String, expect: A, actual: => A) {
+ if (expect != actual) throw new AssertionError("test " + name + " failed")
+ else println("test " + name + " completed properly")
+}
+
+def testNoBraces = 1
+test("no braces", 1, testNoBraces)
+
+val testNoBracesR = testNoBraces _
+test("no braces r", 1, testNoBracesR())
+
+def testPlain(x: String, y: String): String = x + y
+test("plain", "ab", testPlain("a", "b"))
+
+val testPlainR = testPlain _
+test("plain r", "cd", testPlainR("c", "d"))
+
+def testOldByName(x: => Int) = x + 1
+test("old by name", 3, testOldByName(1 + 1))
+
+val testOldByNameR = testOldByName _
+test("old by name r", 3, testOldByNameR(1 + 1))
+
+val testOldByNameS: (=> Int) => Int = testOldByName _
+test("old by name s", 3, testOldByNameS(2))
+
+def testRegThenByName(x: Int, y: => Int): Int = x + y
+test("reg then by name", 7, testRegThenByName(3, 2 * 2))
+
+val testRegThenByNameS: (Int, =>Int) => Int = testRegThenByName _
+test("reg then by name s", 8, testRegThenByNameS(2, 12 / 2))
+
+def testVarargs(x: Int*) = x.reduceLeft((x: Int, y: Int) => x + y)
+test("varargs", 4, testVarargs(1, 2, 1))
+
+val testVarargsR = testVarargs _
+test("varargs r", 4, testVarargsR(1, 2, 1))
+
+def testAll(x: Int, y: => Int, z: Int*) = x + y + z.size
+test("all", 5, testAll(1, 2, 22, 23))
+
+val testAllR = testAll _
+test("all r", 7, testAllR(2, 3, 34, 35))
+
+val testAllS: (Int, =>Int, Int*) => Int = testAll _
+test("all s", 8, testAllS(1, 5, 78, 89))
+
+// test currying
+
+def testC00()(): Int = 1
+test("c00", 1, testC00()())
+
+val testC00R = testC00 _
+test("c00 r", 1, testC00R()())
+
+val testC00RR = testC00() _
+test("c00 rr", 1, testC00RR())
+
+
+def testCBB(a: => Int)(b: => Int) = a + b
+test("cbb", 3, testCBB(1)(2))
+
+val testCBBR = testCBB _
+test("cbb r", 5, testCBBR(1)(4))
+
+val testCBBRR = testCBB(4) _
+test("cbb rr", 6, testCBBRR(2))
+
+
+def testCVV(a: Int*)(z: String, b: Int*) = a.size + b.size
+test("cvv", 3, testCVV(1, 2)("", 8))
+
+val testCVVR = testCVV _
+test("cvv r", 3, testCVVR(1)("", 8, 9))
+
+val testCVVRS: (String, Int*) => Int = testCVV(2, 3)
+test("cvv rs", 4, testCVVRS("", 5, 6))
+
+println("$")
+
+// vim: set ts=4 sw=4 et:
+}