Skip to content

Commit

Permalink
Add a note for * and {} usage on use
Browse files Browse the repository at this point in the history
  • Loading branch information
JohnTitor committed Jan 8, 2021
1 parent 9155a9d commit d063745
Show file tree
Hide file tree
Showing 5 changed files with 24 additions and 1 deletion.
17 changes: 16 additions & 1 deletion compiler/rustc_parse/src/parser/item.rs
Original file line number Diff line number Diff line change
Expand Up @@ -220,7 +220,22 @@ impl<'a> Parser<'a> {
let info = if self.eat_keyword(kw::Use) {
// USE ITEM
let tree = self.parse_use_tree()?;
self.expect_semi()?;

// If wildcard or glob-like brace syntax doesn't have `;`,
// the user may not know `*` or `{}` should be the last.
if let Err(mut e) = self.expect_semi() {
match tree.kind {
UseTreeKind::Glob => {
e.note("the wildcard token must be last on the path").emit();
}
UseTreeKind::Nested(..) => {
e.note("glob-like brace syntax must be last on the path").emit();
}
_ => (),
}
return Err(e);
}

(Ident::invalid(), ItemKind::Use(P(tree)))
} else if self.check_fn_front_matter() {
// FUNCTION ITEM
Expand Down
2 changes: 2 additions & 0 deletions src/test/ui/parser/import-from-path.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ error: expected `;`, found `::`
|
LL | use foo::{bar}::baz
| ^^ expected `;`
|
= note: glob-like brace syntax must be last on the path

error: aborting due to previous error

2 changes: 2 additions & 0 deletions src/test/ui/parser/import-from-rename.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ error: expected `;`, found keyword `as`
|
LL | use foo::{bar} as baz;
| ^^ expected `;`
|
= note: glob-like brace syntax must be last on the path

error: aborting due to previous error

2 changes: 2 additions & 0 deletions src/test/ui/parser/import-glob-path.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ error: expected `;`, found `::`
|
LL | use foo::*::bar
| ^^ expected `;`
|
= note: the wildcard token must be last on the path

error: aborting due to previous error

2 changes: 2 additions & 0 deletions src/test/ui/parser/import-glob-rename.stderr
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ error: expected `;`, found keyword `as`
|
LL | use foo::* as baz;
| ^^ expected `;`
|
= note: the wildcard token must be last on the path

error: aborting due to previous error

0 comments on commit d063745

Please sign in to comment.