@@ -72,6 +72,7 @@ object NameOps {
7272 def isSetterName = name endsWith SETTER_SUFFIX
7373 def isSingletonName = name endsWith SINGLETON_SUFFIX
7474 def isModuleClassName = name endsWith MODULE_SUFFIX
75+ def isAvoidClashName = name endsWith AVOID_CLASH_SUFFIX
7576 def isImportName = name startsWith IMPORT
7677 def isFieldName = name endsWith LOCAL_SUFFIX
7778 def isInheritedName = name.length > 0 && name.head == '(' && name.startsWith(nme.INHERITED )
@@ -129,11 +130,19 @@ object NameOps {
129130 /** If name ends in module class suffix, drop it */
130131 def stripModuleClassSuffix : Name =
131132 if (isModuleClassName) name dropRight MODULE_SUFFIX .length else name
133+
134+ /** Append a suffix so that this name does not clash with another name in the same scope */
135+ def avoidClashName : TermName = (name ++ AVOID_CLASH_SUFFIX ).toTermName
136+
137+ /** If name ends in "avoid clash" suffix, drop it */
138+ def stripAvoidClashSuffix : Name =
139+ if (isAvoidClashName) name dropRight AVOID_CLASH_SUFFIX .length else name
132140
133141 /** If flags is a ModuleClass but not a Package, add module class suffix */
134- def adjustIfModuleClass (flags : Flags .FlagSet ): N =
135- if (flags is (ModuleClass , butNot = Package )) name.asTypeName.moduleClassName.asInstanceOf [N ]
136- else name
142+ def adjustIfModuleClass (flags : Flags .FlagSet ): N = {
143+ if (flags is (ModuleClass , butNot = Package )) name.asTypeName.moduleClassName
144+ else stripAvoidClashSuffix
145+ }.asInstanceOf [N ]
137146
138147 /** The superaccessor for method with given name */
139148 def superName : TermName = (nme.SUPER_PREFIX ++ name).toTermName
0 commit comments