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,
};
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() };
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 {
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);
}
_ => ()
}
pub struct CStore {
priv metas: oldmap::HashMap<ast::crate_num, crate_metadata>,
- 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<ast::node_id, ast::crate_num>;
+// Map from node_id's of local extern mod statements to crate numbers
+type extern_mod_crate_map = oldmap::HashMap<ast::node_id, ast::crate_num>;
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: ~[],
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<ast::crate_num> {
- 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
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);
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};
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};
&&_visitor: vt<ReducedGraphParent>) {
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;
}
}
- 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,
#[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
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),
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 }
+items: ~[@ast::item]) -> @ast::item {
// XXX: Total hack: import `core::kinds::Owned` to work around a
// parser bug whereby `fn f<T: ::kinds::Owned>` 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"),
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};
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)
}
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 {
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!();
};
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")
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() {
}
}
- ast::view_item_import(vps) => {
+ ast::view_item_use(vps) => {
head(s, ~"use");
print_view_paths(s, vps);
}