From 9fe138aa4350bd981ceea6cba0ba8c2b464da94b Mon Sep 17 00:00:00 2001 From: "Felix S. Klock II" Date: Mon, 30 Sep 2019 11:05:04 +0200 Subject: [PATCH] regression test for 64453 borrow check error. --- src/test/ui/borrowck/issue-64453.rs | 24 +++++++++++++++++ src/test/ui/borrowck/issue-64453.stderr | 34 +++++++++++++++++++++++++ 2 files changed, 58 insertions(+) create mode 100644 src/test/ui/borrowck/issue-64453.rs create mode 100644 src/test/ui/borrowck/issue-64453.stderr 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`.