Refactor away ExternalExports
This commit is contained in:
parent
cbae67aea7
commit
2998564615
4 changed files with 3 additions and 31 deletions
|
|
@ -761,7 +761,6 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
|
||||||
freevars,
|
freevars,
|
||||||
export_map,
|
export_map,
|
||||||
trait_map,
|
trait_map,
|
||||||
external_exports,
|
|
||||||
glob_map,
|
glob_map,
|
||||||
} = time(time_passes,
|
} = time(time_passes,
|
||||||
"resolution",
|
"resolution",
|
||||||
|
|
@ -822,9 +821,7 @@ pub fn phase_3_run_analysis_passes<'tcx, F, R>(sess: &'tcx Session,
|
||||||
|
|
||||||
analysis.access_levels =
|
analysis.access_levels =
|
||||||
time(time_passes, "privacy checking", || {
|
time(time_passes, "privacy checking", || {
|
||||||
rustc_privacy::check_crate(tcx,
|
rustc_privacy::check_crate(tcx, &analysis.export_map)
|
||||||
&analysis.export_map,
|
|
||||||
external_exports)
|
|
||||||
});
|
});
|
||||||
|
|
||||||
// Do not move this check past lint
|
// Do not move this check past lint
|
||||||
|
|
|
||||||
|
|
@ -42,7 +42,6 @@ use rustc::middle::cstore::CrateStore;
|
||||||
use rustc::middle::def::{self, Def};
|
use rustc::middle::def::{self, Def};
|
||||||
use rustc::middle::def_id::DefId;
|
use rustc::middle::def_id::DefId;
|
||||||
use rustc::middle::privacy::{AccessLevel, AccessLevels};
|
use rustc::middle::privacy::{AccessLevel, AccessLevels};
|
||||||
use rustc::middle::privacy::ExternalExports;
|
|
||||||
use rustc::middle::ty::{self, TyCtxt};
|
use rustc::middle::ty::{self, TyCtxt};
|
||||||
use rustc::util::nodemap::{NodeMap, NodeSet};
|
use rustc::util::nodemap::{NodeMap, NodeSet};
|
||||||
use rustc::front::map as ast_map;
|
use rustc::front::map as ast_map;
|
||||||
|
|
@ -477,7 +476,6 @@ struct PrivacyVisitor<'a, 'tcx: 'a> {
|
||||||
curitem: ast::NodeId,
|
curitem: ast::NodeId,
|
||||||
in_foreign: bool,
|
in_foreign: bool,
|
||||||
parents: NodeMap<ast::NodeId>,
|
parents: NodeMap<ast::NodeId>,
|
||||||
external_exports: ExternalExports,
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug)]
|
#[derive(Debug)]
|
||||||
|
|
@ -1568,10 +1566,7 @@ impl<'a, 'tcx, 'v> Visitor<'v> for PrivateItemsInPublicInterfacesVisitor<'a, 'tc
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn check_crate(tcx: &TyCtxt,
|
pub fn check_crate(tcx: &TyCtxt, export_map: &def::ExportMap) -> AccessLevels {
|
||||||
export_map: &def::ExportMap,
|
|
||||||
external_exports: ExternalExports)
|
|
||||||
-> AccessLevels {
|
|
||||||
let _task = tcx.dep_graph.in_task(DepNode::Privacy);
|
let _task = tcx.dep_graph.in_task(DepNode::Privacy);
|
||||||
|
|
||||||
let krate = tcx.map.krate();
|
let krate = tcx.map.krate();
|
||||||
|
|
@ -1594,7 +1589,6 @@ pub fn check_crate(tcx: &TyCtxt,
|
||||||
in_foreign: false,
|
in_foreign: false,
|
||||||
tcx: tcx,
|
tcx: tcx,
|
||||||
parents: visitor.parents,
|
parents: visitor.parents,
|
||||||
external_exports: external_exports,
|
|
||||||
};
|
};
|
||||||
intravisit::walk_crate(&mut visitor, krate);
|
intravisit::walk_crate(&mut visitor, krate);
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -289,7 +289,6 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
|
||||||
krate: crate_id,
|
krate: crate_id,
|
||||||
index: CRATE_DEF_INDEX,
|
index: CRATE_DEF_INDEX,
|
||||||
};
|
};
|
||||||
self.external_exports.insert(def_id);
|
|
||||||
let parent_link = ModuleParentLink(parent, name);
|
let parent_link = ModuleParentLink(parent, name);
|
||||||
let def = Def::Mod(def_id);
|
let def = Def::Mod(def_id);
|
||||||
let module = self.new_extern_crate_module(parent_link, def, is_public, item.id);
|
let module = self.new_extern_crate_module(parent_link, def, is_public, item.id);
|
||||||
|
|
@ -495,15 +494,6 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
|
||||||
modifiers = modifiers | DefModifiers::IMPORTABLE;
|
modifiers = modifiers | DefModifiers::IMPORTABLE;
|
||||||
}
|
}
|
||||||
|
|
||||||
let is_exported = is_public &&
|
|
||||||
match new_parent.def_id() {
|
|
||||||
None => true,
|
|
||||||
Some(did) => self.external_exports.contains(&did),
|
|
||||||
};
|
|
||||||
if is_exported {
|
|
||||||
self.external_exports.insert(def.def_id());
|
|
||||||
}
|
|
||||||
|
|
||||||
match def {
|
match def {
|
||||||
Def::Mod(_) | Def::ForeignMod(_) | Def::Enum(..) | Def::TyAlias(..) => {
|
Def::Mod(_) | Def::ForeignMod(_) | Def::Enum(..) | Def::TyAlias(..) => {
|
||||||
debug!("(building reduced graph for external crate) building module {} {}",
|
debug!("(building reduced graph for external crate) building module {} {}",
|
||||||
|
|
@ -552,10 +542,6 @@ impl<'a, 'b:'a, 'tcx:'b> GraphBuilder<'a, 'b, 'tcx> {
|
||||||
trait_item_name);
|
trait_item_name);
|
||||||
|
|
||||||
self.trait_item_map.insert((trait_item_name, def_id), trait_item_def.def_id());
|
self.trait_item_map.insert((trait_item_name, def_id), trait_item_def.def_id());
|
||||||
|
|
||||||
if is_exported {
|
|
||||||
self.external_exports.insert(trait_item_def.def_id());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
let parent_link = ModuleParentLink(new_parent, name);
|
let parent_link = ModuleParentLink(new_parent, name);
|
||||||
|
|
|
||||||
|
|
@ -55,10 +55,9 @@ use rustc::middle::cstore::{CrateStore, DefLike, DlDef};
|
||||||
use rustc::middle::def::*;
|
use rustc::middle::def::*;
|
||||||
use rustc::middle::def_id::DefId;
|
use rustc::middle::def_id::DefId;
|
||||||
use rustc::middle::pat_util::pat_bindings;
|
use rustc::middle::pat_util::pat_bindings;
|
||||||
use rustc::middle::privacy::ExternalExports;
|
|
||||||
use rustc::middle::subst::{ParamSpace, FnSpace, TypeSpace};
|
use rustc::middle::subst::{ParamSpace, FnSpace, TypeSpace};
|
||||||
use rustc::middle::ty::{Freevar, FreevarMap, TraitMap, GlobMap};
|
use rustc::middle::ty::{Freevar, FreevarMap, TraitMap, GlobMap};
|
||||||
use rustc::util::nodemap::{NodeMap, DefIdSet, FnvHashMap};
|
use rustc::util::nodemap::{NodeMap, FnvHashMap};
|
||||||
|
|
||||||
use syntax::ast::{self, FloatTy};
|
use syntax::ast::{self, FloatTy};
|
||||||
use syntax::ast::{CRATE_NODE_ID, Name, NodeId, CrateNum, IntTy, UintTy};
|
use syntax::ast::{CRATE_NODE_ID, Name, NodeId, CrateNum, IntTy, UintTy};
|
||||||
|
|
@ -1093,7 +1092,6 @@ pub struct Resolver<'a, 'tcx: 'a> {
|
||||||
freevars_seen: NodeMap<NodeMap<usize>>,
|
freevars_seen: NodeMap<NodeMap<usize>>,
|
||||||
export_map: ExportMap,
|
export_map: ExportMap,
|
||||||
trait_map: TraitMap,
|
trait_map: TraitMap,
|
||||||
external_exports: ExternalExports,
|
|
||||||
|
|
||||||
// Whether or not to print error messages. Can be set to true
|
// Whether or not to print error messages. Can be set to true
|
||||||
// when getting additional info for error message suggestions,
|
// when getting additional info for error message suggestions,
|
||||||
|
|
@ -1184,7 +1182,6 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||||
trait_map: NodeMap(),
|
trait_map: NodeMap(),
|
||||||
used_imports: HashSet::new(),
|
used_imports: HashSet::new(),
|
||||||
used_crates: HashSet::new(),
|
used_crates: HashSet::new(),
|
||||||
external_exports: DefIdSet(),
|
|
||||||
|
|
||||||
emit_errors: true,
|
emit_errors: true,
|
||||||
make_glob_map: make_glob_map == MakeGlobMap::Yes,
|
make_glob_map: make_glob_map == MakeGlobMap::Yes,
|
||||||
|
|
@ -3716,7 +3713,6 @@ pub struct CrateMap {
|
||||||
pub freevars: FreevarMap,
|
pub freevars: FreevarMap,
|
||||||
pub export_map: ExportMap,
|
pub export_map: ExportMap,
|
||||||
pub trait_map: TraitMap,
|
pub trait_map: TraitMap,
|
||||||
pub external_exports: ExternalExports,
|
|
||||||
pub glob_map: Option<GlobMap>,
|
pub glob_map: Option<GlobMap>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -3754,7 +3750,6 @@ pub fn resolve_crate<'a, 'tcx>(session: &'a Session,
|
||||||
freevars: resolver.freevars,
|
freevars: resolver.freevars,
|
||||||
export_map: resolver.export_map,
|
export_map: resolver.export_map,
|
||||||
trait_map: resolver.trait_map,
|
trait_map: resolver.trait_map,
|
||||||
external_exports: resolver.external_exports,
|
|
||||||
glob_map: if resolver.make_glob_map {
|
glob_map: if resolver.make_glob_map {
|
||||||
Some(resolver.glob_map)
|
Some(resolver.glob_map)
|
||||||
} else {
|
} else {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue