summaryrefslogtreecommitdiff
path: root/src/compiler/scala/tools/nsc/transform/Erasure.scala
diff options
context:
space:
mode:
authorLukas Rytz <lukas.rytz@typesafe.com>2014-09-01 22:00:20 +0200
committerLukas Rytz <lukas.rytz@typesafe.com>2014-09-01 22:00:20 +0200
commitbb3b08dd675a68c5245a8ad64470c796e346ba91 (patch)
tree92f5a1108d68114b6c9423630998c4bdbeea0432 /src/compiler/scala/tools/nsc/transform/Erasure.scala
parent7693cecc8b3cf56984a041bb2d7979e2a040314a (diff)
parent2256753502c2c099da17a20d45c3f23974d0eafd (diff)
downloadscala-bb3b08dd675a68c5245a8ad64470c796e346ba91.tar.gz
scala-bb3b08dd675a68c5245a8ad64470c796e346ba91.tar.bz2
scala-bb3b08dd675a68c5245a8ad64470c796e346ba91.zip
Merge pull request #3931 from lrytz/opt/tracked-final
GenBCode refactoring (remove Tracked) and fix InnerClass / EnclosingMethod attributes
Diffstat (limited to 'src/compiler/scala/tools/nsc/transform/Erasure.scala')
-rw-r--r--src/compiler/scala/tools/nsc/transform/Erasure.scala8
1 files changed, 6 insertions, 2 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Erasure.scala b/src/compiler/scala/tools/nsc/transform/Erasure.scala
index 54bcc9e93e..3d8b2f02f3 100644
--- a/src/compiler/scala/tools/nsc/transform/Erasure.scala
+++ b/src/compiler/scala/tools/nsc/transform/Erasure.scala
@@ -468,8 +468,12 @@ abstract class Erasure extends AddInterfaces
if (!bridgeNeeded)
return
- val newFlags = (member.flags | BRIDGE | ARTIFACT) & ~(ACCESSOR | DEFERRED | LAZY | lateDEFERRED)
- val bridge = other.cloneSymbolImpl(root, newFlags) setPos root.pos
+ var newFlags = (member.flags | BRIDGE | ARTIFACT) & ~(ACCESSOR | DEFERRED | LAZY | lateDEFERRED)
+ // If `member` is a ModuleSymbol, the bridge should not also be a ModuleSymbol. Otherwise we
+ // end up with two module symbols with the same name in the same scope, which is surprising
+ // when implementing later phases.
+ if (member.isModule) newFlags = (newFlags | METHOD) & ~(MODULE | lateMETHOD | STABLE)
+ val bridge = other.cloneSymbolImpl(root, newFlags) setPos root.pos
debuglog("generating bridge from %s (%s): %s to %s: %s".format(
other, flagsToString(newFlags),