diff options
author | Adriaan Moors <adriaan.moors@epfl.ch> | 2010-03-08 14:27:48 +0000 |
---|---|---|
committer | Adriaan Moors <adriaan.moors@epfl.ch> | 2010-03-08 14:27:48 +0000 |
commit | 13f24056a444fd5038cebdb294a0959bfe979492 (patch) | |
tree | 9084c7312fbdcf9d1eb075bc5a4bfc9cfd72d14a /test/files/pos/t2994a.scala | |
parent | b7c17993c61d453c3069a14d66ada6fb7c3301c4 (diff) | |
download | scala-13f24056a444fd5038cebdb294a0959bfe979492.tar.gz scala-13f24056a444fd5038cebdb294a0959bfe979492.tar.bz2 scala-13f24056a444fd5038cebdb294a0959bfe979492.zip |
closes #2994
make normalize slightly more aggressive in loading symbol info, while )
tolerating the righteous cycle (use sym.info.typeParameters instead )
of unsafeParams this is needed to make sure higher-kinded types have )
their type parameters (otherwise we'd get a PolyType with NoSymbol for )
typeParams )
Diffstat (limited to 'test/files/pos/t2994a.scala')
-rw-r--r-- | test/files/pos/t2994a.scala | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/test/files/pos/t2994a.scala b/test/files/pos/t2994a.scala new file mode 100644 index 0000000000..cb4a389e2f --- /dev/null +++ b/test/files/pos/t2994a.scala @@ -0,0 +1,27 @@ +object Naturals { + trait NAT { + type a[s[_ <: NAT] <: NAT, z <: NAT] <: NAT + type v = a[SUCC, ZERO] + } + final class ZERO extends NAT { + type a[s[_ <: NAT] <: NAT, z <: NAT] = z + } + final class SUCC[n <: NAT] extends NAT { + type a[s[_ <: NAT] <: NAT, z <: NAT] = s[n#a[s, z]] + } + type _0 = ZERO + type _1 = SUCC[_0] + type _2 = SUCC[_1] + type _3 = SUCC[_2] + type _4 = SUCC[_3] + type _5 = SUCC[_4] + type _6 = SUCC[_5] + + + // crashes scala-2.8.0 beta1 + trait MUL[n <: NAT, m <: NAT] extends NAT { + trait curry[n[_[_], _], s[_]] { type f[z <: NAT] = n[s, z] } + type a[s[_ <: NAT] <: NAT, z <: NAT] = n#a[curry[m#a, s]#f, z] + } + +}
\ No newline at end of file |