@@ -1194,6 +1194,10 @@ class TreeUnpickler(reader: TastyReader,
1194
1194
res.withAttachment(SuppressedApplyToNone , ())
1195
1195
else res
1196
1196
1197
+ def simplifyLub (tree : Tree ): Tree =
1198
+ tree.overwriteType(tree.tpe.simplified)
1199
+ tree
1200
+
1197
1201
def readLengthTerm (): Tree = {
1198
1202
val end = readEnd()
1199
1203
val result =
@@ -1232,34 +1236,37 @@ class TreeUnpickler(reader: TastyReader,
1232
1236
val expansion = exprReader.readTerm() // need bindings in scope, so needs to be read before
1233
1237
Inlined (call, bindings, expansion)
1234
1238
case IF =>
1235
- if (nextByte == INLINE ) {
1236
- readByte()
1237
- InlineIf (readTerm(), readTerm(), readTerm())
1238
- }
1239
- else
1240
- If (readTerm(), readTerm(), readTerm())
1239
+ simplifyLub(
1240
+ if (nextByte == INLINE ) {
1241
+ readByte()
1242
+ InlineIf (readTerm(), readTerm(), readTerm())
1243
+ }
1244
+ else
1245
+ If (readTerm(), readTerm(), readTerm()))
1241
1246
case LAMBDA =>
1242
1247
val meth = readTerm()
1243
1248
val tpt = ifBefore(end)(readTpt(), EmptyTree )
1244
1249
Closure (Nil , meth, tpt)
1245
1250
case MATCH =>
1246
- if (nextByte == IMPLICIT ) {
1247
- readByte()
1248
- InlineMatch (EmptyTree , readCases(end))
1249
- }
1250
- else if (nextByte == INLINE ) {
1251
- readByte()
1252
- InlineMatch (readTerm(), readCases(end))
1253
- }
1254
- else Match (readTerm(), readCases(end))
1251
+ simplifyLub(
1252
+ if (nextByte == IMPLICIT ) {
1253
+ readByte()
1254
+ InlineMatch (EmptyTree , readCases(end))
1255
+ }
1256
+ else if (nextByte == INLINE ) {
1257
+ readByte()
1258
+ InlineMatch (readTerm(), readCases(end))
1259
+ }
1260
+ else Match (readTerm(), readCases(end)))
1255
1261
case RETURN =>
1256
1262
val from = readSymRef()
1257
1263
val expr = ifBefore(end)(readTerm(), EmptyTree )
1258
1264
Return (expr, Ident (from.termRef))
1259
1265
case WHILE =>
1260
1266
WhileDo (readTerm(), readTerm())
1261
1267
case TRY =>
1262
- Try (readTerm(), readCases(end), ifBefore(end)(readTerm(), EmptyTree ))
1268
+ simplifyLub(
1269
+ Try (readTerm(), readCases(end), ifBefore(end)(readTerm(), EmptyTree )))
1263
1270
case SELECTouter =>
1264
1271
val levels = readNat()
1265
1272
readTerm().outerSelect(levels, SkolemType (readType()))
0 commit comments