Skip to content

Commit 68a1d00

Browse files
committed
Add Collections from scala-reflect
1 parent 9a09340 commit 68a1d00

File tree

4 files changed

+42
-3
lines changed

4 files changed

+42
-3
lines changed

compiler/src/dotty/tools/dotc/parsing/JavaParsers.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@ import Decorators._
2323
import StdNames._
2424
import dotty.tools.dotc.reporting.diagnostic.messages.IdentifierExpected
2525
import dotty.tools.dotc.util.SourceFile
26+
import util.Collections._
2627
import util.Positions._
2728
import annotation.switch
2829
import scala.collection.mutable.ListBuffer
29-
import scala.reflect.internal.util.Collections._
3030

3131
object JavaParsers {
3232

compiler/src/dotty/tools/dotc/transform/FullParameterization.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import NameOps._
1212
import ast._
1313
import ast.Trees._
1414

15-
import scala.reflect.internal.util.Collections
15+
import util.Collections
1616

1717
/** Provides methods to produce fully parameterized versions of instance methods,
1818
* where the `this` of the enclosing class is abstracted out in an extra leading

compiler/src/dotty/tools/dotc/transform/PatternMatcher.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import dotty.tools.dotc.util.Positions.Position
3030
import dotty.tools.dotc.core.Decorators._
3131
import dotty.tools.dotc.core.Flags
3232

33-
import scala.reflect.internal.util.Collections
33+
import util.Collections
3434

3535
/** This transform eliminates patterns. Right now it's a dummy.
3636
* Awaiting the real pattern matcher.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
/* NSC -- new Scala compiler
2+
* Copyright 2005-2013 LAMP/EPFL
3+
* @author Paul Phillips
4+
*/
5+
6+
package dotty.tools
7+
package dotc
8+
package util
9+
10+
import scala.collection.mutable.ListBuffer
11+
12+
/** Profiler driven changes.
13+
* This was adapted from https://github.com/scala/scala/blob/2.11.x/src/reflect/scala/reflect/internal/util/Collections.scala
14+
*/
15+
object Collections {
16+
final def mapWithIndex[A, B](xs: List[A])(f: (A, Int) => B): List[B] = {
17+
val lb = new ListBuffer[B]
18+
var index = 0
19+
var ys = xs
20+
while (!ys.isEmpty) {
21+
lb += f(ys.head, index)
22+
ys = ys.tail
23+
index += 1
24+
}
25+
lb.toList
26+
}
27+
28+
final def map2[A, B, C](xs1: List[A], xs2: List[B])(f: (A, B) => C): List[C] = {
29+
val lb = new ListBuffer[C]
30+
var ys1 = xs1
31+
var ys2 = xs2
32+
while (!ys1.isEmpty && !ys2.isEmpty) {
33+
lb += f(ys1.head, ys2.head)
34+
ys1 = ys1.tail
35+
ys2 = ys2.tail
36+
}
37+
lb.toList
38+
}
39+
}

0 commit comments

Comments
 (0)