Constraint
Constraint over undetermined type parameters. Constraints are built over values of the following types:
- TypeLambda A constraint constrains the type parameters of a set of TypeLambdas
- TypeParamRef The parameters of the constrained type lambdas
- TypeVar Every constrained parameter might be associated with a TypeVar that has the TypeParamRef as origin.
Attributes
- Graph
- Supertypes
- Known subtypes
- class OrderingConstraint
Members list
Type members
Types
Value members
Abstract methods
A new constraint which is derived from this constraint by adding
entries for all type parameters of poly
.
A new constraint which is derived from this constraint by adding
entries for all type parameters of poly
.
Attributes
- tvars
A list of type variables associated with the params, or Nil if the constraint will just be checked for satisfiability but will solved to give instances of type variables.
A constraint that includes the relationship p1 <: p2
.
<:
relationships between parameters ("edges") are propagated, but
non-parameter bounds are left alone.
A constraint that includes the relationship p1 <: p2
.
<:
relationships between parameters ("edges") are propagated, but
non-parameter bounds are left alone.
Attributes
- direction
Must be set to
KeepParam1
orKeepParam2
whenp2 <: p1
is already true depending on which parameter the caller intends to keep. This will avoid propagating bounds that will be redundant afterp1
andp2
are unified.
Check that constraint only refers to TypeParamRefs bound by itself
Check that constraint only refers to TypeParamRefs bound by itself
Attributes
Check that every typevar om this constraint has as origin a type parameter of athe type lambda that is associated with the typevar itself.
Check that every typevar om this constraint has as origin a type parameter of athe type lambda that is associated with the typevar itself.
Attributes
Depending on Config settngs:
Depending on Config settngs:
- Under
checkConstraintsNonCyclic
, check that no constrained parameter contains itself as a bound. - Under
checkConstraintDeps
, check hat reverse dependencies in constraints are correct and complete.
Attributes
Does the constraint's domain contain the type parameters of tl
?
Does the constraint's domain contain the type parameters of tl
?
Attributes
Does the constraint's domain contain the type parameter param
?
Does the constraint's domain contain the type parameter param
?
Attributes
Does this constraint contain the type variable tvar
and is it uninstantiated?
Does this constraint contain the type variable tvar
and is it uninstantiated?
Attributes
Does the constraint restricted to variables outside except
depend on tv
in the given direction co
?
Does the constraint restricted to variables outside except
depend on tv
in the given direction co
?
Attributes
- `co`
If true, test whether the constraint would change if the variable is made larger otherwise, test whether the constraint would change if the variable is made smaller.
A string that shows the reverse dependencies maintained by this constraint (coDeps and contraDeps for OrderingConstraints).
A string that shows the reverse dependencies maintained by this constraint (coDeps and contraDeps for OrderingConstraints).
Attributes
The type lambdas constrained by this constraint
The type lambdas constrained by this constraint
Attributes
The type lambda parameters constrained by this constraint
The type lambda parameters constrained by this constraint
Attributes
The given tl
in case it is not contained in this constraint,
a fresh copy of tl
otherwise.
The given tl
in case it is not contained in this constraint,
a fresh copy of tl
otherwise.
Attributes
The constraint entry for given type parameter param
, or NoType if param
is not part of
the constraint domain. Note: Low level, implementation dependent.
The constraint entry for given type parameter param
, or NoType if param
is not part of
the constraint domain. Note: Low level, implementation dependent.
Attributes
lower(param) \ lower(butNot)
lower(param) \ lower(butNot)
Attributes
upper(param) \ upper(butNot)
upper(param) \ upper(butNot)
Attributes
Check whether predicate holds for all parameters in constraint
Check whether predicate holds for all parameters in constraint
Attributes
Perform operation op
on all typevars that do not have their inst
field set.
Perform operation op
on all typevars that do not have their inst
field set.
Attributes
Whether tl
is present in both this
and that
but is associated with
different TypeVars there, meaning that the constraints cannot be merged.
Whether tl
is present in both this
and that
but is associated with
different TypeVars there, meaning that the constraints cannot be merged.
Attributes
Gives for each instantiated type var that does not yet have its inst
field
set, the instance value stored in the constraint. Storing instances in constraints
is done only in a temporary way for contexts that may be retracted
without also retracting the type var as a whole.
Gives for each instantiated type var that does not yet have its inst
field
set, the instance value stored in the constraint. Storing instances in constraints
is done only in a temporary way for contexts that may be retracted
without also retracting the type var as a whole.
Attributes
Is tv
marked as hard in the constraint?
Is tv
marked as hard in the constraint?
Attributes
Is it known that param1 <:< param2
?
Is it known that param1 <:< param2
?
Attributes
Is entry associated with tl
removable? This is the case if
all type parameters of the entry are associated with type variables
which have their inst
fields set.
Is entry associated with tl
removable? This is the case if
all type parameters of the entry are associated with type variables
which have their inst
fields set.
Attributes
The parameters that are known to be smaller wrt <: than param
The parameters that are known to be smaller wrt <: than param
Attributes
The lower dominator set.
The lower dominator set.
This is like lower
, except that each parameter returned is no smaller than every other returned parameter.
Attributes
The upper dominator set.
The upper dominator set.
This is like upper
, except that each parameter returned is no greater than every other returned parameter.
Attributes
The constraint bounds for given type parameter param
.
Poly params that are known to be smaller or greater than param
are not contained in the return bounds.
The constraint bounds for given type parameter param
.
Poly params that are known to be smaller or greater than param
are not contained in the return bounds.
Attributes
Does param
occur at the toplevel in tp
?
Toplevel means: the type itself or a factor in some
combination of &
or |
types.
Does param
occur at the toplevel in tp
?
Toplevel means: the type itself or a factor in some
combination of &
or |
types.
Attributes
A new constraint with all entries coming from tl
removed.
A new constraint with all entries coming from tl
removed.
Attributes
A new constraint which is derived from this constraint by removing
the type parameter param
from the domain and replacing all top-level occurrences
of the parameter elsewhere in the constraint by type tp
, or a conservative
approximation of it if that is needed to avoid cycles.
Occurrences nested inside a refinement or prefix are not affected.
A new constraint which is derived from this constraint by removing
the type parameter param
from the domain and replacing all top-level occurrences
of the parameter elsewhere in the constraint by type tp
, or a conservative
approximation of it if that is needed to avoid cycles.
Occurrences nested inside a refinement or prefix are not affected.
Attributes
A new constraint with entry from
replaced with to
Rerences to from
from within other constraint bounds are updated to to
.
Type variables are left alone.
A new constraint with entry from
replaced with to
Rerences to from
from within other constraint bounds are updated to to
.
Type variables are left alone.
Attributes
The type variable corresponding to parameter param
, or
NoType, if param
is not in constrained or is not paired with a type variable.
The type variable corresponding to parameter param
, or
NoType, if param
is not in constrained or is not paired with a type variable.
Attributes
The uninstantiated typevars of this constraint, which still have a bounds constraint
The uninstantiated typevars of this constraint, which still have a bounds constraint
Attributes
A new constraint which is derived from this constraint by updating
the entry for parameter param
to tp
.
tp
can be one of the following:
A new constraint which is derived from this constraint by updating
the entry for parameter param
to tp
.
tp
can be one of the following:
- A TypeBounds value, indicating new constraint bounds
- Another type, indicating a solution for the parameter
Attributes
The parameters that are known to be greater wrt <: than param
The parameters that are known to be greater wrt <: than param
Attributes
Inherited methods
A fallback text representation, if the pattern matching in Printers does not have a case for this showable element
A fallback text representation, if the pattern matching in Printers does not have a case for this showable element
Attributes
- Inherited from:
- Showable
The string representation of this showable element.
The string representation with each line after the first one indented by the given given margin (in spaces).
The string representation with each line after the first one indented by the given given margin (in spaces).
Attributes
- Inherited from:
- Showable
The summarized string representation of this showable element. Recursion depth is limited to some smallish value. Default is Config.summarizeDepth.
The summarized string representation of this showable element. Recursion depth is limited to some smallish value. Default is Config.summarizeDepth.
Attributes
- Inherited from:
- Showable
The text representation of this showable element. This normally dispatches to a pattern matching method in Printers.
The text representation of this showable element. This normally dispatches to a pattern matching method in Printers.
Attributes
- Inherited from:
- Showable