@@ -16,6 +16,7 @@ object NameExtractors {
16
16
17
17
abstract class NameInfo extends DotClass {
18
18
def tag : Int
19
+ def definesNewName : Boolean = false
19
20
def mkString (underlying : TermName ): String
20
21
def map (f : SimpleTermName => SimpleTermName ): NameInfo = this
21
22
}
@@ -64,6 +65,7 @@ object NameExtractors {
64
65
abstract class QualifiedNameExtractor (tag : Int , val separator : String , val infoString : String ) extends NameExtractor (tag) {
65
66
type ThisInfo = QualInfo
66
67
case class QualInfo (val name : SimpleTermName ) extends Info with QualifiedInfo {
68
+ override def definesNewName = true
67
69
override def map (f : SimpleTermName => SimpleTermName ): NameInfo = new QualInfo (f(name))
68
70
override def toString = s " $infoString $name"
69
71
}
@@ -89,9 +91,10 @@ object NameExtractors {
89
91
def num : Int
90
92
}
91
93
92
- abstract class NumberedNameExtractor (tag : Int , val infoString : String ) extends NameExtractor (tag) {
94
+ abstract class NumberedNameExtractor (tag : Int , val infoString : String ) extends NameExtractor (tag) { self =>
93
95
type ThisInfo = NumberedInfo
94
96
case class NumberedInfo (val num : Int ) extends Info with NameExtractors .NumberedInfo {
97
+ override def definesNewName = self.definesNewName
95
98
override def toString = s " $infoString $num"
96
99
}
97
100
def apply (qual : TermName , num : Int ) =
@@ -100,6 +103,14 @@ object NameExtractors {
100
103
case DerivedTermName (underlying, info : this .NumberedInfo ) => Some ((underlying, info.num))
101
104
case _ => None
102
105
}
106
+ def definesNewName = false
107
+ }
108
+
109
+ class UniqueNameExtractor (sep : String ) extends NumberedNameExtractor (UNIQUE , " Unique" ) {
110
+ val separator = if (sep.isEmpty) " $" else sep
111
+ override def definesNewName = ! sep.isEmpty
112
+ def mkString (underlying : TermName , info : ThisInfo ) =
113
+ underlying.toString + separator + info.num
103
114
}
104
115
105
116
object QualifiedName extends QualifiedNameExtractor (QUALIFIED , " ." , " Qualified" )
@@ -148,8 +159,6 @@ object NameExtractors {
148
159
def infoString : String = " Signed"
149
160
}
150
161
151
- def definesNewName (tag : Int ) = tag <= TraitSetterName .tag
152
-
153
162
def extractorOfTag (tag : Int ) = extractors(tag)
154
163
155
164
val separatorToQualified : Map [String , QualifiedNameExtractor ] =
0 commit comments