We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
1 parent c94c74e commit 527456eCopy full SHA for 527456e
src/librustc/middle/limits.rs
@@ -38,10 +38,8 @@ fn update_limit(
38
return;
39
}
40
Err(e) => {
41
- let mut err = sess.struct_span_err(
42
- attr.span,
43
- "`recursion_limit` must be a non-negative integer",
44
- );
+ let mut err =
+ sess.struct_span_err(attr.span, "`limit` must be a non-negative integer");
45
46
let value_span = attr
47
.meta()
@@ -50,11 +48,11 @@ fn update_limit(
50
48
.unwrap_or(attr.span);
51
49
52
let error_str = match e.kind() {
53
- IntErrorKind::Overflow => "`recursion_limit` is too large",
54
- IntErrorKind::Empty => "`recursion_limit` must be a non-negative integer",
+ IntErrorKind::Overflow => "`limit` is too large",
+ IntErrorKind::Empty => "`limit` must be a non-negative integer",
55
IntErrorKind::InvalidDigit => "not a valid integer",
56
- IntErrorKind::Underflow => bug!("`recursion_limit` should never underflow"),
57
- IntErrorKind::Zero => bug!("zero is a valid `recursion_limit`"),
+ IntErrorKind::Underflow => bug!("`limit` should never underflow"),
+ IntErrorKind::Zero => bug!("zero is a valid `limit`"),
58
kind => bug!("unimplemented IntErrorKind variant: {:?}", kind),
59
};
60
src/librustc_feature/active.rs
@@ -532,9 +532,6 @@ declare_features! (
532
/// Allows using `&mut` in constant functions.
533
(active, const_mut_refs, "1.41.0", Some(57349), None),
534
535
- // Allows limiting the evaluation steps of const expressions
536
- (active, const_eval_limit, "1.41.0", Some(67217), None),
537
-
538
/// Allows the use of `loop` and `while` in constants.
539
(active, const_loop, "1.41.0", Some(52000), None),
540
@@ -555,6 +552,9 @@ declare_features! (
555
552
/// Allows the use of `no_sanitize` attribute.
556
553
(active, no_sanitize, "1.42.0", Some(39699), None),
557
554
+ // Allows limiting the evaluation steps of const expressions
+ (active, const_eval_limit, "1.43.0", Some(67217), None),
+
558
// -------------------------------------------------------------------------
559
// feature-group-end: actual feature gates
560
src/test/ui/consts/const_limit/const_eval_limit_overflow.rs
@@ -1,6 +1,6 @@
1
-// check-pass
2
#![feature(const_eval_limit)]
3
#![const_eval_limit="18_446_744_073_709_551_615"]
+//~^ ERROR `limit` must be a non-negative integer
4
5
const CONSTANT: usize = limit();
6
src/test/ui/consts/const_limit/const_eval_limit_overflow.stderr
@@ -0,0 +1,10 @@
+error: `limit` must be a non-negative integer
+ --> $DIR/const_eval_limit_overflow.rs:2:1
+ |
+LL | #![const_eval_limit="18_446_744_073_709_551_615"]
+ | ^^^^^^^^^^^^^^^^^^^^----------------------------^
+ | |
7
+ | not a valid integer
8
9
+error: aborting due to previous error
10
src/test/ui/consts/const_limit/const_eval_limit_reached.rs
@@ -1,5 +1,9 @@
+// ignore-tidy-linelength
// only-x86_64
// check-pass
+// NOTE: We always compile this test with -Copt-level=0 because higher opt-levels
+// optimize away the const function
+// compile-flags:-Copt-level=0
#![const_eval_limit="2"]
@@ -10,7 +14,7 @@ fn main() {
14
assert_eq!(CONSTANT, 1764);
11
15
12
16
13
-const fn limit() -> usize {
17
+const fn limit() -> usize { //~ WARNING Constant evaluating a complex constant, this might take some time
18
let x = 42;
19
20
x * 42
src/test/ui/consts/const_limit/const_eval_limit_reached.stderr
@@ -1,5 +1,15 @@
warning: Constant evaluating a complex constant, this might take some time
- --> $DIR/const_eval_limit_reached.rs:6:1
+ --> $DIR/const_eval_limit_reached.rs:17:1
+LL | / const fn limit() -> usize {
+LL | | let x = 42;
+LL | |
+LL | | x * 42
+LL | | }
+ | |_^
+warning: Constant evaluating a complex constant, this might take some time
+ --> $DIR/const_eval_limit_reached.rs:10:1
|
LL | const CONSTANT: usize = limit();
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
src/test/ui/recursion_limit/empty.rs
// Test the parse error for an empty recursion_limit
-#![recursion_limit = ""] //~ ERROR `recursion_limit` must be a non-negative integer
- //~| `recursion_limit` must be a non-negative integer
+#![recursion_limit = ""] //~ ERROR `limit` must be a non-negative integer
+ //~| `limit` must be a non-negative integer
fn main() {}
src/test/ui/recursion_limit/empty.stderr
@@ -1,10 +1,10 @@
-error: `recursion_limit` must be a non-negative integer
--> $DIR/empty.rs:3:1
LL | #![recursion_limit = ""]
| ^^^^^^^^^^^^^^^^^^^^^--^
| |
- | `recursion_limit` must be a non-negative integer
+ | `limit` must be a non-negative integer
error: aborting due to previous error
src/test/ui/recursion_limit/invalid_digit.rs
// Test the parse error for an invalid digit in recursion_limit
-#![recursion_limit = "-100"] //~ ERROR `recursion_limit` must be a non-negative integer
+#![recursion_limit = "-100"] //~ ERROR `limit` must be a non-negative integer
//~| not a valid integer
src/test/ui/recursion_limit/invalid_digit.stderr
@@ -1,4 +1,4 @@
--> $DIR/invalid_digit.rs:3:1
LL | #![recursion_limit = "-100"]
src/test/ui/recursion_limit/overflow.rs
@@ -1,7 +1,7 @@
// Test the parse error for an overflowing recursion_limit
#![recursion_limit = "999999999999999999999999"]
-//~^ ERROR `recursion_limit` must be a non-negative integer
-//~| `recursion_limit` is too large
+//~| `limit` is too large
src/test/ui/recursion_limit/overflow.stderr
--> $DIR/overflow.rs:3:1
LL | #![recursion_limit = "999999999999999999999999"]
| ^^^^^^^^^^^^^^^^^^^^^--------------------------^
- | `recursion_limit` is too large
+ | `limit` is too large
src/test/ui/recursion_limit/zero.rs
-// Test that a `recursion_limit` of 0 is valid
+// Test that a `limit` of 0 is valid
#![recursion_limit = "0"]
0 commit comments