diff options
author | David MacIver <david.maciver@gmail.com> | 2009-06-01 10:22:48 +0000 |
---|---|---|
committer | David MacIver <david.maciver@gmail.com> | 2009-06-01 10:22:48 +0000 |
commit | 3f8de98f0b0ec0e10864b37016c2318439ce7898 (patch) | |
tree | 86682329b12cdd499927954c64718eb7dc845dba /src/compiler | |
parent | e0a4e468b76061840c585824f93163529dce73f6 (diff) | |
download | scala-3f8de98f0b0ec0e10864b37016c2318439ce7898.tar.gz scala-3f8de98f0b0ec0e10864b37016c2318439ce7898.tar.bz2 scala-3f8de98f0b0ec0e10864b37016c2318439ce7898.zip |
Modify TreeSet to use Ordering instead of Order...
Modify TreeSet to use Ordering instead of Ordered to bring it inline
with TreeMap and improve performance.
Diffstat (limited to 'src/compiler')
5 files changed, 8 insertions, 13 deletions
diff --git a/src/compiler/scala/tools/nsc/Settings.scala b/src/compiler/scala/tools/nsc/Settings.scala index dd504e3781..edd75a617e 100644 --- a/src/compiler/scala/tools/nsc/Settings.scala +++ b/src/compiler/scala/tools/nsc/Settings.scala @@ -331,6 +331,7 @@ object Settings new OutputSetting(outputDirs, default) } + implicit val SettingOrdering : Ordering[Setting] = Ordering.ordered; /** A base class for settings of all types. * Subclasses each define a `value' field of the appropriate type. */ diff --git a/src/compiler/scala/tools/nsc/doc/DocUtil.scala b/src/compiler/scala/tools/nsc/doc/DocUtil.scala index 096c1b8374..ad2c4ca521 100644 --- a/src/compiler/scala/tools/nsc/doc/DocUtil.scala +++ b/src/compiler/scala/tools/nsc/doc/DocUtil.scala @@ -92,7 +92,7 @@ object DocUtil { var ts = ts0 for (t <- ts1.iterator) { if (!ts.contains(t._1)) - ts = ts.updated(t._1, new TreeSet[S]); + ts = ts.updated(t._1, TreeSet.empty[S](Ordering.ordered[S])); ts = ts.updated(t._1, merge(ts(t._1), t._2)) } ts diff --git a/src/compiler/scala/tools/nsc/doc/ModelExtractor.scala b/src/compiler/scala/tools/nsc/doc/ModelExtractor.scala index fd954071c7..328f2713af 100644 --- a/src/compiler/scala/tools/nsc/doc/ModelExtractor.scala +++ b/src/compiler/scala/tools/nsc/doc/ModelExtractor.scala @@ -420,8 +420,8 @@ trait ModelExtractor { "[ \t]*@(exception|param|throws)[ \t]+(\\p{Graph}*)[ \t]*(.*)") def sort[E <: Entity](entities: Iterable[E]): Iterable[E] = { - val set = new collection.immutable.TreeSet[E]()({eA: E => new Ordered[E] { - def compare(eB: E): Int = { + val set = new collection.immutable.TreeSet[E]()(new Ordering[E] { + def compare(eA : E, eB: E): Int = { if (eA eq eB) return 0; (eA, eB) match { case (eA: ClassOrObject, eB: ClassOrObject) => @@ -442,10 +442,7 @@ trait ModelExtractor { assert(diff0 != 0) diff0 } - override def equals(other: Any) : Boolean = - eA.equals(other) || (other match { case that: AnyRef => this.eq(that) - case _ => false }) - }}) + }) set ++ entities } } diff --git a/src/compiler/scala/tools/nsc/doc/ModelToXML.scala b/src/compiler/scala/tools/nsc/doc/ModelToXML.scala index dc8f6a1771..21729b32b8 100644 --- a/src/compiler/scala/tools/nsc/doc/ModelToXML.scala +++ b/src/compiler/scala/tools/nsc/doc/ModelToXML.scala @@ -257,8 +257,8 @@ trait ModelToXML extends ModelExtractor { var seq: NodeSeq = NodeSeq.Empty if (xs.iterator.hasNext) { // alphabetic - val set = new scala.collection.immutable.TreeSet[entity.Member]()(mA => new Ordered[entity.Member] { - def compare(mB: entity.Member): Int = + val set = new scala.collection.immutable.TreeSet[entity.Member]()(new Ordering[entity.Member] { + def compare(mA : entity.Member, mB: entity.Member): Int = if (mA eq mB) 0 else { val diff = mA.name compare mB.name @@ -269,10 +269,6 @@ trait ModelToXML extends ModelExtractor { diff0 } } - override def equals(other: Any): Boolean = - other match { case that: entity.Member => compare(that) == 0 - case that: AnyRef => this.eq(that) - case _ => false } })++xs seq = seq ++ <table cellpadding="3" class="member" summary=""> <tr><td colspan="2" class="title">{Text(category.label + " Summary")}</td></tr> diff --git a/src/compiler/scala/tools/nsc/interactive/Positions.scala b/src/compiler/scala/tools/nsc/interactive/Positions.scala index 141f710b88..9982e14815 100755 --- a/src/compiler/scala/tools/nsc/interactive/Positions.scala +++ b/src/compiler/scala/tools/nsc/interactive/Positions.scala @@ -148,6 +148,7 @@ self: Global => tree setPos OffsetPosition(pos.source.get, currentPos.start) else { setChildrenPos(currentPos, children) + // temporary hack to work around issues with implicit resolution tree setPos new RangePosition( pos.source.get, (children map (_.pos.start)).min, pos.point, (children map (_.pos.end)).max) } |