Skip to content

Commit 4846aff

Browse files
committed
rustc: "extern mod { ... }" should be written "extern { ... }" instead
1 parent c3ac0f8 commit 4846aff

File tree

4 files changed

+25
-8
lines changed

4 files changed

+25
-8
lines changed

src/libsyntax/parse/parser.rs

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2915,15 +2915,34 @@ struct parser {
29152915
attrs: ~[attribute],
29162916
items_allowed: bool)
29172917
-> item_or_view_item {
2918+
2919+
let mut must_be_named_mod = false;
29182920
if self.is_keyword(~"mod") {
2921+
must_be_named_mod = true;
29192922
self.expect_keyword(~"mod");
2920-
} else {
2923+
} else if self.is_keyword(~"module") {
2924+
must_be_named_mod = true;
29212925
self.expect_keyword(~"module");
2926+
} else if self.token != token::LBRACE {
2927+
self.span_fatal(copy self.span,
2928+
fmt!("expected `{` or `mod` but found %s",
2929+
token_to_str(self.reader, self.token)));
29222930
}
2931+
29232932
let (sort, ident) = match self.token {
2924-
token::IDENT(*) => (ast::named, self.parse_ident()),
2925-
_ => (ast::anonymous,
2926-
token::special_idents::clownshoes_foreign_mod)
2933+
token::IDENT(*) => (ast::named, self.parse_ident()),
2934+
_ => {
2935+
if must_be_named_mod {
2936+
self.span_fatal(copy self.span,
2937+
fmt!("expected foreign module name but \
2938+
found %s",
2939+
token_to_str(self.reader,
2940+
self.token)));
2941+
}
2942+
2943+
(ast::anonymous,
2944+
token::special_idents::clownshoes_foreign_mod)
2945+
}
29272946
};
29282947

29292948
// extern mod { ... }

src/rustc/metadata/encoder.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -823,7 +823,6 @@ fn encode_info_for_foreign_item(ecx: @encode_ctxt, ebml_w: ebml::Writer,
823823
encode_type(ecx, ebml_w, node_id_to_type(ecx.tcx, nitem.id));
824824
encode_symbol(ecx, ebml_w, nitem.id);
825825
encode_path(ecx, ebml_w, path, ast_map::path_name(nitem.ident));
826-
ebml_w.end_tag();
827826
}
828827
}
829828
ebml_w.end_tag();

src/rustc/middle/trans/base.rs

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5528,7 +5528,6 @@ fn get_item_val(ccx: @crate_ctxt, id: ast::node_id) -> ValueRef {
55285528
let g = do str::as_c_str(*ident) |buf| {
55295529
llvm::LLVMAddGlobal(ccx.llmod, type_of(ccx, typ), buf)
55305530
};
5531-
ccx.item_symbols.insert(ni.id, copy *ident);
55325531
g
55335532
}
55345533
}

src/test/run-pass/anon-extern-mod.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
11
#[abi = "cdecl"]
22
#[link_name = "rustrt"]
3-
extern mod {
3+
extern {
44
fn last_os_error() -> ~str;
55
}
66

77
fn main() {
88
last_os_error();
9-
}
9+
}

0 commit comments

Comments
 (0)