Expand description
This module contains the definitions of most TypeRelations 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§
- combine
 - generalize 🔒
 - higher_
ranked 🔒 - Helper routines for higher-ranked things. See the 
docmodule at the end of the file for details. - lattice 🔒
 - Lattice variables
 - solver_
relating  - type_
relating 🔒 
Enums§
- Structurally
Relate Aliases  - Whether aliases should be related structurally or not. Used to adjust the behavior of generalization and combine.
 - Variance
Diag Info  - 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’ 
VarianceDiagInfomay lead to confusing notes in error messages, it will never cause a miscompilation or unsoundness. 
Traits§
Functions§
- relate_
args_ invariantly  - relate_
args_ with_ variances  - structurally_
relate_ consts  - Relates 
aandbstructurally, 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. - structurally_
relate_ tys  - Relates 
aandbstructurally, calling the relation for all nested values. Any semantic equality, e.g. of projections, and inference variables have to be handled by the caller.