sampletransform.scala

来自「JAVA 语言的函数式编程扩展」· SCALA 代码 · 共 49 行

SCALA
49
字号
/* NSC -- new Scala compiler * Copyright 2005-2006 LAMP/EPFL * @author Martin Odersky */// $Id: SampleTransform.scala 8406 2006-08-17 14:11:13Z michelou $package scala.tools.nsc.transform/** A sample transform. */abstract class SampleTransform extends Transform {  // inherits abstract value `global' and class `Phase' from Transform  import global._                  // the global environment  import definitions._             // standard classes and methods  import typer.{typed, atOwner}    // methods to type trees  import posAssigner.atPos         // for filling in tree positions   /** the following two members override abstract members in Transform */  val phaseName: String = "sample-phase"  protected def newTransformer(unit: CompilationUnit): Transformer =    new SampleTransformer(unit)  class SampleTransformer(unit: CompilationUnit) extends Transformer {    override def transform(tree: Tree): Tree = {      val tree1 = super.transform(tree);      // transformers always maintain `currentOwner'.      tree1 match {        case Block(List(), expr) =>           // a simple optimization          expr        case Block(defs, sup @ Super(qual, mix)) => // A hypthothetic transformation, which replaces                                                    // {super} by {super.sample}          copy.Block(                           // `copy' is the usual lazy tree copier            tree1, defs,            typed(                              // `typed' assigns types to its tree argument              atPos(tree1.pos)(                 // `atPos' fills in position of its tree argument                Select(                         // The `Select' factory method is defined in class `Trees'                  sup,                  currentOwner.newValue(        // creates a new term symbol owned by `currentowner'                    tree1.pos,                    newTermName("sample"))))))  // The standard term name creator        case _ =>          tree1      }    }  }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?