diff options
| author | Felix S. Klock II <pnkfelix@pnkfx.org> | 2019-09-30 11:05:04 +0200 |
|---|---|---|
| committer | Felix S. Klock II <pnkfelix@pnkfx.org> | 2019-10-01 15:57:27 +0200 |
| commit | 9fe138aa4350bd981ceea6cba0ba8c2b464da94b (patch) | |
| tree | c165cc5ce13b95d2a801c335a9973d30e35b23d8 | |
| parent | 42ec6831b019114a4b6f6b58bfb5bc2927d70388 (diff) | |
| download | rust-9fe138aa4350bd981ceea6cba0ba8c2b464da94b.tar.gz rust-9fe138aa4350bd981ceea6cba0ba8c2b464da94b.zip | |
regression test for 64453 borrow check error.
| -rw-r--r-- | src/test/ui/borrowck/issue-64453.rs | 24 | ||||
| -rw-r--r-- | src/test/ui/borrowck/issue-64453.stderr | 34 |
2 files changed, 58 insertions, 0 deletions
diff --git a/src/test/ui/borrowck/issue-64453.rs b/src/test/ui/borrowck/issue-64453.rs new file mode 100644 index 00000000000..d8ab6b6e25f --- /dev/null +++ b/src/test/ui/borrowck/issue-64453.rs @@ -0,0 +1,24 @@ +struct Project; +struct Value; + +static settings_dir: String = format!(""); +//~^ ERROR [E0019] +//~| ERROR [E0015] +//~| ERROR [E0015] + +fn from_string(_: String) -> Value { + Value +} +fn set_editor(_: Value) {} + +fn main() { + let settings_data = from_string(settings_dir); + //~^ ERROR cannot move out of static item `settings_dir` [E0507] + let args: i32 = 0; + + match args { + ref x if x == &0 => set_editor(settings_data), + ref x if x == &1 => set_editor(settings_data), + _ => unimplemented!(), + } +} diff --git a/src/test/ui/borrowck/issue-64453.stderr b/src/test/ui/borrowck/issue-64453.stderr new file mode 100644 index 00000000000..6987417fe19 --- /dev/null +++ b/src/test/ui/borrowck/issue-64453.stderr @@ -0,0 +1,34 @@ +error[E0507]: cannot move out of static item `settings_dir` + --> $DIR/issue-64453.rs:15:37 + | +LL | let settings_data = from_string(settings_dir); + | ^^^^^^^^^^^^ move occurs because `settings_dir` has type `std::string::String`, which does not implement the `Copy` trait + +error[E0019]: static contains unimplemented expression type + --> $DIR/issue-64453.rs:4:31 + | +LL | static settings_dir: String = format!(""); + | ^^^^^^^^^^^ + | + = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) + +error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants + --> $DIR/issue-64453.rs:4:31 + | +LL | static settings_dir: String = format!(""); + | ^^^^^^^^^^^ + | + = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) + +error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants + --> $DIR/issue-64453.rs:4:31 + | +LL | static settings_dir: String = format!(""); + | ^^^^^^^^^^^ + | + = note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info) + +error: aborting due to 4 previous errors + +Some errors have detailed explanations: E0015, E0019, E0507. +For more information about an error, try `rustc --explain E0015`. |
