diff options
Diffstat (limited to 'src/library')
-rw-r--r-- | src/library/scala/xml/Text.scala | 30 |
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. */ |