summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2011-03-15 06:18:02 +0000
committerPaul Phillips <paulp@improving.org>2011-03-15 06:18:02 +0000
commitc45095387566fc7403f04c55ac0e3abcf34bfc52 (patch)
treec1b1552269ec1eac166893eab79f137009e69836
parent06a98d22ce16aae01757d7aceaad9b7fb3a9d903 (diff)
downloadscala-c45095387566fc7403f04c55ac0e3abcf34bfc52.tar.gz
scala-c45095387566fc7403f04c55ac0e3abcf34bfc52.tar.bz2
scala-c45095387566fc7403f04c55ac0e3abcf34bfc52.zip
Slight tweak to case class deprecation message,...
Slight tweak to case class deprecation message, no review.
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Typers.scala5
-rw-r--r--test/files/neg/caseinherit.check6
2 files changed, 4 insertions, 7 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Typers.scala b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
index d1fe796030..7ba561136d 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Typers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Typers.scala
@@ -1007,13 +1007,10 @@ trait Typers extends Modes {
}
private def validateNoCaseAncestor(clazz: Symbol) = {
- // XXX I think this should issue a sharper warning of some kind like
- // "change your code now!" as there are material bugs (which are very unlikely
- // to be fixed) associated with case class inheritance.
if (!phase.erasedTypes) {
for (ancestor <- clazz.ancestors find (_.isCase)) {
unit.deprecationWarning(clazz.pos, (
- "case class `%s' has case ancestor `%s'. Case inheritance has potentially "+
+ "case class `%s' has case ancestor `%s'. 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."
).format(clazz, ancestor))
diff --git a/test/files/neg/caseinherit.check b/test/files/neg/caseinherit.check
index c0886cb7ff..5630da2a3e 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 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 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.
case class B(y: Int) extends A(y)
^
-caseinherit.scala:3: error: case class `object Bippy' has case ancestor `class A'. 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 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.
case object Bippy extends A(55)
^
-caseinherit.scala:6: error: case class `class Dingus' has case ancestor `class A'. 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 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.
case class Dingus(y: Int) extends Innocent
^
three errors found