From a7e88df553be9dd2593dbb8581630ae815eedfb1 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Wed, 4 Jan 2017 17:22:47 +0700 Subject: Address reviewer comments --- .../dotty/tools/dotc/transform/ExplicitOuter.scala | 2 +- tests/pending/pos/i1865.scala | 24 ---------------------- tests/pos/i1865.scala | 24 ++++++++++++++++++++++ 3 files changed, 25 insertions(+), 25 deletions(-) delete mode 100644 tests/pending/pos/i1865.scala create mode 100644 tests/pos/i1865.scala diff --git a/compiler/src/dotty/tools/dotc/transform/ExplicitOuter.scala b/compiler/src/dotty/tools/dotc/transform/ExplicitOuter.scala index 497b73807..c2aacf826 100644 --- a/compiler/src/dotty/tools/dotc/transform/ExplicitOuter.scala +++ b/compiler/src/dotty/tools/dotc/transform/ExplicitOuter.scala @@ -276,6 +276,7 @@ object ExplicitOuter { if (tpe.prefix eq NoPrefix) cls.owner.enclosingClass.thisType else tpe.prefix case _ => + // Need to be careful to dealias before erasure, otherwise we lose prefixes. outerPrefix(tpe.underlying(ctx.withPhaseNoLater(ctx.erasurePhase))) } case tpe: TypeProxy => @@ -339,7 +340,6 @@ object ExplicitOuter { val cls = fun.symbol.owner.asClass def outerArg(receiver: Tree): Tree = receiver match { case New(_) | Super(_, _) => - println(i"outerarg: ${receiver.tpe} --> ${outerPrefix(receiver.tpe)} at ${ctx.phase}") singleton(fixThis(outerPrefix(receiver.tpe))) case This(_) => ref(outerParamAccessor(cls)) // will be rewired to outer argument of secondary constructor in phase Constructors diff --git a/tests/pending/pos/i1865.scala b/tests/pending/pos/i1865.scala deleted file mode 100644 index 1b77558ff..000000000 --- a/tests/pending/pos/i1865.scala +++ /dev/null @@ -1,24 +0,0 @@ -class AbsCell { - type T = Node - class Node -} - -object Test { - def test: Unit = { - val cell = new AbsCell - new cell.T - } -} - -class AbsCell2 { - type T = Node - val value: T = value - def set(x: T): Unit = {} - class Node -} -object init { - def main = { - val cell = new AbsCell2 { val init = new Node } - cell set (new cell.T) - } -} diff --git a/tests/pos/i1865.scala b/tests/pos/i1865.scala new file mode 100644 index 000000000..1b77558ff --- /dev/null +++ b/tests/pos/i1865.scala @@ -0,0 +1,24 @@ +class AbsCell { + type T = Node + class Node +} + +object Test { + def test: Unit = { + val cell = new AbsCell + new cell.T + } +} + +class AbsCell2 { + type T = Node + val value: T = value + def set(x: T): Unit = {} + class Node +} +object init { + def main = { + val cell = new AbsCell2 { val init = new Node } + cell set (new cell.T) + } +} -- cgit v1.2.3