diff options
| author | Seiichi Uchida <seuchida@gmail.com> | 2018-01-27 16:15:00 +0900 |
|---|---|---|
| committer | Seiichi Uchida <seuchida@gmail.com> | 2018-02-18 00:10:40 +0900 |
| commit | 0bddba9248674fe9fde68d3e31fcc9afee7b505c (patch) | |
| tree | f4f331479bbc1cfe706d9b167dfbfcf560fb95a1 /src/libsyntax | |
| parent | 01a70c65892eea8cdf9d6a5f72ea003897eb61c6 (diff) | |
| download | rust-0bddba9248674fe9fde68d3e31fcc9afee7b505c.tar.gz rust-0bddba9248674fe9fde68d3e31fcc9afee7b505c.zip | |
Add a span field to Visibility::Restricted
This span covers the whole visibility expression: e.g. `pub (in path)`.
Diffstat (limited to 'src/libsyntax')
| -rw-r--r-- | src/libsyntax/ast.rs | 2 | ||||
| -rw-r--r-- | src/libsyntax/fold.rs | 5 | ||||
| -rw-r--r-- | src/libsyntax/parse/parser.rs | 12 | ||||
| -rw-r--r-- | src/libsyntax/visit.rs | 2 |
4 files changed, 15 insertions, 6 deletions
diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index c7ab6158256..54b6e166e39 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -1941,7 +1941,7 @@ pub enum CrateSugar { pub enum Visibility { Public, Crate(Span, CrateSugar), - Restricted { path: P<Path>, id: NodeId }, + Restricted { path: P<Path>, id: NodeId, span: Span }, Inherited, } diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index 921ed3565a4..9e51379a9ee 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -1368,9 +1368,10 @@ pub fn noop_fold_stmt_kind<T: Folder>(node: StmtKind, folder: &mut T) -> SmallVe pub fn noop_fold_vis<T: Folder>(vis: Visibility, folder: &mut T) -> Visibility { match vis { - Visibility::Restricted { path, id } => Visibility::Restricted { + Visibility::Restricted { path, id, span } => Visibility::Restricted { path: path.map(|path| folder.fold_path(path)), - id: folder.new_id(id) + id: folder.new_id(id), + span: folder.new_span(span), }, _ => vis, } diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index effc5f75f6a..230c0bff917 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -5710,8 +5710,12 @@ impl<'a> Parser<'a> { self.bump(); // `(` self.bump(); // `in` let path = self.parse_path(PathStyle::Mod)?.default_to_global(); // `path` - let vis = Visibility::Restricted { path: P(path), id: ast::DUMMY_NODE_ID }; self.expect(&token::CloseDelim(token::Paren))?; // `)` + let vis = Visibility::Restricted { + path: P(path), + id: ast::DUMMY_NODE_ID, + span: self.prev_span, + }; return Ok(vis) } else if self.look_ahead(2, |t| t == &token::CloseDelim(token::Paren)) && self.look_ahead(1, |t| t.is_keyword(keywords::Super) || @@ -5720,8 +5724,12 @@ impl<'a> Parser<'a> { // `pub(self)` or `pub(super)` self.bump(); // `(` let path = self.parse_path(PathStyle::Mod)?.default_to_global(); // `super`/`self` - let vis = Visibility::Restricted { path: P(path), id: ast::DUMMY_NODE_ID }; self.expect(&token::CloseDelim(token::Paren))?; // `)` + let vis = Visibility::Restricted { + path: P(path), + id: ast::DUMMY_NODE_ID, + span: self.prev_span, + }; return Ok(vis) } else if !can_take_tuple { // Provide this diagnostic if this is not a tuple struct // `pub(something) fn ...` or `struct X { pub(something) y: Z }` diff --git a/src/libsyntax/visit.rs b/src/libsyntax/visit.rs index bbb123dab28..14679a9ebd1 100644 --- a/src/libsyntax/visit.rs +++ b/src/libsyntax/visit.rs @@ -811,7 +811,7 @@ pub fn walk_arm<'a, V: Visitor<'a>>(visitor: &mut V, arm: &'a Arm) { } pub fn walk_vis<'a, V: Visitor<'a>>(visitor: &mut V, vis: &'a Visibility) { - if let Visibility::Restricted { ref path, id } = *vis { + if let Visibility::Restricted { ref path, id, .. } = *vis { visitor.visit_path(path, id); } } |
