summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/transform/Mixin.scala7
-rw-r--r--test/pending/pos/bug609/a.scala16
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);
+ }
+}