dotty.tools.dotc.transform.patmat

SpaceEngine

Related Doc: package patmat

class SpaceEngine extends SpaceLogic

Scala implementation of space logic

Linear Supertypes
Ordering
  1. Alphabetic
  2. By inheritance
Inherited
  1. SpaceEngine
  2. SpaceLogic
  3. AnyRef
  4. Any
  1. Hide All
  2. Show all
Learn more about member selection
Visibility
  1. Public
  2. All

Instance Constructors

  1. new SpaceEngine()(implicit ctx: Context)

Value Members

  1. final def !=(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  2. final def ##(): Int

    Definition Classes
    AnyRef → Any
  3. final def ==(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  4. final def asInstanceOf[T0]: T0

    Definition Classes
    Any
  5. def canDecompose(tp: Type): Boolean

    Abstract sealed types, or-types, Boolean and Java enums can be decomposed

    Abstract sealed types, or-types, Boolean and Java enums can be decomposed

    Definition Classes
    SpaceEngineSpaceLogic
  6. def checkExhaustivity(_match: ast.tpd.Match): Unit

  7. def checkRedundancy(_match: ast.tpd.Match): Unit

  8. def checkable(tree: ast.tpd.Match): Boolean

  9. def clone(): AnyRef

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  10. def decompose(tp: Type): List[Space]

    Decompose a type into subspaces -- assume the type can be decomposed

    Decompose a type into subspaces -- assume the type can be decomposed

    Definition Classes
    SpaceEngineSpaceLogic
  11. final def eq(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  12. def equals(arg0: Any): Boolean

    Definition Classes
    AnyRef → Any
  13. def erase(tp: Type): Type

  14. def expose(tp: Type): Type

    Expose refined type to eliminate reference to type variables

    Expose refined type to eliminate reference to type variables

    A = B M { type T = A } ~~> M { type T = B }

    A <: X :> Y M { type T = A } ~~> M { type T <: X :> Y }

    A <: X :> Y B <: U :> V M { type T <: A :> B } ~~> M { type T <: X :> V }

    A = X B = Y M { type T <: A :> B } ~~> M { type T <: X :> Y }

  15. def finalize(): Unit

    Attributes
    protected[java.lang]
    Definition Classes
    AnyRef
    Annotations
    @throws( classOf[java.lang.Throwable] )
  16. def flatten(space: Space): List[Space]

    Flatten space to get rid of Or for pretty print

    Flatten space to get rid of Or for pretty print

    Definition Classes
    SpaceLogic
  17. final def getClass(): Class[_]

    Definition Classes
    AnyRef → Any
  18. def hashCode(): Int

    Definition Classes
    AnyRef → Any
  19. def intersect(a: Space, b: Space): Space

    Intersection of two spaces

    Intersection of two spaces

    Definition Classes
    SpaceLogic
  20. def isEqualType(tp1: Type, tp2: Type): Boolean

    Is tp1 the same type as tp2?

    Is tp1 the same type as tp2?

    Definition Classes
    SpaceEngineSpaceLogic
  21. final def isInstanceOf[T0]: Boolean

    Definition Classes
    Any
  22. def isSubType(tp1: Type, tp2: Type): Boolean

    Is tp1 a subtype of tp2?

    Is tp1 a subtype of tp2?

    Definition Classes
    SpaceEngineSpaceLogic
  23. def isSubspace(a: Space, b: Space): Boolean

    Is a a subspace of b? Equivalent to a - b == Empty, but faster

    Is a a subspace of b? Equivalent to a - b == Empty, but faster

    Definition Classes
    SpaceLogic
  24. def minus(a: Space, b: Space): Space

    The space of a not covered by b

    The space of a not covered by b

    Definition Classes
    SpaceLogic
  25. final def ne(arg0: AnyRef): Boolean

    Definition Classes
    AnyRef
  26. final def notify(): Unit

    Definition Classes
    AnyRef
  27. final def notifyAll(): Unit

    Definition Classes
    AnyRef
  28. def project(pat: ast.tpd.Tree, roundUp: Boolean = true)(implicit ctx: Context): Space

    Return the space that represents the pattern pat

    Return the space that represents the pattern pat

    If roundUp is true, approximate extractors to its type, otherwise approximate extractors to Empty

  29. def refine(tp1: Type, tp2: Type): Type

    Refine tp2 based on tp1

    Refine tp2 based on tp1

    E.g. if tp1 is Option[Int], tp2 is Some, then return Some[Int].

    If tp1 is path1.A, tp2 is path2.B, and path1 is subtype of path2, then return path1.B.

  30. def show(s: Space): String

    Display spaces

  31. def showType(tp: Type): String

    Show friendly type name with current scope in mind

    Show friendly type name with current scope in mind

    E.g. C.this.B --> B if current owner is C C.this.x.T --> x.T if current owner is C X[T] --> X C --> C if current owner is C !!!

  32. def signature(tp: Type): List[Type]

    Parameter types of the case class type tp

    Parameter types of the case class type tp

    Definition Classes
    SpaceEngineSpaceLogic
  33. def simplify(space: Space): Space

    Simplify space using the laws, there's no nested union after simplify

    Simplify space using the laws, there's no nested union after simplify

    Definition Classes
    SpaceLogic
  34. final def synchronized[T0](arg0: ⇒ T0): T0

    Definition Classes
    AnyRef
  35. def toString(): String

    Definition Classes
    AnyRef → Any
  36. final def wait(): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  37. final def wait(arg0: Long, arg1: Int): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )
  38. final def wait(arg0: Long): Unit

    Definition Classes
    AnyRef
    Annotations
    @throws( ... )

Inherited from SpaceLogic

Inherited from AnyRef

Inherited from Any

Ungrouped