Skip to content

Commit 5e2d801

Browse files
committed
Convert more mutable.HashMaps to util.HashMaps (1)
1 parent 57c0a43 commit 5e2d801

File tree

3 files changed

+26
-14
lines changed

3 files changed

+26
-14
lines changed

compiler/src/dotty/tools/dotc/core/tasty/CommentUnpickler.scala

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
package dotty.tools.dotc.core.tasty
1+
package dotty.tools.dotc
2+
package core.tasty
23

3-
import dotty.tools.dotc.core.Comments.Comment
4-
import dotty.tools.dotc.util.Spans.Span
4+
import core.Comments.Comment
5+
import util.Spans.Span
6+
import util.HashMap
57

68
import dotty.tools.tasty.{TastyReader, TastyBuffer}
79
import TastyBuffer.Addr
810

9-
import scala.collection.mutable.HashMap
10-
1111
import java.nio.charset.Charset
1212

1313
class CommentUnpickler(reader: TastyReader) {
1414
import reader._
1515

16-
private[tasty] lazy val comments: Map[Addr, Comment] = {
16+
private[tasty] lazy val comments: HashMap[Addr, Comment] = {
1717
val comments = new HashMap[Addr, Comment]
1818
while (!isAtEnd) {
1919
val addr = readAddr()
@@ -25,7 +25,7 @@ class CommentUnpickler(reader: TastyReader) {
2525
comments(addr) = Comment(position, rawComment)
2626
}
2727
}
28-
comments.toMap
28+
comments
2929
}
3030

3131
def commentAt(addr: Addr): Option[Comment] =

compiler/src/dotty/tools/dotc/core/tasty/PositionUnpickler.scala

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,14 @@ import Names.TermName
1515
class PositionUnpickler(reader: TastyReader, nameAtRef: NameRef => TermName) {
1616
import reader._
1717

18-
private var mySpans: mutable.HashMap[Addr, Span] = _
19-
private var mySourcePaths: mutable.HashMap[Addr, String] = _
18+
private var mySpans: util.HashMap[Addr, Span] = _
19+
private var mySourcePaths: util.HashMap[Addr, String] = _
2020
private var isDefined = false
2121

2222
def ensureDefined(): Unit = {
2323
if (!isDefined) {
24-
mySpans = new mutable.HashMap[Addr, Span]
25-
mySourcePaths = new mutable.HashMap[Addr, String]
24+
mySpans = util.HashMap[Addr, Span]()
25+
mySourcePaths = util.HashMap[Addr, String]()
2626
var curIndex = 0
2727
var curStart = 0
2828
var curEnd = 0
@@ -50,12 +50,12 @@ class PositionUnpickler(reader: TastyReader, nameAtRef: NameRef => TermName) {
5050
}
5151
}
5252

53-
private[tasty] def spans: Map[Addr, Span] = {
53+
private[tasty] def spans: util.ReadOnlyMap[Addr, Span] = {
5454
ensureDefined()
5555
mySpans
5656
}
5757

58-
private[tasty] def sourcePaths: Map[Addr, String] = {
58+
private[tasty] def sourcePaths: util.ReadOnlyMap[Addr, String] = {
5959
ensureDefined()
6060
mySourcePaths
6161
}

compiler/src/dotty/tools/dotc/util/ReadOnlyMap.scala

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ abstract class ReadOnlyMap[Key, Value]:
1111

1212
def iterator: Iterator[(Key, Value)]
1313
def keysIterator: Iterator[Key]
14+
def valuesIterator: Iterator[Value]
1415

1516
def isEmpty: Boolean = size == 0
1617

@@ -26,4 +27,15 @@ abstract class ReadOnlyMap[Key, Value]:
2627

2728
def apply(key: Key): Value = lookup(key) match
2829
case null => throw new NoSuchElementException(s"$key")
29-
case v => v.uncheckedNN
30+
case v => v.uncheckedNN
31+
32+
def toArray: Array[(Key, Value)] =
33+
val result = new Array[(Key, Value)](size)
34+
var idx = 0
35+
for pair <- iterator do
36+
result(idx) = pair
37+
idx += 1
38+
result
39+
40+
def toSeq: Seq[(Key, Value)] = toArray.toSeq
41+

0 commit comments

Comments
 (0)