diff options
author | Martin Odersky <odersky@gmail.com> | 2015-02-10 12:39:15 +0100 |
---|---|---|
committer | Dmitry Petrashko <dmitry.petrashko@gmail.com> | 2015-03-18 11:09:43 +0100 |
commit | 1c5f3b75f7e70e8608d6be442087857bd4a6b2cc (patch) | |
tree | 26a197f56bfbd0a0ffa819cf68a730abd88a6260 /src/dotty/tools/dotc/transform | |
parent | 41922c14bf1a45a3dcf7afca7719e0be84c2c29a (diff) | |
download | dotty-1c5f3b75f7e70e8608d6be442087857bd4a6b2cc.tar.gz dotty-1c5f3b75f7e70e8608d6be442087857bd4a6b2cc.tar.bz2 dotty-1c5f3b75f7e70e8608d6be442087857bd4a6b2cc.zip |
Add TASTY readers and printers for TASTy info.
So far printing is the only reader, ie. deserializer.
Numerous bugfixes to make first tests work.
Diffstat (limited to 'src/dotty/tools/dotc/transform')
-rw-r--r-- | src/dotty/tools/dotc/transform/Pickler.scala | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/dotty/tools/dotc/transform/Pickler.scala b/src/dotty/tools/dotc/transform/Pickler.scala new file mode 100644 index 000000000..644a66784 --- /dev/null +++ b/src/dotty/tools/dotc/transform/Pickler.scala @@ -0,0 +1,29 @@ +package dotty.tools.dotc +package transform + +import core._ +import TreeTransforms._ +import Contexts.Context +import Decorators._ +import pickling._ + +/** This miniphase pickles trees */ +class Pickler extends MiniPhaseTransform { thisTransform => + import ast.tpd._ + + override def phaseName: String = "pickler" + + + override def transformUnit(tree: Tree)(implicit ctx: Context, info: TransformerInfo): Tree = { + val pickler = new TastyPickler + new TreePickler(pickler, picklePositions = false).pickle(tree) + val bytes = pickler.assembleParts() + def rawBytes = + bytes.iterator.grouped(10).toList.zipWithIndex.map { + case (row, i) => s"${i}0: ${row.mkString(" ")}" + } + //println(s"written:\n${rawBytes.mkString("\n")}") + new TastyPrinter(bytes).printContents() + tree + } +}
\ No newline at end of file |