From 18cd0dde7e949d6ae20f451f98843d48f28e2e26 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Sun, 9 Nov 2014 13:16:42 +0100 Subject: Remove unused class It functionality is now all implemented in ExplicitOuter. --- src/dotty/tools/dotc/transform/AttachOuter.scala | 65 ------------------------ 1 file changed, 65 deletions(-) delete mode 100644 src/dotty/tools/dotc/transform/AttachOuter.scala diff --git a/src/dotty/tools/dotc/transform/AttachOuter.scala b/src/dotty/tools/dotc/transform/AttachOuter.scala deleted file mode 100644 index 9d2b0574d..000000000 --- a/src/dotty/tools/dotc/transform/AttachOuter.scala +++ /dev/null @@ -1,65 +0,0 @@ -package dotty.tools.dotc -package transform - -import TreeTransforms._ -import core.DenotTransformers._ -import core.Symbols._ -import core.Contexts._ -import core.Types._ -import core.Flags._ -import core.Decorators._ -import core.StdNames.nme -import ast.Trees._ -import util.Attachment - -/** This phase decorates News and parent constructors of non-static inner classes - * with an attachment indicating the outer reference as a tree. This is necessary because - * outer prefixes are erased, and explicit outer runs only after erasure. - */ -class AttachOuter extends MiniPhaseTransform { - import ast.tpd._ - - val Outer = new Attachment.Key[Tree] - - override def phaseName: String = "attachOuter" - - private def outerPrefix(tpe: Type)(implicit ctx: Context): Type = tpe match { - case tpe: TypeRef => - tpe.symbol match { - case cls: ClassSymbol => - if (cls.owner.isStaticOwner || cls.is(Interface)) NoPrefix - else if (tpe.prefix eq NoPrefix) cls.owner.enclosingClass.thisType - else tpe.prefix - case _ => - outerPrefix(tpe.underlying) - } - case tpe: TypeProxy => - outerPrefix(tpe.underlying) - } - - override def transformNew(tree: New)(implicit ctx: Context, info: TransformerInfo): Tree = { - val pre = outerPrefix(tree.tpt.tpe) - pre match { - case pre: SingletonType => - tree.putAttachment(Outer, singleton(pre)) match { - case Some(outer) => assert(outer.tpe =:= pre) - case none => - } - case NoPrefix => - } - tree - } - - override def transformTemplate(tree: Template)(implicit ctx: Context, info: TransformerInfo): Tree = { - def transformParent(tree: Tree): Tree = tree match { - case tree: TypeTree if outerPrefix(tree.tpe) != NoPrefix => - val constr = New(tree.tpe, Nil).withPos(tree.pos) - val Select(nu: New, _) = methPart(constr) - transformNew(nu) - constr - case _ => - tree - } - cpy.Template(tree)(parents = tree.parents mapconserve transformParent) - } -} \ No newline at end of file -- cgit v1.2.3