diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2010-07-08 15:59:05 +0000 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2010-07-08 15:59:05 +0000 |
commit | 68aeeae4229a04a8d9d2235e160fd00b21e20926 (patch) | |
tree | cee44fad976f4ec833a513c4f95199e778f70ad8 /test/files | |
parent | bc5ac3dc9a03553072f69d1117ea2389473acd4a (diff) | |
download | scala-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.check | 4 | ||||
-rw-r--r-- | test/files/neg/t3399.scala | 24 |
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 |