rust/tests/ui/type-alias-impl-trait
Matthias Krüger 48a0d038fa
Rollup merge of #113005 - compiler-errors:dont-query-normalize, r=cjgillot
Don't call `query_normalize` when reporting similar impls

Firstly, It's sketchy to be using `query_normalize` at all during HIR typeck -- it's asking for an ICE 😅. Secondly, we're normalizing an impl trait ref that potentially has parameter types in `ty::ParamEnv::empty()`, which is kinda sketchy as well.

The only UI test change from removing this normalization is that we don't evaluate anonymous constants in impls, which end up giving us really ugly suggestions:

```
error[E0277]: the trait bound `[X; 35]: Default` is not satisfied
 --> /home/gh-compiler-errors/test.rs:4:5
  |
4 |     <[X; 35] as Default>::default();
  |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Default` is not implemented for `[X; 35]`
  |
  = help: the following other types implement trait `Default`:
            &[T]
            &mut [T]
            [T; 32]
            [T; core::::array::{impl#30}::{constant#0}]
            [T; core::::array::{impl#31}::{constant#0}]
            [T; core::::array::{impl#32}::{constant#0}]
            [T; core::::array::{impl#33}::{constant#0}]
            [T; core::::array::{impl#34}::{constant#0}]
          and 27 others
```

So just fold the impls with a `BottomUpFolder` that calls `ty::Const::eval`. This doesn't work totally correctly with generic-const-exprs, but it's fine for stable code, and this is error reporting after all.
2023-07-08 20:53:27 +02: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 Add some extra information to opaque type cycle errors 2023-07-05 07:43:35 +00:00
auto-trait-leakage3.stderr Add some extra information to opaque type cycle errors 2023-07-05 07:43:35 +00:00
auto-trait-leakage.rs
bound_reduction2.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
bound_reduction2.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
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
closure_args2.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
closure_args.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
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 update tests 2023-07-03 09:12:15 +02:00
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 Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
defining-use-submodule.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 Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
different_defining_uses_never_type-2.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
different_defining_uses_never_type-3.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
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
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 Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
generic_duplicate_lifetime_param.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
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 Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
generic_duplicate_param_use.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
generic_lifetime_param.rs
generic_nondefining_use.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
generic_nondefining_use.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
generic_not_used.rs
generic_not_used.stderr
generic_type_does_not_live_long_enough.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
generic_type_does_not_live_long_enough.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
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
higher_kinded_params2.rs Remove normalization from opaque_types_defined_by 2023-07-07 13:17:00 +00:00
higher_kinded_params2.stderr Remove normalization from opaque_types_defined_by 2023-07-07 13:17:00 +00:00
higher_kinded_params3.rs Remove normalization from opaque_types_defined_by 2023-07-07 13:17:00 +00:00
higher_kinded_params3.stderr Remove normalization from opaque_types_defined_by 2023-07-07 13:17:00 +00:00
higher_kinded_params.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00: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-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
inference-cycle.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
inference-cycle.stderr Add some extra information to opaque type cycle errors 2023-07-05 07:43:35 +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-generator-and-const-fn.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
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 Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
issue-57961.stderr
issue-58662-generator-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 Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
issue-60564.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
issue-60662.rs
issue-60662.stdout
issue-62000-associate-impl-trait-lifetimes.rs
issue-63263-closure-return.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
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 Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
issue-65918.rs
issue-66580-closure-coherence.rs
issue-67844-nested-opaque.rs
issue-68368-non-defining-use-2.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
issue-68368-non-defining-use-2.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
issue-68368-non-defining-use.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
issue-68368-non-defining-use.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
issue-69136-inner-lifetime-resolve-error.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
issue-69136-inner-lifetime-resolve-error.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
issue-69136-inner-lifetime-resolve-ok.rs
issue-69323.rs
issue-70121.rs Remove normalization from opaque_types_defined_by 2023-07-07 13:17:00 +00:00
issue-70121.stderr Remove normalization from opaque_types_defined_by 2023-07-07 13:17:00 +00:00
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 Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
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 Add a regression test for #109054 2023-07-06 02:45:54 +09:00
issue-109054.stderr Add a regression test for #109054 2023-07-06 02:45:54 +09: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
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
nested_in_closure.rs Treat closures as part of their parent 2023-07-07 13:17:00 +00:00
nested_type_alias_impl_trait.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
nested_type_alias_impl_trait.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 Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
non-defining-method.rs
non-defining-method.stderr
normalize-hidden-types.current.stderr
normalize-hidden-types.rs
not_a_defining_use.rs
not_a_defining_use.stderr
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
reveal_local.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
reveal_local.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
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
type_of_a_let.rs Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
type_of_a_let.stderr Require TAITs to be mentioned in the signatures of functions that register hidden types for them 2023-07-07 13:13:18 +00:00
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
underconstrained_generic.rs
underconstrained_generic.stderr
underconstrained_lifetime.rs
underconstrained_lifetime.stderr
unnameable_type.rs
unnameable_type.stderr
unused_generic_param.rs
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-in-associated-type.fail.stderr
wf-in-associated-type.rs
wf-nested.fail.stderr
wf-nested.pass_sound.stderr
wf-nested.rs