Expand description
This module contains the definitions of most TypeRelation
s in the type system
(except for some relations used for diagnostics and heuristics in the compiler).
As well as the implementation of Relate
for interned things (Ty
/Const
/etc).
Modules§
- Helper routines for higher-ranked things. See the
doc
module at the end of the file for details. - lattice 🔒Lattice variables
Enums§
- Whether aliases should be related structurally or not. Used to adjust the behavior of generalization and combine.
- Extra information about why we ended up with a particular variance. This is only used to add more information to error messages, and has no effect on soundness. While choosing the ‘wrong’
VarianceDiagInfo
may lead to confusing notes in error messages, it will never cause a miscompilation or unsoundness.
Traits§
Functions§
- Relates
a
andb
structurally, calling the relation for all nested values. Any semantic equality, e.g. of unevaluated consts, and inference variables have to be handled by the caller. - Relates
a
andb
structurally, calling the relation for all nested values. Any semantic equality, e.g. of projections, and inference variables have to be handled by the caller.