rust/tests/ui/typeck
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
issue-87181
assign-non-lval-derefmut.fixed
assign-non-lval-derefmut.rs
assign-non-lval-derefmut.stderr
assign-non-lval-mut-ref.fixed
assign-non-lval-mut-ref.rs
assign-non-lval-mut-ref.stderr
assign-non-lval-needs-deref.rs
assign-non-lval-needs-deref.stderr
autoderef-with-param-env-error.rs
autoderef-with-param-env-error.stderr
bad-index-due-to-nested.rs
bad-index-due-to-nested.stderr
bad-recursive-type-sig-infer.rs
bad-recursive-type-sig-infer.stderr
bad-type-in-vec-contains.rs
bad-type-in-vec-contains.stderr
bad-type-in-vec-push.rs
bad-type-in-vec-push.stderr
call-block.rs
call-block.stderr
check-args-on-fn-err-2.rs
check-args-on-fn-err-2.stderr
check-args-on-fn-err.rs
check-args-on-fn-err.stderr
conversion-methods.rs
conversion-methods.stderr
deref-multi.rs
deref-multi.stderr
derive-sugg-arg-arity.rs
derive-sugg-arg-arity.stderr
do-not-suggest-adding-missing-zero-to-floating-point-number.rs
do-not-suggest-adding-missing-zero-to-floating-point-number.stderr
do-not-suggest-placeholder-to-const-static-without-type.rs
do-not-suggest-placeholder-to-const-static-without-type.stderr
dont-record-adjustments-when-pointing-at-arg.rs Don't record adjustments twice in note_source_of_type_mismatch_constraint 2023-06-12 00:35:30 +00:00
dont-record-adjustments-when-pointing-at-arg.stderr Don't record adjustments twice in note_source_of_type_mismatch_constraint 2023-06-12 00:35:30 +00:00
explain_clone_autoref.rs
explain_clone_autoref.stderr
issue-1871.rs
issue-1871.stderr
issue-2063-resource.rs
issue-2063.rs
issue-7813.rs
issue-7813.stderr
issue-10401.rs
issue-10401.stderr
issue-10969.rs
issue-10969.stderr
issue-13853-2.rs
issue-13853-2.stderr
issue-13853-5.rs
issue-13853-5.stderr
issue-13853.rs
issue-13853.stderr
issue-18937-1.rs
issue-18937.rs
issue-18937.stderr
issue-22375.rs
issue-29124.rs
issue-29124.stderr
issue-31173.rs
issue-31173.stderr
issue-33575.rs
issue-33575.stderr
issue-36708.rs
issue-36708.stderr
issue-43189.rs
issue-43189.stderr
issue-46112.rs
issue-46112.stderr
issue-50687-ice-on-borrow.rs
issue-50687-ice-on-borrow.stderr
issue-52082-type-param-shadows-existing-type.rs
issue-52082-type-param-shadows-existing-type.stderr
issue-53712.rs
issue-53712.stderr
issue-55810-must-typeck-match-pats-before-guards.rs
issue-57404.rs
issue-57404.stderr
issue-57673-ice-on-deref-of-boxed-trait.rs
issue-57673-ice-on-deref-of-boxed-trait.stderr
issue-61711-once-caused-rustc-inf-loop.rs
issue-65611.rs
issue-65611.stderr
issue-67971.rs
issue-67971.stderr
issue-68590-reborrow-through-derefmut.rs
issue-69378-ice-on-invalid-type-node-after-recovery.rs
issue-69378-ice-on-invalid-type-node-after-recovery.stderr
issue-72225-call-fnmut-through-derefmut.rs
issue-73592-borrow_mut-through-deref.fixed
issue-73592-borrow_mut-through-deref.rs
issue-73592-borrow_mut-through-deref.stderr
issue-74086.rs
issue-74086.stderr
issue-74933.rs
issue-75883.rs
issue-75883.stderr
issue-75889.rs
issue-75889.stderr
issue-79040.rs
issue-79040.stderr
issue-80207-unsized-return.rs
issue-80779.rs
issue-80779.stderr
issue-81293.rs
issue-81293.stderr Don't sort strings right after we just sorted by types 2023-06-27 23:31:06 +00:00
issue-81885.rs
issue-81885.stderr
issue-81943.rs
issue-81943.stderr
issue-82772.rs
issue-82772.stderr
issue-83621-placeholder-static-in-extern.rs
issue-83621-placeholder-static-in-extern.stderr
issue-83693.rs
issue-83693.stderr
issue-84160.rs
issue-84160.stderr
issue-84768.rs
issue-84768.stderr
issue-84831.rs
issue-84831.stderr
issue-86721-return-expr-ice.rev1.stderr
issue-86721-return-expr-ice.rev2.stderr
issue-86721-return-expr-ice.rs hir: Add Become expression kind 2023-06-26 08:56:32 +00:00
issue-87771-ice-assign-assign-to-bool.rs
issue-87771-ice-assign-assign-to-bool.stderr
issue-87872-missing-inaccessible-field-literal.rs
issue-87872-missing-inaccessible-field-literal.stderr
issue-87872-missing-inaccessible-field-pattern.rs
issue-87872-missing-inaccessible-field-pattern.stderr
issue-88609.rs
issue-88643.rs
issue-88643.stderr
issue-88803-call-expr-method.fixed
issue-88803-call-expr-method.rs
issue-88803-call-expr-method.stderr
issue-88844.rs
issue-88844.stderr
issue-89044-wrapped-expr-method.fixed
issue-89044-wrapped-expr-method.rs
issue-89044-wrapped-expr-method.stderr
issue-89275.rs
issue-89275.stderr
issue-89806.rs
issue-89806.stderr
issue-89856.fixed
issue-89856.rs
issue-89856.stderr More robust as_ref/as_deref suggestions 2023-06-08 16:30:05 +00:00
issue-89935.rs
issue-90027-async-fn-return-suggestion.rs
issue-90027-async-fn-return-suggestion.stderr
issue-90101.rs
issue-90101.stderr Don't sort strings right after we just sorted by types 2023-06-27 23:31:06 +00:00
issue-90164.rs
issue-90164.stderr
issue-90319.rs
issue-90319.stderr
issue-90483-inaccessible-field-adjustment.rs
issue-90483-inaccessible-field-adjustment.stderr
issue-90804-incorrect-reference-suggestion.rs
issue-90804-incorrect-reference-suggestion.stderr
issue-91210-ptr-method.fixed
issue-91210-ptr-method.rs
issue-91210-ptr-method.stderr
issue-91267.rs
issue-91267.stderr
issue-91328.fixed
issue-91328.rs
issue-91328.stderr
issue-91334.rs
issue-91334.stderr
issue-91450-inner-ty-error.rs
issue-91450-inner-ty-error.stderr
issue-91633.rs
issue-92481.rs
issue-92481.stderr
issue-93486.rs
issue-93486.stderr
issue-96530.rs
issue-96530.stderr
issue-96738.rs
issue-96738.stderr
issue-98260.rs
issue-98260.stderr
issue-98982.rs
issue-98982.stderr
issue-100164.fixed
issue-100164.rs
issue-100164.stderr
issue-100246.rs
issue-100246.stderr
issue-100285.rs
issue-100285.stderr
issue-103899.rs
issue-104510-ice.rs
issue-104510-ice.stderr
issue-104513-ice.rs
issue-104513-ice.stderr
issue-104582.rs
issue-104582.stderr
issue-105946.rs
issue-105946.stderr
issue-106929.rs
issue-106929.stderr
issue-107087.rs
issue-107087.stderr
issue-107775.rs
issue-107775.stderr
issue-110052.rs
issue-110052.stderr
issue-112252-ptr-arithmetics-help.fixed Add help for trying to do C-like pointer arithmetics 2023-06-09 10:01:16 +08:00
issue-112252-ptr-arithmetics-help.rs Add help for trying to do C-like pointer arithmetics 2023-06-09 10:01:16 +08:00
issue-112252-ptr-arithmetics-help.stderr Add help for trying to do C-like pointer arithmetics 2023-06-09 10:01:16 +08:00
issue-112385-while-assign-lhs-place-expr-ice.rs Fix ICE for while loop with assignment condition with LHS place expr 2023-06-08 02:38:12 +08:00
issue-112385-while-assign-lhs-place-expr-ice.stderr Fix ICE for while loop with assignment condition with LHS place expr 2023-06-08 02:38:12 +08:00
missing-private-fields-in-struct-literal.rs
missing-private-fields-in-struct-literal.stderr
no-type-for-node-ice.rs
no-type-for-node-ice.stderr
nonexistent-field-not-ambiguous.rs
nonexistent-field-not-ambiguous.stderr
output-type-mismatch.rs
output-type-mismatch.stderr
path-to-method-sugg-unresolved-expr.rs
path-to-method-sugg-unresolved-expr.stderr
pin-unsound-issue-85099-derefmut.rs
point-at-type-param-in-path-expr.rs
point-at-type-param-in-path-expr.stderr
point-at-type-parameter-definition.rs
point-at-type-parameter-definition.stderr
prim-with-args.fixed
prim-with-args.rs
prim-with-args.stderr
project-cache-issue-37154.rs
ptr-null-mutability-suggestions.fixed Suggest using ptr::null_mut when user supplied ptr::null to a function expecting ptr::null_mut 2023-06-09 20:05:46 +08:00
ptr-null-mutability-suggestions.rs Suggest using ptr::null_mut when user supplied ptr::null to a function expecting ptr::null_mut 2023-06-09 20:05:46 +08:00
ptr-null-mutability-suggestions.stderr Suggest using ptr::null_mut when user supplied ptr::null to a function expecting ptr::null_mut 2023-06-09 20:05:46 +08:00
quiet-type-err-let-binding.rs
quiet-type-err-let-binding.stderr
remove-extra-argument.fixed
remove-extra-argument.rs
remove-extra-argument.stderr
repeat-expr-checks-wf.rs
repeat-expr-checks-wf.stderr
return_type_containing_closure.rs
return_type_containing_closure.stderr
return-dyn-type-mismatch-2.rs only suppress coercion error if type is definitely unsized 2023-06-02 16:38:08 +00:00
return-dyn-type-mismatch-2.stderr only suppress coercion error if type is definitely unsized 2023-06-02 16:38:08 +00:00
return-dyn-type-mismatch.rs only suppress coercion error if type is definitely unsized 2023-06-02 16:38:08 +00:00
return-dyn-type-mismatch.stderr only suppress coercion error if type is definitely unsized 2023-06-02 16:38:08 +00:00
slow-lhs-suggestion.rs
slow-lhs-suggestion.stderr
struct-enum-wrong-args.rs
struct-enum-wrong-args.stderr
suggest-adding-missing-zero-to-floating-point-number.fixed
suggest-adding-missing-zero-to-floating-point-number.rs
suggest-adding-missing-zero-to-floating-point-number.stderr
suppressed-error.rs
suppressed-error.stderr
tag-that-dare-not-speak-its-name.rs
tag-that-dare-not-speak-its-name.stderr
terr-in-field.rs
terr-in-field.stderr
terr-sorts.rs
terr-sorts.stderr
type-placeholder-fn-in-const.rs properly check associated consts for infer placeholders 2023-06-11 00:27:03 +00:00
type-placeholder-fn-in-const.stderr properly check associated consts for infer placeholders 2023-06-11 00:27:03 +00:00
typeck_type_placeholder_1.rs
typeck_type_placeholder_item_help.rs properly check associated consts for infer placeholders 2023-06-11 00:27:03 +00:00
typeck_type_placeholder_item_help.stderr properly check associated consts for infer placeholders 2023-06-11 00:27:03 +00:00
typeck_type_placeholder_item.rs properly check associated consts for infer placeholders 2023-06-11 00:27:03 +00:00
typeck_type_placeholder_item.stderr properly check associated consts for infer placeholders 2023-06-11 00:27:03 +00:00
typeck_type_placeholder_lifetime_1.rs
typeck_type_placeholder_lifetime_1.stderr
typeck_type_placeholder_lifetime_2.rs
typeck_type_placeholder_lifetime_2.stderr
typeck_type_placeholder_mismatch.rs
typeck_type_placeholder_mismatch.stderr
typeck-builtin-bound-type-parameters.rs
typeck-builtin-bound-type-parameters.stderr
typeck-cast-pointer-to-float.rs
typeck-cast-pointer-to-float.stderr
typeck-closure-to-unsafe-fn-ptr.rs
typeck-default-trait-impl-assoc-type.fixed
typeck-default-trait-impl-assoc-type.rs
typeck-default-trait-impl-assoc-type.stderr
typeck-default-trait-impl-cross-crate-coherence.rs
typeck-default-trait-impl-cross-crate-coherence.stderr
typeck-default-trait-impl-negation-send.rs
typeck-default-trait-impl-negation-send.stderr
typeck-default-trait-impl-negation-sync.rs
typeck-default-trait-impl-negation-sync.stderr
typeck-default-trait-impl-send-param.rs
typeck-default-trait-impl-send-param.stderr
typeck-fn-to-unsafe-fn-ptr.rs
typeck-unsafe-always-share.rs
typeck-unsafe-always-share.stderr
ufcs-type-params.rs
unify-return-ty.rs
while-loop-block-cond.rs
while-loop-block-cond.stderr
while-type-error.rs
while-type-error.stderr
wrong-ret-type.rs
wrong-ret-type.stderr