Skip to content

Commit 17946c2

Browse files
committed
const-eval error: always say in which item the error occurred
also adjust the wording a little so that we don't say "the error occurred here" for two different spans
1 parent 1dc9ae6 commit 17946c2

File tree

180 files changed

+938
-952
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

180 files changed

+938
-952
lines changed

compiler/rustc_const_eval/messages.ftl

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -88,11 +88,9 @@ const_eval_division_overflow =
8888
const_eval_dyn_call_not_a_method =
8989
`dyn` call trying to call something that is not a method
9090
91-
const_eval_error = {$error_kind ->
92-
[static] evaluation of static initializer failed here
93-
[const] evaluation of constant value failed here
94-
[const_with_path] evaluation of `{$instance}` failed here
95-
*[other] {""}
91+
const_eval_error = evaluation of `{$instance}` failed {$num_frames ->
92+
[0] here
93+
*[other] inside this call
9694
}
9795
9896
const_eval_exact_div_has_remainder =

compiler/rustc_const_eval/src/const_eval/eval_queries.rs

Lines changed: 3 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -430,27 +430,15 @@ fn report_eval_error<'tcx>(
430430
let (error, backtrace) = error.into_parts();
431431
backtrace.print_backtrace();
432432

433-
let (kind, instance) = if ecx.tcx.is_static(cid.instance.def_id()) {
434-
("static", String::new())
435-
} else {
436-
// If the current item has generics, we'd like to enrich the message with the
437-
// instance and its args: to show the actual compile-time values, in addition to
438-
// the expression, leading to the const eval error.
439-
let instance = &cid.instance;
440-
if !instance.args.is_empty() {
441-
let instance = with_no_trimmed_paths!(instance.to_string());
442-
("const_with_path", instance)
443-
} else {
444-
("const", String::new())
445-
}
446-
};
433+
let instance = with_no_trimmed_paths!(cid.instance.to_string());
447434

448435
super::report(
449436
*ecx.tcx,
450437
error,
451438
DUMMY_SP,
452439
|| super::get_span_and_frames(ecx.tcx, ecx.stack()),
453440
|diag, span, frames| {
441+
let num_frames = frames.len();
454442
// FIXME(oli-obk): figure out how to use structured diagnostics again.
455443
diag.code(E0080);
456444
diag.span_label(span, crate::fluent_generated::const_eval_error);
@@ -459,7 +447,7 @@ fn report_eval_error<'tcx>(
459447
}
460448
// Add after the frame rendering above, as it adds its own `instance` args.
461449
diag.arg("instance", instance);
462-
diag.arg("error_kind", kind);
450+
diag.arg("num_frames", num_frames);
463451
},
464452
)
465453
}

src/tools/miri/tests/fail/const-ub-checks.stderr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ error[E0080]: accessing memory based on pointer with alignment ALIGN, but alignm
22
--> tests/fail/const-ub-checks.rs:LL:CC
33
|
44
LL | ptr.read();
5-
| ^^^^^^^^^^ evaluation of constant value failed here
5+
| ^^^^^^^^^^ evaluation of `UNALIGNED_READ` failed here
66

77
note: erroneous constant encountered
88
--> tests/fail/const-ub-checks.rs:LL:CC

src/tools/miri/tests/fail/erroneous_const2.stderr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ error[E0080]: attempt to compute `5_u32 - 6_u32`, which would overflow
22
--> tests/fail/erroneous_const2.rs:LL:CC
33
|
44
LL | const FOO: u32 = [X - Y, Y - X][(X < Y) as usize];
5-
| ^^^^^ evaluation of constant value failed here
5+
| ^^^^^ evaluation of `FOO` failed here
66

77
note: erroneous constant encountered
88
--> tests/fail/erroneous_const2.rs:LL:CC

tests/rustdoc-ui/const-evalutation-ice.stderr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ error[E0080]: attempt to compute `0_usize - 1_usize`, which would overflow
22
--> $DIR/const-evalutation-ice.rs:10:22
33
|
44
LL | pub const N: usize = 0 - (mem::size_of::<S>() != 400) as usize;
5-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ evaluation of constant value failed here
5+
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ evaluation of `N` failed here
66

77
error: aborting due to 1 previous error
88

tests/ui/array-slice-vec/array_const_index-0.stderr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ error[E0080]: index out of bounds: the length is 0 but the index is 1
22
--> $DIR/array_const_index-0.rs:2:16
33
|
44
LL | const B: i32 = (&A)[1];
5-
| ^^^^^^^ evaluation of constant value failed here
5+
| ^^^^^^^ evaluation of `B` failed here
66

77
error: aborting due to 1 previous error
88

tests/ui/array-slice-vec/array_const_index-1.stderr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ error[E0080]: index out of bounds: the length is 0 but the index is 1
22
--> $DIR/array_const_index-1.rs:2:16
33
|
44
LL | const B: i32 = A[1];
5-
| ^^^^ evaluation of constant value failed here
5+
| ^^^^ evaluation of `B` failed here
66

77
error: aborting due to 1 previous error
88

tests/ui/borrowck/issue-81899.stderr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ error[E0080]: evaluation panicked: explicit panic
22
--> $DIR/issue-81899.rs:6:24
33
|
44
LL | const _CONST: &[u8] = &f(&[], |_| {});
5-
| ^^^^^^^^^^^^^^ evaluation of constant value failed here
5+
| ^^^^^^^^^^^^^^ evaluation of `_CONST` failed inside this call
66
|
77
note: inside `f::<{closure@$DIR/issue-81899.rs:6:31: 6:34}>`
88
--> $DIR/issue-81899.rs:13:5

tests/ui/borrowck/issue-88434-minimal-example.stderr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ error[E0080]: evaluation panicked: explicit panic
22
--> $DIR/issue-88434-minimal-example.rs:5:22
33
|
44
LL | const _CONST: &() = &f(&|_| {});
5-
| ^^^^^^^^^^ evaluation of constant value failed here
5+
| ^^^^^^^^^^ evaluation of `_CONST` failed inside this call
66
|
77
note: inside `f::<{closure@$DIR/issue-88434-minimal-example.rs:5:25: 5:28}>`
88
--> $DIR/issue-88434-minimal-example.rs:12:5

tests/ui/borrowck/issue-88434-removal-index-should-be-less.stderr

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ error[E0080]: evaluation panicked: explicit panic
22
--> $DIR/issue-88434-removal-index-should-be-less.rs:5:24
33
|
44
LL | const _CONST: &[u8] = &f(&[], |_| {});
5-
| ^^^^^^^^^^^^^^ evaluation of constant value failed here
5+
| ^^^^^^^^^^^^^^ evaluation of `_CONST` failed inside this call
66
|
77
note: inside `f::<{closure@$DIR/issue-88434-removal-index-should-be-less.rs:5:31: 5:34}>`
88
--> $DIR/issue-88434-removal-index-should-be-less.rs:12:5

0 commit comments

Comments
 (0)