package scala.tools.nsc
package util
import scala.collection.mutable.HashMap
trait FreshNameCreator {
def newName(): String
def newName(prefix: String): String
@deprecated("use newName(prefix)", "2.9.0")
def newName(pos: util.Position, prefix: String): String = newName(prefix)
@deprecated("use newName()", "2.9.0")
def newName(pos: util.Position): String = newName()
}
object FreshNameCreator {
class Default extends FreshNameCreator {
protected var counter = 0
protected val counters = new HashMap[String, Int] withDefaultValue 0
def newName(prefix: String): String = {
val safePrefix = prefix.replaceAll("""[<>]""", """\$""")
counters(safePrefix) += 1
safePrefix + counters(safePrefix)
}
def newName(): String = {
counter += 1
"$" + counter + "$"
}
}
}