diff options
author | Martin Odersky <odersky@gmail.com> | 2016-12-15 18:14:31 +0100 |
---|---|---|
committer | Martin Odersky <odersky@gmail.com> | 2016-12-17 18:34:27 +0100 |
commit | 740bd425d562e5e9d1744361553054413775cb73 (patch) | |
tree | 37c8ebc3415ebe25dd909c5dc6f7ea6d806d52e9 /compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala | |
parent | a6ae1a7b5b62b1b4e8b702c640305c3ae6d7da13 (diff) | |
download | dotty-740bd425d562e5e9d1744361553054413775cb73.tar.gz dotty-740bd425d562e5e9d1744361553054413775cb73.tar.bz2 dotty-740bd425d562e5e9d1744361553054413775cb73.zip |
Drop Override flag for non-overriding direct methods
Also, integrate Jason's test case with the conditional.
Diffstat (limited to 'compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala')
-rw-r--r-- | compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala | 7 |
1 files changed, 5 insertions, 2 deletions
diff --git a/compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala b/compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala index a9fadaa56..31dfad757 100644 --- a/compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala +++ b/compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala @@ -89,11 +89,14 @@ class ShortcutImplicits extends MiniPhase with IdentityDenotTransformer { thisTr } /** A new `m$direct` method to accompany the given method `m` */ - private def newDirectMethod(sym: Symbol)(implicit ctx: Context): Symbol = - sym.copy( + private def newDirectMethod(sym: Symbol)(implicit ctx: Context): Symbol = { + val direct = sym.copy( name = sym.name.directName, flags = sym.flags | Synthetic, info = directInfo(sym.info)) + if (direct.allOverriddenSymbols.isEmpty) direct.resetFlag(Override) + direct + } /** The direct method `m$direct` that accompanies the given method `m`. * Create one if it does not exist already. |