Skip to content

Commit 0929d7a

Browse files
committed
Widen skolem types when adding parent refinements
1 parent f7e5df5 commit 0929d7a

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

Diff for: compiler/src/dotty/tools/dotc/core/NamerOps.scala

+5-2
Original file line numberDiff line numberDiff line change
@@ -39,14 +39,17 @@ object NamerOps:
3939
*/
4040
extension (tp: Type)
4141
def separateRefinements(cls: ClassSymbol, refinements: mutable.LinkedHashMap[Name, Type] | Null)(using Context): Type =
42+
val widenSkolemsMap = new TypeMap:
43+
def apply(tp: Type) = mapOver(tp.widenSkolem)
4244
tp match
4345
case RefinedType(tp1, rname, rinfo) =>
4446
try tp1.separateRefinements(cls, refinements)
4547
finally
4648
if refinements != null then
49+
val rinfo1 = widenSkolemsMap(rinfo)
4750
refinements(rname) = refinements.get(rname) match
48-
case Some(tp) => tp & rinfo
49-
case None => rinfo
51+
case Some(tp) => tp & rinfo1
52+
case None => rinfo1
5053
case tp @ AnnotatedType(tp1, ann) =>
5154
tp.derivedAnnotatedType(tp1.separateRefinements(cls, refinements), ann)
5255
case tp: RecType =>

Diff for: tests/pos/i22456.scala

+4
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import language.experimental.modularity
2+
3+
class T(tracked val y: Int)
4+
class C(tracked val x: Int) extends T(x + 1)

0 commit comments

Comments
 (0)