scala.tools.nsc.transform.patmat.MatchTreeMaking

# TreeMakers

#### trait TreeMakers extends TypedSubstitution with CodegenCore

Linear Supertypes
MatchTreeMaking.CodegenCore, MatchTreeMaking.TypedSubstitution, MatchTreeMaking.MatchMonadInterface, AnyRef, Any
Known Subclasses
CommonSubconditionElimination, MatchAnalyzer, MatchApproximator, MatchOptimizer, MatchTranslator, OptimizingMatchTranslator, PureMatchTranslator, SwitchEmission
Type Hierarchy Learn more about scaladoc diagrams
Ordering

1. Alphabetic
2. By inheritance

Inherited

1. TreeMakers
2. CodegenCore
3. TypedSubstitution
4. MatchMonadInterface
5. AnyRef
6. Any

Implicitly

1. by any2stringadd
2. by any2stringfmt
3. by any2ArrowAssoc
4. by any2Ensuring

1. Hide All
2. Show all

Learn more about member selection
Visibility

1. Public
2. All

### Type Members

1. #### trait AbsCodegen extends AnyRef

   Definition Classes
     CodegenCore

2. #### case class AlternativesTreeMaker (prevBinder: Global.Symbol, altss: List[List[TreeMaker]], pos: Position) extends TreeMaker with NoNewBinders with Product with Serializable

3. #### case class BodyTreeMaker (body: Global.Tree, matchPt: Global.Type) extends TreeMaker with NoNewBinders with Product with Serializable

4. #### trait Casegen extends AbsCodegen

   Definition Classes
     CodegenCore

5. #### abstract class CommonCodegen extends AbsCodegen

   Definition Classes
     CodegenCore

6. #### abstract class CondTreeMaker extends FunTreeMaker

7. #### case class EqualityTestTreeMaker (prevBinder: Global.Symbol, patTree: Global.Tree, pos: Position) extends CondTreeMaker with Product with Serializable

8. #### case class ExtractorTreeMaker (extractor: Global.Tree, extraCond: Option[Global.Tree], nextBinder: Global.Symbol)(subPatBinders: List[Global.Symbol], subPatRefs: List[Global.Tree], extractorReturnsBoolean: Boolean, checkedLength: Option[Int], prevBinder: Global.Symbol, ignoredSubPatBinders: Set[Global.Symbol]) extends FunTreeMaker with PreserveSubPatBinders with Product with Serializable

   Make a TreeMaker that will result in an extractor call specified by `extractor` the next TreeMaker (here, we don't know which it'll be) is chained after this one by flatMap'ing a function with binder `nextBinder` over our extractor's result the function's body is determined by the next TreeMaker (furthermore, the interpretation of `flatMap` depends on the codegen instance we're using).

9. #### abstract class FunTreeMaker extends TreeMaker

10. #### case class GuardTreeMaker (guardTree: Global.Tree) extends TreeMaker with NoNewBinders with Product with Serializable

11. #### trait NoNewBinders extends TreeMaker

12. #### trait PreserveSubPatBinders extends TreeMaker

13. #### case class ProductExtractorTreeMaker (prevBinder: Global.Symbol, extraCond: Option[Global.Tree])(subPatBinders: List[Global.Symbol], subPatRefs: List[Global.Tree], mutableBinders: List[Global.Symbol], binderKnownNonNull: Boolean, ignoredSubPatBinders: Set[Global.Symbol]) extends FunTreeMaker with PreserveSubPatBinders with Product with Serializable

    An optimized version of ExtractorTreeMaker for Products.

14. #### case class SubstOnlyTreeMaker (prevBinder: Global.Symbol, nextBinder: Global.Symbol) extends TreeMaker with Product with Serializable

15. #### class Substitution extends AnyRef

    Definition Classes
      TypedSubstitution

16. #### abstract class TreeMaker extends AnyRef

17. #### case class TrivialTreeMaker (tree: Global.Tree) extends TreeMaker with NoNewBinders with Product with Serializable

