summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorPaul Phillips <paulp@improving.org>2010-01-11 16:26:44 +0000
committerPaul Phillips <paulp@improving.org>2010-01-11 16:26:44 +0000
commitaa6811dae63665a1eec7dd9de53b10970b0bfc53 (patch)
tree073160ec6244d67413c75ca774976e1dd8e45a82 /src
parent998a7b758fc4dc573abdeae0adc301623b393507 (diff)
downloadscala-aa6811dae63665a1eec7dd9de53b10970b0bfc53.tar.gz
scala-aa6811dae63665a1eec7dd9de53b10970b0bfc53.tar.bz2
scala-aa6811dae63665a1eec7dd9de53b10970b0bfc53.zip
Fix for #2883, a regression introduced in r18789.
a regression because the pattern matcher has extractor bugs which don't manifest for case classes. Underlying bug remains. No review.
Diffstat (limited to 'src')
-rw-r--r--src/library/scala/xml/Text.scala30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/library/scala/xml/Text.scala b/src/library/scala/xml/Text.scala
index 84e4cbe78f..3090883bb8 100644
--- a/src/library/scala/xml/Text.scala
+++ b/src/library/scala/xml/Text.scala
@@ -13,16 +13,22 @@ package scala.xml
import collection.mutable.StringBuilder
-object Text {
- def apply(data: String) =
- if (data != null) new Text(data)
- else throw new IllegalArgumentException("tried to construct Text with null")
-
- def unapply(other: Any) = other match {
- case x: Text => Some(x.data)
- case _ => None
- }
-}
+// XXX This attempt to make Text not a case class revealed a bug in the pattern
+// matcher (see ticket #2883) so I've put the case back. (It was/is desirable that
+// it not be a case class because it is using the antipattern of passing constructor
+// parameters to the superclass where they become vals, but since they will also be
+// vals in the subclass, it acquires an underscore to avoid a name clash.)
+//
+// object Text {
+// def apply(data: String) =
+// if (data != null) new Text(data)
+// else throw new IllegalArgumentException("tried to construct Text with null")
+//
+// def unapply(other: Any): Option[String] = other match {
+// case x: Text => Some(x.data)
+// case _ => None
+// }
+// }
/** The class <code>Text</code> implements an XML node for text (PCDATA).
* It is used in both non-bound and bound XML representations.
@@ -31,9 +37,9 @@ object Text {
*
* @param text the text contained in this node, may not be null.
*/
-class Text(data: String) extends Atom[String](data)
+case class Text(_data: String) extends Atom[String](_data)
{
- if (data == null)
+ if (_data == null)
throw new IllegalArgumentException("tried to construct Text with null")
/** XXX More hashCode flailing. */