diff options
author | Martin Odersky <odersky@gmail.com> | 2007-07-26 15:32:33 +0000 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2007-07-26 15:32:33 +0000 |
commit | 0b34dfbcfec17eda8634ff4f68cfe75503592bbf (patch) | |
tree | af658af2ab3729e5f6b3e68311ba99f1638cfb7f /test | |
parent | c61bd2d85cba92d1b297f9d78d92f44dc3604d80 (diff) | |
download | scala-0b34dfbcfec17eda8634ff4f68cfe75503592bbf.tar.gz scala-0b34dfbcfec17eda8634ff4f68cfe75503592bbf.tar.bz2 scala-0b34dfbcfec17eda8634ff4f68cfe75503592bbf.zip |
Fixed bug1210
Diffstat (limited to 'test')
-rw-r--r-- | test/files/neg/bug1210.check | 7 | ||||
-rwxr-xr-x | test/files/neg/bug1210.scala | 28 | ||||
-rwxr-xr-x | test/files/pos/bug1210a.scala | 9 |
3 files changed, 44 insertions, 0 deletions
diff --git a/test/files/neg/bug1210.check b/test/files/neg/bug1210.check new file mode 100644 index 0000000000..4db920556f --- /dev/null +++ b/test/files/neg/bug1210.check @@ -0,0 +1,7 @@ +bug1210.scala:13: error: illegal cyclic reference involving type Settings + val v: List[selfType] = f[selfType]((x: selfType) => x.v) + ^ +bug1210.scala:24: error: illegal cyclic reference involving type Settings + f[selfType](_.g) + ^ +two errors found diff --git a/test/files/neg/bug1210.scala b/test/files/neg/bug1210.scala new file mode 100755 index 0000000000..eb163a956e --- /dev/null +++ b/test/files/neg/bug1210.scala @@ -0,0 +1,28 @@ +object Test +{ + def f[T](recurse: T => List[T]): List[T] = + { + Nil + } + + abstract class M + { self => + type Settings + type selfType = M {type Settings = self.Settings} + + val v: List[selfType] = f[selfType]((x: selfType) => x.v) + } + + abstract class M2 + { self => + type Settings + type selfType = M2 {type Settings = self.Settings} + + def g: List[selfType] = Nil + + { + f[selfType](_.g) + } + } +} + diff --git a/test/files/pos/bug1210a.scala b/test/files/pos/bug1210a.scala new file mode 100755 index 0000000000..a349a26753 --- /dev/null +++ b/test/files/pos/bug1210a.scala @@ -0,0 +1,9 @@ +object Test { + def id[T](f: T => T): T = error("bla") + + abstract class M[Settings] { + type selfType = M[Settings] + + val v: selfType = id[M.this.selfType](x => x.v) + } +} |