1
Fork 0

AST/HIR: Clarify what the optional name in extern crate items mean

This commit is contained in:
Vadim Petrochenkov 2018-03-09 18:51:48 +03:00
parent 61b6bf54fd
commit c6c6cf9515
16 changed files with 42 additions and 58 deletions

View file

@ -6291,23 +6291,17 @@ impl<'a> Parser<'a> {
lo: Span,
visibility: Visibility,
attrs: Vec<Attribute>)
-> PResult<'a, P<Item>> {
let crate_name = self.parse_ident()?;
let (maybe_path, ident) = if let Some(ident) = self.parse_rename()? {
(Some(crate_name.name), ident)
-> PResult<'a, P<Item>> {
let orig_name = self.parse_ident()?;
let (item_name, orig_name) = if let Some(rename) = self.parse_rename()? {
(rename, Some(orig_name.name))
} else {
(None, crate_name)
(orig_name, None)
};
self.expect(&token::Semi)?;
let prev_span = self.prev_span;
Ok(self.mk_item(lo.to(prev_span),
ident,
ItemKind::ExternCrate(maybe_path),
visibility,
attrs))
let span = lo.to(self.prev_span);
Ok(self.mk_item(span, item_name, ItemKind::ExternCrate(orig_name), visibility, attrs))
}
/// Parse `extern` for foreign ABIs