diff options
author | Paul Phillips <paulp@improving.org> | 2012-10-24 13:23:54 -0700 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2012-10-24 13:52:41 -0700 |
commit | a7276d5976f57d4f182a55f92693de97acf1de64 (patch) | |
tree | d8aef3889d0ae87cc4ea5ae75ed5addd8b34ea86 /test/files/neg | |
parent | 2c554249fd8e99286134b217027b6e3cb2c92d77 (diff) | |
download | scala-a7276d5976f57d4f182a55f92693de97acf1de64.tar.gz scala-a7276d5976f57d4f182a55f92693de97acf1de64.tar.bz2 scala-a7276d5976f57d4f182a55f92693de97acf1de64.zip |
New take on SI-6534, value classes.
Don't prohibit equals and hashCode in universal traits;
instead, always override them in value classes.
Diffstat (limited to 'test/files/neg')
-rw-r--r-- | test/files/neg/t6534.check | 14 | ||||
-rw-r--r-- | test/files/neg/t6534.flags | 1 | ||||
-rw-r--r-- | test/files/neg/t6534.scala | 7 |
3 files changed, 22 insertions, 0 deletions
diff --git a/test/files/neg/t6534.check b/test/files/neg/t6534.check new file mode 100644 index 0000000000..bd7dc4b71c --- /dev/null +++ b/test/files/neg/t6534.check @@ -0,0 +1,14 @@ +t6534.scala:4: warning: Implementation of equals inherited from trait Foo overridden in class Bippy1 to enforce value class semantics +class Bippy1(val x: Int) extends AnyVal with Foo { } // warn + ^ +t6534.scala:5: warning: Implementation of hashCode inherited from trait Ding overridden in class Bippy2 to enforce value class semantics +class Bippy2(val x: Int) extends AnyVal with Ding { } // warn + ^ +t6534.scala:6: error: redefinition of equals method. See SIP-15, criterion 4. is not allowed in value class +class Bippy3(val x: Int) extends AnyVal { override def equals(x: Any) = false } // error + ^ +t6534.scala:7: error: redefinition of hashCode method. See SIP-15, criterion 4. is not allowed in value class +class Bippy4(val x: Int) extends AnyVal { override def hashCode = -1 } // error + ^ +two warnings found +two errors found diff --git a/test/files/neg/t6534.flags b/test/files/neg/t6534.flags new file mode 100644 index 0000000000..1008b0a70c --- /dev/null +++ b/test/files/neg/t6534.flags @@ -0,0 +1 @@ +-Xlint diff --git a/test/files/neg/t6534.scala b/test/files/neg/t6534.scala new file mode 100644 index 0000000000..a193179399 --- /dev/null +++ b/test/files/neg/t6534.scala @@ -0,0 +1,7 @@ +trait Foo extends Any { override def equals(x: Any) = false } +trait Ding extends Any { override def hashCode = -1 } + +class Bippy1(val x: Int) extends AnyVal with Foo { } // warn +class Bippy2(val x: Int) extends AnyVal with Ding { } // warn +class Bippy3(val x: Int) extends AnyVal { override def equals(x: Any) = false } // error +class Bippy4(val x: Int) extends AnyVal { override def hashCode = -1 } // error |