diff options
author | Martin Odersky <odersky@gmail.com> | 2014-12-19 16:43:05 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2014-12-19 16:43:05 +0100 |
commit | cf6b62f11815fc98fe69e25875668c8709631656 (patch) | |
tree | 6a0efcff52ef0a94398b2f817f20946d92ebcdea /src/dotty/tools/dotc/transform/FirstTransform.scala | |
parent | 848714377b68eedf0c66b59ff8c57cd0da10109c (diff) | |
download | dotty-cf6b62f11815fc98fe69e25875668c8709631656.tar.gz dotty-cf6b62f11815fc98fe69e25875668c8709631656.tar.bz2 dotty-cf6b62f11815fc98fe69e25875668c8709631656.zip |
Avoid name clashes when generating synthetic companion objects.
Diffstat (limited to 'src/dotty/tools/dotc/transform/FirstTransform.scala')
-rw-r--r-- | src/dotty/tools/dotc/transform/FirstTransform.scala | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/transform/FirstTransform.scala b/src/dotty/tools/dotc/transform/FirstTransform.scala index 62045890e..bde17c854 100644 --- a/src/dotty/tools/dotc/transform/FirstTransform.scala +++ b/src/dotty/tools/dotc/transform/FirstTransform.scala @@ -81,7 +81,15 @@ class FirstTransform extends MiniPhaseTransform with IdentityDenotTransformer wi def addMissingCompanions(stats: List[Tree]): List[Tree] = stats map { case stat: TypeDef if singleClassDefs contains stat.name => - Thicket(stat :: newCompanion(stat.name.toTermName).trees) + val objName = stat.name.toTermName + val nameClash = stats.exists { + case other: MemberDef => + other.name == objName && other.symbol.info.isParameterless + case _ => + false + } + val uniqueName = if (nameClash) objName.avoidClashName else objName + Thicket(stat :: newCompanion(uniqueName).trees) case stat => stat } |