diff options
author | Jason Zaugg <jzaugg@gmail.com> | 2012-10-07 15:16:31 +0200 |
---|---|---|
committer | Jason Zaugg <jzaugg@gmail.com> | 2012-10-07 17:17:24 +0200 |
commit | 1b2ac4e618fd3e95efdeb965b0deebc2c5f78580 (patch) | |
tree | 8a83a7581bdb4493fa1a17cae4eefeb03b269e78 /test/files/neg | |
parent | bfde8c79cf68541e29e60d22371bcc4669be7b83 (diff) | |
download | scala-1b2ac4e618fd3e95efdeb965b0deebc2c5f78580.tar.gz scala-1b2ac4e618fd3e95efdeb965b0deebc2c5f78580.tar.bz2 scala-1b2ac4e618fd3e95efdeb965b0deebc2c5f78580.zip |
SI-6483 Prohibit super[T] references in value classes.
This seems the safest course of action for 2.10.0.
Diffstat (limited to 'test/files/neg')
-rw-r--r-- | test/files/neg/t6483.check | 9 | ||||
-rw-r--r-- | test/files/neg/t6483.scala | 24 |
2 files changed, 33 insertions, 0 deletions
diff --git a/test/files/neg/t6483.check b/test/files/neg/t6483.check new file mode 100644 index 0000000000..66e3507107 --- /dev/null +++ b/test/files/neg/t6483.check @@ -0,0 +1,9 @@ +t6483.scala:7: error: implementation restriction: qualified super reference is not allowed in value class +This restriction is planned to be removed in subsequent releases. + override def foo = super[T].foo // error + ^ +t6483.scala:20: error: implementation restriction: nested class is not allowed in value class +This restriction is planned to be removed in subsequent releases. + class Inner extends T { + ^ +two errors found diff --git a/test/files/neg/t6483.scala b/test/files/neg/t6483.scala new file mode 100644 index 0000000000..bd99f68fa4 --- /dev/null +++ b/test/files/neg/t6483.scala @@ -0,0 +1,24 @@ +trait T extends Any { + def foo = 1 + type X +} + +class C1(val a: Any) extends AnyVal with T { + override def foo = super[T].foo // error +} + +class C2(val a: Int) extends AnyVal with T { + override def foo = super.foo + a // okay +} + +class C3(val a: Int) extends AnyVal with T { + override def foo = C3.super.foo + a // okay +} + +class C4(val a: Int) extends AnyVal with T { + def foo { + class Inner extends T { + override def foo = super[T].foo + a // no (direct) error, other than that a nested class is currently illegal. + } + } +} |