Skip to content

Commit f4abdd8

Browse files
authored
Merge pull request #3551 from dotty-staging/fix-3548
Fix #3548: set outer select type to be the type enclosing the expected type
2 parents 64021f9 + 37dca3b commit f4abdd8

File tree

2 files changed

+21
-1
lines changed

2 files changed

+21
-1
lines changed

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -796,7 +796,7 @@ object PatternMatcher {
796796
val expectedClass = expectedTp.dealias.classSymbol.asClass
797797
ExplicitOuter.ensureOuterAccessors(expectedClass)
798798
scrutinee.ensureConforms(expectedTp)
799-
.outerSelect(1, expectedOuter.tpe.widen)
799+
.outerSelect(1, expectedClass.owner.typeRef)
800800
.select(defn.Object_eq)
801801
.appliedTo(expectedOuter)
802802
}

tests/run/i3548.scala

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
trait Common {
2+
case class Data(a: String)
3+
}
4+
object O1 extends Common
5+
object O2 extends Common
6+
7+
object Test {
8+
def main(args: Array[String]): Unit = {
9+
10+
val data = O2.Data("test")
11+
12+
val result = data match {
13+
case O1.Data(s) => 1
14+
case O2.Data(s) => 2
15+
case _ => 3
16+
}
17+
18+
assert(result == 2)
19+
}
20+
}

0 commit comments

Comments
 (0)