libsyntax: Remove extern mod foo { ... } from the language.

This commit is contained in:
Patrick Walton
2013-05-09 14:14:42 -07:00
parent 830b945a9d
commit 06ef889cdc
9 changed files with 160 additions and 146 deletions

View File

@@ -82,6 +82,7 @@ use parse::obsolete::ObsoleteMode;
use parse::obsolete::{ObsoleteLifetimeNotation, ObsoleteConstManagedPointer};
use parse::obsolete::{ObsoletePurity, ObsoleteStaticMethod};
use parse::obsolete::{ObsoleteConstItem, ObsoleteFixedLengthVectorType};
use parse::obsolete::{ObsoleteNamedExternModule};
use parse::token::{can_begin_expr, is_ident, is_ident_or_path};
use parse::token::{is_plain_ident, INTERPOLATED, special_idents, token_to_binop};
use parse::token;
@@ -415,8 +416,7 @@ pub impl Parser {
self.expect_keyword(&~"fn");
if self.parse_fn_ty_sigil().is_some() {
self.obsolete(*self.span,
ObsoletePostFnTySigil);
self.obsolete(*self.span, ObsoletePostFnTySigil);
}
let (decl, lifetimes) = self.parse_ty_fn_decl();
@@ -3688,10 +3688,11 @@ pub impl Parser {
// at this point, this is essentially a wrapper for
// parse_foreign_items.
fn parse_foreign_mod_items(&self, sort: ast::foreign_mod_sort,
fn parse_foreign_mod_items(&self,
sort: ast::foreign_mod_sort,
abis: AbiSet,
first_item_attrs: ~[attribute])
-> foreign_mod {
-> foreign_mod {
let ParsedItemsAndViewItems {
attrs_remaining: _,
view_items: view_items,
@@ -3714,8 +3715,7 @@ pub impl Parser {
visibility: visibility,
attrs: ~[attribute],
items_allowed: bool)
-> item_or_view_item
{
-> item_or_view_item {
let mut must_be_named_mod = false;
if self.is_keyword(&~"mod") {
must_be_named_mod = true;
@@ -3750,6 +3750,11 @@ pub impl Parser {
// extern mod foo { ... } or extern { ... }
if items_allowed && self.eat(&token::LBRACE) {
// `extern mod foo { ... }` is obsolete.
if sort == ast::named {
self.obsolete(*self.last_span, ObsoleteNamedExternModule);
}
let abis = opt_abis.get_or_default(AbiSet::C());
let (inner, next) = self.parse_inner_attrs_and_next();