Add a note for * and {} usage on use

This commit is contained in:
Yuki Okushi 2020-12-31 07:40:54 +09:00
parent 9155a9dae5
commit d063745023
5 changed files with 24 additions and 1 deletions

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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