Skip to content

Commit 9fe138a

Browse files
committed
regression test for 64453 borrow check error.
1 parent 42ec683 commit 9fe138a

File tree

2 files changed

+58
-0
lines changed

2 files changed

+58
-0
lines changed

src/test/ui/borrowck/issue-64453.rs

+24
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
struct Project;
2+
struct Value;
3+
4+
static settings_dir: String = format!("");
5+
//~^ ERROR [E0019]
6+
//~| ERROR [E0015]
7+
//~| ERROR [E0015]
8+
9+
fn from_string(_: String) -> Value {
10+
Value
11+
}
12+
fn set_editor(_: Value) {}
13+
14+
fn main() {
15+
let settings_data = from_string(settings_dir);
16+
//~^ ERROR cannot move out of static item `settings_dir` [E0507]
17+
let args: i32 = 0;
18+
19+
match args {
20+
ref x if x == &0 => set_editor(settings_data),
21+
ref x if x == &1 => set_editor(settings_data),
22+
_ => unimplemented!(),
23+
}
24+
}
+34
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,34 @@
1+
error[E0507]: cannot move out of static item `settings_dir`
2+
--> $DIR/issue-64453.rs:15:37
3+
|
4+
LL | let settings_data = from_string(settings_dir);
5+
| ^^^^^^^^^^^^ move occurs because `settings_dir` has type `std::string::String`, which does not implement the `Copy` trait
6+
7+
error[E0019]: static contains unimplemented expression type
8+
--> $DIR/issue-64453.rs:4:31
9+
|
10+
LL | static settings_dir: String = format!("");
11+
| ^^^^^^^^^^^
12+
|
13+
= note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
14+
15+
error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants
16+
--> $DIR/issue-64453.rs:4:31
17+
|
18+
LL | static settings_dir: String = format!("");
19+
| ^^^^^^^^^^^
20+
|
21+
= note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
22+
23+
error[E0015]: calls in statics are limited to constant functions, tuple structs and tuple variants
24+
--> $DIR/issue-64453.rs:4:31
25+
|
26+
LL | static settings_dir: String = format!("");
27+
| ^^^^^^^^^^^
28+
|
29+
= note: this error originates in a macro outside of the current crate (in Nightly builds, run with -Z external-macro-backtrace for more info)
30+
31+
error: aborting due to 4 previous errors
32+
33+
Some errors have detailed explanations: E0015, E0019, E0507.
34+
For more information about an error, try `rustc --explain E0015`.

0 commit comments

Comments
 (0)