diff --git a/build.sbt b/build.sbt index 734920dd..3704bd39 100644 --- a/build.sbt +++ b/build.sbt @@ -78,7 +78,22 @@ lazy val xml = crossProject(JSPlatform, JVMPlatform, NativePlatform) // necessitated by the introduction of new abstract methods in FactoryAdapter: exclude[ReversedMissingMethodProblem]("scala.xml.parsing.FactoryAdapter.createComment"), // see #549 - exclude[ReversedMissingMethodProblem]("scala.xml.parsing.FactoryAdapter.createPCData") // see #558 + exclude[ReversedMissingMethodProblem]("scala.xml.parsing.FactoryAdapter.createPCData"), // see #558 + + // adding type annotations with types different from those inferred by (some versions of) the Scala compiler + exclude[DirectAbstractMethodProblem]("scala.xml.Node.child"), + exclude[DirectAbstractMethodProblem]("scala.xml.MetaData.value"), + exclude[DirectAbstractMethodProblem]("scala.xml.MetaData.apply"), + exclude[IncompatibleSignatureProblem]("scala.xml.Node.unapplySeq"), + exclude[IncompatibleSignatureProblem]("scala.xml.Elem.unapplySeq"), + exclude[IncompatibleResultTypeProblem]("scala.xml.Null.apply"), + exclude[IncompatibleResultTypeProblem]("scala.xml.Null.getNamespace"), + exclude[IncompatibleResultTypeProblem]("scala.xml.Null.key"), + exclude[IncompatibleResultTypeProblem]("scala.xml.Null.next"), + exclude[IncompatibleResultTypeProblem]("scala.xml.Null.remove"), + exclude[IncompatibleResultTypeProblem]("scala.xml.Null.value"), + exclude[IncompatibleResultTypeProblem]("scala.xml.dtd.NoExternalID.publicId"), + exclude[IncompatibleResultTypeProblem]("scala.xml.dtd.NoExternalID.systemId") ) }, // Mima signature checking stopped working after 3.0.2 upgrade, see #557 @@ -150,7 +165,7 @@ lazy val xml = crossProject(JSPlatform, JVMPlatform, NativePlatform) retrieveDir, log ) - .fold(w => throw w.resolveException, identity(_)) + .fold(w => throw w.resolveException, identity) val jarPath = cp .find(_.toString.contains("junit-plugin")) .getOrElse(throw new Exception("Can't find Scala Native junit-plugin jar")) diff --git a/jvm/src/test/scala/scala/xml/XMLTest.scala b/jvm/src/test/scala/scala/xml/XMLTest.scala index a8f4dd82..196085f4 100644 --- a/jvm/src/test/scala/scala/xml/XMLTest.scala +++ b/jvm/src/test/scala/scala/xml/XMLTest.scala @@ -33,7 +33,7 @@ class XMLTestJVM { def equality(): Unit = { val c: Node = new Node { override def label: String = "hello" - override def hashCode(): Int = + override def hashCode: Int = Utility.hashCode(prefix, label, this.attributes.hashCode(), scope.hashCode(), child) override def child: Seq[Node] = Elem(null, "world", e, sc) //def attributes = e @@ -54,7 +54,6 @@ class XMLTestJVM { Elem(null, "author", e, sc, Text("Peter Buneman")), Elem(null, "author", e, sc, Text("Dan Suciu")), Elem(null, "title", e, sc, Text("Data on ze web"))), x2p) - } @UnitTest @@ -640,7 +639,7 @@ class XMLTestJVM { parserFactory.setNamespaceAware(namespaceAware) parserFactory.setXIncludeAware(namespaceAware) - assertEquals(xml, XML.withSAXParser(parserFactory.newSAXParser).loadString(xml).toString()) + assertEquals(xml, XML.withSAXParser(parserFactory.newSAXParser).loadString(xml).toString) } @UnitTest diff --git a/shared/src/main/scala-2.13-/scala/xml/ScalaVersionSpecific.scala b/shared/src/main/scala-2.13-/scala/xml/ScalaVersionSpecific.scala index a8256f0c..4a490376 100644 --- a/shared/src/main/scala-2.13-/scala/xml/ScalaVersionSpecific.scala +++ b/shared/src/main/scala-2.13-/scala/xml/ScalaVersionSpecific.scala @@ -12,21 +12,21 @@ package scala.xml -import scala.collection.SeqLike +import scala.collection.{SeqLike, mutable} import scala.collection.generic.CanBuildFrom private[xml] object ScalaVersionSpecific { import NodeSeq.Coll type CBF[-From, -A, +C] = CanBuildFrom[From, A, C] object NodeSeqCBF extends CanBuildFrom[Coll, Node, NodeSeq] { - override def apply(from: Coll) /* TODO type annotation */ = NodeSeq.newBuilder - override def apply() /* TODO type annotation */ = NodeSeq.newBuilder + override def apply(from: Coll): mutable.Builder[Node, Coll] = NodeSeq.newBuilder + override def apply(): mutable.Builder[Node, Coll] = NodeSeq.newBuilder } } private[xml] trait ScalaVersionSpecificNodeSeq extends SeqLike[Node, NodeSeq] { self: NodeSeq => /** Creates a list buffer as builder for this class */ - override protected[this] def newBuilder /* TODO type annotation */ = NodeSeq.newBuilder + override protected[this] def newBuilder: mutable.Builder[Node, NodeSeq] = NodeSeq.newBuilder } private[xml] trait ScalaVersionSpecificNodeBuffer { self: NodeBuffer => diff --git a/shared/src/main/scala/scala/xml/Attribute.scala b/shared/src/main/scala/scala/xml/Attribute.scala index 8e41dc1c..d4e23a6b 100644 --- a/shared/src/main/scala/scala/xml/Attribute.scala +++ b/shared/src/main/scala/scala/xml/Attribute.scala @@ -22,7 +22,7 @@ import scala.collection.Seq * @author Burak Emir */ object Attribute { - def unapply(x: Attribute) /* TODO type annotation */ = x match { + def unapply(x: Attribute): Option[(String, Seq[Node], MetaData)] = x match { case PrefixedAttribute(_, key, value, next) => Some((key, value, next)) case UnprefixedAttribute(key, value, next) => Some((key, value, next)) case _ => None diff --git a/shared/src/main/scala/scala/xml/Elem.scala b/shared/src/main/scala/scala/xml/Elem.scala index dcbe8f5a..1e21ef08 100755 --- a/shared/src/main/scala/scala/xml/Elem.scala +++ b/shared/src/main/scala/scala/xml/Elem.scala @@ -26,7 +26,7 @@ object Elem { def apply(prefix: String, label: String, attributes: MetaData, scope: NamespaceBinding, minimizeEmpty: Boolean, child: Node*): Elem = new Elem(prefix, label, attributes, scope, minimizeEmpty, child: _*) - def unapplySeq(n: Node) /* TODO type annotation */ = n match { + def unapplySeq(n: Node): Option[(String, String, MetaData, NamespaceBinding, scala.collection.immutable.Seq[scala.xml.Node])] = n match { case _: SpecialNode | _: Group => None case _ => Some((n.prefix, n.label, n.attributes, n.scope, n.child.toSeq)) } diff --git a/shared/src/main/scala/scala/xml/Equality.scala b/shared/src/main/scala/scala/xml/Equality.scala index 11877f47..8c406c9d 100644 --- a/shared/src/main/scala/scala/xml/Equality.scala +++ b/shared/src/main/scala/scala/xml/Equality.scala @@ -85,7 +85,7 @@ trait Equality extends scala.Equals { * which heads off a lot of inconsistency up front. */ override def canEqual(other: Any): Boolean = other match { - case x: Equality => true + case _: Equality => true case _ => false } @@ -96,7 +96,7 @@ trait Equality extends scala.Equals { * are final since clearly individual classes cannot be trusted * to maintain a semblance of order. */ - override def hashCode(): Int = basisForHashCode.## + override def hashCode: Int = basisForHashCode.## override def equals(other: Any): Boolean = doComparison(other, blithe = false) final def xml_==(other: Any): Boolean = doComparison(other, blithe = true) final def xml_!=(other: Any): Boolean = !xml_==(other) diff --git a/shared/src/main/scala/scala/xml/Group.scala b/shared/src/main/scala/scala/xml/Group.scala index 471979d4..cee67bbc 100644 --- a/shared/src/main/scala/scala/xml/Group.scala +++ b/shared/src/main/scala/scala/xml/Group.scala @@ -24,7 +24,7 @@ final case class Group(nodes: Seq[Node]) extends Node { override def theSeq: Seq[Node] = nodes override def canEqual(other: Any): Boolean = other match { - case x: Group => true + case _: Group => true case _ => false } @@ -44,6 +44,6 @@ final case class Group(nodes: Seq[Node]) extends Node { override def label: Nothing = fail("label") override def attributes: Nothing = fail("attributes") override def namespace: Nothing = fail("namespace") - override def child /* TODO type annotation */ = fail("child") + override def child: Nothing = fail("child") def buildString(sb: StringBuilder): Nothing = fail("toString(StringBuilder)") } diff --git a/shared/src/main/scala/scala/xml/MetaData.scala b/shared/src/main/scala/scala/xml/MetaData.scala index 4607ea6c..7d2fcd6a 100644 --- a/shared/src/main/scala/scala/xml/MetaData.scala +++ b/shared/src/main/scala/scala/xml/MetaData.scala @@ -214,7 +214,7 @@ abstract class MetaData // appends string representations of single attribute to StringBuilder protected def toString1(sb: StringBuilder): Unit - override def toString(): String = sbToString(buildString) + override def toString: String = sbToString(buildString) def buildString(sb: StringBuilder): StringBuilder = { sb append ' ' diff --git a/shared/src/main/scala/scala/xml/Node.scala b/shared/src/main/scala/scala/xml/Node.scala index 1b2716f5..6f3cf987 100755 --- a/shared/src/main/scala/scala/xml/Node.scala +++ b/shared/src/main/scala/scala/xml/Node.scala @@ -28,7 +28,7 @@ object Node { /** the empty namespace */ val EmptyNamespace: String = "" - def unapplySeq(n: Node) /* TODO type annotation */ = Some((n.label, n.attributes, n.child.toSeq)) + def unapplySeq(n: Node): Some[(String, MetaData, Seq[Node])] = Some((n.label, n.attributes, n.child.toSeq)) } /** @@ -140,8 +140,8 @@ abstract class Node extends NodeSeq { def descendant_or_self: List[Node] = this :: descendant override def canEqual(other: Any): Boolean = other match { - case x: Group => false - case x: Node => true + case _: Group => false + case _: Node => true case _ => false } @@ -178,7 +178,7 @@ abstract class Node extends NodeSeq { /** * Same as `toString('''false''')`. */ - override def toString(): String = buildString(stripComments = false) + override def toString: String = buildString(stripComments = false) /** * Appends qualified name of this node to `StringBuilder`. @@ -194,7 +194,7 @@ abstract class Node extends NodeSeq { /** * Returns a type symbol (e.g. DTD, XSD), default `'''null'''`. */ - def xmlType(): TypeSymbol = null + def xmlType: TypeSymbol = null /** * Returns a text representation of this node. Note that this is not equivalent to diff --git a/shared/src/main/scala/scala/xml/NodeSeq.scala b/shared/src/main/scala/scala/xml/NodeSeq.scala index 89d81372..fc92a987 100644 --- a/shared/src/main/scala/scala/xml/NodeSeq.scala +++ b/shared/src/main/scala/scala/xml/NodeSeq.scala @@ -102,7 +102,7 @@ abstract class NodeSeq extends AbstractSeq[Node] with immutable.Seq[Node] with S else if (that(1) == '{') { val i: Int = that indexOf '}' if (i == -1) fail - val (uri: String, key: String) = (that.substring(2, i), that.substring(i + 1, that.length())) + val (uri: String, key: String) = (that.substring(2, i), that.substring(i + 1, that.length)) if (uri == "" || key == "") fail else y.attribute(uri, key) } else y.attribute(that drop 1) @@ -159,7 +159,7 @@ abstract class NodeSeq extends AbstractSeq[Node] with immutable.Seq[Node] with S */ def \@(attributeName: String): String = (this \ ("@" + attributeName)).text - override def toString(): String = theSeq.mkString + override def toString: String = theSeq.mkString def text: String = (this map (_.text)).mkString } diff --git a/shared/src/main/scala/scala/xml/Null.scala b/shared/src/main/scala/scala/xml/Null.scala index e7bf3627..ce30b3cd 100644 --- a/shared/src/main/scala/scala/xml/Null.scala +++ b/shared/src/main/scala/scala/xml/Null.scala @@ -25,18 +25,18 @@ import scala.collection.Seq * @author Burak Emir */ case object Null extends MetaData { - override def iterator /* TODO type annotation */ = Iterator.empty + override def iterator: Iterator[Nothing] = Iterator.empty override def size: Int = 0 override def append(m: MetaData, scope: NamespaceBinding = TopScope): MetaData = m override def filter(f: MetaData => Boolean): MetaData = this override def copy(next: MetaData): MetaData = next - override def getNamespace(owner: Node) /* TODO type annotation */ = null + override def getNamespace(owner: Node): scala.Null = null override def hasNext: Boolean = false - override def next /* TODO type annotation */ = null - override def key /* TODO type annotation */ = null - override def value /* TODO type annotation */ = null + override def next: scala.Null = null + override def key: scala.Null = null + override def value: scala.Null = null override def isPrefixed: Boolean = false override def length: Int = 0 @@ -48,20 +48,20 @@ case object Null extends MetaData { } override protected def basisForHashCode: Seq[Any] = Nil - override def apply(namespace: String, scope: NamespaceBinding, key: String) /* TODO type annotation */ = null - override def apply(key: String) /* TODO type annotation */ = + override def apply(namespace: String, scope: NamespaceBinding, key: String): scala.Null = null + override def apply(key: String): scala.Null = if (isNameStart(key.head)) null else throw new IllegalArgumentException("not a valid attribute name '" + key + "', so can never match !") override protected def toString1(sb: StringBuilder): Unit = () override protected def toString1(): String = "" - override def toString(): String = "" + override def toString: String = "" override def buildString(sb: StringBuilder): StringBuilder = sb override def wellformed(scope: NamespaceBinding): Boolean = true - override def remove(key: String) /* TODO type annotation */ = this - override def remove(namespace: String, scope: NamespaceBinding, key: String) /* TODO type annotation */ = this + override def remove(key: String): Null.type = this + override def remove(namespace: String, scope: NamespaceBinding, key: String): Null.type = this } diff --git a/shared/src/main/scala/scala/xml/PrefixedAttribute.scala b/shared/src/main/scala/scala/xml/PrefixedAttribute.scala index fcbeaccf..baedfabb 100644 --- a/shared/src/main/scala/scala/xml/PrefixedAttribute.scala +++ b/shared/src/main/scala/scala/xml/PrefixedAttribute.scala @@ -64,5 +64,5 @@ class PrefixedAttribute( } object PrefixedAttribute { - def unapply(x: PrefixedAttribute) /* TODO type annotation */ = Some((x.pre, x.key, x.value, x.next)) + def unapply(x: PrefixedAttribute): Some[(String, String, Seq[Node], MetaData)] = Some((x.pre, x.key, x.value, x.next)) } diff --git a/shared/src/main/scala/scala/xml/PrettyPrinter.scala b/shared/src/main/scala/scala/xml/PrettyPrinter.scala index 261b05bf..a02369d4 100755 --- a/shared/src/main/scala/scala/xml/PrettyPrinter.scala +++ b/shared/src/main/scala/scala/xml/PrettyPrinter.scala @@ -150,11 +150,11 @@ class PrettyPrinter(width: Int, step: Int, minimizeEmpty: Boolean) { protected def traverse(node: Node, pscope: NamespaceBinding, ind: Int): Unit = node match { - case Text(s) if s.trim() == "" => + case Text(s) if s.trim == "" => case _: Atom[_] | _: Comment | _: EntityRef | _: ProcInstr => - makeBox(ind, node.toString().trim()) - case g@Group(xs) => + makeBox(ind, node.toString.trim) + case Group(xs) => traverse(xs.iterator, pscope, ind) case _ => val test: String = { diff --git a/shared/src/main/scala/scala/xml/QNode.scala b/shared/src/main/scala/scala/xml/QNode.scala index 9b1e56e2..2399d064 100644 --- a/shared/src/main/scala/scala/xml/QNode.scala +++ b/shared/src/main/scala/scala/xml/QNode.scala @@ -20,5 +20,5 @@ package xml * @author Burak Emir */ object QNode { - def unapplySeq(n: Node) /* TODO type annotation */ = Some((n.scope.getURI(n.prefix), n.label, n.attributes, n.child.toSeq)) + def unapplySeq(n: Node): Some[(String, String, MetaData, Seq[Node])] = Some((n.scope.getURI(n.prefix), n.label, n.attributes, n.child.toSeq)) } diff --git a/shared/src/main/scala/scala/xml/SpecialNode.scala b/shared/src/main/scala/scala/xml/SpecialNode.scala index e9a4d007..1401fefb 100644 --- a/shared/src/main/scala/scala/xml/SpecialNode.scala +++ b/shared/src/main/scala/scala/xml/SpecialNode.scala @@ -24,11 +24,11 @@ abstract class SpecialNode extends Node { /** always empty */ final override def attributes: Null.type = Null - /** always Node.EmptyNamespace */ + /** always Node.EmptyNamespace - TODO not really: Node.EmptyNamespace is "", but this is null. */ final override def namespace: scala.Null = null /** always empty */ - final override def child /* TODO type annotation */ = Nil + final override def child: Nil.type = Nil /** Append string representation to the given string buffer argument. */ def buildString(sb: StringBuilder): StringBuilder diff --git a/shared/src/main/scala/scala/xml/TopScope.scala b/shared/src/main/scala/scala/xml/TopScope.scala index 0fcc2287..2dc77139 100644 --- a/shared/src/main/scala/scala/xml/TopScope.scala +++ b/shared/src/main/scala/scala/xml/TopScope.scala @@ -28,7 +28,7 @@ object TopScope extends NamespaceBinding(null, null, null) { override def getPrefix(uri1: String): String = if (uri1 == namespace) xml else null - override def toString(): String = "" + override def toString: String = "" override def buildString(stop: NamespaceBinding): String = "" override def buildString(sb: StringBuilder, ignore: NamespaceBinding): Unit = () diff --git a/shared/src/main/scala/scala/xml/UnprefixedAttribute.scala b/shared/src/main/scala/scala/xml/UnprefixedAttribute.scala index c33e5587..d4689617 100644 --- a/shared/src/main/scala/scala/xml/UnprefixedAttribute.scala +++ b/shared/src/main/scala/scala/xml/UnprefixedAttribute.scala @@ -62,5 +62,5 @@ class UnprefixedAttribute( next(namespace, scope, key) } object UnprefixedAttribute { - def unapply(x: UnprefixedAttribute) /* TODO type annotation */ = Some((x.key, x.value, x.next)) + def unapply(x: UnprefixedAttribute): Some[(String, Seq[Node], MetaData)] = Some((x.key, x.value, x.next)) } diff --git a/shared/src/main/scala/scala/xml/Utility.scala b/shared/src/main/scala/scala/xml/Utility.scala index c812e4b6..28d389d3 100755 --- a/shared/src/main/scala/scala/xml/Utility.scala +++ b/shared/src/main/scala/scala/xml/Utility.scala @@ -28,7 +28,7 @@ object Utility extends AnyRef with parsing.TokenTests { // [Martin] This looks dubious. We don't convert StringBuilders to // Strings anywhere else, why do it here? - implicit def implicitSbToString(sb: StringBuilder): String = sb.toString() + implicit def implicitSbToString(sb: StringBuilder): String = sb.toString // helper for the extremely oft-repeated sequence of creating a // StringBuilder, passing it around, and then grabbing its String. @@ -50,7 +50,7 @@ object Utility extends AnyRef with parsing.TokenTests { */ def trim(x: Node): Node = x match { case Elem(pre, lab, md, scp, child@_*) => - val children: Seq[Node] = combineAdjacentTextNodes(child) flatMap trimProper + val children: Seq[Node] = combineAdjacentTextNodes(child).flatMap(trimProper) Elem(pre, lab, md, scp, children.isEmpty, children: _*) } @@ -67,7 +67,7 @@ object Utility extends AnyRef with parsing.TokenTests { */ def trimProper(x: Node): Seq[Node] = x match { case Elem(pre, lab, md, scp, child@_*) => - val children: Seq[Node] = combineAdjacentTextNodes(child) flatMap trimProper + val children: Seq[Node] = combineAdjacentTextNodes(child).flatMap(trimProper) Elem(pre, lab, md, scp, children.isEmpty, children: _*) case Text(s) => new TextBuffer().append(s).toText @@ -173,7 +173,7 @@ object Utility extends AnyRef with parsing.TokenTests { // minimizeTags: Boolean = false): String = // { // toXMLsb(x, pscope, sb, stripComments, decodeEntities, preserveWhitespace, minimizeTags) - // sb.toString() + // sb.toString // } /** @@ -263,13 +263,16 @@ object Utility extends AnyRef with parsing.TokenTests { } else children foreach { serialize(_, pscope, sb, stripComments, decodeEntities, preserveWhitespace, minimizeTags) } } + def splitName(name: String): (Option[String], String) = { + val colon: Int = name.indexOf(':') + if (colon < 0) (None, name) + else (Some(name.take(colon)), name.drop(colon + 1)) + } + /** * Returns prefix of qualified name if any. */ - final def prefix(name: String): Option[String] = name.indexOf(':') match { - case -1 => None - case i => Some(name.substring(0, i)) - } + final def prefix(name: String): Option[String] = splitName(name)._1 /** * Returns a hashcode for the given constituents of a node @@ -357,12 +360,12 @@ object Utility extends AnyRef with parsing.TokenTests { rfb.append(c) c = it.next() } - val ref: String = rfb.toString() + val ref: String = rfb.toString rfb.clear() unescape(ref, sb) match { case null => if (sb.nonEmpty) { // flush buffer - nb += Text(sb.toString()) + nb += Text(sb.toString) sb.clear() } nb += EntityRef(ref) // add entityref @@ -372,7 +375,7 @@ object Utility extends AnyRef with parsing.TokenTests { } else sb append c } if (sb.nonEmpty) { // flush buffer - val x: Text = Text(sb.toString()) + val x: Text = Text(sb.toString) if (nb.isEmpty) return x else diff --git a/shared/src/main/scala/scala/xml/XML.scala b/shared/src/main/scala/scala/xml/XML.scala index 9838d150..b5ea9133 100755 --- a/shared/src/main/scala/scala/xml/XML.scala +++ b/shared/src/main/scala/scala/xml/XML.scala @@ -117,7 +117,7 @@ object XML extends XMLLoader[Elem] { final def write(w: java.io.Writer, node: Node, enc: String, xmlDecl: Boolean, doctype: dtd.DocType, minimizeTags: MinimizeMode.Value = MinimizeMode.Default): Unit = { /* TODO: optimize by giving writer parameter to toXML*/ if (xmlDecl) w.write("\n") - if (doctype ne null) w.write(doctype.toString() + "\n") + if (doctype ne null) w.write(doctype.toString + "\n") w.write(Utility.serialize(node, minimizeTags = minimizeTags).toString) } } diff --git a/shared/src/main/scala/scala/xml/dtd/Decl.scala b/shared/src/main/scala/scala/xml/dtd/Decl.scala index 0a1ded00..08f4a853 100644 --- a/shared/src/main/scala/scala/xml/dtd/Decl.scala +++ b/shared/src/main/scala/scala/xml/dtd/Decl.scala @@ -150,22 +150,22 @@ case class PEReference(ent: String) extends MarkupDecl { // default declarations for attributes sealed abstract class DefaultDecl { - override def toString(): String + def toString: String def buildString(sb: StringBuilder): StringBuilder } case object REQUIRED extends DefaultDecl { - override def toString(): String = "#REQUIRED" + override def toString: String = "#REQUIRED" override def buildString(sb: StringBuilder): StringBuilder = sb append "#REQUIRED" } case object IMPLIED extends DefaultDecl { - override def toString(): String = "#IMPLIED" + override def toString: String = "#IMPLIED" override def buildString(sb: StringBuilder): StringBuilder = sb append "#IMPLIED" } case class DEFAULT(fixed: Boolean, attValue: String) extends DefaultDecl { - override def toString(): String = sbToString(buildString) + override def toString: String = sbToString(buildString) override def buildString(sb: StringBuilder): StringBuilder = { if (fixed) sb append "#FIXED " Utility.appendEscapedQuoted(attValue, sb) diff --git a/shared/src/main/scala/scala/xml/dtd/DocType.scala b/shared/src/main/scala/scala/xml/dtd/DocType.scala index 6a6c6e9e..efdfcf83 100644 --- a/shared/src/main/scala/scala/xml/dtd/DocType.scala +++ b/shared/src/main/scala/scala/xml/dtd/DocType.scala @@ -35,7 +35,7 @@ case class DocType(name: String, extID: ExternalID, intSubset: Seq[dtd.Decl]) { if (intSubset.isEmpty) "" else intSubset.mkString("[", "", "]") - """""".format(name, extID.toString(), intString) + """""".format(name, extID.toString, intString) } } diff --git a/shared/src/main/scala/scala/xml/dtd/ExternalID.scala b/shared/src/main/scala/scala/xml/dtd/ExternalID.scala index 2bd80c80..dc5da2fc 100644 --- a/shared/src/main/scala/scala/xml/dtd/ExternalID.scala +++ b/shared/src/main/scala/scala/xml/dtd/ExternalID.scala @@ -36,7 +36,7 @@ sealed abstract class ExternalID extends parsing.TokenTests { (if (systemId == null) "" else " " + quotedSystemLiteral) } def buildString(sb: StringBuilder): StringBuilder = - sb.append(this.toString()) + sb.append(this.toString) def systemId: String def publicId: String @@ -85,8 +85,8 @@ case class PublicID(override val publicId: String, override val systemId: String * @author Michael Bayne */ object NoExternalID extends ExternalID { - override val publicId /* TODO type annotation */ = null - override val systemId /* TODO type annotation */ = null + override val publicId: scala.Null = null + override val systemId: scala.Null = null override def toString: String = "" } diff --git a/shared/src/main/scala/scala/xml/dtd/ValidationException.scala b/shared/src/main/scala/scala/xml/dtd/ValidationException.scala index 9b521c8a..ce6f52be 100644 --- a/shared/src/main/scala/scala/xml/dtd/ValidationException.scala +++ b/shared/src/main/scala/scala/xml/dtd/ValidationException.scala @@ -37,7 +37,7 @@ object MakeValidationException { val sb: StringBuilder = new StringBuilder("missing value for REQUIRED attribute") if (allKeys.size > 1) sb.append('s') allKeys foreach (k => sb append "'%s'".format(k)) - ValidationException(sb.toString()) + ValidationException(sb.toString) } def fromMissingAttribute(key: String, tpe: String): ValidationException = diff --git a/shared/src/main/scala/scala/xml/dtd/impl/BaseBerrySethi.scala b/shared/src/main/scala/scala/xml/dtd/impl/BaseBerrySethi.scala index 9d515938..33d6e76d 100644 --- a/shared/src/main/scala/scala/xml/dtd/impl/BaseBerrySethi.scala +++ b/shared/src/main/scala/scala/xml/dtd/impl/BaseBerrySethi.scala @@ -20,7 +20,7 @@ import scala.collection.Seq /** * This class turns a regular expression over `A` into a - * [[scala.util.automata.NondetWordAutom]] over `A` using the celebrated + * [[scala.xml.dtd.impl.NondetWordAutom]] over `A` using the celebrated * position automata construction (also called ''Berry-Sethi'' or ''Glushkov''). */ @deprecated("This class will be removed", "2.10.0") diff --git a/shared/src/main/scala/scala/xml/dtd/impl/DetWordAutom.scala b/shared/src/main/scala/scala/xml/dtd/impl/DetWordAutom.scala index 56df1f9f..3b6b8663 100644 --- a/shared/src/main/scala/scala/xml/dtd/impl/DetWordAutom.scala +++ b/shared/src/main/scala/scala/xml/dtd/impl/DetWordAutom.scala @@ -39,7 +39,7 @@ private[dtd] abstract class DetWordAutom[T <: AnyRef] { sb.append(nstates) sb.append(" finals=") val map: Map[Int, Int] = finals.zipWithIndex.map(_.swap).toMap - sb.append(map.toString()) + sb.append(map.toString) sb.append(" delta=\n") for (i <- 0 until nstates) { diff --git a/shared/src/main/scala/scala/xml/dtd/impl/WordBerrySethi.scala b/shared/src/main/scala/scala/xml/dtd/impl/WordBerrySethi.scala index 2e0f5cb5..2692859a 100644 --- a/shared/src/main/scala/scala/xml/dtd/impl/WordBerrySethi.scala +++ b/shared/src/main/scala/scala/xml/dtd/impl/WordBerrySethi.scala @@ -17,7 +17,7 @@ import scala.collection.{immutable, mutable} import scala.collection.Seq /** - * This class turns a regular expression into a [[scala.util.automata.NondetWordAutom]] + * This class turns a regular expression into a [[scala.xml.dtd.impl.NondetWordAutom]] * celebrated position automata construction (also called ''Berry-Sethi'' or ''Glushkov''). * * @author Burak Emir diff --git a/shared/src/main/scala/scala/xml/factory/XMLLoader.scala b/shared/src/main/scala/scala/xml/factory/XMLLoader.scala index 8e7dd745..ff722d6e 100644 --- a/shared/src/main/scala/scala/xml/factory/XMLLoader.scala +++ b/shared/src/main/scala/scala/xml/factory/XMLLoader.scala @@ -30,7 +30,7 @@ trait XMLLoader[T <: Node] { private lazy val parserInstance: ThreadLocal[SAXParser] = new ThreadLocal[SAXParser] { override def initialValue: SAXParser = { - val parser: SAXParserFactory = SAXParserFactory.newInstance() + val parser: SAXParserFactory = SAXParserFactory.newInstance parser.setFeature("http://javax.xml.XMLConstants/feature/secure-processing", true) parser.setFeature("http://apache.org/xml/features/nonvalidating/load-external-dtd", false) parser.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true) @@ -39,7 +39,7 @@ trait XMLLoader[T <: Node] { parser.setFeature("http://xml.org/sax/features/resolve-dtd-uris", false) parser.setXIncludeAware(false) parser.setNamespaceAware(false) - parser.newSAXParser() + parser.newSAXParser } } diff --git a/shared/src/main/scala/scala/xml/include/XIncludeException.scala b/shared/src/main/scala/scala/xml/include/XIncludeException.scala index ddc1419f..4d2a809c 100644 --- a/shared/src/main/scala/scala/xml/include/XIncludeException.scala +++ b/shared/src/main/scala/scala/xml/include/XIncludeException.scala @@ -57,5 +57,5 @@ class XIncludeException(message: String) extends Exception(message) { * @return Throwable the underlying exception which caused the * `XIncludeException` to be thrown */ - def getRootCause(): Throwable = this.rootCause + def getRootCause: Throwable = this.rootCause } diff --git a/shared/src/main/scala/scala/xml/include/sax/XIncludeFilter.scala b/shared/src/main/scala/scala/xml/include/sax/XIncludeFilter.scala index c7b22125..a1375477 100644 --- a/shared/src/main/scala/scala/xml/include/sax/XIncludeFilter.scala +++ b/shared/src/main/scala/scala/xml/include/sax/XIncludeFilter.scala @@ -94,7 +94,7 @@ class XIncludeFilter extends XMLFilterImpl { try { bases.push(new URL(base)) } catch { - case e: MalformedURLException => + case _: MalformedURLException => throw new UnsupportedOperationException("Unrecognized SYSTEM ID: " + base) } super.setDocumentLocator(locator) @@ -113,7 +113,7 @@ class XIncludeFilter extends XMLFilterImpl { * * @return boolean */ - def insideIncludeElement(): Boolean = level != 0 + def insideIncludeElement: Boolean = level != 0 override def startElement(uri: String, localName: String, qName: String, atts1: Attributes): Unit = { var atts: Attributes = atts1 @@ -222,9 +222,9 @@ class XIncludeFilter extends XMLFilterImpl { } // convenience method for error messages - private def getLocation(): String = { + private def getLocation: String = { var locationString: String = "" - val locator: Locator = locators.peek() + val locator: Locator = locators.peek var publicID: String = "" var systemID: String = "" var column: Int = -1 @@ -256,21 +256,21 @@ class XIncludeFilter extends XMLFilterImpl { */ private def includeTextDocument(url: String, encoding1: String): Unit = { var encoding: String = encoding1 - if (encoding == null || encoding.trim().equals("")) encoding = "UTF-8" + if (encoding == null || encoding.trim.equals("")) encoding = "UTF-8" var source: URL = null try { - val base: URL = bases.peek() + val base: URL = bases.peek source = new URL(base, url) } catch { case e: MalformedURLException => val ex: UnavailableResourceException = new UnavailableResourceException("Unresolvable URL " + url - + getLocation()) + + getLocation) ex.setRootCause(e) - throw new SAXException("Unresolvable URL " + url + getLocation(), ex) + throw new SAXException("Unresolvable URL " + url + getLocation, ex) } try { - val uc: URLConnection = source.openConnection() + val uc: URLConnection = source.openConnection val in: BufferedInputStream = new BufferedInputStream(uc.getInputStream) val encodingFromHeader: String = uc.getContentEncoding var contentType: String = uc.getContentType @@ -281,7 +281,7 @@ class XIncludeFilter extends XMLFilterImpl { // MIME types are case-insensitive // Java may be picking this up from file URL if (contentType != null) { - contentType = contentType.toLowerCase() + contentType = contentType.toLowerCase if (contentType.equals("text/xml") || contentType.equals("application/xml") || (contentType.startsWith("text/") && contentType.endsWith("+xml")) @@ -300,10 +300,10 @@ class XIncludeFilter extends XMLFilterImpl { } catch { case e: UnsupportedEncodingException => throw new SAXException("Unsupported encoding: " - + encoding + getLocation(), e) + + encoding + getLocation, e) case e: IOException => throw new SAXException("Document not found: " - + source.toExternalForm + getLocation(), e) + + source.toExternalForm + getLocation, e) } } @@ -322,19 +322,19 @@ class XIncludeFilter extends XMLFilterImpl { */ private def includeXMLDocument(url: String): Unit = { val source: URL = - try new URL(bases.peek(), url) + try new URL(bases.peek, url) catch { case e: MalformedURLException => - val ex: UnavailableResourceException = new UnavailableResourceException("Unresolvable URL " + url + getLocation()) + val ex: UnavailableResourceException = new UnavailableResourceException("Unresolvable URL " + url + getLocation) ex setRootCause e - throw new SAXException("Unresolvable URL " + url + getLocation(), ex) + throw new SAXException("Unresolvable URL " + url + getLocation, ex) } try { val parser: XMLReader = try XMLReaderFactory.createXMLReader() catch { - case e: SAXException => + case _: SAXException => try XMLReaderFactory.createXMLReader(XercesClassName) catch { case _: SAXException => return System.err.println("Could not find an XML parser") } } @@ -350,7 +350,7 @@ class XIncludeFilter extends XMLFilterImpl { if (bases contains source) throw new SAXException( "Circular XInclude Reference", - new CircularIncludeException("Circular XInclude Reference to " + source + getLocation()) + new CircularIncludeException("Circular XInclude Reference to " + source + getLocation) ) bases push source @@ -362,7 +362,7 @@ class XIncludeFilter extends XMLFilterImpl { bases.pop() } catch { case e: IOException => - throw new SAXException("Document not found: " + source.toExternalForm + getLocation(), e) + throw new SAXException("Document not found: " + source.toExternalForm + getLocation, e) } } } diff --git a/shared/src/main/scala/scala/xml/include/sax/XIncluder.scala b/shared/src/main/scala/scala/xml/include/sax/XIncluder.scala index 061d4933..fd576e3a 100644 --- a/shared/src/main/scala/scala/xml/include/sax/XIncluder.scala +++ b/shared/src/main/scala/scala/xml/include/sax/XIncluder.scala @@ -170,7 +170,7 @@ class XIncluder(outs: OutputStream, encoding: String) extends ContentHandler wit } override def comment(ch: Array[Char], start: Int, length: Int): Unit = { - if (!inDTD && !filter.insideIncludeElement()) { + if (!inDTD && !filter.insideIncludeElement) { try { out.write("