aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dotty/tools/dotc/typer/Namer.scala9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/dotty/tools/dotc/typer/Namer.scala b/src/dotty/tools/dotc/typer/Namer.scala
index 3f732f80c..3c491fa7a 100644
--- a/src/dotty/tools/dotc/typer/Namer.scala
+++ b/src/dotty/tools/dotc/typer/Namer.scala
@@ -575,7 +575,14 @@ class Namer { typer: Typer =>
def checkedParentType(parent: untpd.Tree): Type = {
val ptype = parentType(parent)(ctx.superCallContext)
if (cls.isRefinementClass) ptype
- else checkClassTypeWithStablePrefix(ptype, parent.pos, traitReq = parent ne parents.head)
+ else {
+ val pt = checkClassTypeWithStablePrefix(ptype, parent.pos, traitReq = parent ne parents.head)
+ if (pt.derivesFrom(cls)) {
+ ctx.error(i"cyclic inheritance: $cls extends itself", parent.pos)
+ defn.ObjectClass.typeRef
+ }
+ else pt
+ }
}
val selfInfo =