Skip to content

Commit b983dbf

Browse files
committed
Simplify the pickled tree after unpickler
1 parent bec2660 commit b983dbf

File tree

2 files changed

+24
-24
lines changed

2 files changed

+24
-24
lines changed

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

Lines changed: 16 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1194,10 +1194,6 @@ class TreeUnpickler(reader: TastyReader,
11941194
res.withAttachment(SuppressedApplyToNone, ())
11951195
else res
11961196

1197-
def simplifyLub(tree: Tree): Tree =
1198-
tree.overwriteType(tree.tpe.simplified)
1199-
tree
1200-
12011197
def readLengthTerm(): Tree = {
12021198
val end = readEnd()
12031199
val result =
@@ -1236,37 +1232,34 @@ class TreeUnpickler(reader: TastyReader,
12361232
val expansion = exprReader.readTerm() // need bindings in scope, so needs to be read before
12371233
Inlined(call, bindings, expansion)
12381234
case IF =>
1239-
simplifyLub(
1240-
if (nextByte == INLINE) {
1241-
readByte()
1242-
InlineIf(readTerm(), readTerm(), readTerm())
1243-
}
1244-
else
1245-
If(readTerm(), readTerm(), readTerm()))
1235+
if (nextByte == INLINE) {
1236+
readByte()
1237+
InlineIf(readTerm(), readTerm(), readTerm())
1238+
}
1239+
else
1240+
If(readTerm(), readTerm(), readTerm())
12461241
case LAMBDA =>
12471242
val meth = readTerm()
12481243
val tpt = ifBefore(end)(readTpt(), EmptyTree)
12491244
Closure(Nil, meth, tpt)
12501245
case MATCH =>
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)))
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))
12611255
case RETURN =>
12621256
val from = readSymRef()
12631257
val expr = ifBefore(end)(readTerm(), EmptyTree)
12641258
Return(expr, Ident(from.termRef))
12651259
case WHILE =>
12661260
WhileDo(readTerm(), readTerm())
12671261
case TRY =>
1268-
simplifyLub(
1269-
Try(readTerm(), readCases(end), ifBefore(end)(readTerm(), EmptyTree)))
1262+
Try(readTerm(), readCases(end), ifBefore(end)(readTerm(), EmptyTree))
12701263
case SELECTouter =>
12711264
val levels = readNat()
12721265
readTerm().outerSelect(levels, SkolemType(readType()))

compiler/src/dotty/tools/dotc/transform/Pickler.scala

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,13 @@ class Pickler extends Phase {
9999
println(i"**** pickled info of $cls")
100100
println(TastyPrinter.showContents(pickled, ctx.settings.color.value == "never"))
101101
}
102+
// println(i"**** pickled info of $cls")
103+
// println(TastyPrinter.showContents(pickled, ctx.settings.color.value == "never"))
104+
if cls.show.contains("MainGenericRunner") then
105+
import java.nio.file.{Paths, Files}
106+
import java.nio.charset.StandardCharsets
107+
108+
Files.write(Paths.get("debug.txt"), TastyPrinter.showContents(pickled, true).getBytes(StandardCharsets.UTF_8))
102109
pickled
103110
}(using ExecutionContext.global)
104111
}
@@ -137,7 +144,7 @@ class Pickler extends Phase {
137144
}
138145
pickling.println("************* entered toplevel ***********")
139146
for ((cls, unpickler) <- unpicklers) {
140-
val unpickled = unpickler.rootTrees
147+
val unpickled = typeSimplifier.transform(unpickler.rootTrees)
141148
testSame(i"$unpickled%\n%", beforePickling(cls), cls)
142149
}
143150
}

0 commit comments

Comments
 (0)