summaryrefslogtreecommitdiff
path: root/test/files/neg/t5663-badwarneq.scala
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2013-04-25 01:08:44 -0700
committerPaul Phillips <paulp@improving.org>2013-04-25 01:08:44 -0700
commit4c39d54a3e6b14b5dc7c1798483bf2daaa0b7266 (patch)
tree9af420493d843ab9d225b24d17104c057a299cc6 /test/files/neg/t5663-badwarneq.scala
parent2e0079e870911ed64c3b959fd5500ee316c936d7 (diff)
parent8448beb2ad6346d1d04a1feedb3de4d77f61024d (diff)
downloadscala-4c39d54a3e6b14b5dc7c1798483bf2daaa0b7266.tar.gz
scala-4c39d54a3e6b14b5dc7c1798483bf2daaa0b7266.tar.bz2
scala-4c39d54a3e6b14b5dc7c1798483bf2daaa0b7266.zip
Merge pull request #2444 from paulp/pr/value-class-cmp-warning
SI-6943 warn on value class miscomparison.
Diffstat (limited to 'test/files/neg/t5663-badwarneq.scala')
-rw-r--r--test/files/neg/t5663-badwarneq.scala18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/files/neg/t5663-badwarneq.scala b/test/files/neg/t5663-badwarneq.scala
index 56ec389c03..3c0376914e 100644
--- a/test/files/neg/t5663-badwarneq.scala
+++ b/test/files/neg/t5663-badwarneq.scala
@@ -17,6 +17,11 @@ class SimpleParent
case class Simple() extends SimpleParent
case object SimpleSibling extends SimpleParent
+// value classes
+final class ValueClass1(val value: Int) extends AnyVal
+final class ValueClass2[T](val value: T) extends AnyVal
+final case class ValueClass3(val value: Int) extends AnyVal
+
/* It's not possible to run partest without -deprecation.
* Since detecting the warnings requires a neg test with
* -Xfatal-warnings, and deprecation terminates the compile,
@@ -63,6 +68,19 @@ object Test {
println(new Simple() == SimpleSibling) // like Some(1) == None, but needn't be final case
+ println(new ValueClass1(5) == new ValueClass1(5)) // ok
+ println(new ValueClass1(5) == 5) // bad
+ println(new ValueClass1(5) == (5: Any)) // ok, have to let it through
+ println(5 == new ValueClass1(5)) // bad
+ println((5: Any) == new ValueClass1(5) == (5: Any)) // ok
+
+ println(new ValueClass2("abc") == new ValueClass2("abc")) // ok
+ println(new ValueClass2("abc") == "abc") // bad
+ println(new ValueClass2(5) == new ValueClass1(5)) // bad - different value classes
+ println(ValueClass3(5) == new ValueClass3(5)) // ok
+ println(ValueClass3(5) == new ValueClass2(5)) // bad
+ println(ValueClass3(5) == 5) // bad
+
/*
val mine = new MyThing
val some = new SomeThing