rust/tests/ui/const-generics
Matthias Krüger 2bca5c4fc1
Rollup merge of #130714 - compiler-errors:try-structurally-resolve-const, r=BoxyUwU
Introduce `structurally_normalize_const`, use it in `rustc_hir_typeck`

Introduces `structurally_normalize_const` to typecking to separate the "eval a const" step from the "try to turn a valtree into a target usize" in HIR typeck, where we may still have infer vars and stuff around.

I also changed `check_expr_repeat` to move a double evaluation of a const into a single one. I'll leave inline comments.

r? ```@BoxyUwU```

I hesitated to really test this on the new solver where it probably matters for unevaluated consts. If you're worried about the side-effects, I'd be happy to craft some more tests 😄
2024-09-23 06:45:36 +02:00
..
adt_const_params safe transmute: Rename BikeshedIntrinsicFrom to TransmuteFrom 2024-08-27 14:05:54 +00:00
array-impls
auxiliary
backcompat
defaults Differentiate between methods and associated functions 2024-08-10 00:54:16 +00:00
early Handle macro calls in anon const def creation take 2 2024-09-21 22:17:18 +01:00
generic_arg_infer Relate receiver invariantly in method probe for Mode::Path 2024-09-16 10:55:07 -04:00
generic_const_exprs Introduce structurally_normalize_const, use it in hir_typeck 2024-09-22 13:54:16 -04:00
infer Const generic parameters aren't bounds, even if we end up erroring because of the bound that binds the parameter's type 2024-06-19 14:58:29 +00:00
issues stabilize const_mut_refs 2024-09-15 09:51:32 +02:00
late-bound-vars
min_const_generics Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
occurs-check Don't call const normalize in error reporting 2024-09-22 13:55:06 -04:00
parser-error-recovery Update Tests 2024-06-05 20:08:00 -04:00
std
type-dependent elided_named_lifetimes: bless & add tests 2024-08-31 15:35:42 +03:00
unsized_const_params handle unsized consts with type str in v0 symbol mangling 2024-09-20 09:41:16 +08:00
apit-with-const-param.rs
arg-in-pat-1.rs
arg-in-pat-2.rs
arg-in-pat-3.rs
argument_order.rs
argument_order.stderr
array-wrapper-struct-ctor.rs
assoc_const_as_type_argument.rs Automatically taint when reporting errors from ItemCtxt 2024-07-09 07:44:17 +00:00
assoc_const_as_type_argument.stderr Automatically taint when reporting errors from ItemCtxt 2024-07-09 07:44:17 +00:00
assoc_const_eq_diagnostic.rs
assoc_const_eq_diagnostic.stderr
associated-type-bound-fail.rs
associated-type-bound-fail.stderr
associated-type-bound.rs
bad-const-generic-exprs.rs
bad-const-generic-exprs.stderr
bad-generic-in-copy-impl.rs
bad-generic-in-copy-impl.stderr
bad-subst-const-kind.rs Re-enable ConstArgKind::Path lowering by default 2024-09-12 13:56:01 -04:00
bad-subst-const-kind.stderr Re-enable ConstArgKind::Path lowering by default 2024-09-12 13:56:01 -04:00
broken-mir-1.rs
broken-mir-2.rs
cannot-infer-type-for-const-param.rs
coerce_unsized_array.rs
concrete-const-as-fn-arg.rs
concrete-const-impl-method.rs
condition-in-trait-const-arg.rs
const_trait_fn-issue-88433.rs bless tests part 1 2024-06-28 10:57:35 +00:00
const-arg-in-const-arg.min.stderr Automatically taint when reporting errors from ItemCtxt 2024-07-09 07:44:17 +00:00
const-arg-in-const-arg.rs Automatically taint when reporting errors from ItemCtxt 2024-07-09 07:44:17 +00:00
const-arg-in-fn.rs
const-arg-type-arg-misordered.rs
const-arg-type-arg-misordered.stderr
const-argument-cross-crate-mismatch.rs
const-argument-cross-crate-mismatch.stderr
const-argument-cross-crate.rs
const-argument-if-length.full.stderr
const-argument-if-length.min.stderr
const-argument-if-length.rs
const-argument-non-static-lifetime.min.stderr
const-argument-non-static-lifetime.rs
const-fn-with-const-param.rs
const-generic-default-wont-borrowck.fixed
const-generic-default-wont-borrowck.rs
const-generic-default-wont-borrowck.stderr
const-generic-function.rs
const-generic-function.stderr
const-generic-type_name.rs
const-param-after-const-literal-arg.rs
const-param-before-other-params.rs
const-param-before-other-params.stderr
const-param-elided-lifetime.full.stderr
const-param-elided-lifetime.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
const-param-elided-lifetime.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
const-param-in-async.rs
const-param-type-depends-on-const-param.full.stderr
const-param-type-depends-on-const-param.min.stderr
const-param-type-depends-on-const-param.rs
const-param-type-depends-on-type-param-ungated.rs
const-param-type-depends-on-type-param-ungated.stderr
const-param-type-depends-on-type-param.full.stderr Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
const-param-type-depends-on-type-param.min.stderr Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
const-param-type-depends-on-type-param.rs Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
const-param-with-additional-obligations.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
const-param-with-additional-obligations.stderr
const-parameter-uppercase-lint.rs
const-parameter-uppercase-lint.stderr
const-ty-is-normalized.rs Fix order of normalization and recursion in const folding. 2024-08-18 00:07:41 +02:00
core-types.rs
cross_crate_complex.rs Revert "Rollup merge of #126618 - mu001999-contrib:dead/enhance, r=pnkfelix" 2024-08-03 07:57:31 -04:00
default-ty-closure.rs
default-ty-closure.stderr
deref-into-array-generic.rs
different_generic_args_array.rs
different_generic_args_array.stderr
different_generic_args.full.stderr
different_generic_args.min.stderr
different_generic_args.rs
dont-evaluate-array-len-on-err-1.rs
dont-evaluate-array-len-on-err-1.stderr
dyn-supertraits.rs
dyn-supertraits.stderr
ensure_is_evaluatable.rs
ensure_is_evaluatable.stderr
enum-variants.rs
exhaustive-value.rs
exhaustive-value.stderr Spell out other trait diagnostic 2024-06-12 12:34:47 +00:00
expose-default-substs-param-env.rs
float-generic.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
float-generic.full.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
float-generic.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
float-generic.simple.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn_with_two_const_inputs.rs
fn_with_two_const_inputs.stderr
fn_with_two_same_const_inputs.rs
fn-const-param-call.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-call.full.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-call.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-call.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-infer.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-infer.full.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-infer.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
fn-const-param-infer.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
forbid-non-structural_match-types.rs
forbid-non-structural_match-types.stderr
foreign-item-const-parameter.rs
foreign-item-const-parameter.stderr
generic-param-mismatch.rs
generic-param-mismatch.stderr
ice-68875.rs
ice-68875.stderr
ice-118285-fn-ptr-value.rs
ice-118285-fn-ptr-value.stderr
ice-const-generic-function-return-ty.rs
ice-const-generic-function-return-ty.stderr
ice-unexpected-inference-var-122549.rs
ice-unexpected-inference-var-122549.stderr
impl-const-generic-struct.rs
incorrect-number-of-const-args.rs
incorrect-number-of-const-args.stderr Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
infer_arg_from_pat.rs
infer_arr_len_from_pat.rs
inhabited-assoc-ty-ice-1.rs
inhabited-assoc-ty-ice-2.rs
integer-literal-generic-arg-in-where-clause.rs
intrinsics-type_name-as-const-argument.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
intrinsics-type_name-as-const-argument.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
invalid-const-arg-for-type-param.rs
invalid-const-arg-for-type-param.stderr Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
invalid-constant-in-args.rs
invalid-constant-in-args.stderr Revert suggestion verbosity change 2024-07-22 22:51:53 +00:00
invalid-enum.rs
invalid-enum.stderr
invariant.rs Add missing quotation marks 2024-09-07 09:23:28 +08:00
invariant.stderr
issue-46511.rs
issue-46511.stderr
issue-66451.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
issue-66451.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
issue-70408.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
issue-80471.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
issue-80471.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
issue-93647.rs
issue-93647.stderr
issue-97007.rs
issue-102124.rs
issue-105689.rs
issue-106419-struct-with-multiple-const-params.rs
kind_mismatch.rs
kind_mismatch.stderr
legacy-const-generics-bad.rs
legacy-const-generics-bad.stderr Account for let foo = expr; to suggest const foo: Ty = expr; 2024-07-11 20:39:24 +00:00
legacy-const-generics.rs
lifetime-in-const-param.rs
lifetime-in-const-param.stderr
lookup-method.rs only find segs chain for missing methods when no available candidates 2024-05-14 20:28:55 +08:00
lookup-method.stderr only find segs chain for missing methods when no available candidates 2024-05-14 20:28:55 +08:00
mistyped_const_in_pat.rs Taint infcx when reporting errors 2024-06-19 04:41:56 +00:00
mistyped_const_in_pat.stderr Taint infcx when reporting errors 2024-06-19 04:41:56 +00:00
nested-type.full.stderr
nested-type.min.stderr
nested-type.rs
not_wf_param_in_rpitit.rs Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
not_wf_param_in_rpitit.stderr Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
opaque_types2.rs
opaque_types2.stderr
opaque_types.rs Require any function with a tait in its signature to actually constrain a hidden type 2024-06-12 08:53:59 +00:00
opaque_types.stderr Do not try to reveal hidden types when trying to prove Freeze in the defining scope 2024-07-24 16:00:48 +00:00
outer-lifetime-in-const-generic-default.rs
outer-lifetime-in-const-generic-default.stderr
overlapping_impls.rs
params-in-ct-in-ty-param-lazy-norm.full.stderr
params-in-ct-in-ty-param-lazy-norm.min.stderr
params-in-ct-in-ty-param-lazy-norm.rs
parent_generics_of_encoding_impl_trait.rs
parent_generics_of_encoding_impl_trait.stderr Const generic parameters aren't bounds, even if we end up erroring because of the bound that binds the parameter's type 2024-06-19 14:58:29 +00:00
parent_generics_of_encoding.rs
polymorphic-drop-shim.rs Don't inline drop shims with unsubstituted generic consts in MIR inliner 2024-06-28 10:18:20 -04:00
projection-as-arg-const.rs
projection-as-arg-const.stderr
promotion.rs
raw-ptr-const-param-deref.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param-deref.full.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param-deref.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param-deref.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param.full.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
raw-ptr-const-param.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
repeat_expr_hack_gives_right_generics.rs Add ConstArgKind::Path and make ConstArg its own HIR node 2024-07-16 19:27:28 -07:00
repeat_expr_hack_gives_right_generics.stderr Add ConstArgKind::Path and make ConstArg its own HIR node 2024-07-16 19:27:28 -07:00
slice-const-param-mismatch.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
slice-const-param-mismatch.full.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
slice-const-param-mismatch.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
slice-const-param-mismatch.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
slice-const-param.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
sneaky-array-repeat-expr.rs
sneaky-array-repeat-expr.stderr
struct-with-invalid-const-param.rs
struct-with-invalid-const-param.stderr
suggest_const_for_array.rs Automatically taint when reporting errors from ItemCtxt 2024-07-09 07:44:17 +00:00
suggest_const_for_array.stderr Automatically taint when reporting errors from ItemCtxt 2024-07-09 07:44:17 +00:00
trait-const-args.rs
transmute_no_gate.rs
transmute_no_gate.stderr
transmute-const-param-static-reference.adt_const_params.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
transmute-const-param-static-reference.min.stderr Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
transmute-const-param-static-reference.rs Split part of adt_const_params into unsized_const_params 2024-07-17 11:01:29 +01:00
transmute-fail.rs Normalize being an annoying little compile test 2024-09-20 10:01:02 -07:00
transmute-fail.stderr TL note: current means target 2024-09-20 10:02:14 -07:00
transmute.rs
transparent-maybeunit-array-wrapper.rs Revert "Rollup merge of #125572 - mu001999-contrib:dead/enhance, r=pnkfelix" 2024-08-03 07:57:31 -04:00
try_unify_ignore_lifetimes.rs
two_matching_preds.rs
type_mismatch.rs Re-enable ConstArgKind::Path lowering by default 2024-09-12 13:56:01 -04:00
type_mismatch.stderr Re-enable ConstArgKind::Path lowering by default 2024-09-12 13:56:01 -04:00
type_not_in_scope.rs Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
type_not_in_scope.stderr Bless tests and handle tests/crashes 2024-06-05 22:25:42 +01:00
type_of_anon_const.rs
type-after-const-ok.rs
types-mismatch-const-args.full.stderr
types-mismatch-const-args.min.stderr
types-mismatch-const-args.rs
unify_with_nested_expr.rs
unify_with_nested_expr.stderr Const generic parameters aren't bounds, even if we end up erroring because of the bound that binds the parameter's type 2024-06-19 14:58:29 +00:00
uninferred-consts-during-codegen-1.rs
uninferred-consts-during-codegen-2.rs
unknown_adt.rs
unknown_adt.stderr
unused_braces.fixed
unused_braces.full.fixed
unused_braces.min.fixed
unused_braces.rs
unused_braces.stderr
unused-const-param.rs
unused-type-param-suggestion.rs
unused-type-param-suggestion.stderr
variant-discrimiant-no-generics.full.stderr
variant-discrimiant-no-generics.min.stderr
variant-discrimiant-no-generics.rs
where-clauses.rs
wrong-normalization.rs
wrong-normalization.stderr