Skip to content

Commit 8d30ff8

Browse files
committed
Widen skolem types when adding parent refinements
1 parent f7e5df5 commit 8d30ff8

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

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

+3-2
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,10 @@ object NamerOps:
4444
try tp1.separateRefinements(cls, refinements)
4545
finally
4646
if refinements != null then
47+
val rinfo1 = rinfo.widenSkolem
4748
refinements(rname) = refinements.get(rname) match
48-
case Some(tp) => tp & rinfo
49-
case None => rinfo
49+
case Some(tp) => tp & rinfo1
50+
case None => rinfo1
5051
case tp @ AnnotatedType(tp1, ann) =>
5152
tp.derivedAnnotatedType(tp1.separateRefinements(cls, refinements), ann)
5253
case tp: RecType =>

compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala

+1-1
Original file line numberDiff line numberDiff line change
@@ -1080,7 +1080,7 @@ class TreeUnpickler(reader: TastyReader,
10801080
}
10811081
val parentReader = fork
10821082
val parents = readParents(withArgs = false)(using parentCtx)
1083-
val parentTypes = parents.map(_.tpe.dealiasKeepAnnots.separateRefinements(cls, null))
1083+
val parentTypes = parents.map(p => p.tpe.dealiasKeepAnnots.separateRefinements(cls, null))
10841084
if cls.is(JavaDefined) && parentTypes.exists(_.derivesFrom(defn.JavaAnnotationClass)) then
10851085
cls.setFlag(JavaAnnotation)
10861086
val self =

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)