Skip to content

Commit f3a3684

Browse files
committed
Add error explanation for E0154.
1 parent c0412bc commit f3a3684

File tree

1 file changed

+32
-1
lines changed

1 file changed

+32
-1
lines changed

src/librustc_resolve/diagnostics.rs

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,38 @@
1515
// In vim you can `:set tw=80` and use `gq` to wrap paragraphs. Use `:set tw=0` to disable.
1616
register_long_diagnostics! {
1717

18+
E0154: r##"
19+
Imports (`use` statements) are not allowed after non-item statements, such as
20+
variable declarations and expression statements.
21+
22+
Wrong example:
23+
```
24+
fn f() {
25+
// Variable declaration before import
26+
let x = 0;
27+
use std::io::Read;
28+
...
29+
}
30+
```
31+
32+
The solution is to declare the imports at the top of the block, function, or
33+
file.
34+
35+
Here is the previous example again, with the correct order:
36+
```
37+
fn f() {
38+
use std::io::Read;
39+
let x = 0;
40+
...
41+
}
42+
```
43+
44+
See the Declaration Statements section of the reference for more information
45+
about what constitutes an Item declaration and what does not:
46+
47+
http://doc.rust-lang.org/reference.html#statements
48+
"##,
49+
1850
E0317: r##"
1951
User-defined types or type parameters cannot shadow the primitive types.
2052
This error indicates you tried to define a type, struct or enum with the same
@@ -29,7 +61,6 @@ http://doc.rust-lang.org/reference.html#types
2961
}
3062

3163
register_diagnostics! {
32-
E0154,
3364
E0157,
3465
E0153,
3566
E0251, // a named type or value has already been imported in this module

0 commit comments

Comments
 (0)