Skip to content

Commit 384415b

Browse files
committed
Remove uses of StringOps from scala-reflect
1 parent b5bdfab commit 384415b

File tree

6 files changed

+17
-8
lines changed

6 files changed

+17
-8
lines changed

compiler/src/dotty/tools/dotc/core/Decorators.scala

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,21 @@ import printing.Formatting._
1515
object Decorators {
1616

1717
/** Turns Strings into PreNames, adding toType/TermName methods */
18-
implicit class StringDecorator(val s: String) extends AnyVal with PreName {
18+
implicit class PreNamedString(val s: String) extends AnyVal with PreName {
1919
def toTypeName: TypeName = typeName(s)
2020
def toTermName: TermName = termName(s)
2121
def toText(printer: Printer): Text = Str(s)
2222
}
2323

24+
implicit class StringDecorator(val s: String) extends AnyVal {
25+
def splitWhere(f: Char => Boolean, doDropIndex: Boolean = false): Option[(String, String)] =
26+
splitAt(s.indexWhere(f), doDropIndex)
27+
28+
private def splitAt(idx: Int, doDropIndex: Boolean = false): Option[(String, String)] =
29+
if (idx == -1) None
30+
else Some((s.take(idx), s.drop(if (doDropIndex) idx + 1 else idx)))
31+
}
32+
2433
/** Implements a findSymbol method on iterators of Symbols that
2534
* works like find but avoids Option, replacing None with NoSymbol.
2635
*/

compiler/src/dotty/tools/dotc/core/NameOps.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import java.security.MessageDigest
55
import scala.annotation.switch
66
import scala.io.Codec
77
import Names._, StdNames._, Contexts._, Symbols._, Flags._
8-
import Decorators.StringDecorator
8+
import Decorators.PreNamedString
99
import util.{Chars, NameTransformer}
1010
import Chars.isOperatorPart
1111
import Definitions._

compiler/src/dotty/tools/dotc/core/StdNames.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import scala.annotation.switch
77
import Names._
88
import Symbols._
99
import Contexts._
10-
import Decorators.StringDecorator
10+
import Decorators.PreNamedString
1111
import util.NameTransformer
1212
import scala.collection.breakOut
1313

compiler/src/dotty/tools/dotc/core/SymbolLoaders.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import scala.compat.Platform.currentTime
1212
import dotty.tools.io.{ ClassPath, AbstractFile }
1313
import Contexts._, Symbols._, Flags._, SymDenotations._, Types._, Scopes._, util.Positions._, Names._
1414
import StdNames._, NameOps._
15-
import Decorators.{StringDecorator, StringInterpolators}
15+
import Decorators.{PreNamedString, StringInterpolators}
1616
import classfile.ClassfileParser
1717
import scala.util.control.NonFatal
1818

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

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,12 +5,12 @@ package parsing
55
import scala.collection.mutable
66
import scala.xml.{ EntityRef, Text }
77
import core._
8+
import Decorators._
89
import Flags.Mutable
910
import Names._, StdNames._, ast.Trees._, ast.{tpd, untpd}
1011
import Symbols._, Contexts._
1112
import util.Positions._
1213
import Parsers.Parser
13-
import scala.reflect.internal.util.StringOps.splitWhere
1414
import scala.language.implicitConversions
1515

1616
/** This class builds instance of `Tree` that represent XML.
@@ -171,7 +171,7 @@ class SymbolicXMLBuilder(parser: Parser, preserveWS: Boolean)(implicit ctx: Cont
171171
}
172172

173173
/** Returns (Some(prefix) | None, rest) based on position of ':' */
174-
def splitPrefix(name: String): (Option[String], String) = splitWhere(name, _ == ':', true) match {
174+
def splitPrefix(name: String): (Option[String], String) = name.splitWhere(_ == ':', doDropIndex = true) match {
175175
case Some((pre, rest)) => (Some(pre), rest)
176176
case _ => (None, name)
177177
}

compiler/src/dotty/tools/io/ClassPath.scala

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ package io
88

99
import java.net.URL
1010
import scala.collection.{ mutable, immutable }
11-
import scala.reflect.internal.util.StringOps.splitWhere
11+
import dotc.core.Decorators.StringDecorator
1212
import File.pathSeparator
1313
import java.net.MalformedURLException
1414
import Jar.isJarOrZip
@@ -238,7 +238,7 @@ abstract class ClassPath {
238238
* Does not support nested classes on .NET
239239
*/
240240
def findClass(name: String): Option[AnyClassRep] =
241-
splitWhere(name, _ == '.', true) match {
241+
name.splitWhere(_ == '.', doDropIndex = true) match {
242242
case Some((pkg, rest)) =>
243243
val rep = packages find (_.name == pkg) flatMap (_ findClass rest)
244244
rep map {

0 commit comments

Comments
 (0)