summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJason Zaugg <jzaugg@gmail.com>2013-10-09 01:31:13 -0700
committerJason Zaugg <jzaugg@gmail.com>2013-10-09 01:31:13 -0700
commit185ff4c929645a14fcfe77b6bcdea2bc28ece100 (patch)
tree9e3d37e8a950ac446b94d71d60b43d618a1fccb5 /test
parentacd77803f7da7c369f4ffdc70b5eeec4a23e35ae (diff)
parent8ed7099f7db6a1060a490a594c958ca9a8b41487 (diff)
downloadscala-185ff4c929645a14fcfe77b6bcdea2bc28ece100.tar.gz
scala-185ff4c929645a14fcfe77b6bcdea2bc28ece100.tar.bz2
scala-185ff4c929645a14fcfe77b6bcdea2bc28ece100.zip
Merge pull request #3022 from retronym/ticket/7899
Don't infer by-name types during, e.g. eta-expansion
Diffstat (limited to 'test')
-rw-r--r--test/files/neg/t7899.check6
-rw-r--r--test/files/neg/t7899.scala7
-rw-r--r--test/files/pos/t7584.scala11
-rw-r--r--test/files/run/t7584b.scala14
-rw-r--r--test/files/run/t7899.scala5
5 files changed, 32 insertions, 11 deletions
diff --git a/test/files/neg/t7899.check b/test/files/neg/t7899.check
new file mode 100644
index 0000000000..febfe76b8a
--- /dev/null
+++ b/test/files/neg/t7899.check
@@ -0,0 +1,6 @@
+t7899.scala:5: error: type mismatch;
+ found : Int => Int
+ required: (=> Int) => ?
+ foo(identity)()
+ ^
+one error found
diff --git a/test/files/neg/t7899.scala b/test/files/neg/t7899.scala
new file mode 100644
index 0000000000..f2dea3ab1f
--- /dev/null
+++ b/test/files/neg/t7899.scala
@@ -0,0 +1,7 @@
+object Test {
+ def foo[B](f: (=> Int) => B): () => B = () => f(0)
+
+ def main(args: Array[String]) {
+ foo(identity)()
+ }
+}
diff --git a/test/files/pos/t7584.scala b/test/files/pos/t7584.scala
deleted file mode 100644
index 52d127ecb9..0000000000
--- a/test/files/pos/t7584.scala
+++ /dev/null
@@ -1,11 +0,0 @@
-object Test {
- def fold[A, B](f: (A, => B) => B) = ???
- def f[A, B](x: A, y: B): B = ???
- def bip[A, B] = fold[A, B]((x, y) => f(x, y))
- def bop[A, B] = fold[A, B](f)
-
- // these work:
- fold[Int, Int]((x, y) => f(x, y))
- fold[Int, Int](f)
-}
-
diff --git a/test/files/run/t7584b.scala b/test/files/run/t7584b.scala
new file mode 100644
index 0000000000..fd560f0418
--- /dev/null
+++ b/test/files/run/t7584b.scala
@@ -0,0 +1,14 @@
+object Test extends App {
+ def fold[A, B](f: (A, => B) => B) = (b: B) => f(null.asInstanceOf[A], b)
+ def f[A, B](x: A, y: B): B = y
+ def bip[A, B] = fold[A, B]((x, y) => f(x, y))
+ def bop[A, B] = fold[A, B](f(_, _))
+
+ // these work:
+ fold[Int, Int]((x, y) => f(x, y))(0)
+ fold[Int, Int](f(_, _))(0)
+
+ // Used to throw a ClassCastException. Since the fix for SI-7899, these issue type errors.
+ // fold[Int, Int](f _)(0)
+ // fold[Int, Int](f)(0)
+}
diff --git a/test/files/run/t7899.scala b/test/files/run/t7899.scala
new file mode 100644
index 0000000000..5879d4b9fe
--- /dev/null
+++ b/test/files/run/t7899.scala
@@ -0,0 +1,5 @@
+object Test extends App {
+ def id[A](a: => A): A = null.asInstanceOf[A]
+ def foo(f: (=> Int) => Int) = () => f(???)
+ foo(id)() // should be allowed and not throw ???
+}