diff options
author | Martin Odersky <odersky@gmail.com> | 2015-03-10 23:42:06 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-03-18 11:16:37 +0100 |
commit | cb8667654ede78bd99b695196dd99a0ec6c9bfa6 (patch) | |
tree | 3e0618fdf60727828bda18dfe4d670780ad0d79c | |
parent | 79e22287def4b5bf04e7ecd02507b9e72a4134f5 (diff) | |
download | dotty-cb8667654ede78bd99b695196dd99a0ec6c9bfa6.tar.gz dotty-cb8667654ede78bd99b695196dd99a0ec6c9bfa6.tar.bz2 dotty-cb8667654ede78bd99b695196dd99a0ec6c9bfa6.zip |
Drop environment from pickled closures.
It is always empty anyway. Side benefit: We can get rid of NOTYPE, too.
-rw-r--r-- | src/dotty/tools/dotc/core/pickling/TreePickler.scala | 10 | ||||
-rw-r--r-- | 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 => |