From ed3dddae4e8b55917217b202f54d5b918ce4030e Mon Sep 17 00:00:00 2001 From: Paul Phillips Date: Sat, 7 Aug 2010 19:36:38 +0000 Subject: Disallowed super.XX calls to Any methods which ... Disallowed super.XX calls to Any methods which are presently either crashing the compiler (isInstanceOf) or leading to runtime failure (== and !=) in addition to one which was being rewritten to a this call but makes more sense disallowed like the others (##). Closes #3736, review by odersky. --- test/files/neg/bug3736.check | 13 +++++++++++++ test/files/neg/bug3736.scala | 21 +++++++++++++++++++++ test/files/run/hashhash.scala | 9 ++------- 3 files changed, 36 insertions(+), 7 deletions(-) create mode 100644 test/files/neg/bug3736.check create mode 100644 test/files/neg/bug3736.scala (limited to 'test') diff --git a/test/files/neg/bug3736.check b/test/files/neg/bug3736.check new file mode 100644 index 0000000000..8a91088914 --- /dev/null +++ b/test/files/neg/bug3736.check @@ -0,0 +1,13 @@ +bug3736.scala:4: error: super not allowed here: use this.isInstanceOf instead + def f2 = super.isInstanceOf[String] + ^ +bug3736.scala:6: error: super not allowed here: use this.== instead + def f4 = super.==(new AnyRef) + ^ +bug3736.scala:7: error: super not allowed here: use this.!= instead + def f5 = super.!=(new AnyRef) + ^ +bug3736.scala:8: error: super not allowed here: use this.## instead + def f6 = super.## + ^ +four errors found diff --git a/test/files/neg/bug3736.scala b/test/files/neg/bug3736.scala new file mode 100644 index 0000000000..8e63021f69 --- /dev/null +++ b/test/files/neg/bug3736.scala @@ -0,0 +1,21 @@ +object Test { + class A { + def f1 = super.toString + def f2 = super.isInstanceOf[String] + def f3 = super.asInstanceOf[AnyRef] + def f4 = super.==(new AnyRef) + def f5 = super.!=(new AnyRef) + def f6 = super.## + } + + def main(args: Array[String]): Unit = { + val x = new A + x.f1 + x.f2 + x.f3 + x.f4 + x.f5 + x.f6 + } +} + diff --git a/test/files/run/hashhash.scala b/test/files/run/hashhash.scala index 4a34ab12e0..d3800be876 100644 --- a/test/files/run/hashhash.scala +++ b/test/files/run/hashhash.scala @@ -1,15 +1,10 @@ -object Test -{ - class A { val x1 = this.## ; val x2 = super.## } - val myA = new A - assert(myA.x1 == myA.x2) - +object Test { def confirmSame(x: Any) = assert(x.## == x.hashCode, "%s.## != %s.hashCode".format(x, x)) def confirmDifferent(x: Any) = assert(x.## != x.hashCode, "%s.## == %s.hashCode (but should not)".format(x, x)) def main(args: Array[String]): Unit = { /** Just a little sanity check, not to be confused with a unit test. */ - List(5, 5.5f, "abc", new AnyRef, new A, ()) foreach confirmSame + List(5, 5.5f, "abc", new AnyRef, ()) foreach confirmSame List(5.0f, 1.0d, -(5.0f), (-1.0d)) foreach confirmDifferent } } -- cgit v1.2.3