rustc: rename multiple imports in a list
This commit is contained in:
parent
d03456183e
commit
cfcd449c4c
16 changed files with 170 additions and 34 deletions
|
@ -573,10 +573,12 @@ impl<'a> Parser<'a> {
|
|||
pub fn parse_path_list_item(&mut self) -> PResult<ast::PathListItem> {
|
||||
let lo = self.span.lo;
|
||||
let node = if try!(self.eat_keyword(keywords::SelfValue)) {
|
||||
ast::PathListMod { id: ast::DUMMY_NODE_ID }
|
||||
let rename = try!(self.parse_rename());
|
||||
ast::PathListMod { id: ast::DUMMY_NODE_ID, rename: rename }
|
||||
} else {
|
||||
let ident = try!(self.parse_ident());
|
||||
ast::PathListIdent { name: ident, id: ast::DUMMY_NODE_ID }
|
||||
let rename = try!(self.parse_rename());
|
||||
ast::PathListIdent { name: ident, rename: rename, id: ast::DUMMY_NODE_ID }
|
||||
};
|
||||
let hi = self.last_span.hi;
|
||||
Ok(spanned(lo, hi, node))
|
||||
|
@ -5104,8 +5106,8 @@ impl<'a> Parser<'a> {
|
|||
-> PResult<P<Item>> {
|
||||
|
||||
let crate_name = try!(self.parse_ident());
|
||||
let (maybe_path, ident) = if try!(self.eat_keyword(keywords::As)) {
|
||||
(Some(crate_name.name), try!(self.parse_ident()))
|
||||
let (maybe_path, ident) = if let Some(ident) = try!(self.parse_rename()) {
|
||||
(Some(crate_name.name), ident)
|
||||
} else {
|
||||
(None, crate_name)
|
||||
};
|
||||
|
@ -5766,12 +5768,18 @@ impl<'a> Parser<'a> {
|
|||
}
|
||||
}).collect()
|
||||
};
|
||||
if try!(self.eat_keyword(keywords::As)) {
|
||||
rename_to = try!(self.parse_ident())
|
||||
}
|
||||
rename_to = try!(self.parse_rename()).unwrap_or(rename_to);
|
||||
Ok(P(spanned(lo, self.last_span.hi, ViewPathSimple(rename_to, path))))
|
||||
}
|
||||
|
||||
fn parse_rename(&mut self) -> PResult<Option<Ident>> {
|
||||
if try!(self.eat_keyword(keywords::As)) {
|
||||
self.parse_ident().map(Some)
|
||||
} else {
|
||||
Ok(None)
|
||||
}
|
||||
}
|
||||
|
||||
/// Parses a source module as a crate. This is the main
|
||||
/// entry point for the parser.
|
||||
pub fn parse_crate_mod(&mut self) -> PResult<Crate> {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue