@@ -49,26 +49,6 @@ object NameOps {
49
49
}
50
50
}
51
51
52
- class PrefixNameExtractor (pre : TermName , bldr : NameExtractors .PrefixNameExtractor ) {
53
- def apply (name : TermName ): TermName =
54
- if (Config .semanticNames) bldr(name) else pre ++ name
55
-
56
- def unapply (name : TermName ): Option [TermName ] =
57
- if (Config .semanticNames)
58
- name match {
59
- case bldr(original) => Some (original)
60
- case _ => None
61
- }
62
- else tryUnmangle(name)
63
-
64
- def tryUnmangle (name : TermName ): Option [TermName ] =
65
- if (name startsWith pre) Some (name.drop(pre.length).asTermName)
66
- else None
67
- }
68
-
69
- object SuperAccessorName extends PrefixNameExtractor (nme.SUPER_PREFIX , NameExtractors .SuperAccessorName )
70
- object InitializerName extends PrefixNameExtractor (nme.INITIALIZER_PREFIX , NameExtractors .InitializerName )
71
-
72
52
implicit class NameDecorator [N <: Name ](val name : N ) extends AnyVal {
73
53
import nme ._
74
54
@@ -82,14 +62,8 @@ object NameOps {
82
62
def isLoopHeaderLabel = (name startsWith WHILE_PREFIX ) || (name startsWith DO_WHILE_PREFIX )
83
63
def isProtectedAccessorName = name startsWith PROTECTED_PREFIX
84
64
def isReplWrapperName = name.toSimpleName containsSlice INTERPRETER_IMPORT_WRAPPER
85
- def isTraitSetterName =
86
- if (Config .semanticNames) name.is(TraitSetterName )
87
- else name containsSlice TRAIT_SETTER_SEPARATOR
88
65
def isSetterName = name endsWith SETTER_SUFFIX
89
66
def isSingletonName = name endsWith SINGLETON_SUFFIX
90
- def isModuleClassName =
91
- if (Config .semanticNames) name.is(ModuleClassName )
92
- else name endsWith MODULE_SUFFIX
93
67
def isAvoidClashName = name endsWith AVOID_CLASH_SUFFIX
94
68
def isImportName = name startsWith IMPORT
95
69
def isFieldName = name endsWith LOCAL_SUFFIX
@@ -137,19 +111,13 @@ object NameOps {
137
111
}
138
112
139
113
/** Convert this module name to corresponding module class name */
140
- def moduleClassName : TypeName =
141
- if (Config .semanticNames) name.derived(ModuleClassName ).toTypeName
142
- else (name ++ tpnme.MODULE_SUFFIX ).toTypeName
114
+ def moduleClassName : TypeName = name.derived(ModuleClassName ).toTypeName
143
115
144
116
/** Convert this module class name to corresponding source module name */
145
117
def sourceModuleName : TermName = stripModuleClassSuffix.toTermName
146
118
147
119
/** If name ends in module class suffix, drop it */
148
- def stripModuleClassSuffix : Name =
149
- if (isModuleClassName)
150
- if (Config .semanticNames) name.exclude(ModuleClassName )
151
- else name dropRight MODULE_SUFFIX .length
152
- else name
120
+ def stripModuleClassSuffix : Name = name.exclude(ModuleClassName )
153
121
154
122
/** Append a suffix so that this name does not clash with another name in the same scope */
155
123
def avoidClashName : TermName = (name ++ AVOID_CLASH_SUFFIX ).toTermName
@@ -165,9 +133,7 @@ object NameOps {
165
133
}.asInstanceOf [N ]
166
134
167
135
/** The superaccessor for method with given name */
168
- def superName : TermName =
169
- if (Config .semanticNames) SuperAccessorName (name.toTermName)
170
- else (nme.SUPER_PREFIX ++ name).toTermName
136
+ def superName : TermName = SuperAccessorName (name.toTermName)
171
137
172
138
/** The expanded name of `name` relative to given class `base`.
173
139
*/
@@ -179,34 +145,24 @@ object NameOps {
179
145
/** The expanded name of `name` relative to `basename` with given `separator`
180
146
*/
181
147
def expandedName (prefix : Name , separator : Name = nme.EXPAND_SEPARATOR ): N =
182
- likeTyped(
183
- if (Config .semanticNames) {
184
- def qualify (name : SimpleTermName ) =
185
- separatorToQualified(separator.toString)(prefix.toTermName, name)
186
- name rewrite {
187
- case name : SimpleTermName =>
188
- qualify(name)
189
- case AnyQualifiedName (_, _) =>
190
- // Note: an expanded name may itself be expanded. For example, look at javap of scala.App.initCode
191
- qualify(name.toSimpleName)
192
- }
148
+ likeTyped {
149
+ def qualify (name : SimpleTermName ) =
150
+ separatorToQualified(separator.toString)(prefix.toTermName, name)
151
+ name rewrite {
152
+ case name : SimpleTermName =>
153
+ qualify(name)
154
+ case AnyQualifiedName (_, _) =>
155
+ // Note: an expanded name may itself be expanded. For example, look at javap of scala.App.initCode
156
+ qualify(name.toSimpleName)
193
157
}
194
- else prefix ++ separator ++ name)
158
+ }
195
159
196
160
def expandedName (prefix : Name ): N = expandedName(prefix, nme.EXPAND_SEPARATOR )
197
161
198
- /** Revert the expanded name.
199
- * Note: This currently gives incorrect results
200
- * if the normal name contains `nme.EXPAND_SEPARATOR`, i.e. two consecutive '$'
201
- * signs. This can happen for instance if a super accessor is paired with
202
- * an encoded name, e.g. super$$plus$eq. See #765.
203
- */
204
- def unexpandedName : N =
205
- if (Config .semanticNames)
206
- likeTyped {
207
- name.rewrite { case XpandedName (_, unexp) => unexp }
208
- }
209
- else unexpandedNameOfMangled
162
+ /** Revert the expanded name. */
163
+ def unexpandedName : N = likeTyped {
164
+ name.rewrite { case XpandedName (_, unexp) => unexp }
165
+ }
210
166
211
167
def unexpandedNameOfMangled : N = likeTyped {
212
168
var idx = name.lastIndexOfSlice(nme.EXPAND_SEPARATOR )
@@ -219,25 +175,20 @@ object NameOps {
219
175
if (idx < 0 ) name else (name drop (idx + nme.EXPAND_SEPARATOR .length))
220
176
}
221
177
222
- def expandedPrefix : N =
223
- if (Config .semanticNames)
224
- likeTyped {
225
- name.rewrite { case XpandedName (prefix, _) => prefix }
226
- }
227
- else expandedPrefixOfMangled
228
-
178
+ def expandedPrefix : N = likeTyped { name.exclude(XpandedName ) }
179
+
229
180
def expandedPrefixOfMangled : N = {
230
181
val idx = name.lastIndexOfSlice(nme.EXPAND_SEPARATOR )
231
182
assert(idx >= 0 )
232
183
likeTyped(name.take(idx))
233
184
}
234
185
235
186
def unmangleExpandedName : N =
236
- if (Config .semanticNames && name.isSimple) {
187
+ if (name.isSimple) {
237
188
val unmangled = unexpandedNameOfMangled
238
189
if (name eq unmangled) name
239
190
else likeTyped(
240
- XpandedName (expandedPrefixOfMangled.toTermName, unmangled.asSimpleName))
191
+ XpandedName (expandedPrefixOfMangled.toTermName, unmangled.asSimpleName))
241
192
}
242
193
else name
243
194
@@ -253,11 +204,11 @@ object NameOps {
253
204
254
205
def freshened (implicit ctx : Context ): N =
255
206
likeTyped(
256
- if (name.isModuleClassName ) name.stripModuleClassSuffix.freshened.moduleClassName
207
+ if (name.is( ModuleClassName ) ) name.stripModuleClassSuffix.freshened.moduleClassName
257
208
else likeTyped(ctx.freshName(name ++ NameTransformer .NAME_JOIN_STRING )))
258
209
259
210
def unmangleClassName : N =
260
- if (Config .semanticNames && name.isSimple && name.isTypeName)
211
+ if (name.isSimple && name.isTypeName)
261
212
if (name.endsWith(MODULE_SUFFIX ) && ! tpnme.falseModuleClassNames.contains(name.asTypeName))
262
213
likeTyped(name.dropRight(MODULE_SUFFIX .length).moduleClassName)
263
214
else name
@@ -413,18 +364,11 @@ object NameOps {
413
364
414
365
def fieldName : TermName =
415
366
if (name.isSetterName) {
416
- if (name.isTraitSetterName) {
417
- if (Config .semanticNames) {
418
- val TraitSetterName (_, original) = name
419
- original.fieldName
420
- }
421
- else {
422
- // has form <$-separated-trait-name>$_setter_$ `name`_$eq
423
- val start = name.indexOfSlice(TRAIT_SETTER_SEPARATOR ) + TRAIT_SETTER_SEPARATOR .length
424
- val end = name.indexOfSlice(SETTER_SUFFIX )
425
- (name.slice(start, end) ++ LOCAL_SUFFIX ).asTermName
426
- }
427
- } else getterName.fieldName
367
+ if (name.is(TraitSetterName )) {
368
+ val TraitSetterName (_, original) = name
369
+ original.fieldName
370
+ }
371
+ else getterName.fieldName
428
372
}
429
373
else name.mapLast(n => (n ++ LOCAL_SUFFIX ).asSimpleName)
430
374
@@ -443,19 +387,13 @@ object NameOps {
443
387
* @note Default getter name suffixes start at 1, so `pos` has to be adjusted by +1
444
388
*/
445
389
def defaultGetterName (pos : Int ): TermName =
446
- if (Config .semanticNames) DefaultGetterName (name, pos)
447
- else {
448
- val prefix = if (name.isConstructorName) DEFAULT_GETTER_INIT else name
449
- prefix ++ DEFAULT_GETTER ++ (pos + 1 ).toString
450
- }
390
+ DefaultGetterName (name, pos)
451
391
452
392
/** Nominally, name from name$default$N, CONSTRUCTOR for <init> */
453
393
def defaultGetterToMethod : TermName =
454
- if (Config .semanticNames)
455
- name rewrite {
456
- case DefaultGetterName (methName, _) => methName
457
- }
458
- else defaultGetterToMethodOfMangled
394
+ name rewrite {
395
+ case DefaultGetterName (methName, _) => methName
396
+ }
459
397
460
398
def defaultGetterToMethodOfMangled : TermName = {
461
399
val p = name.indexOfSlice(DEFAULT_GETTER )
@@ -468,11 +406,9 @@ object NameOps {
468
406
469
407
/** If this is a default getter, its index (starting from 0), else -1 */
470
408
def defaultGetterIndex : Int =
471
- if (Config .semanticNames)
472
- name collect {
473
- case DefaultGetterName (_, num) => num
474
- } getOrElse - 1
475
- else defaultGetterIndexOfMangled
409
+ name collect {
410
+ case DefaultGetterName (_, num) => num
411
+ } getOrElse - 1
476
412
477
413
def defaultGetterIndexOfMangled : Int = {
478
414
var i = name.length
@@ -564,21 +500,16 @@ object NameOps {
564
500
def inlineAccessorName = nme.INLINE_ACCESSOR_PREFIX ++ name ++ " $"
565
501
566
502
def unmangleMethodName : TermName =
567
- if (Config .semanticNames && name.isSimple) {
503
+ if (name.isSimple) {
568
504
val idx = name.defaultGetterIndexOfMangled
569
505
if (idx >= 0 ) name.defaultGetterToMethodOfMangled.defaultGetterName(idx)
570
506
else name
571
507
}
572
508
else name
573
509
574
510
def unmangleSuperName : TermName =
575
- if (Config .semanticNames && name.isSimple)
576
- SuperAccessorName .tryUnmangle(name.lastPart) match {
577
- case scala.Some (original) =>
578
- SuperAccessorName (name.mapLast(_ => original.asSimpleName))
579
- case None =>
580
- name
581
- }
511
+ if (name.isSimple && name.startsWith(str.SUPER_PREFIX ))
512
+ SuperAccessorName (name.drop(str.SUPER_PREFIX .length).asTermName)
582
513
else name
583
514
}
584
515
0 commit comments