aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDmitry Petrashko <dmitry.petrashko@gmail.com>2015-08-17 15:49:44 +0200
committerDmitry Petrashko <dmitry.petrashko@gmail.com>2015-08-17 15:54:49 +0200
commit05af0a361815a0ca438a9af94981aa7001bc6d6c (patch)
treef50721d9d88cba486f8ed6b0f3aaa26ef1149329 /src
parent03b8d82cec2eef61f4ada69a4a8b285b160e0648 (diff)
downloaddotty-05af0a361815a0ca438a9af94981aa7001bc6d6c.tar.gz
dotty-05af0a361815a0ca438a9af94981aa7001bc6d6c.tar.bz2
dotty-05af0a361815a0ca438a9af94981aa7001bc6d6c.zip
All non-deferred Scala2 defined methods in traits need a method in implClass.
As one can call them either indirectly through mixin composition or directly through super[Mixin].foo
Diffstat (limited to 'src')
-rw-r--r--src/dotty/tools/dotc/core/Flags.scala1
-rw-r--r--src/dotty/tools/dotc/transform/AugmentScala2Traits.scala2
2 files changed, 2 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/core/Flags.scala b/src/dotty/tools/dotc/core/Flags.scala
index 161c8fde3..0ab68ce29 100644
--- a/src/dotty/tools/dotc/core/Flags.scala
+++ b/src/dotty/tools/dotc/core/Flags.scala
@@ -598,6 +598,7 @@ object Flags {
final val SyntheticTypeParam = allOf(Synthetic, TypeParam)
final val SyntheticCase = allOf(Synthetic, Case)
final val AbstractAndOverride = allOf(Abstract, Override)
+ final val Scala2Trait = allOf(Scala2x, Trait)
implicit def conjToFlagSet(conj: FlagConjunction): FlagSet =
FlagSet(conj.bits)
diff --git a/src/dotty/tools/dotc/transform/AugmentScala2Traits.scala b/src/dotty/tools/dotc/transform/AugmentScala2Traits.scala
index 60f59cfed..e3cad0819 100644
--- a/src/dotty/tools/dotc/transform/AugmentScala2Traits.scala
+++ b/src/dotty/tools/dotc/transform/AugmentScala2Traits.scala
@@ -79,7 +79,7 @@ class AugmentScala2Traits extends MiniPhaseTransform with IdentityDenotTransform
info = MethodType(getter.info.resultType :: Nil, defn.UnitType))
for (sym <- mixin.info.decls) {
- if (needsForwarder(sym) || sym.isConstructor || sym.isGetter && sym.is(Lazy))
+ if (needsForwarder(sym) || sym.isConstructor || sym.isGetter && sym.is(Lazy) || sym.is(Method, butNot = Deferred))
implClass.enter(implMethod(sym.asTerm))
if (sym.isGetter)
if (sym.is(Lazy)) {