Skip to content

Commit cb86676

Browse files
oderskyDarkDimius
authored andcommitted
Drop environment from pickled closures.
It is always empty anyway. Side benefit: We can get rid of NOTYPE, too.
1 parent 79e2228 commit cb86676

File tree

2 files changed

+9
-9
lines changed

2 files changed

+9
-9
lines changed

src/dotty/tools/dotc/core/pickling/TreePickler.scala

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -248,8 +248,6 @@ class TreePickler(pickler: TastyPickler) {
248248
assert(pickleParamType(tpe), s"orphan method parameter: $tpe")
249249
case tpe: LazyRef =>
250250
pickleType(tpe.ref)
251-
case NoType =>
252-
writeByte(NOTYPE)
253251
}} catch {
254252
case ex: AssertionError =>
255253
println(i"error while pickling type $tpe")
@@ -353,8 +351,12 @@ class TreePickler(pickler: TastyPickler) {
353351
writeByte(IF)
354352
withLength{ pickleTree(cond); pickleTree(thenp); pickleTree(elsep) }
355353
case Closure(env, meth, tpt) =>
356-
writeByte(CLOSURE)
357-
withLength{ pickleTree(meth); pickleTpt(tpt); env.foreach(pickleTree) }
354+
writeByte(LAMBDA)
355+
assert(env.isEmpty)
356+
withLength{
357+
pickleTree(meth)
358+
if (tpt.tpe.exists) pickleTpt(tpt)
359+
}
358360
case Match(selector, cases) =>
359361
writeByte(MATCH)
360362
withLength { pickleTree(selector); cases.foreach(pickleTree) }

src/dotty/tools/dotc/core/pickling/TreeUnpickler.scala

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -267,8 +267,6 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) {
267267
ThisType.raw(readType().asInstanceOf[TypeRef])
268268
case SKOLEMtype =>
269269
SkolemType(readTypeRef())
270-
case NOTYPE =>
271-
NoType
272270
case SHARED =>
273271
val ref = readAddr()
274272
typeAtAddr.getOrElseUpdate(ref, forkAt(ref).readType())
@@ -747,10 +745,10 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) {
747745
Block(stats, expr)
748746
case IF =>
749747
If(readTerm(), readTerm(), readTerm())
750-
case CLOSURE =>
748+
case LAMBDA =>
751749
val meth = readTerm()
752-
val tpt = readTpt()
753-
Closure(until(end)(readTerm()), meth, tpt)
750+
val tpt = ifBefore(end)(readTpt(), EmptyTree)
751+
Closure(Nil, meth, tpt)
754752
case MATCH =>
755753
Match(readTerm(), readCases(end))
756754
case RETURN =>

0 commit comments

Comments
 (0)