@@ -113,6 +113,7 @@ class TreeUnpickler(reader: TastyReader,
113
113
class Completer (reader : TastyReader )(using @ constructorOnly _ctx : Context ) extends LazyType {
114
114
import reader ._
115
115
val owner = ctx.owner
116
+ val mode = ctx.mode
116
117
val source = ctx.source
117
118
def complete (denot : SymDenotation )(using Context ): Unit =
118
119
def fail (ex : Throwable ) =
@@ -129,7 +130,7 @@ class TreeUnpickler(reader: TastyReader,
129
130
try
130
131
atPhaseBeforeTransforms {
131
132
new TreeReader (reader).readIndexedDef()(
132
- using ctx.withOwner(owner).withSource(source))
133
+ using ctx.withOwner(owner).withModeBits(mode). withSource(source))
133
134
}
134
135
catch
135
136
case ex : AssertionError => fail(ex)
@@ -1193,6 +1194,10 @@ class TreeUnpickler(reader: TastyReader,
1193
1194
res.withAttachment(SuppressedApplyToNone , ())
1194
1195
else res
1195
1196
1197
+ def simplifyLub (tree : Tree ): Tree =
1198
+ tree.overwriteType(tree.tpe.simplified)
1199
+ tree
1200
+
1196
1201
def readLengthTerm (): Tree = {
1197
1202
val end = readEnd()
1198
1203
val result =
@@ -1242,23 +1247,25 @@ class TreeUnpickler(reader: TastyReader,
1242
1247
val tpt = ifBefore(end)(readTpt(), EmptyTree )
1243
1248
Closure (Nil , meth, tpt)
1244
1249
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)))
1254
1260
case RETURN =>
1255
1261
val from = readSymRef()
1256
1262
val expr = ifBefore(end)(readTerm(), EmptyTree )
1257
1263
Return (expr, Ident (from.termRef))
1258
1264
case WHILE =>
1259
1265
WhileDo (readTerm(), readTerm())
1260
1266
case TRY =>
1261
- Try (readTerm(), readCases(end), ifBefore(end)(readTerm(), EmptyTree ))
1267
+ simplifyLub(
1268
+ Try (readTerm(), readCases(end), ifBefore(end)(readTerm(), EmptyTree )))
1262
1269
case SELECTouter =>
1263
1270
val levels = readNat()
1264
1271
readTerm().outerSelect(levels, SkolemType (readType()))
0 commit comments