preserve span when evaluating mir::ConstOperand
This commit is contained in:
parent
30f74ff0dc
commit
48f2f0d725
@ -393,7 +393,9 @@ fn assign_operand(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
Operand::Constant(box constant) => {
|
Operand::Constant(box constant) => {
|
||||||
if let Ok(constant) = self.ecx.eval_mir_constant(&constant.const_, None, None) {
|
if let Ok(constant) =
|
||||||
|
self.ecx.eval_mir_constant(&constant.const_, Some(constant.span), None)
|
||||||
|
{
|
||||||
self.assign_constant(state, place, constant, &[]);
|
self.assign_constant(state, place, constant, &[]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -416,7 +416,8 @@ fn process_operand(
|
|||||||
match rhs {
|
match rhs {
|
||||||
// If we expect `lhs ?= A`, we have an opportunity if we assume `constant == A`.
|
// If we expect `lhs ?= A`, we have an opportunity if we assume `constant == A`.
|
||||||
Operand::Constant(constant) => {
|
Operand::Constant(constant) => {
|
||||||
let constant = self.ecx.eval_mir_constant(&constant.const_, None, None).ok()?;
|
let constant =
|
||||||
|
self.ecx.eval_mir_constant(&constant.const_, Some(constant.span), None).ok()?;
|
||||||
self.process_constant(bb, lhs, constant, state);
|
self.process_constant(bb, lhs, constant, state);
|
||||||
}
|
}
|
||||||
// Transfer the conditions on the copied rhs.
|
// Transfer the conditions on the copied rhs.
|
||||||
|
@ -828,14 +828,17 @@ fn visit_constant(&mut self, constant: &mir::ConstOperand<'tcx>, location: Locat
|
|||||||
// a codegen-time error). rustc stops after collection if there was an error, so this
|
// a codegen-time error). rustc stops after collection if there was an error, so this
|
||||||
// ensures codegen never has to worry about failing consts.
|
// ensures codegen never has to worry about failing consts.
|
||||||
// (codegen relies on this and ICEs will happen if this is violated.)
|
// (codegen relies on this and ICEs will happen if this is violated.)
|
||||||
let val = match const_.eval(self.tcx, param_env, None) {
|
let val = match const_.eval(self.tcx, param_env, Some(constant.span)) {
|
||||||
Ok(v) => v,
|
Ok(v) => v,
|
||||||
Err(ErrorHandled::Reported(..)) => return,
|
|
||||||
Err(ErrorHandled::TooGeneric(..)) => span_bug!(
|
Err(ErrorHandled::TooGeneric(..)) => span_bug!(
|
||||||
self.body.source_info(location).span,
|
self.body.source_info(location).span,
|
||||||
"collection encountered polymorphic constant: {:?}",
|
"collection encountered polymorphic constant: {:?}",
|
||||||
const_
|
const_
|
||||||
),
|
),
|
||||||
|
Err(err @ ErrorHandled::Reported(..)) => {
|
||||||
|
err.emit_note(self.tcx);
|
||||||
|
return;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
collect_const_value(self.tcx, val, self.output);
|
collect_const_value(self.tcx, val, self.output);
|
||||||
MirVisitor::visit_ty(self, const_.ty(), TyContext::Location(location));
|
MirVisitor::visit_ty(self, const_.ty(), TyContext::Location(location));
|
||||||
|
@ -56,7 +56,7 @@ fn visit_ty(&mut self, ty: &mut Ty<'tcx>, _: mir::visit::TyContext) {
|
|||||||
|
|
||||||
fn visit_constant(&mut self, constant: &mut mir::ConstOperand<'tcx>, location: mir::Location) {
|
fn visit_constant(&mut self, constant: &mut mir::ConstOperand<'tcx>, location: mir::Location) {
|
||||||
let const_ = self.monomorphize(constant.const_);
|
let const_ = self.monomorphize(constant.const_);
|
||||||
let val = match const_.eval(self.tcx, ty::ParamEnv::reveal_all(), None) {
|
let val = match const_.eval(self.tcx, ty::ParamEnv::reveal_all(), Some(constant.span)) {
|
||||||
Ok(v) => v,
|
Ok(v) => v,
|
||||||
Err(mir::interpret::ErrorHandled::Reported(..)) => return,
|
Err(mir::interpret::ErrorHandled::Reported(..)) => return,
|
||||||
Err(mir::interpret::ErrorHandled::TooGeneric(..)) => {
|
Err(mir::interpret::ErrorHandled::TooGeneric(..)) => {
|
||||||
|
@ -4,6 +4,12 @@ error[E0080]: evaluation of `<u32 as ZeroSized>::I_AM_ZERO_SIZED` failed
|
|||||||
LL | const I_AM_ZERO_SIZED: () = [()][std::mem::size_of::<Self>()];
|
LL | const I_AM_ZERO_SIZED: () = [()][std::mem::size_of::<Self>()];
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ index out of bounds: the length is 1 but the index is 4
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ index out of bounds: the length is 1 but the index is 4
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/assoc_const_generic_impl.rs:11:9
|
||||||
|
|
|
||||||
|
LL | Self::I_AM_ZERO_SIZED;
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn <u32 as ZeroSized>::requires_zero_size`
|
note: the above error was encountered while instantiating `fn <u32 as ZeroSized>::requires_zero_size`
|
||||||
--> $DIR/assoc_const_generic_impl.rs:18:5
|
--> $DIR/assoc_const_generic_impl.rs:18:5
|
||||||
|
|
|
|
||||||
|
@ -4,6 +4,12 @@ error[E0080]: evaluation of `PrintName::<()>::VOID` failed
|
|||||||
LL | const VOID: ! = { let x = 0 * std::mem::size_of::<T>(); [][x] };
|
LL | const VOID: ! = { let x = 0 * std::mem::size_of::<T>(); [][x] };
|
||||||
| ^^^^^ index out of bounds: the length is 0 but the index is 0
|
| ^^^^^ index out of bounds: the length is 0 but the index is 0
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/index-out-of-bounds-never-type.rs:16:13
|
||||||
|
|
|
||||||
|
LL | let _ = PrintName::<T>::VOID;
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn f::<()>`
|
note: the above error was encountered while instantiating `fn f::<()>`
|
||||||
--> $DIR/index-out-of-bounds-never-type.rs:20:5
|
--> $DIR/index-out-of-bounds-never-type.rs:20:5
|
||||||
|
|
|
|
||||||
|
@ -10,6 +10,52 @@ note: erroneous constant encountered
|
|||||||
LL | &<A<T> as Foo<T>>::BAR
|
LL | &<A<T> as Foo<T>>::BAR
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/issue-50814-2.rs:20:5
|
||||||
|
|
|
||||||
|
LL | &<A<T> as Foo<T>>::BAR
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/issue-50814-2.rs:20:5
|
||||||
|
|
|
||||||
|
LL | &<A<T> as Foo<T>>::BAR
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/issue-50814-2.rs:20:5
|
||||||
|
|
|
||||||
|
LL | &<A<T> as Foo<T>>::BAR
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/issue-50814-2.rs:20:5
|
||||||
|
|
|
||||||
|
LL | &<A<T> as Foo<T>>::BAR
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/issue-50814-2.rs:20:6
|
||||||
|
|
|
||||||
|
LL | &<A<T> as Foo<T>>::BAR
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/issue-50814-2.rs:20:6
|
||||||
|
|
|
||||||
|
LL | &<A<T> as Foo<T>>::BAR
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||||
|
|
||||||
error: aborting due to 1 previous error
|
error: aborting due to 1 previous error
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0080`.
|
For more information about this error, try `rustc --explain E0080`.
|
||||||
|
@ -10,6 +10,20 @@ note: erroneous constant encountered
|
|||||||
LL | &<A<T> as Foo<T>>::BAR
|
LL | &<A<T> as Foo<T>>::BAR
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/issue-50814-2.rs:20:5
|
||||||
|
|
|
||||||
|
LL | &<A<T> as Foo<T>>::BAR
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/issue-50814-2.rs:20:6
|
||||||
|
|
|
||||||
|
LL | &<A<T> as Foo<T>>::BAR
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn foo::<()>`
|
note: the above error was encountered while instantiating `fn foo::<()>`
|
||||||
--> $DIR/issue-50814-2.rs:32:22
|
--> $DIR/issue-50814-2.rs:32:22
|
||||||
|
|
|
|
||||||
|
@ -26,6 +26,20 @@ LL | &Sum::<U8, U8>::MAX
|
|||||||
|
|
|
|
||||||
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/issue-50814.rs:21:5
|
||||||
|
|
|
||||||
|
LL | &Sum::<U8, U8>::MAX
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/issue-50814.rs:21:6
|
||||||
|
|
|
||||||
|
LL | &Sum::<U8, U8>::MAX
|
||||||
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn foo::<i32>`
|
note: the above error was encountered while instantiating `fn foo::<i32>`
|
||||||
--> $DIR/issue-50814.rs:26:5
|
--> $DIR/issue-50814.rs:26:5
|
||||||
|
|
|
|
||||||
|
@ -4,6 +4,14 @@ error[E0080]: evaluation of `post_monomorphization_error::ValidateConstImm::<2,
|
|||||||
LL | let _ = 1 / ((IMM >= MIN && IMM <= MAX) as usize);
|
LL | let _ = 1 / ((IMM >= MIN && IMM <= MAX) as usize);
|
||||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ attempt to divide `1_usize` by zero
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ attempt to divide `1_usize` by zero
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/auxiliary/post_monomorphization_error.rs:19:5
|
||||||
|
|
|
||||||
|
LL | static_assert_imm1!(IMM1);
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: this note originates in the macro `static_assert_imm1` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn post_monomorphization_error::stdarch_intrinsic::<2>`
|
note: the above error was encountered while instantiating `fn post_monomorphization_error::stdarch_intrinsic::<2>`
|
||||||
--> $DIR/issue-85155.rs:19:5
|
--> $DIR/issue-85155.rs:19:5
|
||||||
|
|
|
|
||||||
|
@ -6,6 +6,12 @@ LL | const C: () = panic!();
|
|||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/collect-in-called-fn.rs:18:17
|
||||||
|
|
|
||||||
|
LL | let _ = Fail::<T>::C;
|
||||||
|
| ^^^^^^^^^^^^
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn called::<i32>`
|
note: the above error was encountered while instantiating `fn called::<i32>`
|
||||||
--> $DIR/collect-in-called-fn.rs:23:5
|
--> $DIR/collect-in-called-fn.rs:23:5
|
||||||
|
|
|
|
||||||
|
@ -6,6 +6,12 @@ LL | const C: () = panic!();
|
|||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/collect-in-called-fn.rs:18:17
|
||||||
|
|
|
||||||
|
LL | let _ = Fail::<T>::C;
|
||||||
|
| ^^^^^^^^^^^^
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn called::<i32>`
|
note: the above error was encountered while instantiating `fn called::<i32>`
|
||||||
--> $DIR/collect-in-called-fn.rs:23:5
|
--> $DIR/collect-in-called-fn.rs:23:5
|
||||||
|
|
|
|
||||||
|
@ -6,6 +6,12 @@ LL | const C: () = panic!();
|
|||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/collect-in-dead-drop.rs:19:17
|
||||||
|
|
|
||||||
|
LL | let _ = Fail::<T>::C;
|
||||||
|
| ^^^^^^^^^^^^
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn <Fail<i32> as std::ops::Drop>::drop`
|
note: the above error was encountered while instantiating `fn <Fail<i32> as std::ops::Drop>::drop`
|
||||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||||
|
|
||||||
|
@ -6,6 +6,12 @@ LL | const C: () = panic!();
|
|||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/collect-in-dead-fn.rs:22:17
|
||||||
|
|
|
||||||
|
LL | let _ = Fail::<T>::C;
|
||||||
|
| ^^^^^^^^^^^^
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn not_called::<i32>`
|
note: the above error was encountered while instantiating `fn not_called::<i32>`
|
||||||
--> $DIR/collect-in-dead-fn.rs:29:9
|
--> $DIR/collect-in-dead-fn.rs:29:9
|
||||||
|
|
|
|
||||||
|
@ -6,6 +6,12 @@ LL | const C: () = panic!();
|
|||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/collect-in-dead-move.rs:19:17
|
||||||
|
|
|
||||||
|
LL | let _ = Fail::<T>::C;
|
||||||
|
| ^^^^^^^^^^^^
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn <Fail<i32> as std::ops::Drop>::drop`
|
note: the above error was encountered while instantiating `fn <Fail<i32> as std::ops::Drop>::drop`
|
||||||
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
--> $SRC_DIR/core/src/ptr/mod.rs:LL:COL
|
||||||
|
|
||||||
|
@ -6,6 +6,12 @@ LL | const C: () = panic!();
|
|||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/collect-in-dead-vtable.rs:26:21
|
||||||
|
|
|
||||||
|
LL | let _ = Fail::<T>::C;
|
||||||
|
| ^^^^^^^^^^^^
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn <std::vec::Vec<i32> as MyTrait>::not_called`
|
note: the above error was encountered while instantiating `fn <std::vec::Vec<i32> as MyTrait>::not_called`
|
||||||
--> $DIR/collect-in-dead-vtable.rs:35:40
|
--> $DIR/collect-in-dead-vtable.rs:35:40
|
||||||
|
|
|
|
||||||
|
@ -12,6 +12,9 @@ impl<T> F<T> {
|
|||||||
//~| NOTE: the evaluated program panicked
|
//~| NOTE: the evaluated program panicked
|
||||||
}
|
}
|
||||||
F::<T>::V;
|
F::<T>::V;
|
||||||
|
//~^NOTE: erroneous constant
|
||||||
|
//~|NOTE: erroneous constant
|
||||||
|
//~|NOTE: duplicate
|
||||||
}
|
}
|
||||||
|
|
||||||
fn foo<U>() {
|
fn foo<U>() {
|
||||||
|
@ -6,8 +6,14 @@ LL | const V: () = assert!(std::mem::size_of::<T>() == 0);
|
|||||||
|
|
|
|
||||||
= note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/post_monomorphization_error_backtrace.rs:14:5
|
||||||
|
|
|
||||||
|
LL | F::<T>::V;
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn assert_zst::<u32>`
|
note: the above error was encountered while instantiating `fn assert_zst::<u32>`
|
||||||
--> $DIR/post_monomorphization_error_backtrace.rs:18:5
|
--> $DIR/post_monomorphization_error_backtrace.rs:21:5
|
||||||
|
|
|
|
||||||
LL | assert_zst::<U>()
|
LL | assert_zst::<U>()
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
@ -20,8 +26,16 @@ LL | const V: () = assert!(std::mem::size_of::<T>() == 0);
|
|||||||
|
|
|
|
||||||
= note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/post_monomorphization_error_backtrace.rs:14:5
|
||||||
|
|
|
||||||
|
LL | F::<T>::V;
|
||||||
|
| ^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn assert_zst::<i32>`
|
note: the above error was encountered while instantiating `fn assert_zst::<i32>`
|
||||||
--> $DIR/post_monomorphization_error_backtrace.rs:18:5
|
--> $DIR/post_monomorphization_error_backtrace.rs:21:5
|
||||||
|
|
|
|
||||||
LL | assert_zst::<U>()
|
LL | assert_zst::<U>()
|
||||||
| ^^^^^^^^^^^^^^^^^
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
@ -6,6 +6,12 @@ LL | const { assert!(std::mem::size_of::<T>() == 0); }
|
|||||||
|
|
|
|
||||||
= note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/const-expr-generic-err.rs:5:5
|
||||||
|
|
|
||||||
|
LL | const { assert!(std::mem::size_of::<T>() == 0); }
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn foo::<i32>`
|
note: the above error was encountered while instantiating `fn foo::<i32>`
|
||||||
--> $DIR/const-expr-generic-err.rs:13:5
|
--> $DIR/const-expr-generic-err.rs:13:5
|
||||||
|
|
|
|
||||||
@ -18,6 +24,20 @@ error[E0080]: evaluation of `bar::<0>::{constant#0}` failed
|
|||||||
LL | const { N - 1 }
|
LL | const { N - 1 }
|
||||||
| ^^^^^ attempt to compute `0_usize - 1_usize`, which would overflow
|
| ^^^^^ attempt to compute `0_usize - 1_usize`, which would overflow
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/const-expr-generic-err.rs:9:5
|
||||||
|
|
|
||||||
|
LL | const { N - 1 }
|
||||||
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/const-expr-generic-err.rs:9:5
|
||||||
|
|
|
||||||
|
LL | const { N - 1 }
|
||||||
|
| ^^^^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
= note: duplicate diagnostic emitted due to `-Z deduplicate-diagnostics=no`
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn bar::<0>`
|
note: the above error was encountered while instantiating `fn bar::<0>`
|
||||||
--> $DIR/const-expr-generic-err.rs:14:5
|
--> $DIR/const-expr-generic-err.rs:14:5
|
||||||
|
|
|
|
||||||
|
@ -6,6 +6,12 @@ LL | const { panic!() }
|
|||||||
|
|
|
|
||||||
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `$crate::panic::panic_2015` which comes from the expansion of the macro `panic` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/required-const.rs:7:9
|
||||||
|
|
|
||||||
|
LL | const { panic!() }
|
||||||
|
| ^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
error: aborting due to 1 previous error
|
error: aborting due to 1 previous error
|
||||||
|
|
||||||
For more information about this error, try `rustc --explain E0080`.
|
For more information about this error, try `rustc --explain E0080`.
|
||||||
|
@ -6,6 +6,12 @@ LL | const { assert!(LANE < 4); } // the error should be here...
|
|||||||
|
|
|
|
||||||
= note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info)
|
= note: this error originates in the macro `assert` (in Nightly builds, run with -Z macro-backtrace for more info)
|
||||||
|
|
||||||
|
note: erroneous constant encountered
|
||||||
|
--> $DIR/const-err-trumps-simd-err.rs:16:5
|
||||||
|
|
|
||||||
|
LL | const { assert!(LANE < 4); } // the error should be here...
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
note: the above error was encountered while instantiating `fn get_elem::<4>`
|
note: the above error was encountered while instantiating `fn get_elem::<4>`
|
||||||
--> $DIR/const-err-trumps-simd-err.rs:23:5
|
--> $DIR/const-err-trumps-simd-err.rs:23:5
|
||||||
|
|
|
|
||||||
|
Loading…
Reference in New Issue
Block a user