Trait scala.reflect.api.Printers
trait Printers extends AnyRef
Type Members
case class BooleanFlag(value: Option[Boolean]) extends Product with Serializable
trait TreePrinter extends AnyRef
- Attributes
- protected
Abstract Value Members
abstract def newCodePrinter(out: PrintWriter, tree: Universe.Tree, printRootPkg: Boolean): Universe.TreePrinter
Hook to define what showCode(...)
means.
- Attributes
- protected
abstract def newRawTreePrinter(out: PrintWriter): Universe.TreePrinter
Hook to define what showRaw(...)
means.
- Attributes
- protected
abstract def newTreePrinter(out: PrintWriter): Universe.TreePrinter
Hook to define what show(...)
means.
- Attributes
- protected
abstract def show(position: Universe.Position): String
abstract def show(flags: Universe.FlagSet): String
abstract def show(name: Universe.Name): String
abstract def showDecl(sym: Universe.Symbol): String
Concrete Value Members
final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
final def ##(): Int
- Definition Classes
- AnyRef → Any
def +(other: String): String
def ->[B](y: B): (Printers, B)
final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
final def asInstanceOf[T0]: T0
- Definition Classes
- Any
def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
def ensuring(cond: (Printers) ⇒ Boolean, msg: ⇒ Any): Printers
def ensuring(cond: (Printers) ⇒ Boolean): Printers
def ensuring(cond: Boolean, msg: ⇒ Any): Printers
def ensuring(cond: Boolean): Printers
final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
def equals(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws( classOf[java.lang.Throwable] )
def formatted(fmtstr: String): String
final def getClass(): Class[_]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
final def isInstanceOf[T0]: Boolean
- Definition Classes
- Any
final def ne(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
final def notify(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
final def notifyAll(): Unit
- Definition Classes
- AnyRef
- Annotations
- @native()
def render(what: Any, mkPrinter: (PrintWriter) ⇒ Universe.TreePrinter, printTypes: Universe.BooleanFlag = None, printIds: Universe.BooleanFlag = None, printOwners: Universe.BooleanFlag = None, printKinds: Universe.BooleanFlag = None, printMirrors: Universe.BooleanFlag = None, printPositions: Universe.BooleanFlag = None): String
- Attributes
- protected
def show(any: Any, printTypes: Universe.BooleanFlag = None, printIds: Universe.BooleanFlag = None, printOwners: Universe.BooleanFlag = None, printKinds: Universe.BooleanFlag = None, printMirrors: Universe.BooleanFlag = None, printPositions: Universe.BooleanFlag = None): String
def showCode(tree: Universe.Tree, printTypes: Universe.BooleanFlag = None, printIds: Universe.BooleanFlag = None, printOwners: Universe.BooleanFlag = None, printPositions: Universe.BooleanFlag = None, printRootPkg: Boolean = false): String
Renders the code of the passed tree, so that: 1) it can be later compiled by scalac retaining the same meaning, 2) it looks pretty. #1 is available for unattributed trees and attributed trees #2 is more or less okay indentation-wise, but at the moment there's a lot of desugaring left in place, and that's what we plan to improve in the future. printTypes, printIds, printPositions options have the same meaning as for TreePrinter printRootPkg option is available only for attributed trees.
def showRaw(position: Universe.Position): String
def showRaw(flags: Universe.FlagSet): String
def showRaw(name: Universe.Name): String
def showRaw(any: Any, printTypes: Universe.BooleanFlag = None, printIds: Universe.BooleanFlag = None, printOwners: Universe.BooleanFlag = None, printKinds: Universe.BooleanFlag = None, printMirrors: Universe.BooleanFlag = None, printPositions: Universe.BooleanFlag = None): String
final def synchronized[T0](arg0: ⇒ T0): T0
- Definition Classes
- AnyRef
def toString(): String
- Definition Classes
- AnyRef → Any
def treeToString(tree: Universe.Tree): String
By default trees are printed with show
- Attributes
- protected
final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... )
final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws( ... ) @native()
def →[B](y: B): (Printers, B)
object BooleanFlag extends Serializable
© 2002-2019 EPFL, with contributions from Lightbend.
Licensed under the Apache License, Version 2.0.
https://www.scala-lang.org/api/2.12.9/scala-reflect/scala/reflect/api/Printers.html
EXPERIMENTAL
Utilities for nicely printing scala.reflect.api.Trees and scala.reflect.api.Types.
Printing Trees
The method
show
displays the "prettified" representation of reflection artifacts. This representation provides one with the desugared Java representation of Scala code. For example:The method
showRaw
displays internal structure of a given reflection object as a Scala abstract syntax tree (AST), the representation that the Scala typechecker operates on.Note, that while this representation appears to generate correct trees that one might think would be possible to use in a macro implementation, this is not usually the case. Symbols aren't fully represented (only their names are). Thus, this method is best-suited for use simply inspecting ASTs given some valid Scala code.
The method
showRaw
can also print scala.reflect.api.Types next to the artifacts being inspectedPrinting Types
The method
show
Like the method
showRaw
for scala.reflect.api.Trees,showRaw
for scala.reflect.api.Types provides a visualization of the Scala AST operated on by the Scala typechecker.printIds
and/orprintKinds
can additionally be supplied as arguments in a call toshowRaw
which additionally shows the unique identifiers of symbols.For more details about
Printer
s and other aspects of Scala reflection, see the Reflection Guide