aboutsummaryrefslogtreecommitdiff
path: root/src/dotty/tools/dotc/transform/FirstTransform.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2014-12-19 16:43:05 +0100
committerMartin Odersky <odersky@gmail.com>2014-12-19 16:43:05 +0100
commitcf6b62f11815fc98fe69e25875668c8709631656 (patch)
tree6a0efcff52ef0a94398b2f817f20946d92ebcdea /src/dotty/tools/dotc/transform/FirstTransform.scala
parent848714377b68eedf0c66b59ff8c57cd0da10109c (diff)
downloaddotty-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.scala10
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
}