aboutsummaryrefslogblamecommitdiff
path: root/src/dotty/tools/dotc/transform/Pickler.scala
blob: 644a66784f9ba8bc722a95efd0b81a196b2c1d01 (plain) (tree)




























                                                                                                
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
  }
}