trait MatchApproximation extends TreeAndTypeAnalysis with ScalaLogic with MatchTreeMaking
- Alphabetic
- By Inheritance
- MatchApproximation
- MatchTreeMaking
- MatchCodeGen
- ScalaLogic
- Logic
- Interface
- TreeDSL
- TreeAndTypeAnalysis
- Debugging
- AnyRef
- Any
- by any2stringadd
- by StringFormat
- by Ensuring
- by ArrowAssoc
- Hide All
- Show All
- Public
- Protected
Type Members
- trait MatchMonadInterface extends AnyRef
- Definition Classes
- Interface
- trait TypedSubstitution extends MatchMonadInterface
- Definition Classes
- Interface
- trait PropositionalLogic extends AnyRef
- Definition Classes
- Logic
- trait MatchApproximator extends TreeMakers with TreesAndTypesDomain
Represent a match as a formula in propositional logic that encodes whether the match matches (abstractly: we only consider types)
- trait CodegenCore extends MatchMonadInterface
- Definition Classes
- MatchCodeGen
- trait OptimizedCodegen extends CodegenCore with TypedSubstitution with MatchMonadInterface
- Definition Classes
- MatchCodeGen
- final case class Suppression(suppressExhaustive: Boolean, suppressUnreachable: Boolean) extends Product with Serializable
- Definition Classes
- MatchTreeMaking
- trait TreeMakers extends TypedSubstitution with CodegenCore
- Definition Classes
- MatchTreeMaking
- trait TreesAndTypesDomain extends PropositionalLogic with CheckableTreeAndTypeAnalysis
- Definition Classes
- ScalaLogic
- trait CheckableTreeAndTypeAnalysis extends AnyRef
- Definition Classes
- TreeAndTypeAnalysis
Concrete Value Members
- object CODE
- Definition Classes
- TreeDSL
- object debug
- Definition Classes
- Debugging
- final def !=(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- final def ##: Int
- Definition Classes
- AnyRef → Any
- def +(other: String): String
- Implicit
- This member is added by an implicit conversion from MatchApproximation toany2stringadd[MatchApproximation] performed by method any2stringadd in scala.Predef.
- Definition Classes
- any2stringadd
- def ->[B](y: B): (MatchApproximation, B)
- Implicit
- This member is added by an implicit conversion from MatchApproximation toArrowAssoc[MatchApproximation] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @inline()
- final def ==(arg0: Any): Boolean
- Definition Classes
- AnyRef → Any
- def alignAcrossRows(xss: List[List[Any]], sep: String, lineSep: String = "\n"): String
- Definition Classes
- Logic
- final def asInstanceOf[T0]: T0
- Definition Classes
- Any
- def binderTypeImpliedByPattern(pat: Global.Tree, pt: Global.Type): Global.Type
Compute the type T implied for a value
v
matched by a patternpat
(with expected typept
).Compute the type T implied for a value
v
matched by a patternpat
(with expected typept
).Usually, this is the pattern's type because pattern matching implies instance-of checks.
However, Stable Identifier and Literal patterns are matched using
==
, which does not imply a type for the binder that binds the matched value. E.g., incase x@Nil => x
, all we know aboutx
is that it satisfiesNil == x
, which could be anything. A type pattern with a literal type works the same as the corresponding literal pattern. A literal pattern with a Boolean or Unit pattern does enforce that the respective value (true
,false
,()
) was matched, so in those cases, the pattern type is assumed.The other patterns imply type tests, so we can safely deduce that the binder has the pattern's type when the pattern matches. Concretely, a literal, type pattern, a case class (the constructor's result type) or extractor (the unapply's argument type) all imply type tests.
See scala/bug#1503, scala/bug#5024: don't cast binders to types we're not sure they have
- Definition Classes
- TreeAndTypeAnalysis
- def clone(): AnyRef
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.CloneNotSupportedException]) @native()
- def ensuring(cond: (MatchApproximation) => Boolean, msg: => Any): MatchApproximation
- Implicit
- This member is added by an implicit conversion from MatchApproximation toEnsuring[MatchApproximation] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: (MatchApproximation) => Boolean): MatchApproximation
- Implicit
- This member is added by an implicit conversion from MatchApproximation toEnsuring[MatchApproximation] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean, msg: => Any): MatchApproximation
- Implicit
- This member is added by an implicit conversion from MatchApproximation toEnsuring[MatchApproximation] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- def ensuring(cond: Boolean): MatchApproximation
- Implicit
- This member is added by an implicit conversion from MatchApproximation toEnsuring[MatchApproximation] performed by method Ensuring in scala.Predef.
- Definition Classes
- Ensuring
- final def eq(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef
- def equals(arg0: AnyRef): Boolean
- Definition Classes
- AnyRef → Any
- def equivalentTree(a: Global.Tree, b: Global.Tree): Boolean
- Definition Classes
- TreeAndTypeAnalysis
- def finalize(): Unit
- Attributes
- protected[lang]
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.Throwable])
- def formatted(fmtstr: String): String
- Implicit
- This member is added by an implicit conversion from MatchApproximation toStringFormat[MatchApproximation] performed by method StringFormat in scala.Predef.
- Definition Classes
- StringFormat
- Annotations
- @inline()
- final def getClass(): Class[_ <: AnyRef]
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def hashCode(): Int
- Definition Classes
- AnyRef → Any
- Annotations
- @native()
- def instanceOfTpImplies(tp: Global.Type, tpImplied: Global.Type): Boolean
- Definition Classes
- TreeAndTypeAnalysis
- 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()
- final def synchronized[T0](arg0: => T0): T0
- Definition Classes
- AnyRef
- def toString(): String
- Definition Classes
- AnyRef → Any
- final def wait(): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long, arg1: Int): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException])
- final def wait(arg0: Long): Unit
- Definition Classes
- AnyRef
- Annotations
- @throws(classOf[java.lang.InterruptedException]) @native()
- object Suppression extends java.io.Serializable
- Definition Classes
- MatchTreeMaking
Deprecated Value Members
- def →[B](y: B): (MatchApproximation, B)
- Implicit
- This member is added by an implicit conversion from MatchApproximation toArrowAssoc[MatchApproximation] performed by method ArrowAssoc in scala.Predef.
- Definition Classes
- ArrowAssoc
- Annotations
- @deprecated
- Deprecated
(Since version 2.13.0) Use
->
instead. If you still wish to display it as one character, consider using a font with programming ligatures such as Fira Code.
The Scala compiler and reflection APIs.