File tree Expand file tree Collapse file tree 3 files changed +37
-3
lines changed
compiler/src/dotty/tools/dotc/core Expand file tree Collapse file tree 3 files changed +37
-3
lines changed Original file line number Diff line number Diff line change @@ -3196,9 +3196,10 @@ class TypeComparer(@constructorOnly initctx: Context) extends ConstraintHandling
31963196 cls.is(Sealed ) && ! cls.hasAnonymousChild
31973197
31983198 def decompose (cls : Symbol ): List [Symbol ] =
3199- cls.children.map { child =>
3200- if child.isTerm then child.info.classSymbol
3201- else child
3199+ cls.children.flatMap { child =>
3200+ if child.isTerm then
3201+ child.info.classSymbols // allow enum vals to be decomposed to their enum class (then filtered out) and any mixins
3202+ else child :: Nil
32023203 }.filter(child => child.exists && child != cls)
32033204
32043205 def eitherDerivesFromOther (cls1 : Symbol , cls2 : Symbol ): Boolean =
Original file line number Diff line number Diff line change 1+ trait Figure
2+ sealed trait Corners { self : Figure => }
3+
4+ enum Shape extends Figure :
5+ case Triangle extends Shape with Corners
6+ case Square extends Shape with Corners
7+ case Circle extends Shape
8+ case Ellipsis extends Shape
9+
10+ def hasCorners (s : Shape ): Boolean = s match
11+ case hasCorners : Corners => true // <--- reported as `Unreachable case`
12+ case _ => false
13+
14+ class Test :
15+ def test (): Unit =
16+ println(hasCorners(Shape .Circle ))
Original file line number Diff line number Diff line change 1+ trait Figure
2+ sealed trait Corners { self : Figure => }
3+
4+ sealed abstract class Shape extends Figure
5+ object Shape :
6+ case object Triange extends Shape with Corners
7+ case object Square extends Shape with Corners
8+ case object Circle extends Shape
9+ case object Ellipsis extends Shape
10+
11+ def hasCorners (s : Shape ): Boolean = s match
12+ case hasCorners : Corners => true // <--- reported as `Unreachable case`
13+ case _ => false
14+
15+ class Test :
16+ def test (): Unit =
17+ println(hasCorners(Shape .Circle ))
You can’t perform that action at this time.
0 commit comments