rust/tests/ui/type-alias-impl-trait
bors 78efca8845 Auto merge of #117278 - lcnr:try-normalize-ty, r=compiler-errors
new solver normalization improvements

cool beans

At the core of this PR is a `try_normalize_ty` which stops for rigid aliases by using `commit_if_ok`.

Reworks alias-relate to fully normalize both the lhs and rhs and then equate the resulting rigid (or inference) types. This fixes https://github.com/rust-lang/trait-system-refactor-initiative/issues/68 by avoiding the exponential blowup. Also supersedes #116369 by only defining opaque types if the hidden type is rigid.

I removed the stability check in `EvalCtxt::evaluate_goal` due to https://github.com/rust-lang/trait-system-refactor-initiative/issues/75. While I personally have opinions on how to fix it, that still requires further t-types/`@nikomatsakis` buy-in, so I removed that for now. Once we've decided on our approach there, we can revert this commit.

r? `@compiler-errors`
2023-11-17 10:16:41 +00:00
..
auxiliary
argument-types.rs
assoc-projection-ice.rs
assoc-type-const.rs update tests 2023-11-09 11:32:51 +01:00
assoc-type-lifetime-unconstrained.rs
assoc-type-lifetime-unconstrained.stderr
assoc-type-lifetime.rs
associated-type-alias-impl-trait.rs
associated-type-impl-trait-lifetime.rs
auto-trait-leakage2.rs
auto-trait-leakage2.stderr
auto-trait-leakage3.rs
auto-trait-leakage3.stderr
auto-trait-leakage.rs
bound_reduction2.rs
bound_reduction2.stderr
bound_reduction.rs
bounds-are-checked3.rs
bounds-are-checked3.stderr
bounds-are-checked-2.rs
bounds-are-checked-2.stderr
bounds-are-checked.rs
bounds-are-checked.stderr
bounds.rs
broken_mir.rs
closure_args2.rs
closure_args.rs
closure_parent_substs.rs
closure_wf_outlives.rs
closure_wf_outlives.stderr
closures_in_branches.rs
closures_in_branches.stderr
coherence_cross_crate.rs
coherence_cross_crate.stderr
coherence_different_hidden_ty.rs
coherence_different_hidden_ty.stderr
coherence_generalization.rs
coherence.rs
coherence.stderr
collect_hidden_types.rs
constrain_inputs_unsound.rs
constrain_inputs_unsound.stderr
constrain_inputs.rs
constrain_inputs.stderr
cross_crate_ice2.rs
cross_crate_ice.rs
cross_inference_pattern_bug_no_type.rs
cross_inference_pattern_bug.rs
cross_inference_rpit.rs
cross_inference.rs
debug-ty-with-weak.rs
declared_but_never_defined.rs
declared_but_never_defined.stderr
declared_but_not_defined_in_scope.rs
declared_but_not_defined_in_scope.stderr
defined-by-user-annotation.rs
defining-use-submodule.rs
destructure_tait-ice-113594.rs
destructure_tait-layout_of-ice-113594.rs
destructuring.rs
different_defining_uses_never_type2.rs
different_defining_uses_never_type3.rs
different_defining_uses_never_type3.stderr
different_defining_uses_never_type-2.rs
different_defining_uses_never_type-2.stderr
different_defining_uses_never_type-3.rs
different_defining_uses_never_type-3.stderr
different_defining_uses_never_type.rs
different_defining_uses_never_type.stderr
different_defining_uses.rs
different_defining_uses.stderr
different_lifetimes_defining_uses.rs
different_lifetimes_defining_uses.stderr
drop-shim-relates-opaque-issue-114375.rs
duplicate-lifetimes-from-rpit-containing-tait2.rs Ignore RPIT duplicated lifetimes in opaque_types_defined_by 2023-10-29 17:45:05 -04:00
duplicate-lifetimes-from-rpit-containing-tait.rs Ignore RPIT duplicated lifetimes in opaque_types_defined_by 2023-10-29 17:45:05 -04:00
escaping-bound-var.rs
escaping-bound-var.stderr
fallback.rs
fallback.stderr
field-types.rs
future.rs
future.stderr
generic_different_defining_uses.rs
generic_different_defining_uses.stderr
generic_duplicate_lifetime_param.rs
generic_duplicate_lifetime_param.stderr
generic_duplicate_param_use2.rs
generic_duplicate_param_use2.stderr
generic_duplicate_param_use3.rs
generic_duplicate_param_use3.stderr
generic_duplicate_param_use4.rs
generic_duplicate_param_use4.stderr
generic_duplicate_param_use5.rs
generic_duplicate_param_use5.stderr
generic_duplicate_param_use6.rs
generic_duplicate_param_use6.stderr
generic_duplicate_param_use7.rs
generic_duplicate_param_use8.rs
generic_duplicate_param_use8.stderr
generic_duplicate_param_use9.rs
generic_duplicate_param_use9.stderr
generic_duplicate_param_use10.rs
generic_duplicate_param_use.rs
generic_duplicate_param_use.stderr
generic_lifetime_param.rs
generic_nondefining_use.rs
generic_nondefining_use.stderr
generic_not_used.rs
generic_not_used.stderr
generic_type_does_not_live_long_enough.rs
generic_type_does_not_live_long_enough.stderr
generic_underconstrained2.rs
generic_underconstrained2.stderr
generic_underconstrained.rs
generic_underconstrained.stderr
hidden_behind_projection_behind_struct_field.rs
hidden_behind_projection_behind_struct_field.stderr
hidden_behind_struct_field2.rs
hidden_behind_struct_field.rs
hidden_type_mismatch.rs
hidden_type_mismatch.stderr
higher_kinded_params2.rs
higher_kinded_params2.stderr
higher_kinded_params3.rs
higher_kinded_params3.stderr
higher_kinded_params.rs
impl_for_weak_alias.rs
impl_for_weak_alias.stderr
impl_trait_for_generic_tait.rs
impl_trait_for_same_tait.rs
impl_trait_for_same_tait.stderr
impl_trait_for_tait_bound2.rs
impl_trait_for_tait_bound2.stderr
impl_trait_for_tait_bound.rs
impl_trait_for_tait_bound.stderr
impl_trait_for_tait.rs
impl-trait-in-type-alias-with-bad-substs.rs
impl-trait-in-type-alias-with-bad-substs.stderr
impl-with-unconstrained-param.rs
impl-with-unconstrained-param.stderr
implied_bounds2.rs
implied_bounds3.rs
implied_bounds_closure.rs
implied_bounds_closure.stderr
implied_bounds_from_types.rs
implied_bounds_from_types.stderr
implied_bounds.rs
implied_bounds.stderr
implied_lifetime_wf_check3.rs
implied_lifetime_wf_check3.stderr
implied_lifetime_wf_check4_static.rs
implied_lifetime_wf_check4_static.stderr
implied_lifetime_wf_check.rs
imply_bounds_from_bounds_param.rs
imply_bounds_from_bounds_param.stderr
imply_bounds_from_bounds.rs
incoherent-assoc-imp-trait.rs
incoherent-assoc-imp-trait.stderr
incomplete-inference.rs
incomplete-inference.stderr
indirect-recursion-issue-112047.rs Compute layout with spans for better cycle errors in coroutines 2023-11-13 02:22:25 +00:00
indirect-recursion-issue-112047.stderr Compute layout with spans for better cycle errors in coroutines 2023-11-13 02:22:25 +00:00
inference-cycle.rs
inference-cycle.stderr
infinite-cycle-involving-weak.rs Don't super-fold types when we hit the recursion limit 2023-10-30 19:24:15 +00:00
infinite-cycle-involving-weak.stderr Don't super-fold types when we hit the recursion limit 2023-10-30 19:24:15 +00:00
invalid_impl_trait_in_assoc_ty.rs
invalid_impl_trait_in_assoc_ty.stderr
issue-52843-closure-constrain.rs
issue-52843-closure-constrain.stderr
issue-52843.rs
issue-52843.stderr
issue-53092-2.rs
issue-53092-2.stderr
issue-53092.rs
issue-53092.stderr
issue-53096.rs
issue-53096.stderr
issue-53398-cyclic-types.rs
issue-53598.rs
issue-53598.stderr
issue-53678-coroutine-and-const-fn.rs
issue-55099-lifetime-inference.rs
issue-57188-associate-impl-capture.rs
issue-57611-trait-alias.rs
issue-57700.rs
issue-57700.stderr
issue-57807-associated-type.rs
issue-57961.rs
issue-57961.stderr
issue-58662-coroutine-with-lifetime.rs
issue-58662-simplified.rs
issue-58887.rs
issue-58951-2.rs
issue-58951.rs
issue-60371.rs
issue-60371.stderr
issue-60407.rs
issue-60407.stderr
issue-60564-working.rs
issue-60564.rs
issue-60564.stderr
issue-60662.rs
issue-60662.stdout
issue-62000-associate-impl-trait-lifetimes.rs
issue-63263-closure-return.rs
issue-63279.rs Pretty print Fn traits in rustc_on_unimplemented 2023-11-02 20:57:05 +00:00
issue-63279.stderr Pretty print Fn traits in rustc_on_unimplemented 2023-11-02 20:57:05 +00:00
issue-63355.rs
issue-63677-type-alias-coherence.rs
issue-65384.rs
issue-65384.stderr
issue-65679-inst-opaque-ty-from-val-twice.rs
issue-65918.rs
issue-66580-closure-coherence.rs
issue-67844-nested-opaque.rs
issue-68368-non-defining-use-2.rs
issue-68368-non-defining-use-2.stderr
issue-68368-non-defining-use.rs
issue-68368-non-defining-use.stderr
issue-69136-inner-lifetime-resolve-error.rs
issue-69136-inner-lifetime-resolve-error.stderr
issue-69136-inner-lifetime-resolve-ok.rs
issue-69323.rs
issue-70121.rs
issue-70121.stderr
issue-72793.rs
issue-74244.rs
issue-74244.stderr
issue-74280.rs
issue-74280.stderr
issue-74761-2.rs
issue-74761-2.stderr
issue-74761.rs
issue-74761.stderr
issue-76202-trait-impl-for-tait.rs
issue-77179.rs
issue-77179.stderr
issue-78450.rs update tests 2023-11-09 11:32:51 +01:00
issue-84660-trait-impl-for-tait.rs
issue-84660-unsoundness.rs
issue-84660-unsoundness.stderr
issue-87455-static-lifetime-ice.rs
issue-89686.rs
issue-89686.stderr
issue-89952.rs
issue-90400-1.rs
issue-90400-1.stderr
issue-90400-2.rs
issue-90400-2.stderr
issue-93411.rs
issue-94429.rs
issue-94429.stderr
issue-96572-unconstrained-mismatch.rs
issue-96572-unconstrained-mismatch.stderr
issue-96572-unconstrained.rs Handle ty::Opaque correctly 2023-10-27 05:16:26 +02:00
issue-98604.rs
issue-98604.stderr
issue-98608.rs
issue-98608.stderr
issue-101750.rs
issue-104817.rs
issue-104817.stock.stderr
issue-109054.rs
issue-109054.stderr
match-unification.rs
missing_lifetime_bound.rs
missing_lifetime_bound.stderr
multi-error.rs
multi-error.stderr
multiple_definitions.rs
multiple-def-uses-in-one-fn2.rs
multiple-def-uses-in-one-fn2.stderr
multiple-def-uses-in-one-fn3.rs
multiple-def-uses-in-one-fn3.stderr
multiple-def-uses-in-one-fn-infer.rs
multiple-def-uses-in-one-fn-infer.stderr
multiple-def-uses-in-one-fn-lifetimes.rs
multiple-def-uses-in-one-fn-lifetimes.stderr
multiple-def-uses-in-one-fn-pass.rs
multiple-def-uses-in-one-fn.rs
multiple-def-uses-in-one-fn.stderr
mututally-recursive-overflow.rs
mututally-recursive-overflow.stderr
nested_impl_trait_in_assoc_ty.rs Don't treat closures/coroutines as part of the public API 2023-10-30 13:46:44 +00:00
nested_in_closure.rs
nested_type_alias_impl_trait.rs
nested_type_alias_impl_trait.stderr
nested-impl-trait-in-tait.rs
nested-impl-trait-in-tait.stderr
nested-rpit-with-lifetimes.rs
nested-tait-hrtb.rs
nested-tait-hrtb.stderr
nested-tait-inference2.rs
nested-tait-inference2.stderr
nested-tait-inference3.rs
nested-tait-inference3.stderr
nested-tait-inference.rs
nested-tait-inference.stderr
nested.rs
nested.stderr
never_reveal_concrete_type.rs
no_inferrable_concrete_type.rs
no_inferrable_concrete_type.stderr
no_revealing_outside_defining_module.rs
no_revealing_outside_defining_module.stderr
non-defining-method.rs
non-defining-method.stderr
normalize-alias-type.rs
normalize-hidden-types.current.stderr
normalize-hidden-types.rs
not_a_defining_use.rs
not_a_defining_use.stderr
not_well_formed.fixed
not_well_formed.rs
not_well_formed.stderr
not-matching-trait-refs-isnt-defining.rs
not-matching-trait-refs-isnt-defining.stderr
obligation_ice.rs
outlives-bound-var.rs
privacy.rs
privacy.stderr
recursive-fn-tait.rs
recursive-fn-tait.stderr
recursive-tait-conflicting-defn-2.rs
recursive-tait-conflicting-defn-2.stderr
recursive-tait-conflicting-defn.rs
recursive-tait-conflicting-defn.stderr
reveal_local.rs
reveal_local.stderr
rpit_tait_equality_in_canonical_query_2.rs
rpit_tait_equality_in_canonical_query.current.stderr
rpit_tait_equality_in_canonical_query.rs
self_implication.rs
self-referential-2.rs
self-referential-2.stderr
self-referential-3.rs
self-referential-3.stderr
self-referential-4.rs
self-referential-4.stderr
self-referential.rs
self-referential.stderr
static-const-types.rs
structural-match-no-leak.rs
structural-match-no-leak.stderr
structural-match.rs
structural-match.stderr
tait-normalize.rs
type_of_a_let.rs
type_of_a_let.stderr
type-alias-impl-trait2.rs
type-alias-impl-trait-assoc-dyn.rs
type-alias-impl-trait-assoc-impl-trait.rs
type-alias-impl-trait-const.rs
type-alias-impl-trait-fn-type.rs
type-alias-impl-trait-fn-type.stderr
type-alias-impl-trait-fns.rs
type-alias-impl-trait-sized.rs
type-alias-impl-trait-struct.rs
type-alias-impl-trait-tuple.rs
type-alias-impl-trait-unconstrained-lifetime.rs
type-alias-impl-trait-unconstrained-lifetime.stderr
type-alias-impl-trait-with-cycle-error2.rs
type-alias-impl-trait-with-cycle-error2.stderr
type-alias-impl-trait-with-cycle-error.rs
type-alias-impl-trait-with-cycle-error.stderr
type-alias-impl-trait-with-no-traits.rs
type-alias-impl-trait-with-no-traits.stderr
type-alias-impl-trait.rs
type-alias-nested-impl-trait.rs
unbounded_opaque_type.rs
unconstrained-due-to-bad-pattern.rs Also consider TAIT to be uncomputable if the MIR body is tainted 2023-10-30 20:16:22 +00:00
unconstrained-due-to-bad-pattern.stderr Also consider TAIT to be uncomputable if the MIR body is tainted 2023-10-30 20:16:22 +00:00
unconstrained-impl-param.rs
unconstrained-impl-param.stderr
under-binder.rs
under-binder.stderr
underconstrained_generic.rs
underconstrained_generic.stderr
underconstrained_lifetime.rs
underconstrained_lifetime.stderr
unnameable_type.rs
unnameable_type.stderr
unused_generic_param.rs
variance.rs
variance.stderr
weird-return-types.rs
wf_check_closures.rs
wf_check_closures.stderr
wf-check-fn-def.rs
wf-check-fn-def.stderr
wf-check-fn-ptrs.rs
wf-check-rpit-lifetimes.rs
wf-in-associated-type.fail.stderr update tests 2023-11-09 11:32:51 +01:00
wf-in-associated-type.rs update tests 2023-11-09 11:32:51 +01:00
wf-nested.fail.stderr
wf-nested.pass_sound.stderr
wf-nested.rs