@@ -113,6 +113,7 @@ class TreeUnpickler(reader: TastyReader,
113113 class Completer (reader : TastyReader )(using @ constructorOnly _ctx : Context ) extends LazyType {
114114 import reader ._
115115 val owner = ctx.owner
116+ val mode = ctx.mode
116117 val source = ctx.source
117118 def complete (denot : SymDenotation )(using Context ): Unit =
118119 def fail (ex : Throwable ) =
@@ -129,7 +130,7 @@ class TreeUnpickler(reader: TastyReader,
129130 try
130131 atPhaseBeforeTransforms {
131132 new TreeReader (reader).readIndexedDef()(
132- using ctx.withOwner(owner).withSource(source))
133+ using ctx.withOwner(owner).withModeBits(mode). withSource(source))
133134 }
134135 catch
135136 case ex : AssertionError => fail(ex)
@@ -1193,6 +1194,10 @@ class TreeUnpickler(reader: TastyReader,
11931194 res.withAttachment(SuppressedApplyToNone , ())
11941195 else res
11951196
1197+ def simplifyLub (tree : Tree ): Tree =
1198+ tree.overwriteType(tree.tpe.simplified)
1199+ tree
1200+
11961201 def readLengthTerm (): Tree = {
11971202 val end = readEnd()
11981203 val result =
@@ -1242,23 +1247,25 @@ class TreeUnpickler(reader: TastyReader,
12421247 val tpt = ifBefore(end)(readTpt(), EmptyTree )
12431248 Closure (Nil , meth, tpt)
12441249 case MATCH =>
1245- if (nextByte == IMPLICIT ) {
1246- readByte()
1247- InlineMatch (EmptyTree , readCases(end))
1248- }
1249- else if (nextByte == INLINE ) {
1250- readByte()
1251- InlineMatch (readTerm(), readCases(end))
1252- }
1253- else Match (readTerm(), readCases(end))
1250+ simplifyLub(
1251+ if (nextByte == IMPLICIT ) {
1252+ readByte()
1253+ InlineMatch (EmptyTree , readCases(end))
1254+ }
1255+ else if (nextByte == INLINE ) {
1256+ readByte()
1257+ InlineMatch (readTerm(), readCases(end))
1258+ }
1259+ else Match (readTerm(), readCases(end)))
12541260 case RETURN =>
12551261 val from = readSymRef()
12561262 val expr = ifBefore(end)(readTerm(), EmptyTree )
12571263 Return (expr, Ident (from.termRef))
12581264 case WHILE =>
12591265 WhileDo (readTerm(), readTerm())
12601266 case TRY =>
1261- Try (readTerm(), readCases(end), ifBefore(end)(readTerm(), EmptyTree ))
1267+ simplifyLub(
1268+ Try (readTerm(), readCases(end), ifBefore(end)(readTerm(), EmptyTree )))
12621269 case SELECTouter =>
12631270 val levels = readNat()
12641271 readTerm().outerSelect(levels, SkolemType (readType()))
0 commit comments