From b347d2725d1a4e5f66d798be79d3fc3f0f44ea88 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Thu, 25 Feb 2016 17:12:20 +0100 Subject: In LinkScala2ImplClass, disregard signatures when looking for constructor. Dotty treats trait and class constructors as returning the class. But scalac uses Unit for the return type of trait init methods. --- src/dotty/tools/dotc/transform/LinkScala2ImplClasses.scala | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/dotty/tools/dotc/transform/LinkScala2ImplClasses.scala b/src/dotty/tools/dotc/transform/LinkScala2ImplClasses.scala index 60e8edc26..ca06938dc 100644 --- a/src/dotty/tools/dotc/transform/LinkScala2ImplClasses.scala +++ b/src/dotty/tools/dotc/transform/LinkScala2ImplClasses.scala @@ -48,11 +48,15 @@ class LinkScala2ImplClasses extends MiniPhaseTransform with IdentityDenotTransfo } } - private def implMethod(meth: Symbol)(implicit ctx: Context): Symbol = - meth.owner.implClass.info - .decl(if (meth.isConstructor) nme.TRAIT_CONSTRUCTOR else meth.name) + private def implMethod(meth: Symbol)(implicit ctx: Context): Symbol = { + val implInfo = meth.owner.implClass.info + if (meth.isConstructor) + implInfo.decl(nme.TRAIT_CONSTRUCTOR).symbol + else + implInfo.decl(meth.name) .suchThat(c => FullParameterization.memberSignature(c.info) == meth.signature) .symbol + } private val Scala2xTrait = allOf(Scala2x, Trait) -} \ No newline at end of file +} -- cgit v1.2.3