diff options
author | Paul Phillips <paulp@improving.org> | 2010-01-11 16:26:44 +0000 |
---|---|---|
committer | Paul Phillips <paulp@improving.org> | 2010-01-11 16:26:44 +0000 |
commit | aa6811dae63665a1eec7dd9de53b10970b0bfc53 (patch) | |
tree | 073160ec6244d67413c75ca774976e1dd8e45a82 | |
parent | 998a7b758fc4dc573abdeae0adc301623b393507 (diff) | |
download | scala-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.
-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. */ |