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 + -
显示快捷键?