diff options
| author | Vishnunarayan K I <appukuttancr@gmail.com> | 2020-11-09 23:15:11 +0530 |
|---|---|---|
| committer | Vishnunarayan K I <appukuttancr@gmail.com> | 2020-11-12 21:08:18 +0530 |
| commit | 5029a19313839c951ae15633d928c0a607eb7ba9 (patch) | |
| tree | 4f4237495e6c00b8569a0bac8b8800bd44cb456d | |
| parent | 6781907444c0b80fb57a1a6ad971ed76ade90b16 (diff) | |
| download | rust-5029a19313839c951ae15633d928c0a607eb7ba9.tar.gz rust-5029a19313839c951ae15633d928c0a607eb7ba9.zip | |
check mir exists before validation; fix tests
| -rw-r--r-- | compiler/rustc_mir/src/const_eval/eval_queries.rs | 7 | ||||
| -rw-r--r-- | src/test/compile-fail/issue-52443.rs | 1 | ||||
| -rw-r--r-- | src/test/ui/const-generics/nested-type.full.stderr | 11 | ||||
| -rw-r--r-- | src/test/ui/const-generics/nested-type.min.stderr | 11 | ||||
| -rw-r--r-- | src/test/ui/const-generics/nested-type.rs | 1 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-39559-2.rs | 2 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-39559-2.stderr | 19 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-43105.rs | 1 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-43105.stderr | 16 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-52023-array-size-pointer-cast.rs | 1 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-52023-array-size-pointer-cast.stderr | 11 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-52060.rs | 1 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-52060.stderr | 11 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-77919.rs | 4 | ||||
| -rw-r--r-- | src/test/ui/issues/issue-77919.stderr | 18 |
15 files changed, 25 insertions, 90 deletions
diff --git a/compiler/rustc_mir/src/const_eval/eval_queries.rs b/compiler/rustc_mir/src/const_eval/eval_queries.rs index 4d4d8a31eb4..1fc3fd9be2b 100644 --- a/compiler/rustc_mir/src/const_eval/eval_queries.rs +++ b/compiler/rustc_mir/src/const_eval/eval_queries.rs @@ -275,6 +275,13 @@ pub fn eval_to_allocation_raw_provider<'tcx>( return Err(ErrorHandled::Reported(error_reported)); } } + if !tcx.is_mir_available(def.did) { + tcx.sess.delay_span_bug( + tcx.def_span(def.did), + &format!("no MIR body is available for {:?}", def.did), + ); + return Err(ErrorHandled::Reported(ErrorReported {})); + } let qualif = tcx.mir_const_qualif_opt_const_arg(def); if qualif.error_occured { return Err(ErrorHandled::Reported(ErrorReported {})); diff --git a/src/test/compile-fail/issue-52443.rs b/src/test/compile-fail/issue-52443.rs index 21bd6252219..4519833b864 100644 --- a/src/test/compile-fail/issue-52443.rs +++ b/src/test/compile-fail/issue-52443.rs @@ -11,5 +11,4 @@ fn main() { //~| ERROR calls in constants are limited to constant functions //~| ERROR mutable references are not allowed in constants //~| ERROR calls in constants are limited to constant functions - //~| ERROR evaluation of constant value failed } diff --git a/src/test/ui/const-generics/nested-type.full.stderr b/src/test/ui/const-generics/nested-type.full.stderr index 075bdceccfa..06ab9a6ff29 100644 --- a/src/test/ui/const-generics/nested-type.full.stderr +++ b/src/test/ui/const-generics/nested-type.full.stderr @@ -4,13 +4,6 @@ error[E0015]: calls in constants are limited to constant functions, tuple struct LL | Foo::<17>::value() | ^^^^^^^^^^^^^^^^^^ -error[E0080]: evaluation of constant value failed - --> $DIR/nested-type.rs:16:5 - | -LL | Foo::<17>::value() - | ^^^^^^^^^^^^^^^^^^ calling non-const function `Foo::{constant#0}::Foo::<17_usize>::value` - -error: aborting due to 2 previous errors +error: aborting due to previous error -Some errors have detailed explanations: E0015, E0080. -For more information about an error, try `rustc --explain E0015`. +For more information about this error, try `rustc --explain E0015`. diff --git a/src/test/ui/const-generics/nested-type.min.stderr b/src/test/ui/const-generics/nested-type.min.stderr index 733b02fa857..4f76ec6e02b 100644 --- a/src/test/ui/const-generics/nested-type.min.stderr +++ b/src/test/ui/const-generics/nested-type.min.stderr @@ -20,13 +20,6 @@ error[E0015]: calls in constants are limited to constant functions, tuple struct LL | Foo::<17>::value() | ^^^^^^^^^^^^^^^^^^ -error[E0080]: evaluation of constant value failed - --> $DIR/nested-type.rs:16:5 - | -LL | Foo::<17>::value() - | ^^^^^^^^^^^^^^^^^^ calling non-const function `Foo::{constant#0}::Foo::<17_usize>::value` - -error: aborting due to 3 previous errors +error: aborting due to 2 previous errors -Some errors have detailed explanations: E0015, E0080. -For more information about an error, try `rustc --explain E0015`. +For more information about this error, try `rustc --explain E0015`. diff --git a/src/test/ui/const-generics/nested-type.rs b/src/test/ui/const-generics/nested-type.rs index 8372551fb45..c5660983985 100644 --- a/src/test/ui/const-generics/nested-type.rs +++ b/src/test/ui/const-generics/nested-type.rs @@ -15,7 +15,6 @@ struct Foo<const N: [u8; { //[min]~ ERROR `[u8; _]` is forbidden Foo::<17>::value() //~^ ERROR calls in constants are limited to constant functions - //~| ERROR evaluation of constant value failed }]>; fn main() {} diff --git a/src/test/ui/issues/issue-39559-2.rs b/src/test/ui/issues/issue-39559-2.rs index 3a52e4d6216..07d3a82b1ed 100644 --- a/src/test/ui/issues/issue-39559-2.rs +++ b/src/test/ui/issues/issue-39559-2.rs @@ -13,8 +13,6 @@ impl Dim for Dim3 { fn main() { let array: [usize; Dim3::dim()] //~^ ERROR E0015 - //~| ERROR E0080 = [0; Dim3::dim()]; //~^ ERROR E0015 - //~| ERROR E0080 } diff --git a/src/test/ui/issues/issue-39559-2.stderr b/src/test/ui/issues/issue-39559-2.stderr index 586debbbe53..3d765daa7cd 100644 --- a/src/test/ui/issues/issue-39559-2.stderr +++ b/src/test/ui/issues/issue-39559-2.stderr @@ -4,25 +4,12 @@ error[E0015]: calls in constants are limited to constant functions, tuple struct LL | let array: [usize; Dim3::dim()] | ^^^^^^^^^^^ -error[E0080]: evaluation of constant value failed - --> $DIR/issue-39559-2.rs:14:24 - | -LL | let array: [usize; Dim3::dim()] - | ^^^^^^^^^^^ calling non-const function `<Dim3 as Dim>::dim` - error[E0015]: calls in constants are limited to constant functions, tuple structs and tuple variants - --> $DIR/issue-39559-2.rs:17:15 + --> $DIR/issue-39559-2.rs:16:15 | LL | = [0; Dim3::dim()]; | ^^^^^^^^^^^ -error[E0080]: evaluation of constant value failed - --> $DIR/issue-39559-2.rs:17:15 - | -LL | = [0; Dim3::dim()]; - | ^^^^^^^^^^^ calling non-const function `<Dim3 as Dim>::dim` - -error: aborting due to 4 previous errors +error: aborting due to 2 previous errors -Some errors have detailed explanations: E0015, E0080. -For more information about an error, try `rustc --explain E0015`. +For more information about this error, try `rustc --explain E0015`. diff --git a/src/test/ui/issues/issue-43105.rs b/src/test/ui/issues/issue-43105.rs index 231af76fc93..cc6a4850853 100644 --- a/src/test/ui/issues/issue-43105.rs +++ b/src/test/ui/issues/issue-43105.rs @@ -2,7 +2,6 @@ fn xyz() -> u8 { 42 } const NUM: u8 = xyz(); //~^ ERROR calls in constants are limited to constant functions, tuple structs and tuple variants -//~| ERROR any use of this value will cause an error [const_err] fn main() { match 1 { diff --git a/src/test/ui/issues/issue-43105.stderr b/src/test/ui/issues/issue-43105.stderr index 1a7b67b563d..e508cbdd1dd 100644 --- a/src/test/ui/issues/issue-43105.stderr +++ b/src/test/ui/issues/issue-43105.stderr @@ -4,28 +4,18 @@ error[E0015]: calls in constants are limited to constant functions, tuple struct LL | const NUM: u8 = xyz(); | ^^^^^ -error: any use of this value will cause an error - --> $DIR/issue-43105.rs:3:17 - | -LL | const NUM: u8 = xyz(); - | ----------------^^^^^- - | | - | calling non-const function `xyz` - | - = note: `#[deny(const_err)]` on by default - error: could not evaluate constant pattern - --> $DIR/issue-43105.rs:9:9 + --> $DIR/issue-43105.rs:8:9 | LL | NUM => unimplemented!(), | ^^^ error: could not evaluate constant pattern - --> $DIR/issue-43105.rs:9:9 + --> $DIR/issue-43105.rs:8:9 | LL | NUM => unimplemented!(), | ^^^ -error: aborting due to 4 previous errors +error: aborting due to 3 previous errors For more information about this error, try `rustc --explain E0015`. diff --git a/src/test/ui/issues/issue-52023-array-size-pointer-cast.rs b/src/test/ui/issues/issue-52023-array-size-pointer-cast.rs index d12b483ba44..cc756ce815f 100644 --- a/src/test/ui/issues/issue-52023-array-size-pointer-cast.rs +++ b/src/test/ui/issues/issue-52023-array-size-pointer-cast.rs @@ -1,4 +1,3 @@ fn main() { let _ = [0; (&0 as *const i32) as usize]; //~ ERROR casting pointers to integers in constants - //~^ ERROR evaluation of constant value failed } diff --git a/src/test/ui/issues/issue-52023-array-size-pointer-cast.stderr b/src/test/ui/issues/issue-52023-array-size-pointer-cast.stderr index 0108a37e8f5..68b5cbd9bd7 100644 --- a/src/test/ui/issues/issue-52023-array-size-pointer-cast.stderr +++ b/src/test/ui/issues/issue-52023-array-size-pointer-cast.stderr @@ -7,13 +7,6 @@ LL | let _ = [0; (&0 as *const i32) as usize]; = note: see issue #51910 <https://github.com/rust-lang/rust/issues/51910> for more information = help: add `#![feature(const_raw_ptr_to_usize_cast)]` to the crate attributes to enable -error[E0080]: evaluation of constant value failed - --> $DIR/issue-52023-array-size-pointer-cast.rs:2:17 - | -LL | let _ = [0; (&0 as *const i32) as usize]; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ "pointer-to-integer cast" needs an rfc before being allowed inside constants - -error: aborting due to 2 previous errors +error: aborting due to previous error -Some errors have detailed explanations: E0080, E0658. -For more information about an error, try `rustc --explain E0080`. +For more information about this error, try `rustc --explain E0658`. diff --git a/src/test/ui/issues/issue-52060.rs b/src/test/ui/issues/issue-52060.rs index fed08902c8b..13b914c0331 100644 --- a/src/test/ui/issues/issue-52060.rs +++ b/src/test/ui/issues/issue-52060.rs @@ -3,6 +3,5 @@ static A: &'static [u32] = &[1]; static B: [u32; 1] = [0; A.len()]; //~^ ERROR [E0013] -//~| ERROR evaluation of constant value failed fn main() {} diff --git a/src/test/ui/issues/issue-52060.stderr b/src/test/ui/issues/issue-52060.stderr index 502825e9766..95e5f2a8282 100644 --- a/src/test/ui/issues/issue-52060.stderr +++ b/src/test/ui/issues/issue-52060.stderr @@ -6,13 +6,6 @@ LL | static B: [u32; 1] = [0; A.len()]; | = help: consider extracting the value of the `static` to a `const`, and referring to that -error[E0080]: evaluation of constant value failed - --> $DIR/issue-52060.rs:4:26 - | -LL | static B: [u32; 1] = [0; A.len()]; - | ^ constant accesses static - -error: aborting due to 2 previous errors +error: aborting due to previous error -Some errors have detailed explanations: E0013, E0080. -For more information about an error, try `rustc --explain E0013`. +For more information about this error, try `rustc --explain E0013`. diff --git a/src/test/ui/issues/issue-77919.rs b/src/test/ui/issues/issue-77919.rs index 9b04d5ee000..966d76d148a 100644 --- a/src/test/ui/issues/issue-77919.rs +++ b/src/test/ui/issues/issue-77919.rs @@ -1,8 +1,8 @@ fn main() { - [1; <Multiply<Five, Five>>::VAL]; //~ ERROR evaluation of constant value failed + [1; <Multiply<Five, Five>>::VAL]; } trait TypeVal<T> { - const VAL: T; //~ ERROR any use of this value will cause an error + const VAL: T; } struct Five; struct Multiply<N, M> { diff --git a/src/test/ui/issues/issue-77919.stderr b/src/test/ui/issues/issue-77919.stderr index 129af00644f..97bd5ab36b6 100644 --- a/src/test/ui/issues/issue-77919.stderr +++ b/src/test/ui/issues/issue-77919.stderr @@ -26,21 +26,7 @@ LL | const VAL: T; LL | impl<N, M> TypeVal<usize> for Multiply<N, M> where N: TypeVal<VAL> {} | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ missing `VAL` in implementation -error: any use of this value will cause an error - --> $DIR/issue-77919.rs:5:5 - | -LL | const VAL: T; - | ^^^^^^^^^^^^^ no MIR body is available for DefId(0:7 ~ issue_77919[317d]::TypeVal::VAL) - | - = note: `#[deny(const_err)]` on by default - -error[E0080]: evaluation of constant value failed - --> $DIR/issue-77919.rs:2:9 - | -LL | [1; <Multiply<Five, Five>>::VAL]; - | ^^^^^^^^^^^^^^^^^^^^^^^^^^^ referenced constant has errors - -error: aborting due to 5 previous errors +error: aborting due to 3 previous errors -Some errors have detailed explanations: E0046, E0080, E0412. +Some errors have detailed explanations: E0046, E0412. For more information about an error, try `rustc --explain E0046`. |
