diff options
-rw-r--r-- | src/compiler/scala/tools/nsc/transform/Mixin.scala | 7 | ||||
-rw-r--r-- | test/pending/pos/bug609/a.scala | 16 |
2 files changed, 18 insertions, 5 deletions
diff --git a/src/compiler/scala/tools/nsc/transform/Mixin.scala b/src/compiler/scala/tools/nsc/transform/Mixin.scala index 0a3e6e5982..1baba07e32 100644 --- a/src/compiler/scala/tools/nsc/transform/Mixin.scala +++ b/src/compiler/scala/tools/nsc/transform/Mixin.scala @@ -67,10 +67,8 @@ abstract class Mixin extends InfoTransform { def addLateInterfaceMembers(clazz: Symbol): unit = if (!(clazz hasFlag MIXEDIN)) { clazz setFlag MIXEDIN; -/* for (val bc <- clazz.info.baseClasses.reverse) if (bc.hasFlag(lateINTERFACE)) addLateInterfaceMembers(bc) -*/ def newGetter(field: Symbol): Symbol = clazz.newMethod(field.pos, nme.getterName(field.name)) .setFlag(field.flags & ~(PRIVATE | LOCAL) | ACCESSOR | DEFERRED | SYNTHETIC) @@ -117,10 +115,9 @@ abstract class Mixin extends InfoTransform { if (mixinClass.isImplClass) { addLateInterfaceMembers(mixinClass.toInterface); for (val member <- mixinClass.info.decls.toList) { - //System.out.println("adding forwarded method " + member + " " + mmap(member) + member.locationString + " to " + clazz + " " + atPhase(currentRun.explicitOuterPhase)(clazz.info.member(member.name).alternatives));//DEBUG + //System.out.println("adding forwarded method " + member + " " + mmap(member) + member.locationString + " to " + clazz + " " + (clazz.info.member(member.name).alternatives));//DEBUG if (isForwarded(member) && !isStatic(member) && - (atPhase(currentRun.explicitOuterPhase)( - clazz.info.findMember(member.name, 0, 0).alternatives) contains mmap(member))) { + (clazz.info.findMember(member.name, 0, 0).alternatives contains mmap(member))) { val member1 = addMember( clazz, member.cloneSymbol(clazz) setPos clazz.pos resetFlag (DEFERRED | lateDEFERRED)); diff --git a/test/pending/pos/bug609/a.scala b/test/pending/pos/bug609/a.scala new file mode 100644 index 0000000000..137c3c6009 --- /dev/null +++ b/test/pending/pos/bug609/a.scala @@ -0,0 +1,16 @@ +package test; +abstract class MyLinkedList { + type Node <: NodeImpl; + def init : Node; + final class Segment(node : Node); + trait NodeImpl { + def insertAfter(node : Node) : Unit = insertAfter(new Segment(node)); + def insertAfter(segment : Segment) = {} + } +} +trait MyOffsetList extends MyLinkedList { + type Node <: NodeImpl; + trait NodeImpl extends super.NodeImpl { + override def insertAfter(segment : Segment) = super.insertAfter(segment); + } +} |