Skip to content

Commit 23d9b51

Browse files
committed
Test info of TypeDef symbols in Ycheck
Should only contain classes or bounds
1 parent b01a23f commit 23d9b51

File tree

1 file changed

+11
-0
lines changed

1 file changed

+11
-0
lines changed

compiler/src/dotty/tools/dotc/transform/TreeChecker.scala

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,12 @@ object TreeChecker {
427427
case _ => false
428428
}
429429

430+
def isTypeDefInfo(pt: Type)(using Context): Boolean = pt match {
431+
case _: ClassInfo => true
432+
case _: TypeBounds => true
433+
case _ => false
434+
}
435+
430436
override def typedIdent(tree: untpd.Ident, pt: Type)(using Context): Tree = {
431437
assert(tree.isTerm || !ctx.isAfterTyper, tree.show + " at " + ctx.phase)
432438
assert(tree.isType || ctx.mode.is(Mode.Pattern) && untpd.isWildcardArg(tree) || !needsSelect(tree.typeOpt), i"bad type ${tree.tpe} for $tree # ${tree.uniqueId}")
@@ -533,6 +539,11 @@ object TreeChecker {
533539
i"owner chain = ${tree.symbol.ownersIterator.toList}%, %, ctxOwners = ${ctx.outersIterator.map(_.owner).toList}%, %")
534540
}
535541

542+
override def typedTypeDef(tdef: untpd.TypeDef, sym: Symbol)(using Context): Tree = {
543+
assert(isTypeDefInfo(sym.info), i"wrong type, expect a template or type bounds for ${sym.fullName}, but found: ${sym.info}")
544+
super.typedTypeDef(tdef, sym)
545+
}
546+
536547
override def typedClassDef(cdef: untpd.TypeDef, cls: ClassSymbol)(using Context): Tree = {
537548
val TypeDef(_, impl @ Template(constr, _, _, _)) = cdef: @unchecked
538549
assert(cdef.symbol == cls)

0 commit comments

Comments
 (0)