diff options
author | Lukas Rytz <lukas.rytz@typesafe.com> | 2014-09-01 22:00:20 +0200 |
---|---|---|
committer | Lukas Rytz <lukas.rytz@typesafe.com> | 2014-09-01 22:00:20 +0200 |
commit | bb3b08dd675a68c5245a8ad64470c796e346ba91 (patch) | |
tree | 92f5a1108d68114b6c9423630998c4bdbeea0432 /src/compiler/scala/tools/nsc/transform/Erasure.scala | |
parent | 7693cecc8b3cf56984a041bb2d7979e2a040314a (diff) | |
parent | 2256753502c2c099da17a20d45c3f23974d0eafd (diff) | |
download | scala-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.scala | 8 |
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), |