Packages

trait ScalaLogic extends Interface with Logic with TreeAndTypeAnalysis

Source
Logic.scala
Type Hierarchy
Ordering
  1. Alphabetic
  2. By Inheritance
Inherited
  1. ScalaLogic
  2. TreeAndTypeAnalysis
  3. Logic
  4. Debugging
  5. Interface
  6. TreeDSL
  7. AnyRef
  8. 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

Type Members

  1. trait MatchMonadInterface extends AnyRef
    Definition Classes
    Interface
  2. trait TypedSubstitution extends MatchMonadInterface
    Definition Classes
    Interface
  3. trait PropositionalLogic extends AnyRef
    Definition Classes
    Logic
  4. trait TreesAndTypesDomain extends PropositionalLogic with CheckableTreeAndTypeAnalysis
  5. trait CheckableTreeAndTypeAnalysis extends AnyRef
    Definition Classes
    TreeAndTypeAnalysis

Abstract Value Members

  1. abstract val global: Global
    Definition Classes
    Debugging

Concrete Value Members

  1. object CODE
    Definition Classes
    TreeDSL
  2. object debug
    Definition Classes
    Debugging
  3. def alignAcrossRows(xss: List[List[Any]], sep: String, lineSep: String = "\n"): String
    Definition Classes
    Logic
  4. def binderTypeImpliedByPattern(pat: Global.Tree, pt: Global.Type): Global.Type

    Compute the type T implied for a value v matched by a pattern pat (with expected type pt).

    Compute the type T implied for a value v matched by a pattern pat (with expected type pt).

    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., in case x@Nil => x , all we know about x is that it satisfies Nil == 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
  5. def equivalentTree(a: Global.Tree, b: Global.Tree): Boolean
    Definition Classes
    TreeAndTypeAnalysis
  6. def instanceOfTpImplies(tp: Global.Type, tpImplied: Global.Type): Boolean
    Definition Classes
    TreeAndTypeAnalysis