diff options
| author | Dylan MacKenzie <ecstaticmorse@gmail.com> | 2019-11-04 13:09:02 -0800 |
|---|---|---|
| committer | Dylan MacKenzie <ecstaticmorse@gmail.com> | 2019-11-04 14:19:51 -0800 |
| commit | c8ae2819c5e8eeaa9a1f6435148f8d05fb5f8c56 (patch) | |
| tree | 49009232802f229dca9cd01ef7fbdb04cbcff026 /src/test/ui/consts | |
| parent | 2477e2493e67527fc282c7239e019f7ebd513a1a (diff) | |
| download | rust-c8ae2819c5e8eeaa9a1f6435148f8d05fb5f8c56.tar.gz rust-c8ae2819c5e8eeaa9a1f6435148f8d05fb5f8c56.zip | |
Add tests for loop constructs in consts
These errors are suboptimal, but they will be fixed by the new `check_consts` pass.
Diffstat (limited to 'src/test/ui/consts')
| -rw-r--r-- | src/test/ui/consts/const-loop.rs | 58 | ||||
| -rw-r--r-- | src/test/ui/consts/const-loop.stderr | 60 |
2 files changed, 118 insertions, 0 deletions
diff --git a/src/test/ui/consts/const-loop.rs b/src/test/ui/consts/const-loop.rs new file mode 100644 index 00000000000..954f269d30e --- /dev/null +++ b/src/test/ui/consts/const-loop.rs @@ -0,0 +1,58 @@ +const _: i32 = { + let mut x = 0; + + while x < 4 { + //~^ ERROR constant contains unimplemented expression type + //~| ERROR constant contains unimplemented expression type + x += 1; + } + + while x < 8 { + x += 1; + } + + x +}; + +const _: i32 = { + let mut x = 0; + + for i in 0..4 { + //~^ ERROR constant contains unimplemented expression type + //~| ERROR constant contains unimplemented expression type + //~| ERROR references in constants may only refer to immutable values + //~| ERROR calls in constants are limited to constant functions, tuple + // structs and tuple variants + x += i; + } + + for i in 0..4 { + x += i; + } + + x +}; + +const _: i32 = { + let mut x = 0; + + loop { + x += 1; + if x == 4 { + //~^ ERROR constant contains unimplemented expression type + //~| ERROR constant contains unimplemented expression type + break; + } + } + + loop { + x += 1; + if x == 8 { + break; + } + } + + x +}; + +fn main() {} diff --git a/src/test/ui/consts/const-loop.stderr b/src/test/ui/consts/const-loop.stderr new file mode 100644 index 00000000000..e6e4e2f5bb8 --- /dev/null +++ b/src/test/ui/consts/const-loop.stderr @@ -0,0 +1,60 @@ +error[E0019]: constant contains unimplemented expression type + --> $DIR/const-loop.rs:4:11 + | +LL | while x < 4 { + | ^^^^^ + +error[E0019]: constant contains unimplemented expression type + --> $DIR/const-loop.rs:4:5 + | +LL | / while x < 4 { +LL | | +LL | | +LL | | x += 1; +LL | | } + | |_____^ + +error[E0015]: calls in constants are limited to constant functions, tuple structs and tuple variants + --> $DIR/const-loop.rs:20:14 + | +LL | for i in 0..4 { + | ^^^^ + +error[E0019]: constant contains unimplemented expression type + --> $DIR/const-loop.rs:20:14 + | +LL | for i in 0..4 { + | ^^^^ + +error[E0017]: references in constants may only refer to immutable values + --> $DIR/const-loop.rs:20:14 + | +LL | for i in 0..4 { + | ^^^^ constants require immutable values + +error[E0019]: constant contains unimplemented expression type + --> $DIR/const-loop.rs:20:9 + | +LL | for i in 0..4 { + | ^ + +error[E0019]: constant contains unimplemented expression type + --> $DIR/const-loop.rs:41:12 + | +LL | if x == 4 { + | ^^^^^^ + +error[E0019]: constant contains unimplemented expression type + --> $DIR/const-loop.rs:41:9 + | +LL | / if x == 4 { +LL | | +LL | | +LL | | break; +LL | | } + | |_________^ + +error: aborting due to 8 previous errors + +Some errors have detailed explanations: E0015, E0017, E0019. +For more information about an error, try `rustc --explain E0015`. |
