rust/tests/ui/type-alias-impl-trait
bors 551abd65be Auto merge of #116891 - aliemjay:opaque-region-infer-rework-2, r=compiler-errors,oli-obk
rework opaque type region inference

User-facing changes are documented in [this comment](https://github.com/rust-lang/rust/pull/116891#issuecomment-1973774412).

The design document is in [this comment](https://github.com/rust-lang/rust/pull/116891#issuecomment-1836900102).

---

\- Fix Ice in check_unique; ICE -> Error; fixes #122782.
\- Ignore uncaptured lifetime args; ICE -> Pass; fixes #111906, fixes #110623, fixes #109059, fixes #122307
\- Except equal parameters from the uniqueness check; Pass -> Error; fixes #113916.
\- Check RPITs for invalid args; Pass -> Error; fixes #111935; ICE -> Error; fixes #110726.
\- Rework opaque types region inference; Pass -> Error; fixes #113971, fixes #112841.
\- Reject external lifetimes as invalid args; Pass -> Error; fixes #105498.

r? `@ghost`
2024-03-28 09:51:39 +00:00
..
auxiliary
argument-types.rs
assoc-projection-ice.rs
assoc-type-const.rs
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
bivariant-duplicate-lifetime-unconstrained.rs ignore uncaptured lifetimes when checking opaques 2024-03-26 09:26:23 +00:00
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_infer.rs
closure_parent_substs.rs
closure_wf_outlives.rs
closure_wf_outlives.stderr
closure-normalization-ice-109020.rs add test for Failed to normalize closure with TAIT #109020 2024-03-24 10:41:34 +01:00
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 rework opaque types region inference 2024-03-28 06:00:26 +00:00
defined-in-closure-external-lifetime.rs reject external lifetimes as invalid arguments 2024-03-28 06:00:26 +00:00
defined-in-closure-external-lifetime.stderr reject external lifetimes as invalid arguments 2024-03-28 06:00:26 +00:00
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
duplicate-lifetimes-from-rpit-containing-tait.rs
equal-lifetime-params-not-ok.rs rework opaque types region inference 2024-03-28 06:00:26 +00:00
equal-lifetime-params-not-ok.stderr rework opaque types region inference 2024-03-28 06:00:26 +00:00
equal-lifetime-params-ok.rs fixup except equal params from 2024-03-28 06:08:43 +00:00
escaping-bound-var.rs ignore error params 2024-03-28 06:00:25 +00:00
escaping-bound-var.stderr ignore error params 2024-03-28 06:00:25 +00:00
failed-to-normalize-ice-99945.rs add test for #99945 2024-03-23 11:57:26 +01:00
failed-to-normalize-ice-99945.stderr add test for #99945 2024-03-23 11:57:26 +01:00
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
generic-not-strictly-equal.basic.stderr rework opaque types region inference 2024-03-28 06:00:26 +00:00
generic-not-strictly-equal.member_constraints.stderr rework opaque types region inference 2024-03-28 06:00:26 +00:00
generic-not-strictly-equal.rs rework opaque types region inference 2024-03-28 06:00:26 +00:00
hidden_behind_projection_behind_struct_field.rs
hidden_behind_projection_behind_struct_field.stderr
hidden_behind_struct_field2.rs
hidden_behind_struct_field2.stderr
hidden_behind_struct_field3.rs
hidden_behind_struct_field3.stderr
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
hkl_forbidden2.rs
hkl_forbidden2.stderr
hkl_forbidden3.rs
hkl_forbidden3.stderr
hkl_forbidden4.rs check RPITs for invalid args 2024-03-28 06:00:26 +00:00
hkl_forbidden4.stderr check RPITs for invalid args 2024-03-28 06:00:26 +00:00
hkl_forbidden.rs
hkl_forbidden.stderr
ice-failed-to-resolve-instance-for-110696.rs address review comments 2024-03-22 11:35:31 +01:00
ice-failed-to-resolve-instance-for-110696.stderr add test for #110696 2024-03-22 08:13:54 +01:00
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_trait_defined_outside_trait2.rs
impl_trait_in_trait_defined_outside_trait2.stderr
impl_trait_in_trait_defined_outside_trait3.rs
impl_trait_in_trait_defined_outside_trait.rs
impl_trait_in_trait_defined_outside_trait.stderr
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
in-assoc-ty-early-bound2.rs
in-assoc-ty-early-bound2.stderr
in-assoc-ty-early-bound.rs
in-assoc-ty-early-bound.stderr
in-where-clause.rs
in-where-clause.stderr
incoherent-assoc-imp-trait.rs
incoherent-assoc-imp-trait.stderr
incomplete-inference.rs
incomplete-inference.stderr
indirect-recursion-issue-112047.rs
indirect-recursion-issue-112047.stderr
inference-cycle.rs
inference-cycle.stderr
infinite-cycle-involving-weak.rs
infinite-cycle-involving-weak.stderr
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
issue-63279.stderr
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
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
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
itiat-allow-nested-closures.bad.stderr
itiat-allow-nested-closures.rs
itiat-forbid-nested-items.rs
itiat-forbid-nested-items.stderr
lifetime_mismatch.rs simplify check_unique 2024-03-28 06:00:26 +00:00
lifetime_mismatch.stderr simplify check_unique 2024-03-28 06:00:26 +00:00
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 simplify check_unique 2024-03-28 06:00:26 +00:00
multiple-def-uses-in-one-fn-lifetimes.stderr simplify check_unique 2024-03-28 06:00:26 +00:00
multiple-def-uses-in-one-fn-pass.rs Prevent opaque types being instantiated twice with different regions within the same function 2024-03-18 10:26:10 +00:00
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
nested_in_closure.rs
nested_inference_failure.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-in-anon-const.rs
nested-in-anon-const.stderr
nested-rpit-with-lifetimes.rs
nested-tait-hrtb.rs
nested-tait-hrtb.stderr
nested-tait-inference2.rs
nested-tait-inference2.stderr Use TraitRef::to_string sorting in favor of TraitRef::ord, as the latter compares DefIds which we need to avoid 2024-03-27 14:02:15 +00:00
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.rs Bless test fallout (duplicate diagnostics) 2024-03-20 13:00:34 -04:00
not_well_formed.stderr Bless test fallout (duplicate diagnostics) 2024-03-20 13:00:34 -04:00
not-matching-trait-refs-isnt-defining.rs
not-matching-trait-refs-isnt-defining.stderr
obligation_ice.rs
outlives-bound-var.rs
param_mismatch2.rs Prevent opaque types being instantiated twice with different regions within the same function 2024-03-18 10:26:10 +00:00
param_mismatch2.stderr Prevent opaque types being instantiated twice with different regions within the same function 2024-03-18 10:26:10 +00:00
param_mismatch3.rs Prevent opaque types being instantiated twice with different regions within the same function 2024-03-18 10:26:10 +00:00
param_mismatch3.stderr Prevent opaque types being instantiated twice with different regions within the same function 2024-03-18 10:26:10 +00:00
param_mismatch4.rs fix ICE in check_unique 2024-03-26 09:26:23 +00:00
param_mismatch4.stderr fix ICE in check_unique 2024-03-26 09:26:23 +00:00
param_mismatch.rs Prevent opaque types being instantiated twice with different regions within the same function 2024-03-18 10:26:10 +00:00
param_mismatch.stderr Prevent opaque types being instantiated twice with different regions within the same function 2024-03-18 10:26:10 +00:00
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.current.stderr
self-referential-2.rs
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
struct-assignment-validity.rs
structural-match-no-leak.rs
structural-match-no-leak.stderr
structural-match.rs
structural-match.stderr
tait-in-function-return-type-issue-101903-fixed.rs Add regression tests for #101903 2024-03-24 00:32:04 +09:00
tait-in-function-return-type-issue-101903.rs Add regression tests for #101903 2024-03-24 00:32:04 +09:00
tait-in-function-return-type-issue-101903.stderr Add regression tests for #101903 2024-03-24 00:32:04 +09:00
tait-normalize.rs
tait-param-inference-issue-117310.rs Add a regression test for #117310 2024-03-23 23:54:44 +09:00
type_of_a_let.current.stderr
type_of_a_let.rs
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.next.stderr
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
unconstrained-due-to-bad-pattern.stderr
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
underef-index-out-of-bounds-121472.rs add test for ice #121472 2024-03-22 08:19:44 +01:00
underef-index-out-of-bounds-121472.stderr add test for ice #121472 2024-03-22 08:19:44 +01:00
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-definition-site.rs
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
wf-in-associated-type.rs
wf-nested.fail.stderr
wf-nested.pass_sound.stderr
wf-nested.pass.stderr
wf-nested.rs
wf-nested.stderr