summaryrefslogtreecommitdiff
path: root/test/files
diff options
context:
space:
mode:
authorAdriaan Moors <adriaan.moors@epfl.ch>2010-07-08 15:59:05 +0000
committerAdriaan Moors <adriaan.moors@epfl.ch>2010-07-08 15:59:05 +0000
commit68aeeae4229a04a8d9d2235e160fd00b21e20926 (patch)
treecee44fad976f4ec833a513c4f95199e778f70ad8 /test/files
parentbc5ac3dc9a03553072f69d1117ea2389473acd4a (diff)
downloadscala-68aeeae4229a04a8d9d2235e160fd00b21e20926.tar.gz
scala-68aeeae4229a04a8d9d2235e160fd00b21e20926.tar.bz2
scala-68aeeae4229a04a8d9d2235e160fd00b21e20926.zip
closes #3399.
this broke the invariant that argss is a regular matrix review by odersky
Diffstat (limited to 'test/files')
-rw-r--r--test/files/neg/t3399.check4
-rw-r--r--test/files/neg/t3399.scala24
2 files changed, 28 insertions, 0 deletions
diff --git a/test/files/neg/t3399.check b/test/files/neg/t3399.check
new file mode 100644
index 0000000000..eb6c679704
--- /dev/null
+++ b/test/files/neg/t3399.check
@@ -0,0 +1,4 @@
+t3399.scala:23: error: could not find implicit value for parameter e: =:=[Nats.Add[Nats._1,Nats._1],Nats._1]
+ implicitly[ Add[_1, _1] =:= _1]
+ ^
+one error found
diff --git a/test/files/neg/t3399.scala b/test/files/neg/t3399.scala
new file mode 100644
index 0000000000..3edaa0724f
--- /dev/null
+++ b/test/files/neg/t3399.scala
@@ -0,0 +1,24 @@
+object Nats {
+ sealed trait Nat {
+ // fold right on N, N-1, ..., 1
+ type FoldR[Init <: Type, Type, F <: Fold[Nat, Type]] <: Type
+ }
+ sealed trait _0 extends Nat {
+ type FoldR[Init <: Type, Type, F <: Fold[Nat, Type]] = Init
+ }
+ sealed trait Succ[N <: Nat] extends Nat {
+ type FoldR[Init <: Type, Type, F <: Fold[Nat, Type]] =
+ F#Apply[Succ[N], N#FoldR[Init, Type, F]]
+ }
+
+ type Add[A <: Nat, B <: Nat] = A#FoldR[B, Nat, Inc]
+ trait Fold[-Elem, Value] {
+ type Apply[N <: Elem, Acc <: Value] <: Value
+ }
+ type Inc = Fold[Any, Nat] {
+ type Apply[N <: Any, Acc <: Nat] = Succ[Acc]
+ }
+
+ type _1 = Succ[_0]
+ implicitly[ Add[_1, _1] =:= _1]
+} \ No newline at end of file