Skip to content

Commit

Permalink
Check that value is explicitly none
Browse files Browse the repository at this point in the history
  • Loading branch information
JulianKnodt committed Jan 27, 2021
1 parent 78e2206 commit fe39653
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 2 deletions.
3 changes: 1 addition & 2 deletions compiler/rustc_mir/src/transform/check_consts/qualifs.rs
Original file line number Diff line number Diff line change
Expand Up @@ -246,8 +246,7 @@ where
};

// Check the qualifs of the value of `const` items.
if let ty::ConstKind::Unevaluated(def, _, promoted) = constant.literal.val {
assert!(promoted.is_none());
if let ty::ConstKind::Unevaluated(def, _, None) = constant.literal.val {
// Don't peek inside trait associated constants.
if cx.tcx.trait_of_item(def.did).is_none() {
let qualifs = if let Some((did, param_did)) = def.as_const_arg() {
Expand Down
15 changes: 15 additions & 0 deletions src/test/ui/issues/issue-80371.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#![crate_type = "lib"]

pub struct Header<'a> {
pub value: &'a [u8],
}

pub fn test() {
let headers = [Header{value: &[]}; 128];
//~^ ERROR the trait bound
}

pub fn test2() {
let headers = [Header{value: &[0]}; 128];
//~^ ERROR the trait bound
}
23 changes: 23 additions & 0 deletions src/test/ui/issues/issue-80371.stderr
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
error[E0277]: the trait bound `Header<'_>: Copy` is not satisfied
--> $DIR/issue-80371.rs:8:19
|
LL | let headers = [Header{value: &[]}; 128];
| ^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `Header<'_>`
|
= note: the `Copy` trait is required because the repeated element will be copied
= note: this array initializer can be evaluated at compile-time, see issue #49147 <https://github.com/rust-lang/rust/issues/49147> for more information
= help: add `#![feature(const_in_array_repeat_expressions)]` to the crate attributes to enable

error[E0277]: the trait bound `Header<'_>: Copy` is not satisfied
--> $DIR/issue-80371.rs:13:19
|
LL | let headers = [Header{value: &[0]}; 128];
| ^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `Header<'_>`
|
= note: the `Copy` trait is required because the repeated element will be copied
= note: this array initializer can be evaluated at compile-time, see issue #49147 <https://github.com/rust-lang/rust/issues/49147> for more information
= help: add `#![feature(const_in_array_repeat_expressions)]` to the crate attributes to enable

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0277`.

0 comments on commit fe39653

Please sign in to comment.