@@ -11,22 +11,22 @@ import Decorators._
1111import Contexts .Context
1212import collection .mutable
1313
14- object NameExtractors {
14+ object NameKinds {
1515
16- @ sharable private val simpleExtractors = new mutable.HashMap [Int , ClassifiedNameExtractor ]
17- @ sharable private val uniqueExtractors = new mutable.HashMap [String , UniqueNameExtractor ]
18- @ sharable private val qualifiedExtractors = new mutable.HashMap [String , QualifiedNameExtractor ]
16+ @ sharable private val simpleNameKinds = new mutable.HashMap [Int , ClassifiedNameKind ]
17+ @ sharable private val uniqueNameKinds = new mutable.HashMap [String , UniqueNameKind ]
18+ @ sharable private val qualifiedNameKinds = new mutable.HashMap [String , QualifiedNameKind ]
1919
2020 abstract class NameInfo extends DotClass {
21- def extractor : NameExtractor
21+ def kind : NameKind
2222 def mkString (underlying : TermName ): String
2323 def map (f : SimpleTermName => SimpleTermName ): NameInfo = this
2424 }
2525
26- abstract class NameExtractor (val tag : Int ) extends DotClass { self =>
26+ abstract class NameKind (val tag : Int ) extends DotClass { self =>
2727 type ThisInfo <: Info
2828 class Info extends NameInfo { this : ThisInfo =>
29- def extractor = self
29+ def kind = self
3030 def mkString (underlying : TermName ) = self.mkString(underlying, this )
3131 override def toString = infoString
3232 }
@@ -35,14 +35,14 @@ object NameExtractors {
3535 def infoString : String
3636 }
3737
38- object SimpleTermNameExtractor extends NameExtractor (UTF8 ) { self =>
38+ object SimpleTermNameKind extends NameKind (UTF8 ) { self =>
3939 type ThisInfo = Info
4040 val info = new Info
4141 def mkString (underlying : TermName , info : ThisInfo ) = unsupported(" mkString" )
4242 def infoString = unsupported(" infoString" )
4343 }
4444
45- abstract class ClassifiedNameExtractor (tag : Int , val infoString : String ) extends NameExtractor (tag) {
45+ abstract class ClassifiedNameKind (tag : Int , val infoString : String ) extends NameKind (tag) {
4646 type ThisInfo = Info
4747 val info = new Info
4848 def apply (qual : TermName ) =
@@ -51,26 +51,26 @@ object NameExtractors {
5151 case DerivedTermName (underlying, `info`) => Some (underlying)
5252 case _ => None
5353 }
54- simpleExtractors (tag) = this
54+ simpleNameKinds (tag) = this
5555 }
5656
57- class PrefixNameExtractor (tag : Int , prefix : String , optInfoString : String = " " )
58- extends ClassifiedNameExtractor (tag, if (optInfoString.isEmpty) s " Prefix $prefix" else optInfoString) {
57+ class PrefixNameKind (tag : Int , prefix : String , optInfoString : String = " " )
58+ extends ClassifiedNameKind (tag, if (optInfoString.isEmpty) s " Prefix $prefix" else optInfoString) {
5959 def mkString (underlying : TermName , info : ThisInfo ) =
6060 underlying.mapLast(n => termName(prefix + n.toString)).toString
6161 }
6262
63- class SuffixNameExtractor (tag : Int , suffix : String , optInfoString : String = " " )
64- extends ClassifiedNameExtractor (tag, if (optInfoString.isEmpty) s " Suffix $suffix" else optInfoString) {
63+ class SuffixNameKind (tag : Int , suffix : String , optInfoString : String = " " )
64+ extends ClassifiedNameKind (tag, if (optInfoString.isEmpty) s " Suffix $suffix" else optInfoString) {
6565 def mkString (underlying : TermName , info : ThisInfo ) = underlying.toString ++ suffix
6666 }
6767
6868 trait QualifiedInfo extends NameInfo {
6969 val name : SimpleTermName
7070 }
7171
72- class QualifiedNameExtractor (tag : Int , val separator : String )
73- extends NameExtractor (tag) {
72+ class QualifiedNameKind (tag : Int , val separator : String )
73+ extends NameKind (tag) {
7474 type ThisInfo = QualInfo
7575 case class QualInfo (val name : SimpleTermName ) extends Info with QualifiedInfo {
7676 override def map (f : SimpleTermName => SimpleTermName ): NameInfo = new QualInfo (f(name))
@@ -89,7 +89,7 @@ object NameExtractors {
8989 s " $underlying$separator${info.name}"
9090 def infoString = s " Qualified $separator"
9191
92- qualifiedExtractors (separator) = this
92+ qualifiedNameKinds (separator) = this
9393 }
9494
9595 object AnyQualifiedName {
@@ -100,14 +100,13 @@ object NameExtractors {
100100 }
101101 }
102102
103- trait NumberedInfo {
103+ trait NumberedInfo extends NameInfo {
104104 def num : Int
105- def extractor : NameExtractor
106105 }
107106
108- abstract class NumberedNameExtractor (tag : Int , val infoString : String ) extends NameExtractor (tag) { self =>
107+ abstract class NumberedNameKind (tag : Int , val infoString : String ) extends NameKind (tag) { self =>
109108 type ThisInfo = NumberedInfo
110- case class NumberedInfo (val num : Int ) extends Info with NameExtractors .NumberedInfo {
109+ case class NumberedInfo (val num : Int ) extends Info with NameKinds .NumberedInfo {
111110 override def toString = s " $infoString $num"
112111 }
113112 def apply (qual : TermName , num : Int ) =
@@ -118,8 +117,8 @@ object NameExtractors {
118117 }
119118 }
120119
121- case class UniqueNameExtractor (val separator : String )
122- extends NumberedNameExtractor (UNIQUE , s " Unique $separator" ) {
120+ case class UniqueNameKind (val separator : String )
121+ extends NumberedNameKind (UNIQUE , s " Unique $separator" ) {
123122 override def definesNewName = true
124123 def mkString (underlying : TermName , info : ThisInfo ) = {
125124 val safePrefix = str.sanitize(underlying.toString + separator)
@@ -129,76 +128,76 @@ object NameExtractors {
129128 def fresh (prefix : TermName = EmptyTermName )(implicit ctx : Context ): TermName =
130129 ctx.freshNames.newName(prefix, this )
131130
132- uniqueExtractors (separator) = this
131+ uniqueNameKinds (separator) = this
133132 }
134133
135134 object AnyUniqueName {
136135 def unapply (name : DerivedTermName ): Option [(TermName , String , Int )] = name match {
137136 case DerivedTermName (qual, info : NumberedInfo ) =>
138- info.extractor match {
139- case unique : UniqueNameExtractor => Some ((qual, unique.separator, info.num))
137+ info.kind match {
138+ case unique : UniqueNameKind => Some ((qual, unique.separator, info.num))
140139 case _ => None
141140 }
142141 case _ => None
143142 }
144143 }
145144
146- val QualifiedName = new QualifiedNameExtractor (QUALIFIED , " ." )
147- val FlattenedName = new QualifiedNameExtractor (FLATTENED , " $" )
148- val ExpandedName = new QualifiedNameExtractor (EXPANDED , str.EXPAND_SEPARATOR )
149- val TraitSetterName = new QualifiedNameExtractor (TRAITSETTER , str.TRAIT_SETTER_SEPARATOR )
145+ val QualifiedName = new QualifiedNameKind (QUALIFIED , " ." )
146+ val FlattenedName = new QualifiedNameKind (FLATTENED , " $" )
147+ val ExpandedName = new QualifiedNameKind (EXPANDED , str.EXPAND_SEPARATOR )
148+ val TraitSetterName = new QualifiedNameKind (TRAITSETTER , str.TRAIT_SETTER_SEPARATOR )
150149
151- val UniqueName = new UniqueNameExtractor (" $" ) {
150+ val UniqueName = new UniqueNameKind (" $" ) {
152151 override def mkString (underlying : TermName , info : ThisInfo ) =
153152 if (underlying.isEmpty) " $" + info.num + " $" else super .mkString(underlying, info)
154153 }
155154
156- val InlineAccessorName = new UniqueNameExtractor (" $_inlineAccessor_$" )
157- val TempResultName = new UniqueNameExtractor (" ev$" )
158- val EvidenceParamName = new UniqueNameExtractor (" evidence$" )
159- val DepParamName = new UniqueNameExtractor (" <param>" )
160- val LazyImplicitName = new UniqueNameExtractor (" $_lazy_implicit_$" )
161- val LazyLocalName = new UniqueNameExtractor (" $lzy" )
162- val LazyLocalInitName = new UniqueNameExtractor (" $lzyINIT" )
163- val LazyFieldOffsetName = new UniqueNameExtractor (" $OFFSET" )
164- val LazyBitMapName = new UniqueNameExtractor (nme.BITMAP_PREFIX .toString)
165- val NonLocalReturnKeyName = new UniqueNameExtractor (" nonLocalReturnKey" )
166- val WildcardParamName = new UniqueNameExtractor (" _$" )
167- val TailLabelName = new UniqueNameExtractor (" tailLabel" )
168- val ExceptionBinderName = new UniqueNameExtractor (" ex" )
169- val SkolemName = new UniqueNameExtractor (" ?" )
170- val LiftedTreeName = new UniqueNameExtractor (" liftedTree" )
171-
172- val PatMatStdBinderName = new UniqueNameExtractor (" x" )
173- val PatMatPiName = new UniqueNameExtractor (" pi" ) // FIXME: explain what this is
174- val PatMatPName = new UniqueNameExtractor (" p" ) // FIXME: explain what this is
175- val PatMatOName = new UniqueNameExtractor (" o" ) // FIXME: explain what this is
176- val PatMatCaseName = new UniqueNameExtractor (" case" )
177- val PatMatMatchFailName = new UniqueNameExtractor (" matchFail" )
178- val PatMatSelectorName = new UniqueNameExtractor (" selector" )
179-
180- object DefaultGetterName extends NumberedNameExtractor (DEFAULTGETTER , " DefaultGetter" ) {
155+ val InlineAccessorName = new UniqueNameKind (" $_inlineAccessor_$" )
156+ val TempResultName = new UniqueNameKind (" ev$" )
157+ val EvidenceParamName = new UniqueNameKind (" evidence$" )
158+ val DepParamName = new UniqueNameKind (" <param>" )
159+ val LazyImplicitName = new UniqueNameKind (" $_lazy_implicit_$" )
160+ val LazyLocalName = new UniqueNameKind (" $lzy" )
161+ val LazyLocalInitName = new UniqueNameKind (" $lzyINIT" )
162+ val LazyFieldOffsetName = new UniqueNameKind (" $OFFSET" )
163+ val LazyBitMapName = new UniqueNameKind (nme.BITMAP_PREFIX .toString)
164+ val NonLocalReturnKeyName = new UniqueNameKind (" nonLocalReturnKey" )
165+ val WildcardParamName = new UniqueNameKind (" _$" )
166+ val TailLabelName = new UniqueNameKind (" tailLabel" )
167+ val ExceptionBinderName = new UniqueNameKind (" ex" )
168+ val SkolemName = new UniqueNameKind (" ?" )
169+ val LiftedTreeName = new UniqueNameKind (" liftedTree" )
170+
171+ val PatMatStdBinderName = new UniqueNameKind (" x" )
172+ val PatMatPiName = new UniqueNameKind (" pi" ) // FIXME: explain what this is
173+ val PatMatPName = new UniqueNameKind (" p" ) // FIXME: explain what this is
174+ val PatMatOName = new UniqueNameKind (" o" ) // FIXME: explain what this is
175+ val PatMatCaseName = new UniqueNameKind (" case" )
176+ val PatMatMatchFailName = new UniqueNameKind (" matchFail" )
177+ val PatMatSelectorName = new UniqueNameKind (" selector" )
178+
179+ object DefaultGetterName extends NumberedNameKind (DEFAULTGETTER , " DefaultGetter" ) {
181180 def mkString (underlying : TermName , info : ThisInfo ) = {
182181 val prefix = if (underlying.isConstructorName) nme.DEFAULT_GETTER_INIT else underlying
183182 prefix.toString + nme.DEFAULT_GETTER + (info.num + 1 )
184183 }
185184 }
186185
187- object VariantName extends NumberedNameExtractor (VARIANT , " Variant" ) {
186+ object VariantName extends NumberedNameKind (VARIANT , " Variant" ) {
188187 val varianceToPrefix = Map (- 1 -> '-' , 0 -> '=' , 1 -> '+' )
189188 val prefixToVariance = Map ('-' -> - 1 , '=' -> 0 , '+' -> 1 )
190189 def mkString (underlying : TermName , info : ThisInfo ) = {
191190 varianceToPrefix(info.num).toString + underlying
192191 }
193192 }
194193
195- val SuperAccessorName = new PrefixNameExtractor (SUPERACCESSOR , " super$" )
196- val InitializerName = new PrefixNameExtractor (INITIALIZER , " initial$" )
197- val ShadowedName = new PrefixNameExtractor (SHADOWED , " (shadowed)" )
198- val AvoidClashName = new SuffixNameExtractor (AVOIDCLASH , " $_avoid_name_clash_$" )
199- val ModuleClassName = new SuffixNameExtractor (OBJECTCLASS , " $" , optInfoString = " ModuleClass" )
194+ val SuperAccessorName = new PrefixNameKind (SUPERACCESSOR , " super$" )
195+ val InitializerName = new PrefixNameKind (INITIALIZER , " initial$" )
196+ val ShadowedName = new PrefixNameKind (SHADOWED , " (shadowed)" )
197+ val AvoidClashName = new SuffixNameKind (AVOIDCLASH , " $_avoid_name_clash_$" )
198+ val ModuleClassName = new SuffixNameKind (OBJECTCLASS , " $" , optInfoString = " ModuleClass" )
200199
201- object SignedName extends NameExtractor (63 ) {
200+ object SignedName extends NameKind (63 ) {
202201
203202 /** @param parts resultSig followed by paramsSig */
204203 case class SignedInfo (sig : Signature ) extends Info {
@@ -217,7 +216,7 @@ object NameExtractors {
217216 def infoString : String = " Signed"
218217 }
219218
220- def simpleExtractorOfTag : collection.Map [Int , ClassifiedNameExtractor ] = simpleExtractors
221- def qualifiedExtractorOfSeparator : collection.Map [String , QualifiedNameExtractor ] = qualifiedExtractors
222- def uniqueExtractorOfSeparator : collection.Map [String , UniqueNameExtractor ] = uniqueExtractors
219+ def simpleNameKindOfTag : collection.Map [Int , ClassifiedNameKind ] = simpleNameKinds
220+ def qualifiedNameKindOfSeparator : collection.Map [String , QualifiedNameKind ] = qualifiedNameKinds
221+ def uniqueNameKindOfSeparator : collection.Map [String , UniqueNameKind ] = uniqueNameKinds
223222}
0 commit comments