1
Fork 0

extern crate foobar as foo;

Implements remaining part of RFC #47.
Addresses issue #16461.

Removed link_attrs from rust.md, they don't appear to be supported by
the parser.

Changed all the tests to use the new extern crate syntax

Change pretty printer to use 'as' syntax
This commit is contained in:
wickerwaka 2014-08-22 21:02:00 -07:00
parent 6843d8ccd5
commit c0e003d5ad
70 changed files with 96 additions and 89 deletions

View file

@ -4825,7 +4825,8 @@ impl<'a> Parser<'a> {
/// # Example
///
/// extern crate url;
/// extern crate foo = "bar";
/// extern crate foo = "bar"; //deprecated
/// extern crate "bar" as foo;
fn parse_item_extern_crate(&mut self,
lo: BytePos,
visibility: Visibility,
@ -4836,6 +4837,8 @@ impl<'a> Parser<'a> {
token::IDENT(..) => {
let the_ident = self.parse_ident();
self.expect_one_of(&[], &[token::EQ, token::SEMI]);
// NOTE - #16689 change this to a warning once
// the 'as' support is in stage0
let path = if self.token == token::EQ {
self.bump();
Some(self.parse_str())
@ -4843,7 +4846,14 @@ impl<'a> Parser<'a> {
self.expect(&token::SEMI);
(path, the_ident)
}
},
token::LIT_STR(..) | token::LIT_STR_RAW(..) => {
let path = self.parse_str();
self.expect_keyword(keywords::As);
let the_ident = self.parse_ident();
self.expect(&token::SEMI);
(Some(path), the_ident)
},
_ => {
let span = self.span;
let token_str = self.this_token_to_string();