Skip to content

Commit 1aa43af

Browse files
committed
parse full visibility when recovering
1 parent b2b9555 commit 1aa43af

File tree

3 files changed

+19
-7
lines changed

3 files changed

+19
-7
lines changed

src/libsyntax/parse/parser.rs

+9-5
Original file line numberDiff line numberDiff line change
@@ -8623,11 +8623,15 @@ impl<'a> Parser<'a> {
86238623
/// Recover from `pub` keyword in places where it seems _reasonable_ but isn't valid.
86248624
fn eat_bad_pub(&mut self) {
86258625
if self.token.is_keyword(keywords::Pub) {
8626-
self.bump();
8627-
let mut err = self.diagnostic()
8628-
.struct_span_err(self.prev_span, "unnecessary visibility qualifier");
8629-
err.span_label(self.prev_span, "`pub` not permitted here");
8630-
err.emit();
8626+
match self.parse_visibility(false) {
8627+
Ok(vis) => {
8628+
let mut err = self.diagnostic()
8629+
.struct_span_err(vis.span, "unnecessary visibility qualifier");
8630+
err.span_label(vis.span, "`pub` not permitted here");
8631+
err.emit();
8632+
}
8633+
Err(mut err) => err.emit(),
8634+
}
86318635
}
86328636
}
86338637
}

src/test/ui/issues/issue-28433.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,9 @@
33
enum Bird {
44
pub Duck,
55
//~^ ERROR unnecessary visibility qualifier
6-
Goose
6+
Goose,
7+
pub(crate) Dove
8+
//~^ ERROR unnecessary visibility qualifier
79
}
810

911

src/test/ui/issues/issue-28433.stderr

+7-1
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,11 @@ error: unnecessary visibility qualifier
44
LL | pub Duck,
55
| ^^^ `pub` not permitted here
66

7-
error: aborting due to previous error
7+
error: unnecessary visibility qualifier
8+
--> $DIR/issue-28433.rs:7:5
9+
|
10+
LL | pub(crate) Dove
11+
| ^^^^^^^^^^ `pub` not permitted here
12+
13+
error: aborting due to 2 previous errors
814

0 commit comments

Comments
 (0)