aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/core/NameExtractors.scala
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/src/dotty/tools/dotc/core/NameExtractors.scala')
-rw-r--r--compiler/src/dotty/tools/dotc/core/NameExtractors.scala10
1 files changed, 8 insertions, 2 deletions
diff --git a/compiler/src/dotty/tools/dotc/core/NameExtractors.scala b/compiler/src/dotty/tools/dotc/core/NameExtractors.scala
index eaac30bf5..f84ee565d 100644
--- a/compiler/src/dotty/tools/dotc/core/NameExtractors.scala
+++ b/compiler/src/dotty/tools/dotc/core/NameExtractors.scala
@@ -7,9 +7,12 @@ import StdNames._
import util.DotClass
import tasty.TastyFormat._
import Decorators._
+import collection.mutable
object NameExtractors {
+ private val extractors = new mutable.HashMap[Int, ClassifiedNameExtractor]
+
abstract class NameInfo extends DotClass {
def tag: Int
def mkString(underlying: TermName): String
@@ -41,6 +44,7 @@ object NameExtractors {
case DerivedTermName(underlying, `info`) => Some(underlying)
case _ => None
}
+ extractors(tag) = this
}
class PrefixNameExtractor(tag: Int, prefix: String, infoString: String) extends ClassifiedNameExtractor(tag, infoString) {
@@ -73,8 +77,8 @@ object NameExtractors {
}
object AnyQualifiedName {
- def unapply(name: DerivedTermName): Option[(TermName, QualifiedNameExtractor # QualInfo)] = name match {
- case DerivedTermName(qual, info: QualifiedNameExtractor # QualInfo) =>
+ def unapply(name: DerivedTermName): Option[(TermName, QualifiedInfo)] = name match {
+ case DerivedTermName(qual, info: QualifiedInfo) =>
Some((name.underlying, info))
case _ => None
}
@@ -143,6 +147,8 @@ object NameExtractors {
def definesNewName(tag: Int) = tag <= TraitSetterName.tag
+ def extractorOfTag(tag: Int) = extractors(tag)
+
val separatorToQualified: Map[String, QualifiedNameExtractor] =
Map("." -> QualifiedName,
"$" -> FlattenedName,