Skip to content

Commit 2cbcd26

Browse files
authored
Merge pull request #72 from scala/backport-lts-3.3-21876
Backport "Fix provablyDisjoint handling enum constants with mixins" to 3.3 LTS
2 parents 9e97735 + 4895a18 commit 2cbcd26

File tree

3 files changed

+34
-1
lines changed

3 files changed

+34
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3110,7 +3110,7 @@ object TypeComparer {
31103110

31113111
def explaining[T](op: ExplainingTypeComparer => T, short: Boolean = false)(using Context): T =
31123112
comparing(_.explaining(op, short))
3113-
3113+
31143114
def tracked[T](op: TrackingTypeComparer => T)(using Context): T =
31153115
comparing(_.tracked(op))
31163116
}

tests/warn/i21860.scala

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
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))

tests/warn/i21860.unenum.scala

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
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))

0 commit comments

Comments
 (0)