summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
Diffstat (limited to 'test')
-rw-r--r--test/files/neg/t8372.check7
-rw-r--r--test/files/neg/t8372.scala10
-rw-r--r--test/files/pos/t8369a.check0
-rw-r--r--test/files/pos/t8369a.scala5
-rw-r--r--test/files/pos/t8369b.check0
-rw-r--r--test/files/pos/t8369b.scala18
6 files changed, 40 insertions, 0 deletions
diff --git a/test/files/neg/t8372.check b/test/files/neg/t8372.check
new file mode 100644
index 0000000000..6a6424a834
--- /dev/null
+++ b/test/files/neg/t8372.check
@@ -0,0 +1,7 @@
+t8372.scala:7: error: No ClassTag available for T1
+ def unzip[T1, T2](a: Array[(T1, T2)]) = a.unzip
+ ^
+t8372.scala:9: error: No ClassTag available for T1
+ def unzip3[T1, T2, T3](a: Array[(T1, T2, T3)]): (Array[T1], Array[T2], Array[T3]) = a.unzip3
+ ^
+two errors found
diff --git a/test/files/neg/t8372.scala b/test/files/neg/t8372.scala
new file mode 100644
index 0000000000..60a674f4d8
--- /dev/null
+++ b/test/files/neg/t8372.scala
@@ -0,0 +1,10 @@
+class t8372 {
+ // failed with "error: tpe T1 is an unresolved spliceable type"; that was caused by
+ // misguided type inference of type parameters in ArrayOps.unzip
+ // the type inference failed because the order of implicit arguments was wrong
+ // the evidence that T <: (T1, T2) came as last argument so it couldn't guide the
+ // type inference early enough
+ def unzip[T1, T2](a: Array[(T1, T2)]) = a.unzip
+ // the same as above
+ def unzip3[T1, T2, T3](a: Array[(T1, T2, T3)]): (Array[T1], Array[T2], Array[T3]) = a.unzip3
+}
diff --git a/test/files/pos/t8369a.check b/test/files/pos/t8369a.check
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/files/pos/t8369a.check
diff --git a/test/files/pos/t8369a.scala b/test/files/pos/t8369a.scala
new file mode 100644
index 0000000000..0596fdaf74
--- /dev/null
+++ b/test/files/pos/t8369a.scala
@@ -0,0 +1,5 @@
+object Bug {
+ trait Sys[S]
+ def test[S <: Sys[S]] = read[S]()
+ def read[S <: Sys[S]](baz: Any = 0): Some[S] = ???
+} \ No newline at end of file
diff --git a/test/files/pos/t8369b.check b/test/files/pos/t8369b.check
new file mode 100644
index 0000000000..e69de29bb2
--- /dev/null
+++ b/test/files/pos/t8369b.check
diff --git a/test/files/pos/t8369b.scala b/test/files/pos/t8369b.scala
new file mode 100644
index 0000000000..8145911db1
--- /dev/null
+++ b/test/files/pos/t8369b.scala
@@ -0,0 +1,18 @@
+object Bug {
+ trait Sys[S] {
+ type Tx
+ }
+
+ trait Baz[-Tx]
+
+ trait Foo[S <: Sys[S]] {
+ def bar: Bar[S] = Bar.read[S]()
+ }
+
+ object Bar {
+ object NoBaz extends Baz[Any]
+
+ def read[S <: Sys[S]](baz: Baz[S#Tx] = NoBaz): Bar[S] = ???
+ }
+ trait Bar[S <: Sys[S]]
+} \ No newline at end of file