c

slick.compiler

FlattenProjections

class FlattenProjections extends Phase

Flatten all Pure node contents into a single StructNode.

After this phase, all Pure nodes produce a StructNode of primitive fields. As a side-effect, nested NominalTypes are eliminated.

Source
FlattenProjections.scala
Linear Supertypes
Type Hierarchy
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. FlattenProjections
  2. Phase
  3. Logging
  4. Function1
  5. AnyRef
  6. Any
Implicitly
  1. by any2stringadd
  2. by StringFormat
  3. by Ensuring
  4. by ArrowAssoc
  1. Hide All
  2. Show All
Visibility
  1. Public
  2. Protected

Instance Constructors

  1. new FlattenProjections()

Type Members

  1. abstract type State

    The immutable state of the phase that can also be accessed by other phases.

    The immutable state of the phase that can also be accessed by other phases.

    Definition Classes
    Phase

Value Members

  1. def andThen[A](g: (CompilerState) => A): (CompilerState) => A
    Definition Classes
    Function1
    Annotations
    @unspecialized()
  2. def apply(state: CompilerState): CompilerState

    Run the phase

    Run the phase

    Definition Classes
    FlattenProjectionsPhase → Function1
  3. def compose[A](g: (A) => CompilerState): (A) => CompilerState
    Definition Classes
    Function1
    Annotations
    @unspecialized()
  4. def flattenProjection(n: Node, collapse: Boolean): (StructNode, Map[List[TermSymbol], TermSymbol])

    Flatten a projection into a StructNode.

    Flatten a projection into a StructNode.

    collapse

    If set to true, duplicate definitions are combined into a single one. This must not be used in the top-level Bind because the definitions have to match the top-level type (which is used later in createResultSetMapping). Any duplicates there will be eliminated in hoistClientOps. It is also disabled directly under a Union because the columns on both sides have to match up.

  5. val name: String

    The unique name of the phase

    The unique name of the phase

    Definition Classes
    FlattenProjectionsPhase
  6. def splitPath(n: PathElement, candidates: Set[TypeSymbol]): Option[(PathElement, List[TermSymbol], TypeSymbol)]

    Split a path into the shortest part with a NominalType and the rest on top of it.

    Split a path into the shortest part with a NominalType and the rest on top of it. Returns None if there is no NominalType with one of the candidate TypeSymbols in the path, otherwise returns Some(base, rest, tsym) where tsym is the symbol that was found and base is the Node in the path which has a NominalType of that symbol. rest is a (possibly empty) path of symbols on top of base.

  7. def toString(): String
    Definition Classes
    Function1 → AnyRef → Any