diff options
Diffstat (limited to 'src/dotty/tools/dotc/typer')
-rw-r--r-- | src/dotty/tools/dotc/typer/Namer.scala | 18 |
1 files changed, 5 insertions, 13 deletions
diff --git a/src/dotty/tools/dotc/typer/Namer.scala b/src/dotty/tools/dotc/typer/Namer.scala index 479b29cd8..cdda4f05a 100644 --- a/src/dotty/tools/dotc/typer/Namer.scala +++ b/src/dotty/tools/dotc/typer/Namer.scala @@ -124,7 +124,7 @@ class Namer { typer: Typer => tree match { case tree: TypeDef if tree.isClassDef => record(tree, ctx.newClassSymbol( - ctx.owner, tree.name, tree.mods.flags, new ClassCompleter(tree), + ctx.owner, tree.name, tree.mods.flags, new Completer(tree) withDecls newScope, privateWithinClass(tree.mods), tree.pos, ctx.source.file)) case tree: MemberDef => record(tree, ctx.newSymbol( @@ -251,7 +251,10 @@ class Namer { typer: Typer => nestedTyper(sym) = typer1 typer1.defDefSig(tree, sym)(localContext.withTyper(typer1)) case tree: TypeDef => - typeDefSig(tree, sym)(localContext.withNewScope) + if (tree.isClassDef) + classDefSig(tree, sym.asClass, decls.asInstanceOf[MutableScope])(localContext) + else + typeDefSig(tree, sym)(localContext.withNewScope) case imp: Import => val expr1 = typedAheadExpr(imp.expr, AnySelectionProto) ImportType(tpd.SharedTree(expr1)) @@ -261,17 +264,6 @@ class Namer { typer: Typer => } } - /** The completer for a symbol defined by a class definition */ - class ClassCompleter(original: TypeDef)(implicit ctx: Context) - extends ClassCompleterWithDecls(newScope) { - override def complete(denot: SymDenotation): Unit = { - val cls = denot.symbol.asClass - def localContext = ctx.fresh.withOwner(cls) - println(s"completing ${cls.show}") - cls.info = classDefSig(original, cls, decls.asInstanceOf[MutableScope])(localContext) - } - } - /** Typecheck tree during completion, and remember result in typedtree map */ private def typedAheadImpl(tree: Tree, pt: Type)(implicit ctx: Context): tpd.Tree = typedTree.getOrElseUpdate(tree, typer.typedExpanded(tree, pt)) |