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 Use the opaque_types_defined_by query to cheaply check for whether a hidden type may be registered for an opaque type 2023-05-12 10:26:50 +00:00
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 Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
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 Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
bounds-are-checked3.stderr Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
bounds-are-checked-2.rs
bounds-are-checked-2.stderr
bounds-are-checked.rs
bounds-are-checked.stderr
bounds.rs Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
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: don't add hidden types for opaques 2023-05-30 12:40:35 +02:00
coherence_different_hidden_ty.stderr coherence: don't add hidden types for opaques 2023-05-30 12:40:35 +02:00
coherence_generalization.rs add FIXME to a test which seems wrong. 2023-05-30 12:40:35 +02:00
coherence.rs
coherence.stderr Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
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 Continue folding in query normalizer on weak aliases 2023-06-18 20:56:30 +00:00
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 Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
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 Check opaques for mismatch during writeback 2023-05-22 23:33:34 +00:00
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 Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
generic_underconstrained.rs
generic_underconstrained.stderr Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
hidden_behind_projection_behind_struct_field.rs Only walk the identity substituted version of struct fields 2023-06-22 15:51:20 +00:00
hidden_behind_projection_behind_struct_field.stderr Only walk the identity substituted version of struct fields 2023-06-22 15:51:20 +00:00
hidden_behind_struct_field2.rs Only walk the identity substituted version of struct fields 2023-06-22 15:51:20 +00:00
hidden_behind_struct_field.rs Only walk the identity substituted version of struct fields 2023-06-22 15:51:20 +00:00
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 Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
impl_for_weak_alias.stderr Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
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 Don't substitute a GAT that has mismatched generics in OpaqueTypeCollector 2023-06-21 16:33:17 +00:00
impl-trait-in-type-alias-with-bad-substs.stderr Don't substitute a GAT that has mismatched generics in OpaqueTypeCollector 2023-06-21 16:33:17 +00:00
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 Require impl Trait in associated types to appear in method signatures 2023-05-12 10:24:03 +00:00
invalid_impl_trait_in_assoc_ty.stderr Point to argument/return type instead of the whole function header 2023-06-22 15:00:12 +00:00
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 Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
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 Don't consider TAIT normalizable to hidden ty if it would result in impossible item bounds 2023-06-19 14:49:56 +00:00
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 Note base types of coercion 2023-05-12 00:10:52 +00:00
issue-98608.rs
issue-98608.stderr Note base types of coercion 2023-05-12 00:10:52 +00:00
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 Treat opaque types failing the signature defining scope check as defining, as we already errored and can hide subsequent errors this way. 2023-06-22 15:36:42 +00:00
multi-error.stderr Re-use error code for duplicate error 2023-06-22 15:51:14 +00:00
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 Wait until type_of to remap HIR opaques back to their defn params 2023-05-26 14:42:52 +00:00
multiple-def-uses-in-one-fn.stderr Wait until type_of to remap HIR opaques back to their defn params 2023-05-26 14:42:52 +00:00
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 Don't sort strings right after we just sorted by types 2023-06-27 23:31:06 +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 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 Treat opaque types failing the signature defining scope check as defining, as we already errored and can hide subsequent errors this way. 2023-06-22 15:36:42 +00:00
non-defining-method.stderr Re-use error code for duplicate error 2023-06-22 15:51:14 +00:00
normalize-hidden-types.current.stderr instantiate hidden types in root universe 2023-06-24 13:00:15 +00:00
normalize-hidden-types.rs instantiate hidden types in root universe 2023-06-24 13:00:15 +00:00
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 Additional test demonstrating check for full trait ref 2023-06-21 16:41:52 +00:00
not-matching-trait-refs-isnt-defining.stderr Point to argument/return type instead of the whole function header 2023-06-22 15:00:12 +00:00
obligation_ice.rs Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
outlives-bound-var.rs
privacy.rs Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
privacy.stderr Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
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 Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
self-referential-3.stderr Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
self-referential-4.rs
self-referential-4.stderr
self-referential.rs Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
self-referential.stderr Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
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 Add AliasKind::Weak for type aliases. 2023-06-16 19:39:48 +00:00
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 Handle weak type aliases by immediately resolving them to their aliased type 2023-06-22 15:51:19 +00:00
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 use implied bounds when checking opaque types 2023-05-07 01:41:20 +03:00
wf-in-associated-type.rs use implied bounds when checking opaque types 2023-05-07 01:41:20 +03:00
wf-nested.fail.stderr use implied bounds when checking opaque types 2023-05-07 01:41:20 +03:00
wf-nested.pass_sound.stderr use implied bounds when checking opaque types 2023-05-07 01:41:20 +03:00
wf-nested.rs use implied bounds when checking opaque types 2023-05-07 01:41:20 +03:00