summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/compiler/scala/tools/nsc/typechecker/Namers.scala4
1 files changed, 3 insertions, 1 deletions
diff --git a/src/compiler/scala/tools/nsc/typechecker/Namers.scala b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
index 79fa6571b5..c5c6326806 100644
--- a/src/compiler/scala/tools/nsc/typechecker/Namers.scala
+++ b/src/compiler/scala/tools/nsc/typechecker/Namers.scala
@@ -392,7 +392,9 @@ trait Namers { self: Analyzer =>
def selfTypeCompleter(tree: Tree) = new TypeCompleter(tree) {
override def complete(sym: Symbol) {
- var selftpe = glb(List(typer.typedType(tree).tpe, sym.owner.tpe))
+ var selftpe = typer.typedType(tree).tpe
+ if (!(selftpe.typeSymbol isNonBottomSubClass sym.owner))
+ selftpe = intersectionType(List(selftpe, sym.owner.tpe))
// println("completing self of "+sym.owner+": "+selftpe)
sym.setInfo(selftpe)
}