Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Explain E0434 #33229

Merged
merged 1 commit into from
Apr 30, 2016
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
46 changes: 45 additions & 1 deletion src/librustc_resolve/diagnostics.rs
Original file line number Diff line number Diff line change
Expand Up @@ -948,6 +948,51 @@ use something_which_doesnt_exist;
Please verify you didn't misspell the import's name.
"##,

E0434: r##"
This error indicates that a variable usage inside an inner function is invalid
because the variable comes from a dynamic environment. Inner functions do not
have access to their containing environment.
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Either you put "Example of erroneous code:" directly after the text, or you separate it from the first block (and then add an empty line between the two to make the separation obvious).


Example of erroneous code:

```compile_fail
fn foo() {
let y = 5;
fn bar() -> u32 {
y // error: can't capture dynamic environment in a fn item; use the
// || { ... } closure form instead.
}
}
```

Functions do not capture local variables. To fix this error, you can replace the
function with a closure:

```
fn foo() {
let y = 5;
let bar = || {
y
};
}
```

or replace the captured variable with a constant or a static item:

```
fn foo() {
static mut X: u32 = 4;
const Y: u32 = 5;
fn bar() -> u32 {
unsafe {
X = 3;
}
Y
}
}
```
"##,

E0435: r##"
A non-constant value was used to initialise a constant. Example of erroneous
code:
Expand Down Expand Up @@ -1044,5 +1089,4 @@ register_diagnostics! {
E0421, // unresolved associated const
E0427, // cannot use `ref` binding mode with ...
E0429, // `self` imports are only allowed within a { } list
E0434, // can't capture dynamic environment in a fn item
}