Skip to content

Commit 044dc6e

Browse files
Update const-eval tests
1 parent e15c486 commit 044dc6e

7 files changed

+46
-70
lines changed

src/test/ui/consts/const-eval/infinite_loop.rs

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ fn main() {
22
// Tests the Collatz conjecture with an incorrect base case (0 instead of 1).
33
// The value of `n` will loop indefinitely (4 - 2 - 1 - 4).
44
let _ = [(); {
5-
//~^ WARNING Constant evaluating a complex constant, this might take some time
65
let mut n = 113383; // #20 in https://oeis.org/A006884
76
while n != 0 {
87
//~^ ERROR `while` is not allowed in a `const`

src/test/ui/consts/const-eval/infinite_loop.stderr

+4-17
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error[E0658]: `while` is not allowed in a `const`
2-
--> $DIR/infinite_loop.rs:7:9
2+
--> $DIR/infinite_loop.rs:6:9
33
|
44
LL | / while n != 0 {
55
LL | |
@@ -14,32 +14,19 @@ LL | | }
1414
= help: add `#![feature(const_if_match)]` to the crate attributes to enable
1515

1616
error[E0658]: `if` is not allowed in a `const`
17-
--> $DIR/infinite_loop.rs:9:17
17+
--> $DIR/infinite_loop.rs:8:17
1818
|
1919
LL | n = if n % 2 == 0 { n/2 } else { 3*n + 1 };
2020
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
2121
|
2222
= note: see issue #49146 <https://github.com/rust-lang/rust/issues/49146> for more information
2323
= help: add `#![feature(const_if_match)]` to the crate attributes to enable
2424

25-
warning: Constant evaluating a complex constant, this might take some time
26-
--> $DIR/infinite_loop.rs:4:18
27-
|
28-
LL | let _ = [(); {
29-
| __________________^
30-
LL | |
31-
LL | | let mut n = 113383; // #20 in https://oeis.org/A006884
32-
LL | | while n != 0 {
33-
... |
34-
LL | | n
35-
LL | | }];
36-
| |_____^
37-
3825
error[E0080]: evaluation of constant value failed
39-
--> $DIR/infinite_loop.rs:9:20
26+
--> $DIR/infinite_loop.rs:8:20
4027
|
4128
LL | n = if n % 2 == 0 { n/2 } else { 3*n + 1 };
42-
| ^^^^^^^^^^ duplicate interpreter state observed here, const evaluation will never terminate
29+
| ^^^^^^^^^^ exceeded interpreter time limit
4330

4431
error: aborting due to 3 previous errors
4532

src/test/ui/consts/const-eval/issue-52475.rs

-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
fn main() {
22
let _ = [(); {
3-
//~^ WARNING Constant evaluating a complex constant, this might take some time
43
let mut x = &0;
54
let mut n = 0;
65
while n < 5 {

src/test/ui/consts/const-eval/issue-52475.stderr

+3-16
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
error[E0658]: `while` is not allowed in a `const`
2-
--> $DIR/issue-52475.rs:6:9
2+
--> $DIR/issue-52475.rs:5:9
33
|
44
LL | / while n < 5 {
55
LL | |
@@ -12,24 +12,11 @@ LL | | }
1212
= help: add `#![feature(const_loop)]` to the crate attributes to enable
1313
= help: add `#![feature(const_if_match)]` to the crate attributes to enable
1414

15-
warning: Constant evaluating a complex constant, this might take some time
16-
--> $DIR/issue-52475.rs:2:18
17-
|
18-
LL | let _ = [(); {
19-
| __________________^
20-
LL | |
21-
LL | | let mut x = &0;
22-
LL | | let mut n = 0;
23-
... |
24-
LL | | 0
25-
LL | | }];
26-
| |_____^
27-
2815
error[E0080]: evaluation of constant value failed
29-
--> $DIR/issue-52475.rs:8:17
16+
--> $DIR/issue-52475.rs:7:17
3017
|
3118
LL | n = (n + 1) % 5;
32-
| ^^^^^^^^^^^ duplicate interpreter state observed here, const evaluation will never terminate
19+
| ^^^^^^^^^^^ exceeded interpreter time limit
3320

3421
error: aborting due to 2 previous errors
3522

Original file line numberDiff line numberDiff line change
@@ -1,15 +1,21 @@
11
// check-pass
2+
23
#![feature(const_eval_limit)]
3-
#![const_eval_limit="1000"]
4+
#![feature(const_loop, const_if_match)]
45

5-
const CONSTANT: usize = limit();
6+
// This needs to be higher than the number of loop iterations since each pass through the loop may
7+
// hit more than one terminator.
8+
#![const_eval_limit="4000"]
69

7-
fn main() {
8-
assert_eq!(CONSTANT, 1764);
9-
}
10+
const X: usize = {
11+
let mut x = 0;
12+
while x != 1000 {
13+
x += 1;
14+
}
1015

11-
const fn limit() -> usize {
12-
let x = 42;
16+
x
17+
};
1318

14-
x * 42
19+
fn main() {
20+
assert_eq!(X, 1000);
1521
}
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,18 @@
1-
// ignore-tidy-linelength
2-
// only-x86_64
3-
// check-pass
4-
// NOTE: We always compile this test with -Copt-level=0 because higher opt-levels
5-
// optimize away the const function
6-
// compile-flags:-Copt-level=0
71
#![feature(const_eval_limit)]
8-
#![const_eval_limit="2"]
2+
#![feature(const_loop, const_if_match)]
93

10-
const CONSTANT: usize = limit();
11-
//~^ WARNING Constant evaluating a complex constant, this might take some time
4+
#![const_eval_limit="500"]
125

13-
fn main() {
14-
assert_eq!(CONSTANT, 1764);
15-
}
6+
const X: usize = {
7+
let mut x = 0;
8+
while x != 1000 {
9+
//~^ ERROR any use of this value will cause an error
10+
x += 1;
11+
}
1612

17-
const fn limit() -> usize { //~ WARNING Constant evaluating a complex constant, this might take some time
18-
let x = 42;
13+
x
14+
};
1915

20-
x * 42
16+
fn main() {
17+
assert_eq!(X, 1000);
2118
}
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
1-
warning: Constant evaluating a complex constant, this might take some time
2-
--> $DIR/const_eval_limit_reached.rs:17:1
1+
error: any use of this value will cause an error
2+
--> $DIR/const_eval_limit_reached.rs:8:11
33
|
4-
LL | / const fn limit() -> usize {
5-
LL | | let x = 42;
4+
LL | / const X: usize = {
5+
LL | | let mut x = 0;
6+
LL | | while x != 1000 {
7+
| | ^^^^^^^^^ exceeded interpreter time limit
68
LL | |
7-
LL | | x * 42
8-
LL | | }
9-
| |_^
10-
11-
warning: Constant evaluating a complex constant, this might take some time
12-
--> $DIR/const_eval_limit_reached.rs:10:1
9+
... |
10+
LL | | x
11+
LL | | };
12+
| |__-
1313
|
14-
LL | const CONSTANT: usize = limit();
15-
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
14+
= note: `#[deny(const_err)]` on by default
15+
16+
error: aborting due to previous error
1617

0 commit comments

Comments
 (0)