summaryrefslogtreecommitdiff
path: root/src/compiler/scala/reflect/internal/NameManglers.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/compiler/scala/reflect/internal/NameManglers.scala')
-rw-r--r--src/compiler/scala/reflect/internal/NameManglers.scala37
1 files changed, 19 insertions, 18 deletions
diff --git a/src/compiler/scala/reflect/internal/NameManglers.scala b/src/compiler/scala/reflect/internal/NameManglers.scala
index d4aa6339ff..ef092f16bb 100644
--- a/src/compiler/scala/reflect/internal/NameManglers.scala
+++ b/src/compiler/scala/reflect/internal/NameManglers.scala
@@ -23,8 +23,8 @@ trait NameManglers {
val MODULE_SUFFIX_STRING = NameTransformer.MODULE_SUFFIX_STRING
val NAME_JOIN_STRING = NameTransformer.NAME_JOIN_STRING
- val MODULE_SUFFIX_NAME: TermName = MODULE_SUFFIX_STRING
- val NAME_JOIN_NAME: TermName = NAME_JOIN_STRING
+ val MODULE_SUFFIX_NAME: TermName = newTermName(MODULE_SUFFIX_STRING)
+ val NAME_JOIN_NAME: TermName = newTermName(NAME_JOIN_STRING)
def flattenedName(segments: Name*): NameType = compactedString(segments mkString NAME_JOIN_STRING)
@@ -75,12 +75,12 @@ trait NameManglers {
val LOCALDUMMY_PREFIX = "<local " // owner of local blocks
val PROTECTED_PREFIX = "protected$"
val PROTECTED_SET_PREFIX = PROTECTED_PREFIX + "set"
- val SETTER_SUFFIX = encode("_=")
val SINGLETON_SUFFIX = ".type"
val SPECIALIZED_SUFFIX_STRING = "$sp"
val SUPER_PREFIX_STRING = "super$"
val TRAIT_SETTER_SEPARATOR_STRING = "$_setter_$"
+ val SETTER_SUFFIX: TermName = encode("_=")
val SPECIALIZED_SUFFIX_NAME: TermName = SPECIALIZED_SUFFIX_STRING
def isConstructorName(name: Name) = name == CONSTRUCTOR || name == MIXIN_CONSTRUCTOR
@@ -124,6 +124,11 @@ trait NameManglers {
name.subName(0, name.lastIndexOf('m') - 1)
else name
)
+
+ def macroMethodName(name: Name) = {
+ val base = if (name.isTypeName) nme.TYPEkw else nme.DEFkw
+ base append nme.MACRO append name
+ }
/** Return the original name and the types on which this name
* is specialized. For example,
@@ -136,7 +141,7 @@ trait NameManglers {
*/
def splitSpecializedName(name: Name): (Name, String, String) =
if (name endsWith SPECIALIZED_SUFFIX_NAME) {
- val name1 = name stripEnd SPECIALIZED_SUFFIX_NAME
+ val name1 = name dropRight SPECIALIZED_SUFFIX_NAME.length
val idxC = name1 lastIndexOf 'c'
val idxM = name1 lastIndexOf 'm'
@@ -147,18 +152,18 @@ trait NameManglers {
(name, "", "")
def getterName(name: TermName): TermName = if (isLocalName(name)) localToGetter(name) else name
- def getterToLocal(name: TermName): TermName = name.toTermName append LOCAL_SUFFIX_STRING
- def getterToSetter(name: TermName): TermName = name.toTermName append SETTER_SUFFIX
- def localToGetter(name: TermName): TermName = name stripEnd LOCAL_SUFFIX_STRING toTermName
+ def getterToLocal(name: TermName): TermName = name append LOCAL_SUFFIX_STRING
+ def getterToSetter(name: TermName): TermName = name append SETTER_SUFFIX
+ def localToGetter(name: TermName): TermName = name dropRight LOCAL_SUFFIX_STRING.length
def dropLocalSuffix(name: Name): Name = if (name endsWith ' ') name dropRight 1 else name
def setterToGetter(name: TermName): TermName = {
val p = name.pos(TRAIT_SETTER_SEPARATOR_STRING)
if (p < name.length)
- setterToGetter(name.subName(p + TRAIT_SETTER_SEPARATOR_STRING.length, name.length))
+ setterToGetter(name drop (p + TRAIT_SETTER_SEPARATOR_STRING.length))
else
- name stripEnd SETTER_SUFFIX toTermName
+ name.subName(0, name.length - SETTER_SUFFIX.length)
}
def defaultGetterName(name: Name, pos: Int): TermName = {
@@ -167,8 +172,8 @@ trait NameManglers {
}
def defaultGetterToMethod(name: Name): TermName = {
val p = name.pos(DEFAULT_GETTER_STRING)
- if (p < name.length) name.subName(0, p)
- else name
+ if (p < name.length) name.toTermName.subName(0, p)
+ else name.toTermName
}
/** !!! I'm putting this logic in place because I can witness
@@ -192,18 +197,14 @@ trait NameManglers {
}
def stripModuleSuffix(name: Name): Name = (
- if (isModuleName(name)) name stripEnd MODULE_SUFFIX_STRING else name
+ if (isModuleName(name)) name dropRight MODULE_SUFFIX_STRING.length else name
)
- /** Note that for performance reasons, stripEnd does not verify that the
- * suffix is actually the suffix specified.
- */
- def dropSingletonName(name: Name): TypeName = name stripEnd SINGLETON_SUFFIX toTypeName
+ def dropSingletonName(name: Name): TypeName = name dropRight SINGLETON_SUFFIX.length toTypeName
def singletonName(name: Name): TypeName = name append SINGLETON_SUFFIX toTypeName
def implClassName(name: Name): TypeName = name append IMPL_CLASS_SUFFIX toTypeName
- def interfaceName(implname: Name): TypeName = implname stripEnd IMPL_CLASS_SUFFIX toTypeName
+ def interfaceName(implname: Name): TypeName = implname dropRight IMPL_CLASS_SUFFIX.length toTypeName
def localDummyName(clazz: Symbol): TermName = newTermName(LOCALDUMMY_PREFIX + clazz.name + ">")
- def productAccessorName(i: Int): TermName = newTermName("_" + i)
def superName(name: Name): TermName = newTermName(SUPER_PREFIX_STRING + name)
/** The name of an accessor for protected symbols. */