diff --git a/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala b/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala index 10d4e780b6f9..977b3f714d53 100644 --- a/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala +++ b/compiler/src/dotty/tools/dotc/core/tasty/TreeUnpickler.scala @@ -881,7 +881,12 @@ class TreeUnpickler(reader: TastyReader, } goto(end) setSpan(start, tree) - if (!sym.isType) // Only terms might have leaky aliases, see the documentation of `checkNoPrivateLeaks` + + // Dealias any non-accessible type alias in the type of `sym`. This can be + // skipped for types (see `checkNoPrivateLeaks` for why) as well as for + // param accessors since they can't refer to an inaccesible type member of + // the class. + if !sym.isType && !sym.is(ParamAccessor) then sym.info = ta.avoidPrivateLeaks(sym) if (ctx.settings.YreadComments.value) { diff --git a/tests/pos/i12834.scala b/tests/pos/i12834.scala new file mode 100644 index 000000000000..c007eaf6844f --- /dev/null +++ b/tests/pos/i12834.scala @@ -0,0 +1,2 @@ +class A(val ref: Option[B]) +class B extends A(None)