SpaceEngine
Attributes
- Graph
-
- Supertypes
- Self type
-
SpaceEngine.type
Members list
Value members
Concrete methods
Is a
a subspace of b
? Equivalent to simplify(simplify(a) - simplify(b)) == Empty
, but faster
Is a
a subspace of b
? Equivalent to simplify(simplify(a) - simplify(b)) == Empty
, but faster
Attributes
Simplify space such that a space equal to Empty
becomes Empty
Simplify space such that a space equal to Empty
becomes Empty
Attributes
Whether the extractor covers the given type
Whether the extractor covers the given type
Attributes
Decompose a type into subspaces -- assume the type can be decomposed
Decompose a type into subspaces -- assume the type can be decomposed
Attributes
Remove a space if it's a subspace of remaining spaces
Remove a space if it's a subspace of remaining spaces
Note: dedup
will return the same result if the sequence >= 10
Attributes
Flatten space to get rid of Or
for pretty print
Flatten space to get rid of Or
for pretty print
Attributes
Intersection of two spaces
Intersection of two spaces
Attributes
Return a space containing the values of both types.
Return a space containing the values of both types.
The types should be atomic (non-decomposable) and unrelated (neither should be a subtype of the other).
Attributes
Is the unapply or unapplySeq irrefutable?
Is the unapply or unapplySeq irrefutable?
Value parameters
- unapp
-
The unapply function reference
Attributes
Is the unapply or unapplySeq irrefutable?
Is the unapply or unapplySeq irrefutable?
Value parameters
- unapp
-
The unapply function tree
Attributes
Is this an '{..}
or '[..]
irrefutable quoted patterns?
Is this an '{..}
or '[..]
irrefutable quoted patterns?
Value parameters
- implicits
-
The implicits of the unapply
- pt
-
The scrutinee type
- unapp
-
The unapply function tree
Attributes
True if we can assume that the two unapply methods are the same. That is, given the same parameter, they return the same result.
True if we can assume that the two unapply methods are the same. That is, given the same parameter, they return the same result.
We assume that unapply methods are pure, but the same method may be called with different prefixes, thus behaving differently.
Attributes
Is tp1
a subtype of tp2
?
Is tp1
a subtype of tp2
?
Attributes
The space of a not covered by b
The space of a not covered by b
Attributes
Return the space that represents the pattern pat
Return the space that represents the pattern pat
Attributes
Space of the pattern: unapplySeq(a, b, c: _*)
Space of the pattern: unapplySeq(a, b, c: _*)
Attributes
Whether the counterexample is satisfiable. The space is flattened and non-empty.
Whether the counterexample is satisfiable. The space is flattened and non-empty.
Attributes
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 !!!
Attributes
Return term parameter types of the extractor unapp
. Parameter types of the case class type tp
. Adapted from unapplyPlan
in patternMatcher
Return term parameter types of the extractor unapp
. Parameter types of the case class type tp
. Adapted from unapplyPlan
in patternMatcher
Attributes
Return the underlying type of non-module, non-constant, non-enum case singleton types. Also widen ExprType to its result type, and rewrap any annotation wrappers. For example, with val opt = None
, widen opt.type
to None.type
.
Return the underlying type of non-module, non-constant, non-enum case singleton types. Also widen ExprType to its result type, and rewrap any annotation wrappers. For example, with val opt = None
, widen opt.type
to None.type
.
Attributes
Extensions
Extensions
A type is decomposable to children if it's sealed, abstract (or a trait) - so its not a sealed concrete class that can be instantiated on its own, has no anonymous children, which we wouldn't be able to name as counter-examples, but does have children.
A type is decomposable to children if it's sealed, abstract (or a trait) - so its not a sealed concrete class that can be instantiated on its own, has no anonymous children, which we wouldn't be able to name as counter-examples, but does have children.
A sealed trait with no subclasses is considered not decomposable and thus is treated as an opaque type. A sealed trait with subclasses that then get removed after refineUsingParent
, decomposes to the empty list. So that's why we consider whether a type has children.