aboutsummaryrefslogtreecommitdiff
path: root/compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala
diff options
context:
space:
mode:
authorMartin Odersky <odersky@gmail.com>2016-12-15 18:14:31 +0100
committerMartin Odersky <odersky@gmail.com>2016-12-17 18:34:27 +0100
commit740bd425d562e5e9d1744361553054413775cb73 (patch)
tree37c8ebc3415ebe25dd909c5dc6f7ea6d806d52e9 /compiler/src/dotty/tools/dotc/transform/ShortcutImplicits.scala
parenta6ae1a7b5b62b1b4e8b702c640305c3ae6d7da13 (diff)
downloaddotty-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.scala7
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.