Skip to content

Commit

Permalink
regression test for 64453 borrow check error.
Browse files Browse the repository at this point in the history
  • Loading branch information
pnkfelix committed Oct 1, 2019
1 parent 42ec683 commit 9fe138a
Show file tree
Hide file tree
Showing 2 changed files with 58 additions and 0 deletions.
24 changes: 24 additions & 0 deletions src/test/ui/borrowck/issue-64453.rs
Original file line number Diff line number Diff line change
@@ -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!(),
}
}
34 changes: 34 additions & 0 deletions src/test/ui/borrowck/issue-64453.stderr
Original file line number Diff line number Diff line change
@@ -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`.

0 comments on commit 9fe138a

Please sign in to comment.