diff options
Diffstat (limited to 'test/files')
-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) + } +} |