@@ -60,13 +60,11 @@ object NameOps {
6060 def isImplClassName = name endsWith IMPL_CLASS_SUFFIX
6161 def isLocalDummyName = name startsWith LOCALDUMMY_PREFIX
6262 def isLoopHeaderLabel = (name startsWith WHILE_PREFIX ) || (name startsWith DO_WHILE_PREFIX )
63- def isProtectedAccessorName = name startsWith PROTECTED_PREFIX
6463 def isReplWrapperName = name.toSimpleName containsSlice INTERPRETER_IMPORT_WRAPPER
6564 def isSetterName = name endsWith SETTER_SUFFIX
6665 def isSingletonName = name endsWith SINGLETON_SUFFIX
6766 def isImportName = name startsWith IMPORT
6867 def isFieldName = name endsWith LOCAL_SUFFIX
69- def isDefaultGetterName = name.isTermName && name.asTermName.defaultGetterIndex >= 0
7068 def isScala2LocalSuffix = name.endsWith(" " )
7169 def isModuleVarName (name : Name ): Boolean =
7270 name.stripAnonNumberSuffix endsWith MODULE_VAR_SUFFIX
@@ -369,54 +367,21 @@ object NameOps {
369367 name.mapLast(n => n.take(n.length - LOCAL_SUFFIX .length).asSimpleName)
370368 }
371369
372- /** Nominally, name$default$N, encoded for <init>
373- * @param Post the parameters position.
374- * @note Default getter name suffixes start at 1, so `pos` has to be adjusted by +1
375- */
376- def defaultGetterName (pos : Int ): TermName =
377- DefaultGetterName (name, pos)
378-
379370 /** Nominally, name from name$default$N, CONSTRUCTOR for <init> */
380371 def defaultGetterToMethod : TermName =
381372 name rewrite {
382373 case DefaultGetterName (methName, _) => methName
383374 }
384375
385- def defaultGetterToMethodOfMangled : TermName = {
386- val p = name.indexOfSlice(DEFAULT_GETTER )
387- if (p >= 0 ) {
388- val q = name.take(p).asTermName
389- // i.e., if (q.decoded == CONSTRUCTOR.toString) CONSTRUCTOR else q
390- if (q == DEFAULT_GETTER_INIT ) CONSTRUCTOR else q
391- } else name
392- }
393-
394376 /** If this is a default getter, its index (starting from 0), else -1 */
395377 def defaultGetterIndex : Int =
396378 name collect {
397379 case DefaultGetterName (_, num) => num
398380 } getOrElse - 1
399381
400- def defaultGetterIndexOfMangled : Int = {
401- var i = name.length
402- while (i > 0 && name(i - 1 ).isDigit) i -= 1
403- if (i > 0 && i < name.length && name.take(i).endsWith(DEFAULT_GETTER ))
404- name.drop(i).toString.toInt - 1
405- else
406- - 1
407- }
408-
409382 def stripScala2LocalSuffix : TermName =
410383 if (name.isScala2LocalSuffix) name.init.asTermName else name
411384
412- /** The name of an accessor for protected symbols. */
413- def protectedAccessorName : TermName =
414- PROTECTED_PREFIX ++ name.unexpandedName
415-
416- /** The name of a setter for protected symbols. Used for inherited Java fields. */
417- def protectedSetterName : TermName =
418- PROTECTED_SET_PREFIX ++ name.unexpandedName
419-
420385 def moduleVarName : TermName =
421386 name ++ MODULE_VAR_SUFFIX
422387
@@ -478,18 +443,25 @@ object NameOps {
478443 case name => name
479444 }
480445
481- def unmangleMethodName : TermName =
482- if (name.isSimple) {
483- val idx = name.defaultGetterIndexOfMangled
484- if (idx >= 0 ) name.defaultGetterToMethodOfMangled.defaultGetterName(idx)
485- else name
486- }
487- else name
488-
489446 def unmangleSuperName : TermName =
490447 if (name.isSimple && name.startsWith(str.SUPER_PREFIX ))
491448 SuperAccessorName (name.drop(str.SUPER_PREFIX .length).asTermName)
492449 else name
450+
451+ def unmangle (kind : NameKind ): TermName = name rewrite {
452+ case unmangled : SimpleTermName =>
453+ kind.unmangle(unmangled)
454+ case ExpandedName (prefix, last) =>
455+ kind.unmangle(last) rewrite {
456+ case kernel : SimpleTermName =>
457+ ExpandedName (prefix, kernel)
458+ }
459+ }
460+
461+ def unmangle (kinds : List [NameKind ]): TermName = {
462+ val unmangled = (name /: kinds)(_.unmangle(_))
463+ if (unmangled eq name) name else unmangled.unmangle(kinds)
464+ }
493465 }
494466
495467 private final val FalseSuper = " $$super" .toTermName
0 commit comments