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
dont-record-adjustments-when-pointing-at-arg.stderr
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
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
issue-112252-ptr-arithmetics-help.rs
issue-112252-ptr-arithmetics-help.stderr
issue-112385-while-assign-lhs-place-expr-ice.rs
issue-112385-while-assign-lhs-place-expr-ice.stderr
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
ptr-null-mutability-suggestions.rs
ptr-null-mutability-suggestions.stderr
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
return-dyn-type-mismatch-2.stderr
return-dyn-type-mismatch.rs
return-dyn-type-mismatch.stderr
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
type-placeholder-fn-in-const.stderr
typeck_type_placeholder_1.rs
typeck_type_placeholder_item_help.rs
typeck_type_placeholder_item_help.stderr
typeck_type_placeholder_item.rs
typeck_type_placeholder_item.stderr
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