Module projections

Module projections 

Source

StructsΒ§

Normalizer πŸ”’
SortNormalizer πŸ”’
TVarSubst πŸ”’

EnumsΒ§

Candidate

TraitsΒ§

NormalizeExt

FunctionsΒ§

get_impl_data_for_alias_reft πŸ”’
normalize_alias_reft πŸ”’
Normalizes an AliasReft. This uses the trait solver to find the ImplSourceUserDefinedData and uses the args there, which we map back to Flux via refining. This loses refinements, but that’s fine because AliasReft should not rely on refinements for trait solving.
normalize_projection_ty_with_rustc πŸ”’
Normalize an rty::AliasTy by converting it to rustc, normalizing it using rustc api, and then mapping the result back to rty. This will lose refinements and it should only be used to normalize sorts because they should only contain unrefined types. However, we are also using it as a hack to normalize types in cases where we fail to collect a candidate, this is unsound and should be removed.
structurally_normalize_expr
Do one step of normalization, unfolding associated refinements if they are concrete.