From 0f09c106f00d774a6e59b1245edcc536cc2bf459 Mon Sep 17 00:00:00 2001 From: Luqman Aden Date: Sun, 17 Feb 2013 21:45:00 -0500 Subject: [PATCH 1/2] libsyntax: Update view_item_use/import to reflect actual usage --- src/librustc/front/core_inject.rs | 5 +++-- src/librustc/front/test.rs | 4 ++-- src/librustc/metadata/creader.rs | 7 +++--- src/librustc/metadata/cstore.rs | 30 +++++++++++++------------- src/librustc/middle/resolve.rs | 10 ++++----- src/libsyntax/ast.rs | 4 ++-- src/libsyntax/ast_util.rs | 4 ++-- src/libsyntax/ext/build.rs | 2 +- src/libsyntax/ext/pipes/ast_builder.rs | 2 +- src/libsyntax/parse/parser.rs | 12 +++++------ src/libsyntax/print/pprust.rs | 4 ++-- 11 files changed, 43 insertions(+), 41 deletions(-) diff --git a/src/librustc/front/core_inject.rs b/src/librustc/front/core_inject.rs index 143eb556f96d..b7f0f5189c67 100644 --- a/src/librustc/front/core_inject.rs +++ b/src/librustc/front/core_inject.rs @@ -45,7 +45,8 @@ fn inject_libcore_ref(sess: Session, fold_crate: |crate, span, fld| { let n1 = sess.next_node_id(); let vi1 = @ast::view_item { - node: ast::view_item_use(sess.ident_of(~"core"), ~[], n1), + node: ast::view_item_extern_mod( + sess.ident_of(~"core"), ~[], n1), attrs: ~[ spanned(ast::attribute_ { style: ast::attr_inner, @@ -86,7 +87,7 @@ fn inject_libcore_ref(sess: Session, }; let vp = @spanned(ast::view_path_glob(prelude_path, n2)); - let vi2 = @ast::view_item { node: ast::view_item_import(~[vp]), + let vi2 = @ast::view_item { node: ast::view_item_use(~[vp]), attrs: ~[], vis: ast::private, span: dummy_sp() }; diff --git a/src/librustc/front/test.rs b/src/librustc/front/test.rs index caa2035389d6..7bd45d285b4a 100644 --- a/src/librustc/front/test.rs +++ b/src/librustc/front/test.rs @@ -266,13 +266,13 @@ fn mk_std(cx: &TestCtxt) -> @ast::view_item { let mi = nospan(mi); let id_std = cx.sess.ident_of(~"std"); let vi = if is_std(cx) { - ast::view_item_import( + ast::view_item_use( ~[@nospan(ast::view_path_simple(id_std, path_node(~[id_std]), ast::type_value_ns, cx.sess.next_node_id()))]) } else { - ast::view_item_use(id_std, ~[@mi], + ast::view_item_extern_mod(id_std, ~[@mi], cx.sess.next_node_id()) }; let vi = ast::view_item { diff --git a/src/librustc/metadata/creader.rs b/src/librustc/metadata/creader.rs index a2203f0a3998..51c34a869216 100644 --- a/src/librustc/metadata/creader.rs +++ b/src/librustc/metadata/creader.rs @@ -127,10 +127,11 @@ struct Env { fn visit_view_item(e: @mut Env, i: @ast::view_item) { match /*bad*/copy i.node { - ast::view_item_use(ident, meta_items, id) => { - debug!("resolving use stmt. ident: %?, meta: %?", ident, meta_items); + ast::view_item_extern_mod(ident, meta_items, id) => { + debug!("resolving extern mod stmt. ident: %?, meta: %?", + ident, meta_items); let cnum = resolve_crate(e, ident, meta_items, ~"", i.span); - cstore::add_use_stmt_cnum(e.cstore, id, cnum); + cstore::add_extern_mod_stmt_cnum(e.cstore, id, cnum); } _ => () } diff --git a/src/librustc/metadata/cstore.rs b/src/librustc/metadata/cstore.rs index 73ec872b6a6e..5b5f9bf08183 100644 --- a/src/librustc/metadata/cstore.rs +++ b/src/librustc/metadata/cstore.rs @@ -40,22 +40,22 @@ pub type crate_metadata = @{name: ~str, pub struct CStore { priv metas: oldmap::HashMap, - priv use_crate_map: use_crate_map, + priv extern_mod_crate_map: extern_mod_crate_map, priv used_crate_files: ~[Path], priv used_libraries: ~[~str], priv used_link_args: ~[~str], intr: @ident_interner } -// Map from node_id's of local use statements to crate numbers -type use_crate_map = oldmap::HashMap; +// Map from node_id's of local extern mod statements to crate numbers +type extern_mod_crate_map = oldmap::HashMap; pub fn mk_cstore(intr: @ident_interner) -> CStore { let meta_cache = oldmap::HashMap(); let crate_map = oldmap::HashMap(); return CStore { metas: meta_cache, - use_crate_map: crate_map, + extern_mod_crate_map: crate_map, used_crate_files: ~[], used_libraries: ~[], used_link_args: ~[], @@ -127,18 +127,18 @@ pub fn get_used_link_args(cstore: @mut CStore) -> ~[~str] { return /*bad*/copy cstore.used_link_args; } -pub fn add_use_stmt_cnum(cstore: @mut CStore, - use_id: ast::node_id, - cnum: ast::crate_num) { - let use_crate_map = cstore.use_crate_map; - use_crate_map.insert(use_id, cnum); +pub fn add_extern_mod_stmt_cnum(cstore: @mut CStore, + emod_id: ast::node_id, + cnum: ast::crate_num) { + let extern_mod_crate_map = cstore.extern_mod_crate_map; + extern_mod_crate_map.insert(emod_id, cnum); } -pub fn find_use_stmt_cnum(cstore: @mut CStore, - use_id: ast::node_id) +pub fn find_extern_mod_stmt_cnum(cstore: @mut CStore, + emod_id: ast::node_id) -> Option { - let use_crate_map = cstore.use_crate_map; - use_crate_map.find(&use_id) + let extern_mod_crate_map = cstore.extern_mod_crate_map; + extern_mod_crate_map.find(&emod_id) } // returns hashes of crates directly used by this crate. Hashes are @@ -147,8 +147,8 @@ pub fn get_dep_hashes(cstore: @mut CStore) -> ~[~str] { type crate_hash = {name: ~str, hash: ~str}; let mut result = ~[]; - let use_crate_map = cstore.use_crate_map; - for use_crate_map.each_value |&cnum| { + let extern_mod_crate_map = cstore.extern_mod_crate_map; + for extern_mod_crate_map.each_value |&cnum| { let cdata = cstore::get_crate_data(cstore, cnum); let hash = decoder::get_crate_hash(cdata.data); debug!("Add hash[%s]: %s", cdata.name, hash); diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs index 44b0da626b68..e67734179476 100644 --- a/src/librustc/middle/resolve.rs +++ b/src/librustc/middle/resolve.rs @@ -15,7 +15,7 @@ use driver::session::Session; use metadata::csearch::{each_path, get_method_names_if_trait}; use metadata::csearch::{get_static_methods_if_impl, get_struct_fields}; use metadata::csearch::{get_type_name_if_impl}; -use metadata::cstore::find_use_stmt_cnum; +use metadata::cstore::find_extern_mod_stmt_cnum; use metadata::decoder::{def_like, dl_def, dl_field, dl_impl}; use middle::lang_items::LanguageItems; use middle::lint::{deny, allow, forbid, level, unused_imports, warn}; @@ -55,7 +55,7 @@ use syntax::ast::{ty_bool, ty_char, ty_f, ty_f32, ty_f64, ty_float, ty_i}; use syntax::ast::{ty_i16, ty_i32, ty_i64, ty_i8, ty_int, ty_param, ty_path}; use syntax::ast::{ty_str, ty_u, ty_u16, ty_u32, ty_u64, ty_u8, ty_uint}; use syntax::ast::{type_value_ns, ty_param_bound, unnamed_field}; -use syntax::ast::{variant, view_item, view_item_import}; +use syntax::ast::{variant, view_item, view_item_extern_mod}; use syntax::ast::{view_item_use, view_path_glob, view_path_list}; use syntax::ast::{view_path_simple, visibility, anonymous, named, not}; use syntax::ast::{unsafe_fn}; @@ -1388,7 +1388,7 @@ pub impl Resolver { &&_visitor: vt) { let privacy = visibility_to_privacy(view_item.vis); match /*bad*/copy view_item.node { - view_item_import(view_paths) => { + view_item_use(view_paths) => { for view_paths.each |view_path| { // Extract and intern the module part of the path. For // globs and lists, the path is found directly in the AST; @@ -1462,8 +1462,8 @@ pub impl Resolver { } } - view_item_use(name, _, node_id) => { - match find_use_stmt_cnum(self.session.cstore, node_id) { + view_item_extern_mod(name, _, node_id) => { + match find_extern_mod_stmt_cnum(self.session.cstore, node_id) { Some(crate_id) => { let (child_name_bindings, new_parent) = self.add_child(name, parent, ForbidDuplicateTypes, diff --git a/src/libsyntax/ast.rs b/src/libsyntax/ast.rs index 5fcc53a407bc..bf64402d2375 100644 --- a/src/libsyntax/ast.rs +++ b/src/libsyntax/ast.rs @@ -1121,8 +1121,8 @@ pub struct view_item { #[auto_decode] #[deriving_eq] pub enum view_item_ { - view_item_use(ident, ~[@meta_item], node_id), - view_item_import(~[@view_path]), + view_item_extern_mod(ident, ~[@meta_item], node_id), + view_item_use(~[@view_path]), } // Meta-data associated with an item diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index f7ae20580954..9f7b28c36f59 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -395,8 +395,8 @@ pub fn id_visitor(vfn: fn@(node_id)) -> visit::vt<()> { visit_view_item: fn@(vi: @view_item) { match vi.node { - view_item_use(_, _, id) => vfn(id), - view_item_import(vps) => { + view_item_extern_mod(_, _, id) => vfn(id), + view_item_use(vps) => { for vec::each(vps) |vp| { match vp.node { view_path_simple(_, _, _, id) => vfn(id), diff --git a/src/libsyntax/ext/build.rs b/src/libsyntax/ext/build.rs index 963ea5bfe332..0a6840ceea0b 100644 --- a/src/libsyntax/ext/build.rs +++ b/src/libsyntax/ext/build.rs @@ -192,7 +192,7 @@ pub fn mk_glob_use(cx: ext_ctxt, node: ast::view_path_glob(mk_raw_path(sp, path), cx.next_id()), span: sp, }; - @ast::view_item { node: ast::view_item_import(~[glob]), + @ast::view_item { node: ast::view_item_use(~[glob]), attrs: ~[], vis: ast::private, span: sp } diff --git a/src/libsyntax/ext/pipes/ast_builder.rs b/src/libsyntax/ext/pipes/ast_builder.rs index 12e5f1891aa8..ea090f008fc3 100644 --- a/src/libsyntax/ext/pipes/ast_builder.rs +++ b/src/libsyntax/ext/pipes/ast_builder.rs @@ -310,7 +310,7 @@ pub impl ext_ctxt_ast_builder for ext_ctxt { +items: ~[@ast::item]) -> @ast::item { // XXX: Total hack: import `core::kinds::Owned` to work around a // parser bug whereby `fn f` doesn't parse. - let vi = ast::view_item_import(~[ + let vi = ast::view_item_use(~[ @codemap::spanned { node: ast::view_path_simple( self.ident_of(~"Owned"), diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 799f0d40a461..fa51d4c29d24 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -54,7 +54,7 @@ use ast::{ty_infer, ty_mac, ty_method}; use ast::{ty_nil, ty_param, ty_param_bound, ty_path, ty_ptr, ty_rec, ty_rptr}; use ast::{ty_tup, ty_u32, ty_uniq, ty_vec, type_value_ns, uniq}; use ast::{unnamed_field, unsafe_blk, unsafe_fn, variant, view_item}; -use ast::{view_item_, view_item_import, view_item_use}; +use ast::{view_item_, view_item_extern_mod, view_item_use}; use ast::{view_path, view_path_glob, view_path_list, view_path_simple}; use ast::{visibility, vstore, vstore_box, vstore_fixed, vstore_slice}; use ast::{vstore_uniq}; @@ -3503,7 +3503,7 @@ pub impl Parser { let metadata = self.parse_optional_meta(); self.expect(token::SEMI); iovi_view_item(@ast::view_item { - node: view_item_use(ident, metadata, self.get_id()), + node: view_item_extern_mod(ident, metadata, self.get_id()), attrs: attrs, vis: visibility, span: mk_sp(lo, self.last_span.hi) @@ -3884,7 +3884,7 @@ pub impl Parser { } fn parse_use() -> view_item_ { - return view_item_import(self.parse_view_paths()); + return view_item_use(self.parse_view_paths()); } fn parse_view_path() -> @view_path { @@ -4006,7 +4006,7 @@ pub impl Parser { self.expect_keyword(~"mod"); let ident = self.parse_ident(); let metadata = self.parse_optional_meta(); - view_item_use(ident, metadata, self.get_id()) + view_item_extern_mod(ident, metadata, self.get_id()) } else { fail!(); }; @@ -4053,8 +4053,8 @@ pub impl Parser { iovi_view_item(view_item) => { if restricted_to_imports { match view_item.node { - view_item_import(_) => {} - view_item_use(*) => + view_item_use(*) => {} + view_item_extern_mod(*) => self.fatal(~"\"extern mod\" \ declarations are not \ allowed here") diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index b05461aa8d98..d5cba4312b7a 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -1859,7 +1859,7 @@ pub fn print_view_item(s: @ps, item: @ast::view_item) { print_outer_attributes(s, item.attrs); print_visibility(s, item.vis); match item.node { - ast::view_item_use(id, mta, _) => { + ast::view_item_extern_mod(id, mta, _) => { head(s, ~"extern mod"); print_ident(s, id); if !mta.is_empty() { @@ -1869,7 +1869,7 @@ pub fn print_view_item(s: @ps, item: @ast::view_item) { } } - ast::view_item_import(vps) => { + ast::view_item_use(vps) => { head(s, ~"use"); print_view_paths(s, vps); } From 5b5ac331db98bdcf74124e7b55309501e080146d Mon Sep 17 00:00:00 2001 From: Luqman Aden Date: Sun, 17 Feb 2013 21:53:29 -0500 Subject: [PATCH 2/2] Long lines. --- src/librustc/middle/resolve.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs index e67734179476..f159d4228ecf 100644 --- a/src/librustc/middle/resolve.rs +++ b/src/librustc/middle/resolve.rs @@ -1463,7 +1463,8 @@ pub impl Resolver { } view_item_extern_mod(name, _, node_id) => { - match find_extern_mod_stmt_cnum(self.session.cstore, node_id) { + match find_extern_mod_stmt_cnum(self.session.cstore, + node_id) { Some(crate_id) => { let (child_name_bindings, new_parent) = self.add_child(name, parent, ForbidDuplicateTypes,