rust/tests/ui/consts
Dylan DPC 4dea3a295f
Rollup merge of #108000 - y21:no-zero-init-for-uninhabited, r=jackh726
lint: don't suggest MaybeUninit::assume_init for uninhabited types

Creating a zeroed uninhabited type such as `!` or an empty enum with `mem::zeroed()` (or transmuting `()` to `!`) currently triggers this lint:
```rs
warning: the type `!` does not permit zero-initialization
 --> test.rs:5:23
  |
5 |         let _val: ! = mem::zeroed();
  |                       ^^^^^^^^^^^^^
  |                       |
  |                       this code causes undefined behavior when executed
  |                       help: use `MaybeUninit<T>` instead, and only call `assume_init` after initialization is done
  |
  = note: the `!` type has no valid value
```
The `MaybeUninit` suggestion in the help message seems confusing/useless for uninhabited types, as such a type cannot be fully initialized in the first place (as the note implies).
This PR limits this help message to inhabited types which can be initialized
2023-02-21 14:19:58 +05:30
..
auxiliary
const_constructor
const_in_pattern
const_limit Bless and update consts tests 2023-01-23 23:56:22 +00:00
const-blocks
const-eval Rollup merge of #108000 - y21:no-zero-init-for-uninhabited, r=jackh726 2023-02-21 14:19:58 +05:30
const-extern-fn
const-mut-refs
control-flow
extra-const-ub
min_const_fn
miri_unleashed
std
array-literal-index-oob.rs
array-literal-index-oob.stderr
array-literal-len-mismatch.rs Suggest the correct array length on mismatch 2023-02-12 02:15:41 +00:00
array-literal-len-mismatch.stderr Suggest the correct array length on mismatch 2023-02-12 02:15:41 +00:00
array-to-slice-cast.rs
assert-type-intrinsics.rs
assert-type-intrinsics.stderr
assoc_const_generic_impl.rs
assoc_const_generic_impl.stderr
assoc-const.rs
associated_const_generic.rs
async-block.rs
async-block.with_feature.stderr
async-block.without_feature.stderr
bswap-const.rs
cast-discriminant-zst-enum.rs
chained-constants-stackoverflow.rs
check_const-feature-gated.rs
closure-in-foreign-crate.rs
closure-structural-match-issue-90013.rs
const_cmp_type_id.rs
const_discriminant.rs
const_fn_floating_point_arithmetic.gated.stderr
const_fn_floating_point_arithmetic.rs
const_fn_floating_point_arithmetic.stock.stderr
const_fn_return_nested_fn_ptr.rs
const_fn_unsize.rs
const_forget.rs
const_let_assign2.rs
const_let_assign3.rs
const_let_assign3.stderr
const_let_assign.rs
const_let_eq_float.rs
const_let_eq.rs
const_let_irrefutable.rs
const_let_promote.rs
const_let_refutable.rs
const_let_refutable.stderr
const_prop_slice_pat_ice.rs
const_short_circuit.rs
const_unsafe_unreachable_ub.rs
const_unsafe_unreachable_ub.stderr
const_unsafe_unreachable.rs
const-address-of-interior-mut.rs
const-address-of-interior-mut.stderr
const-address-of-mut.rs
const-address-of-mut.stderr
const-address-of.rs
const-adt-align-mismatch.rs
const-array-oob-arith.rs
const-array-oob-arith.stderr Suggest the correct array length on mismatch 2023-02-12 02:15:41 +00:00
const-array-oob.rs
const-array-oob.stderr
const-as-fn.rs
const-as-fn.stderr
const-autoderef.rs
const-big-enum.rs
const-binops.rs
const-bitshift-rhs-inference.rs
const-block-const-bound.rs
const-block-const-bound.stderr
const-block-cross-crate-fn.rs
const-block-item-macro-codegen.rs
const-block-item.rs
const-block-non-item-statement-3.rs
const-block-non-item-statement-rpass.rs
const-block-non-item-statement.rs
const-block.rs
const-bound.rs
const-byte-str-cast.rs
const-call.rs
const-call.stderr
const-cast-different-types.rs
const-cast-different-types.stderr
const-cast-ptr-int.rs
const-cast-wrong-type.rs
const-cast-wrong-type.stderr
const-cast.rs
const-const.rs
const-contents.rs
const-deref-ptr.rs
const-deref-ptr.stderr
const-deref.rs
const-endianess.rs
const-enum-byref-self.rs
const-enum-byref.rs
const-enum-cast.rs
const-enum-ptr.rs
const-enum-struct2.rs
const-enum-struct.rs
const-enum-structlike.rs
const-enum-tuple2.rs
const-enum-tuple.rs
const-enum-tuplestruct2.rs
const-enum-tuplestruct.rs
const-enum-vec-index.rs
const-enum-vec-ptr.rs
const-enum-vector.rs
const-err2.noopt.stderr
const-err2.opt_with_overflow_checks.stderr
const-err2.opt.stderr
const-err2.rs
const-err4.32bit.stderr
const-err4.64bit.stderr
const-err4.rs
const-err-early.rs
const-err-early.stderr
const-err-late.rs
const-err-late.stderr Bless tests. 2023-02-02 23:26:26 +00:00
const-err-multi.rs
const-err-multi.stderr
const-err-rpass.rs
const-expr-addr-operator.rs
const-expr-in-fixed-length-vec.rs
const-expr-in-vec-repeat.rs
const-extern-function.rs
const-external-macro-const-err.rs
const-external-macro-const-err.stderr
const-fields-and-indexing.rs
const-float-bits-conv.rs
const-float-bits-reject-conv.rs
const-float-bits-reject-conv.stderr
const-float-classify.rs
const-fn-const-eval.rs
const-fn-destructuring-arg.rs
const-fn-error.rs
const-fn-error.stderr
const-fn-in-vec.rs
const-fn-in-vec.stderr
const-fn-method.rs
const-fn-mismatch.rs
const-fn-mismatch.stderr
const-fn-nested.rs
const-fn-not-in-trait.rs
const-fn-not-in-trait.stderr
const-fn-not-safe-for-const.rs
const-fn-not-safe-for-const.stderr
const-fn-ptr.rs
const-fn-ptr.stderr
const-fn-stability-calls-3.rs
const-fn-stability-calls.rs
const-fn-type-name-any.rs
const-fn-type-name.rs
const-fn-val.rs
const-fn-zst-args.rs
const-fn.rs
const-for-feature-gate.rs
const-for-feature-gate.stderr
const-for.rs
const-for.stderr
const-index-feature-gate.rs
const-int-arithmetic-overflow.rs
const-int-arithmetic.rs
const-int-conversion-rpass.rs
const-int-conversion.rs
const-int-conversion.stderr
const-int-overflowing-rpass.rs
const-int-overflowing.rs
const-int-overflowing.stderr
const-int-pow-rpass.rs
const-int-rotate-rpass.rs
const-int-rotate.rs
const-int-rotate.stderr
const-int-saturating-arith.rs
const-int-sign-rpass.rs
const-int-sign.rs
const-int-sign.stderr
const-int-unchecked.rs
const-int-unchecked.stderr
const-int-wrapping-rpass.rs
const-int-wrapping.rs
const-int-wrapping.stderr
const-integer-bool-ops.rs
const-integer-bool-ops.stderr
const-labeled-break.rs
const-len-underflow-separate-spans.rs
const-len-underflow-separate-spans.stderr
const-len-underflow-subspans.rs
const-len-underflow-subspans.stderr
const-match-check.eval1.stderr
const-match-check.eval2.stderr
const-match-check.matchck.stderr
const-match-check.rs
const-match-pattern-arm.rs
const-meth-pattern.rs
const-multi-ref.rs
const-multi-ref.stderr
const-needs_drop-monomorphic.rs
const-needs_drop-monomorphic.stderr
const-needs_drop.rs
const-negation.rs
const-negative.rs
const-nullary-enum.rs
const-nullary-univariant-enum.rs
const-pattern-irrefutable.rs
const-pattern-irrefutable.stderr
const-pattern-not-const-evaluable.rs
const-pattern-variant.rs
const-points-to-static.32bit.stderr
const-points-to-static.64bit.stderr
const-points-to-static.rs
const-prop-ice2.rs
const-prop-ice2.stderr
const-prop-ice3.rs
const-prop-ice.rs
const-prop-ice.stderr
const-prop-overflowing-casts.rs
const-prop-read-static-in-const.rs
const-prop-read-static-in-const.stderr
const-ptr-nonnull-rpass.rs
const-ptr-nonnull.rs
const-ptr-nonnull.stderr
const-ptr-unique-rpass.rs
const-ptr-unique.rs
const-ptr-unique.stderr
const-rec-and-tup.rs
const-region-ptrs-noncopy.rs
const-region-ptrs.rs
const-repeated-values.rs
const-size_of_val-align_of_val-extern-type.rs
const-size_of_val-align_of_val-extern-type.stderr
const-size_of_val-align_of_val.rs
const-size_of-align_of.rs
const-size_of-cycle.rs
const-size_of-cycle.stderr defer array len printing to const arg printing 2023-01-18 04:07:39 +00:00
const-slice-oob.rs
const-slice-oob.stderr
const-struct-offsets.rs
const-struct.rs
const-suggest-feature.rs
const-suggest-feature.stderr
const-trait-to-trait.rs
const-try-feature-gate.rs
const-try-feature-gate.stderr
const-try.rs
const-tup-index-span.rs Modify primary span label for E0308 2023-01-30 20:12:19 +00:00
const-tup-index-span.stderr Modify primary span label for E0308 2023-01-30 20:12:19 +00:00
const-tuple-struct.rs
const-type-mismatch.rs
const-type-mismatch.stderr
const-typeid-of-rpass.rs
const-unit-struct.rs
const-unsafe-fn.rs
const-unsized.rs
const-unsized.stderr
const-unwrap.rs
const-unwrap.stderr
const-validation-fail-55455.rs
const-variant-count.rs
const-vec-of-fns.rs
const-vec-syntax.rs
const-vecs-and-slices.rs
const.rs
constifconst-call-in-const-position.rs
constifconst-call-in-const-position.stderr
consts-in-patterns.rs
copy-intrinsic.rs
copy-intrinsic.stderr
ct-var-in-collect_all_mismatches.rs
ct-var-in-collect_all_mismatches.stderr
dangling_raw_ptr.rs
dangling_raw_ptr.stderr
dangling-alloc-id-ice.rs
dangling-alloc-id-ice.stderr
deref_in_pattern.rs
drop_box.rs
drop_box.stderr
drop_none.rs
drop_zst.rs
drop_zst.stderr
enum-discr-type-err.rs
enum-discr-type-err.stderr
eval-enum.rs
eval-enum.stderr
fn_trait_refs.rs
huge-values.rs
ice-48279.rs
ice-zst-static-access.rs
inline_asm.rs
inline_asm.stderr
int_ptr_for_zst_slices.rs
intrinsic_without_const_stab_fail.rs
intrinsic_without_const_stab_fail.stderr
intrinsic_without_const_stab.rs
intrinsic_without_const_stab.stderr
invalid_promotion.rs
invalid-const-in-body.rs
invalid-const-in-body.stderr
invalid-inline-const-in-match-arm.rs
invalid-inline-const-in-match-arm.stderr
invalid-union.32bit.stderr
invalid-union.64bit.stderr
invalid-union.rs
issue-3521.fixed
issue-3521.rs
issue-3521.stderr
issue-6991.rs
issue-13837.rs
issue-13902.rs
issue-17074.rs
issue-17458.rs
issue-17458.stderr
issue-17718-borrow-interior.rs
issue-17718-const-bad-values.rs
issue-17718-const-bad-values.stderr
issue-17718-const-borrow.rs
issue-17718-const-borrow.stderr
issue-17718-constants-not-static.rs
issue-17718-constants-not-static.stderr
issue-17718-references.rs
issue-17718-references.stderr
issue-17718.rs
issue-17756.rs
issue-18294.rs
issue-18294.stderr
issue-19244.rs
issue-21562.rs
issue-21721.rs
issue-23833.rs
issue-23968-const-not-overflow.rs
issue-25826.rs
issue-25826.stderr
issue-27890.rs
issue-28113.rs
issue-28113.stderr
issue-29914-2.rs
issue-29914-3.rs
issue-29914.rs
issue-29927-1.rs
issue-29927.rs
issue-32829-2.rs
issue-32829-2.stderr
issue-32829.rs
issue-32829.stderr
issue-33537.rs
issue-33903.rs Move tests 2023-02-16 11:42:35 -03:00
issue-34784.rs
issue-36163.rs
issue-36163.stderr
issue-37222.rs
issue-37550-1.rs
issue-37550.rs
issue-37991.rs
issue-39161-bogus-error.rs
issue-39974.rs
issue-39974.stderr
issue-43105.rs
issue-43105.stderr
issue-44415.rs
issue-44415.stderr defer array len printing to const arg printing 2023-01-18 04:07:39 +00:00
issue-46553.rs
issue-47789.rs
issue-50439.rs
issue-50439.stderr
issue-52023-array-size-pointer-cast.rs
issue-52023-array-size-pointer-cast.stderr
issue-52060.rs
issue-52060.stderr
issue-54224.rs
issue-54224.stderr
issue-54348.rs
issue-54348.stderr
issue-54387.rs
issue-54582.rs Move tests 2023-02-16 11:42:35 -03:00
issue-54954.rs
issue-54954.stderr
issue-56164.rs
issue-56164.stderr
issue-58435-ice-with-assoc-const.rs
issue-62045.rs
issue-63226.rs
issue-63952.32bit.stderr
issue-63952.64bit.stderr
issue-63952.rs
issue-64059.rs
issue-64506.rs
issue-64662.rs
issue-64662.stderr
issue-65348.rs
issue-66342.rs
issue-66345.rs
issue-66397.rs
issue-66693-panic-in-array-len.rs
issue-66693-panic-in-array-len.stderr
issue-66693.rs
issue-66693.stderr
issue-66787.rs
issue-67529.rs
issue-67640.rs
issue-67641.rs
issue-67696-const-prop-ice.rs
issue-67862.rs
issue-68264-overflow.rs
issue-68542-closure-in-array-len.rs
issue-68542-closure-in-array-len.stderr
issue-68684.rs
issue-69191-ice-on-uninhabited-enum-field.rs
issue-69310-array-size-lit-wrong-ty.rs
issue-69310-array-size-lit-wrong-ty.stderr
issue-69312.rs
issue-69488.rs
issue-69532.rs
issue-70773-mir-typeck-lt-norm.rs
issue-70942-trait-vs-impl-mismatch.rs
issue-70942-trait-vs-impl-mismatch.stderr
issue-73976-monomorphic.rs
issue-73976-polymorphic.rs
issue-73976-polymorphic.stderr
issue-76064.rs
issue-76064.stderr
issue-77062-large-zst-array.rs
issue-78655.rs
issue-78655.stderr
issue-79137-monomorphic.rs
issue-79137-toogeneric.rs
issue-79137-toogeneric.stderr
issue-79152-const-array-index.rs
issue-79690.64bit.stderr
issue-79690.rs
issue-83182.rs
issue-83182.stderr
issue-87046.rs
issue-87046.stderr
issue-88071.rs
issue-88649.rs
issue-89088.rs
issue-90762.rs
issue-90870.fixed
issue-90870.rs
issue-90870.stderr
issue-90878-2.rs
issue-90878-2.stderr
issue-90878-3.rs
issue-90878-3.stderr
issue-90878.rs
issue-90878.stderr
issue-91434.rs
issue-91434.stderr
issue-91560.fixed
issue-91560.rs
issue-91560.stderr
issue-94371.rs
issue-94675.rs
issue-94675.stderr
issue-96169.rs
issue-102117.rs
issue-102117.stderr
issue-103790.rs
issue-103790.stderr
issue-104155.rs
issue-104396.rs
issue-104396.stderr
issue-104609.rs
issue-104609.stderr
issue-104768.rs
issue-104768.stderr
issue-broken-mir.rs
issue-miri-1910.rs
issue-miri-1910.stderr
large_const_alloc.rs
large_const_alloc.stderr
locals-in-const-fn.rs
match_ice.rs
match_ice.stderr
match-const-fn-structs.rs
mir_check_nonconst.rs
mir_check_nonconst.stderr
missing_span_in_backtrace.rs
missing_span_in_backtrace.stderr
mozjs-error.rs
nested_erroneous_ctfe.rs
nested_erroneous_ctfe.stderr Modify primary span label for E0308 2023-01-30 20:12:19 +00:00
non-const-value-in-const.rs
non-const-value-in-const.stderr
non-scalar-cast.rs
offset_from_ub.rs
offset_from_ub.stderr
offset_from.rs
offset_ub.rs
offset_ub.stderr
offset.rs
packed_pattern2.rs
packed_pattern2.stderr
packed_pattern.rs
packed_pattern.stderr
partial_qualif.rs
partial_qualif.stderr
precise-drop-with-coverage.rs
precise-drop-with-promoted.rs
promote_borrowed_field.rs
promote_const_let.rs
promote_const_let.stderr
promote_evaluation_unused_result.rs
promote_fn_calls_std.rs
promote_fn_calls.rs
promote-not.rs
promote-not.stderr
promoted_const_call2.rs
promoted_const_call2.stderr
promoted_const_call3.rs
promoted_const_call3.stderr
promoted_const_call4.rs
promoted_const_call5.rs
promoted_const_call5.stderr
promoted_const_call.rs
promoted_const_call.stderr
promoted_regression.rs
promoted-const-drop.rs
promoted-const-drop.stderr
promoted-storage.rs
promoted-validation-55454.rs
promotion-mutable-ref.rs
promotion.rs
ptr_comparisons.rs
ptr_comparisons.stderr
ptr_is_null.rs
qualif_overwrite_2.rs
qualif_overwrite_2.stderr
qualif_overwrite.rs
qualif_overwrite.stderr
qualif-indirect-mutation-fail.rs
qualif-indirect-mutation-fail.stderr
qualif-indirect-mutation-pass.rs
qualif-union.rs
qualif-union.stderr
raw_pointer_promoted.rs
raw-ptr-const.rs
raw-ptr-const.stderr
recursive-zst-static.default.stderr
recursive-zst-static.rs
recursive-zst-static.unleash.stderr
recursive.rs
recursive.stderr
references.rs
refs_check_const_eq-issue-88384.rs
refs_check_const_eq-issue-88384.stderr
refs_check_const_value_eq-issue-88876.rs
repeat_match.rs
return-in-const-fn.rs
rustc-const-stability-require-const.rs
rustc-const-stability-require-const.stderr
rustc-impl-const-stability.rs
rvalue-static-promotion.rs
self_normalization2.rs
self_normalization.rs
signed_enum_discr.rs
stable-precise-live-drops-in-libcore.rs
stable-precise-live-drops-in-libcore.stderr
static_mut_containing_mut_ref2.mut_refs.stderr
static_mut_containing_mut_ref2.rs
static_mut_containing_mut_ref2.stock.stderr
static_mut_containing_mut_ref3.rs
static_mut_containing_mut_ref3.stderr
static_mut_containing_mut_ref.rs
static-cycle-error.rs
static-raw-pointer-interning2.rs
static-raw-pointer-interning.rs
too_generic_eval_ice.rs defer array len printing to const arg printing 2023-01-18 04:07:39 +00:00
too_generic_eval_ice.stderr defer array len printing to const arg printing 2023-01-18 04:07:39 +00:00
trait_specialization.rs
trait_specialization.stderr
transmute-const.rs
transmute-size-mismatch-before-typeck.rs
transmute-size-mismatch-before-typeck.stderr
try-operator.rs
tuple-struct-constructors.rs
underscore_const_names.rs
uninhabited-const-issue-61744.rs
uninhabited-const-issue-61744.stderr
union_constant.rs
unnormalized-param-env.rs
unstable-const-fn-in-libcore.rs
unstable-const-fn-in-libcore.stderr
unstable-precise-live-drops-in-libcore.rs
unwind-abort.rs
validate_never_arrays.rs
validate_never_arrays.stderr
write_to_mut_ref_dest.rs
write_to_mut_ref_dest.stock.stderr
write_to_static_via_mut_ref.rs
write_to_static_via_mut_ref.stderr
write-to-static-mut-in-static.rs
write-to-static-mut-in-static.stderr
zst_no_llvm_alloc.rs