18. #### case class TypeTestTreeMaker (prevBinder: Global.Symbol, testedBinder: Global.Symbol, expectedTp: Global.Type, nextBinderTp: Global.Type)(pos: Position, extractorArgTypeTest: Boolean = false) extends CondTreeMaker with Product with Serializable

    implements the run-time aspects of (§8.

### Abstract Value Members

1. #### abstract def analyzeCases(prevBinder: Global.Symbol, cases: List[List[TreeMaker]], pt: Global.Type, suppression: Suppression): Unit

2. #### abstract def codegen: AbsCodegen

   Definition Classes
     CodegenCore

3. #### abstract def inMatchMonad(tp: Global.Type): Global.Type

   Definition Classes
     MatchMonadInterface

4. #### abstract def matchMonadSym: Global.Symbol

   Attributes
     protected
   Definition Classes
     MatchMonadInterface

5. #### abstract def optimizeCases(prevBinder: Global.Symbol, cases: List[List[TreeMaker]], pt: Global.Type): (List[List[TreeMaker]], List[Global.Tree])

6. #### abstract def pureType(tp: Global.Type): Global.Type

   Definition Classes
     MatchMonadInterface

7. #### abstract val typer: (analyzer)#Typer

   Definition Classes
     MatchMonadInterface

### Concrete Value Members

1. #### final def !=(arg0: AnyRef): Boolean

   Definition Classes
     AnyRef

2. #### final def !=(arg0: Any): Boolean

   Definition Classes
     Any

3. #### final def ##(): Int

   Definition Classes
     AnyRef → Any

4. #### def +(other: String): String

   Implicit information
     This member is added by an implicit conversion from TreeMakers to StringAdd performed by method any2stringadd in scala.Predef.
   Definition Classes
     StringAdd

5. #### def ->[B](y: B): (TreeMakers, B)

   Implicit information
     This member is added by an implicit conversion from TreeMakers to ArrowAssoc[TreeMakers] performed by method any2ArrowAssoc in scala.Predef.
   Definition Classes
     ArrowAssoc
   Annotations
     @inline()

6. #### final def ==(arg0: AnyRef): Boolean

   Definition Classes
     AnyRef

7. #### final def ==(arg0: Any): Boolean

   Definition Classes
     Any

8. #### object EmptySubstitution extends Substitution

   Definition Classes
     TypedSubstitution

9. #### object IrrefutableExtractorTreeMaker

10. #### object Substitution

    Definition Classes
      TypedSubstitution

11. #### object TypeTestTreeMaker extends Serializable

12. #### final def asInstanceOf[T0]: T0

    Definition Classes
      Any

13. #### def clone(): AnyRef

    Attributes
      protected[java.lang]
    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

14. #### def combineCases(scrut: Global.Tree, scrutSym: Global.Symbol, casesRaw: List[List[TreeMaker]], pt: Global.Type, owner: Global.Symbol, matchFailGenOverride: Option[(Global.Tree) ⇒ Global.Tree]): Global.Tree

15. #### def combineCasesNoSubstOnly(scrut: Global.Tree, scrutSym: Global.Symbol, casesNoSubstOnly: List[List[TreeMaker]], pt: Global.Type, owner: Global.Symbol, matchFailGenOverride: Option[(Global.Tree) ⇒ Global.Tree]): Global.Tree

16. #### def combineExtractors(treeMakers: List[TreeMaker])(casegen: Casegen): Global.Tree

17. #### val debugInfoEmitVars: Boolean

    Attributes
      protected

18. #### def emitSwitch(scrut: Global.Tree, scrutSym: Global.Symbol, cases: List[List[TreeMaker]], pt: Global.Type, matchFailGenOverride: Option[(Global.Tree) ⇒ Global.Tree], unchecked: Boolean): Option[Global.Tree]

19. #### def emitTypeSwitch(bindersAndCases: List[(Global.Symbol, List[TreeMaker])], pt: Global.Type): Option[List[Global.CaseDef]]

20. #### def ensuring(cond: (TreeMakers) ⇒ Boolean, msg: ⇒ Any): TreeMakers

    Implicit information
      This member is added by an implicit conversion from TreeMakers to Ensuring[TreeMakers] performed by method any2Ensuring in scala.Predef.
    Definition Classes
      Ensuring

21. #### def ensuring(cond: (TreeMakers) ⇒ Boolean): TreeMakers

    Implicit information
      This member is added by an implicit conversion from TreeMakers to Ensuring[TreeMakers] performed by method any2Ensuring in scala.Predef.
    Definition Classes
      Ensuring

22. #### def ensuring(cond: Boolean, msg: ⇒ Any): TreeMakers

    Implicit information
      This member is added by an implicit conversion from TreeMakers to Ensuring[TreeMakers] performed by method any2Ensuring in scala.Predef.
    Definition Classes
      Ensuring

23. #### def ensuring(cond: Boolean): TreeMakers

    Implicit information
      This member is added by an implicit conversion from TreeMakers to Ensuring[TreeMakers] performed by method any2Ensuring in scala.Predef.
    Definition Classes
      Ensuring

24. #### final def eq(arg0: AnyRef): Boolean

    Definition Classes
      AnyRef

25. #### def equals(arg0: Any): Boolean

    Definition Classes
      AnyRef → Any

26. #### def finalize(): Unit

    Attributes
      protected[java.lang]
    Definition Classes
      AnyRef
    Annotations
      @throws( classOf[java.lang.Throwable] )

27. #### def fixerUpper(origOwner: Global.Symbol, pos: Position): Global.Traverser

    Attributes
      protected

28. #### def formatted(fmtstr: String): String

    Implicit information
      This member is added by an implicit conversion from TreeMakers to StringFormat performed by method any2stringfmt in scala.Predef.
    Definition Classes
      StringFormat
    Annotations
      @inline()

29. #### def freshName(prefix: String): Global.TermName

    Definition Classes
      CodegenCore

30. #### def freshSym(pos: Position, tp: Global.Type = NoType, prefix: String = "x"): Global.TermSymbol

    Definition Classes
      CodegenCore

31. #### final def getClass(): Class[_]

    Definition Classes
      AnyRef → Any

32. #### def hashCode(): Int

    Definition Classes
      AnyRef → Any

33. #### final def isInstanceOf[T0]: Boolean

    Definition Classes
      Any

34. #### final def matchMonadResult(tp: Global.Type): Global.Type

    Definition Classes
      MatchMonadInterface

35. #### val matchOwner: Global.Symbol

    Definition Classes
      MatchMonadInterface

36. #### final def ne(arg0: AnyRef): Boolean

    Definition Classes
      AnyRef

37. #### def newSynthCaseLabel(name: String): Global.MethodSymbol

    Definition Classes
      CodegenCore

38. #### final def notify(): Unit

    Definition Classes
      AnyRef

39. #### final def notifyAll(): Unit

    Definition Classes
      AnyRef

40. #### def propagateSubstitution(treeMakers: List[TreeMaker], initial: Substitution): List[TreeMaker]

41. #### def removeSubstOnly(makers: List[TreeMaker]): collection.immutable.List[TreeMaker]

42. #### def reportMissingCases(pos: Position, counterExamples: List[String]): Unit

    Definition Classes
      MatchMonadInterface

43. #### def reportUnreachable(pos: Position): Unit

    Definition Classes
      MatchMonadInterface

44. #### final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
      AnyRef

45. #### def toString(): String

    Definition Classes
      AnyRef → Any

46. #### final def wait(): Unit

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

47. #### final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

48. #### final def wait(arg0: Long): Unit

    Definition Classes
      AnyRef
    Annotations
      @throws( ... )

49. #### def →[B](y: B): (TreeMakers, B)

    Implicit information
      This member is added by an implicit conversion from TreeMakers to ArrowAssoc[TreeMakers] performed by method any2ArrowAssoc in scala.Predef.
    Definition Classes
      ArrowAssoc

### Shadowed Implicit Value Members

1. #### val self: Any

   Implicit information
     This member is added by an implicit conversion from TreeMakers to StringAdd performed by method any2stringadd in scala.Predef.
   Shadowing
     This implicitly inherited member is ambiguous. One or more implicitly inherited members have similar signatures, so calling this member may produce an ambiguous implicit conversion compiler error.
     To access this member you can use a type ascription:

         (treeMakers: StringAdd).self

   Definition Classes
     StringAdd

2. #### val self: Any

   Implicit information
     This member is added by an implicit conversion from TreeMakers to StringFormat performed by method any2stringfmt in scala.Predef.
   Shadowing
     This implicitly inherited member is ambiguous. One or more implicitly inherited members have similar signatures, so calling this member may produce an ambiguous implicit conversion compiler error.
     To access this member you can use a type ascription:

         (treeMakers: StringFormat).self

   Definition Classes
     StringFormat

### Deprecated Value Members

1. #### def x: TreeMakers

   Implicit information
     This member is added by an implicit conversion from TreeMakers to ArrowAssoc[TreeMakers] performed by method any2ArrowAssoc in scala.Predef.
   Shadowing
     This implicitly inherited member is ambiguous. One or more implicitly inherited members have similar signatures, so calling this member may produce an ambiguous implicit conversion compiler error.
     To access this member you can use a type ascription:

         (treeMakers: ArrowAssoc[TreeMakers]).x

   Definition Classes
     ArrowAssoc
   Annotations
     @deprecated
   Deprecated

     (Since version 2.10.0) Use `leftOfArrow`instead``

2. #### def x: TreeMakers

   Implicit information
     This member is added by an implicit conversion from TreeMakers to Ensuring[TreeMakers] performed by method any2Ensuring in scala.Predef.
   Shadowing
     This implicitly inherited member is ambiguous. One or more implicitly inherited members have similar signatures, so calling this member may produce an ambiguous implicit conversion compiler error.
     To access this member you can use a type ascription:

         (treeMakers: Ensuring[TreeMakers]).x

   Definition Classes
     Ensuring
   Annotations
     @deprecated
   Deprecated

     (Since version 2.10.0) Use `resultOfEnsuring`instead``

### Inherited from MatchTreeMaking.CodegenCore

### Inherited from MatchTreeMaking.TypedSubstitution

### Inherited from MatchTreeMaking.MatchMonadInterface

### Inherited from AnyRef

### Inherited from Any

### Inherited by implicit conversion any2stringadd from TreeMakers to StringAdd

### Inherited by implicit conversion any2stringfmt from TreeMakers to StringFormat

### Inherited by implicit conversion any2ArrowAssoc from TreeMakers to ArrowAssoc[TreeMakers]

### Inherited by implicit conversion any2Ensuring from TreeMakers to Ensuring[TreeMakers]

### Ungrouped