aboutsummaryrefslogtreecommitdiff
path: root/tests/pos/t7517.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-08-22 16:18:49 +0200
committerMartin Odersky <odersky@gmail.com>2016-08-26 11:13:16 +0200
commitd84805299a42cb8d2c756aff5a117af24dbeaaf4 (patch)
tree924136f2161289e25bd1ecad388e88b13be248fc /tests/pos/t7517.scala
parent8f5bd779903d5c9f29bc3750391ffacbf3cf869e (diff)
downloaddotty-d84805299a42cb8d2c756aff5a117af24dbeaaf4.tar.gz
dotty-d84805299a42cb8d2c756aff5a117af24dbeaaf4.tar.bz2
dotty-d84805299a42cb8d2c756aff5a117af24dbeaaf4.zip
Recategorize tests
Passing tests from pending/pos go in pos. Some others go in diabled/not-testable. These are tests that require a compilation order which we cannot yet do with our unit testing framework. Compiling them alltogether (as is now doen in junit) does not work either for them because they contain a duplicate class.
Diffstat (limited to 'tests/pos/t7517.scala')
-rw-r--r--tests/pos/t7517.scala23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/pos/t7517.scala b/tests/pos/t7517.scala
new file mode 100644
index 000000000..d0462c48d
--- /dev/null
+++ b/tests/pos/t7517.scala
@@ -0,0 +1,23 @@
+// Invalid because nested hk type parameters are no longer allowed
+trait Box[ K[A[x]] ]
+
+object Box {
+ // type constructor composition
+ sealed trait ∙[A[_], B[_]] { type l[T] = A[B[T]] }
+
+ // composes type constructors inside K
+ type SplitBox[K[A[x]], B[x]] = Box[ ({ type l[A[x]] = K[ (A ∙ B)#l] })#l ]
+
+ def split[ K[A[x]], B[x] ](base: Box[K]): SplitBox[K,B] = ???
+
+ class Composed[B[_], L[A[x]] ] {
+ val box: Box[L] = ???
+
+ type Split[ A[x] ] = L[ (A ∙ B)#l ]
+ val a: Box[Split] = Box.split(box)
+
+ //Either of these work:
+ val a1: Box[Split] = Box.split[L,B](box)
+ val a2: Box[ ({ type l[A[x]] = L[ (A ∙ B)#l ] })#l ] = Box.split(box)
+ }
+}