diff options
author | Paul Phillips <paulp@improving.org> | 2012-09-28 14:36:42 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-10-09 14:17:34 -0700 |
commit | ba36c44c31d1a1e0b5c0cf3d4775edd0ae0d5a13 (patch) | |
tree | 8eb8caeb82afa0677a2e78291a990a9e525f3c7e /test/files/neg/cycle-bounds.check | |
parent | 432f9368011e0fd9e89ca0e18082bfec180baf32 (diff) | |
download | scala-ba36c44c31d1a1e0b5c0cf3d4775edd0ae0d5a13.tar.gz scala-ba36c44c31d1a1e0b5c0cf3d4775edd0ae0d5a13.tar.bz2 scala-ba36c44c31d1a1e0b5c0cf3d4775edd0ae0d5a13.zip |
Fix for SI-4744, another variety of cycle.
I threw this in with the previous commit behind -Ybreak-cycles, but
this one is much less sketchy. Explanation: have to handle f-bounds
more deftly. Namers forces lower bounds to prevent recursion in
that direction, but a light touch is required to handle these two
situations differently:
// This is a cyclic type parameter - an error is correct
class A[T <: Comparable[_ <: T]]
// This is not cyclic - it flips the arrow
class B[T <: Comparable[_ >: T]]
Long have I been haunted by the knowledge that you can
write class B in java, but not in scala:
public class B<T extends Comparable<? super T>> {}
It's over! We've achieved parity with java.
Diffstat (limited to 'test/files/neg/cycle-bounds.check')
-rw-r--r-- | test/files/neg/cycle-bounds.check | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/test/files/neg/cycle-bounds.check b/test/files/neg/cycle-bounds.check new file mode 100644 index 0000000000..d924838aec --- /dev/null +++ b/test/files/neg/cycle-bounds.check @@ -0,0 +1,4 @@ +cycle-bounds.scala:5: error: illegal cyclic reference involving type T +class NotOk[T <: Comparable[_ <: T]] + ^ +one error found |