summaryrefslogtreecommitdiff
path: root/src/reflect/scala/reflect/internal/util
diff options
context:
space:
mode:
authorDen Shabalin <den.shabalin@gmail.com>2013-10-02 13:25:07 +0200
committerDen Shabalin <den.shabalin@gmail.com>2013-10-18 17:24:51 +0200
commit3692acaa40c8edcf4a5e7f4fcfa29ef090385df2 (patch)
tree7d0c1ec4a0ff78799183cf51152b85464c80b03c /src/reflect/scala/reflect/internal/util
parented86ab0a83f08e742545cf6ef40818f520c7844f (diff)
downloadscala-3692acaa40c8edcf4a5e7f4fcfa29ef090385df2.tar.gz
scala-3692acaa40c8edcf4a5e7f4fcfa29ef090385df2.tar.bz2
scala-3692acaa40c8edcf4a5e7f4fcfa29ef090385df2.zip
move fresh name creator into scala.reflect.internal.util
Diffstat (limited to 'src/reflect/scala/reflect/internal/util')
-rw-r--r--src/reflect/scala/reflect/internal/util/FreshNameCreator.scala31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/reflect/scala/reflect/internal/util/FreshNameCreator.scala b/src/reflect/scala/reflect/internal/util/FreshNameCreator.scala
new file mode 100644
index 0000000000..8fe4a715f3
--- /dev/null
+++ b/src/reflect/scala/reflect/internal/util/FreshNameCreator.scala
@@ -0,0 +1,31 @@
+/* NSC -- new Scala compiler
+ * Copyright 2005-2013 LAMP/EPFL
+ * @author Martin Odersky
+ */
+
+package scala.reflect.internal
+package util
+
+import scala.collection.mutable
+
+class FreshNameCreator {
+ protected var counter = 0
+ protected val counters = mutable.HashMap[String, Int]() withDefaultValue 0
+
+ /**
+ * Create a fresh name with the given prefix. It is guaranteed
+ * that the returned name has never been returned by a previous
+ * call to this function (provided the prefix does not end in a digit).
+ */
+ def newName(prefix: String): String = {
+ val safePrefix = prefix.replaceAll("""[<>]""", """\$""")
+ counters(safePrefix) += 1
+
+ safePrefix + counters(safePrefix)
+ }
+
+ def newName(): String = {
+ counter += 1
+ "$" + counter + "$"
+ }
+}