Skip to content

Commit 4936fee

Browse files
Fix #13495: break completion cycles
1 parent aaac006 commit 4936fee

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

compiler/src/dotty/tools/dotc/core/SymDenotations.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1611,7 +1611,7 @@ object SymDenotations {
16111611
case _ => false
16121612

16131613
if owner.isClass then
1614-
for c <- owner.info.decls.toList if maybeChild(c) do
1614+
for c <- owner.info.decls.toList if maybeChild(c) && (c.isClass || c.is(EnumVal)) do
16151615
c.ensureCompleted()
16161616
end completeChildrenIn
16171617

tests/pos/13495.scala

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import scala.annotation.showAsInfix
2+
3+
object Test {
4+
trait Component
5+
sealed trait Deleted extends Component
6+
7+
type Deletable[L <: CList] <: CList = L match {
8+
case h &: t => (h | Deleted) &: Deletable[t]
9+
case CNil => CNil
10+
}
11+
12+
sealed trait CList
13+
sealed trait CNil extends CList
14+
@showAsInfix case class &:[+C <: Component, +L <: CList](h: C, t: L) extends CList
15+
16+
case class A(x: Int, y: Int) extends Component
17+
case class B(x: Int, y: Int) extends Component
18+
19+
val x: Deletable[A &: B &: CNil] = ???
20+
}

0 commit comments

Comments
 (0)