diff options
author | Hubert Plociniczak <hubert.plociniczak@epfl.ch> | 2011-07-13 08:05:04 +0000 |
---|---|---|
committer | Hubert Plociniczak <hubert.plociniczak@epfl.ch> | 2011-07-13 08:05:04 +0000 |
commit | 8a0d130537be8c3716ab9191d84c53d39aaa1804 (patch) | |
tree | 8517ab3b5e82f4bb681f048e702b96f8e9d2d0fc /test/files/neg | |
parent | 038fef39ad4310fc3fe1c5324b004e42fd0036b3 (diff) | |
download | scala-8a0d130537be8c3716ab9191d84c53d39aaa1804.tar.gz scala-8a0d130537be8c3716ab9191d84c53d39aaa1804.tar.bz2 scala-8a0d130537be8c3716ab9191d84c53d39aaa1804.zip |
prohibit case-to-case inheritance instead of is...
prohibit case-to-case inheritance instead of issuing warning. closes
#4109. review by extempore, since it should make your life much easier
in the pattern matcher
Diffstat (limited to 'test/files/neg')
-rw-r--r-- | test/files/neg/caseinherit.check | 6 | ||||
-rw-r--r-- | test/files/neg/caseinherit.flags | 1 | ||||
-rw-r--r-- | test/files/neg/t0816.check | 4 | ||||
-rw-r--r-- | test/files/neg/t0816.scala | 12 | ||||
-rw-r--r-- | test/files/neg/t425.check | 4 | ||||
-rw-r--r-- | test/files/neg/t425.scala | 11 |
6 files changed, 34 insertions, 4 deletions
diff --git a/test/files/neg/caseinherit.check b/test/files/neg/caseinherit.check index 5630da2a3e..c185c82f70 100644 --- a/test/files/neg/caseinherit.check +++ b/test/files/neg/caseinherit.check @@ -1,10 +1,10 @@ -caseinherit.scala:2: error: case class `class B' has case ancestor `class A'. Case-to-case inheritance has potentially dangerous bugs which are unlikely to be fixed. You are strongly encouraged to instead use extractors to pattern match on non-leaf nodes. +caseinherit.scala:2: error: case class `class B' has case ancestor `class A'. Case-to-case inheritance is prohibited. To overcome this limitation use extractors to pattern match on non-leaf nodes. case class B(y: Int) extends A(y) ^ -caseinherit.scala:3: error: case class `object Bippy' has case ancestor `class A'. Case-to-case inheritance has potentially dangerous bugs which are unlikely to be fixed. You are strongly encouraged to instead use extractors to pattern match on non-leaf nodes. +caseinherit.scala:3: error: case class `object Bippy' has case ancestor `class A'. Case-to-case inheritance is prohibited. To overcome this limitation use extractors to pattern match on non-leaf nodes. case object Bippy extends A(55) ^ -caseinherit.scala:6: error: case class `class Dingus' has case ancestor `class A'. Case-to-case inheritance has potentially dangerous bugs which are unlikely to be fixed. You are strongly encouraged to instead use extractors to pattern match on non-leaf nodes. +caseinherit.scala:6: error: case class `class Dingus' has case ancestor `class A'. Case-to-case inheritance is prohibited. To overcome this limitation use extractors to pattern match on non-leaf nodes. case class Dingus(y: Int) extends Innocent ^ three errors found diff --git a/test/files/neg/caseinherit.flags b/test/files/neg/caseinherit.flags deleted file mode 100644 index e8fb65d50c..0000000000 --- a/test/files/neg/caseinherit.flags +++ /dev/null @@ -1 +0,0 @@ --Xfatal-warnings
\ No newline at end of file diff --git a/test/files/neg/t0816.check b/test/files/neg/t0816.check new file mode 100644 index 0000000000..ff6489be99 --- /dev/null +++ b/test/files/neg/t0816.check @@ -0,0 +1,4 @@ +t0816.scala:5: error: case class `class Ctest' has case ancestor `class Btest'. Case-to-case inheritance is prohibited. To overcome this limitation use extractors to pattern match on non-leaf nodes. +case class Ctest(override val data: String) extends Btest(data, true) + ^ +one error found diff --git a/test/files/neg/t0816.scala b/test/files/neg/t0816.scala new file mode 100644 index 0000000000..0128a0ad72 --- /dev/null +++ b/test/files/neg/t0816.scala @@ -0,0 +1,12 @@ +abstract class Atest(val data: String) + +case class Btest(override val data: String, val b: Boolean) extends Atest(data) + +case class Ctest(override val data: String) extends Btest(data, true) + +class testCaseClass { + def test(x: Atest) = x match { + case Ctest(data) => Console.println("C") + case Btest(data, b) => Console.println("B") + } +} diff --git a/test/files/neg/t425.check b/test/files/neg/t425.check new file mode 100644 index 0000000000..671c128753 --- /dev/null +++ b/test/files/neg/t425.check @@ -0,0 +1,4 @@ +t425.scala:3: error: case class `class B' has case ancestor `class A'. Case-to-case inheritance is prohibited. To overcome this limitation use extractors to pattern match on non-leaf nodes. + case class B(override val x: Int, y: Double) extends A(x) + ^ +one error found diff --git a/test/files/neg/t425.scala b/test/files/neg/t425.scala new file mode 100644 index 0000000000..e50c50ac35 --- /dev/null +++ b/test/files/neg/t425.scala @@ -0,0 +1,11 @@ +object Temp{ + case class A(x: Int) + case class B(override val x: Int, y: Double) extends A(x) + + val b: A = B(5, 3.3) + b match { + case B(x, y) => Console.println(y) + case A(x) => Console.println(x) + } +} + |