From cb8667654ede78bd99b695196dd99a0ec6c9bfa6 Mon Sep 17 00:00:00 2001 From: Martin Odersky Date: Tue, 10 Mar 2015 23:42:06 +0100 Subject: Drop environment from pickled closures. It is always empty anyway. Side benefit: We can get rid of NOTYPE, too. --- src/dotty/tools/dotc/core/pickling/TreePickler.scala | 10 ++++++---- src/dotty/tools/dotc/core/pickling/TreeUnpickler.scala | 8 +++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/dotty/tools/dotc/core/pickling/TreePickler.scala b/src/dotty/tools/dotc/core/pickling/TreePickler.scala index ca0ba4137..c0914421f 100644 --- a/src/dotty/tools/dotc/core/pickling/TreePickler.scala +++ b/src/dotty/tools/dotc/core/pickling/TreePickler.scala @@ -248,8 +248,6 @@ class TreePickler(pickler: TastyPickler) { assert(pickleParamType(tpe), s"orphan method parameter: $tpe") case tpe: LazyRef => pickleType(tpe.ref) - case NoType => - writeByte(NOTYPE) }} catch { case ex: AssertionError => println(i"error while pickling type $tpe") @@ -353,8 +351,12 @@ class TreePickler(pickler: TastyPickler) { writeByte(IF) withLength{ pickleTree(cond); pickleTree(thenp); pickleTree(elsep) } case Closure(env, meth, tpt) => - writeByte(CLOSURE) - withLength{ pickleTree(meth); pickleTpt(tpt); env.foreach(pickleTree) } + writeByte(LAMBDA) + assert(env.isEmpty) + withLength{ + pickleTree(meth) + if (tpt.tpe.exists) pickleTpt(tpt) + } case Match(selector, cases) => writeByte(MATCH) withLength { pickleTree(selector); cases.foreach(pickleTree) } diff --git a/src/dotty/tools/dotc/core/pickling/TreeUnpickler.scala b/src/dotty/tools/dotc/core/pickling/TreeUnpickler.scala index fb076911b..3bafa8b1f 100644 --- a/src/dotty/tools/dotc/core/pickling/TreeUnpickler.scala +++ b/src/dotty/tools/dotc/core/pickling/TreeUnpickler.scala @@ -267,8 +267,6 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { ThisType.raw(readType().asInstanceOf[TypeRef]) case SKOLEMtype => SkolemType(readTypeRef()) - case NOTYPE => - NoType case SHARED => val ref = readAddr() typeAtAddr.getOrElseUpdate(ref, forkAt(ref).readType()) @@ -747,10 +745,10 @@ class TreeUnpickler(reader: TastyReader, tastyName: TastyName.Table) { Block(stats, expr) case IF => If(readTerm(), readTerm(), readTerm()) - case CLOSURE => + case LAMBDA => val meth = readTerm() - val tpt = readTpt() - Closure(until(end)(readTerm()), meth, tpt) + val tpt = ifBefore(end)(readTpt(), EmptyTree) + Closure(Nil, meth, tpt) case MATCH => Match(readTerm(), readCases(end)) case RETURN => -- cgit v1.2.3