Skip to content

Commit 61c43b4

Browse files
committed
Auto merge of #26091 - chellmuth:pub-struct-field-span, r=nrc
Issue: #26083 Re-submitting #26084 r? @nrc
2 parents 115121d + 9057272 commit 61c43b4

File tree

2 files changed

+34
-1
lines changed

2 files changed

+34
-1
lines changed

src/libsyntax/parse/parser.rs

+4-1
Original file line numberDiff line numberDiff line change
@@ -3394,7 +3394,10 @@ impl<'a> Parser<'a> {
33943394
/// Parse a structure field
33953395
fn parse_name_and_ty(&mut self, pr: Visibility,
33963396
attrs: Vec<Attribute> ) -> PResult<StructField> {
3397-
let lo = self.span.lo;
3397+
let lo = match pr {
3398+
Inherited => self.span.lo,
3399+
Public => self.last_span.lo,
3400+
};
33983401
if !self.token.is_plain_ident() {
33993402
return Err(self.fatal("expected ident"));
34003403
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
// Copyright 2015 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
// Regression test for issue #26083
12+
// Test that span for public struct fields start at `pub` instead of the identifier
13+
14+
struct Foo {
15+
pub bar: u8,
16+
17+
pub
18+
//~^ error: field `bar` is already declared [E0124]
19+
bar: u8,
20+
21+
pub bar:
22+
//~^ error: field `bar` is already declared [E0124]
23+
u8,
24+
25+
bar:
26+
//~^ error: field `bar` is already declared [E0124]
27+
u8,
28+
}
29+
30+
fn main() { }

0 commit comments

Comments
 (0)