diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index 8d782948c41..9eff923e651 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -166,7 +166,7 @@ pub fn phase_2_configure_and_expand(sess: Session, mut crate: ast::Crate) -> ast::Crate { let time_passes = sess.time_passes(); - *sess.building_library = session::building_library(sess.opts, &crate); + sess.building_library.set(session::building_library(sess.opts, &crate)); *sess.outputs = session::collect_outputs(sess.opts, crate.attrs); time(time_passes, "gated feature checking", (), |_| @@ -878,7 +878,7 @@ pub fn build_session_(sopts: @session::options, entry_type: Cell::new(None), span_diagnostic: span_diagnostic_handler, filesearch: filesearch, - building_library: @mut false, + building_library: Cell::new(false), working_dir: os::getcwd(), lints: RefCell::new(HashMap::new()), node_id: Cell::new(1), @@ -1039,7 +1039,7 @@ pub fn build_output_filenames(input: &input, } } - if *sess.building_library { + if sess.building_library.get() { out_path = dirpath.join(os::dll_filename(stem)); obj_path = { let mut p = dirpath.join(stem); @@ -1060,7 +1060,7 @@ pub fn build_output_filenames(input: &input, out_file.with_extension(obj_suffix) }; - if *sess.building_library { + if sess.building_library.get() { sess.warn("ignoring specified output filename for library."); } diff --git a/src/librustc/driver/session.rs b/src/librustc/driver/session.rs index 7880fcec241..8bcefbd7c76 100644 --- a/src/librustc/driver/session.rs +++ b/src/librustc/driver/session.rs @@ -210,7 +210,7 @@ pub struct Session_ { entry_type: Cell>, span_diagnostic: @mut diagnostic::span_handler, filesearch: @filesearch::FileSearch, - building_library: @mut bool, + building_library: Cell, working_dir: Path, lints: RefCell>, diff --git a/src/librustc/front/std_inject.rs b/src/librustc/front/std_inject.rs index 1503e4effeb..03f9a3459a3 100644 --- a/src/librustc/front/std_inject.rs +++ b/src/librustc/front/std_inject.rs @@ -69,7 +69,7 @@ impl fold::ast_fold for StandardLibraryInjector { span: dummy_sp() }]; - if use_uv(&crate) && !*self.sess.building_library { + if use_uv(&crate) && !self.sess.building_library.get() { vis.push(ast::view_item { node: ast::view_item_extern_mod(self.sess.ident_of("green"), None, diff --git a/src/librustc/front/test.rs b/src/librustc/front/test.rs index 86641598a13..47ef4b94058 100644 --- a/src/librustc/front/test.rs +++ b/src/librustc/front/test.rs @@ -127,7 +127,7 @@ impl fold::ast_fold for TestHarnessGenerator { // the one we're going to add. Only if compiling an executable. fn nomain(cx: @TestCtxt, item: @ast::item) -> @ast::item { - if !*cx.sess.building_library { + if !cx.sess.building_library.get() { @ast::item { attrs: item.attrs.iter().filter_map(|attr| { if "main" != attr.name() { diff --git a/src/librustc/middle/entry.rs b/src/librustc/middle/entry.rs index 0c50eb294d5..53a8b93c232 100644 --- a/src/librustc/middle/entry.rs +++ b/src/librustc/middle/entry.rs @@ -45,7 +45,7 @@ impl Visitor<()> for EntryContext { } pub fn find_entry_point(session: Session, crate: &Crate, ast_map: ast_map::map) { - if *session.building_library { + if session.building_library.get() { // No need to find a main function return; } @@ -131,7 +131,7 @@ fn configure_main(this: &mut EntryContext) { this.session.entry_fn.set(this.main_fn); this.session.entry_type.set(Some(session::EntryMain)); } else { - if !*this.session.building_library { + if !this.session.building_library.get() { // No main function this.session.err("main function not found"); if !this.non_main_fns.is_empty() { diff --git a/src/librustc/middle/reachable.rs b/src/librustc/middle/reachable.rs index 958fd20dfca..9a5e08e41aa 100644 --- a/src/librustc/middle/reachable.rs +++ b/src/librustc/middle/reachable.rs @@ -303,7 +303,7 @@ impl ReachableContext { fn propagate_node(&self, node: &ast_map::ast_node, search_item: ast::NodeId, visitor: &mut MarkSymbolVisitor) { - if !*self.tcx.sess.building_library { + if !self.tcx.sess.building_library.get() { // If we are building an executable, then there's no need to flag // anything as external except for `extern fn` types. These // functions may still participate in some form of native interface, diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs index e4bcfd3d1a7..0b2ee710e99 100644 --- a/src/librustc/middle/trans/base.rs +++ b/src/librustc/middle/trans/base.rs @@ -2344,7 +2344,7 @@ fn finish_register_fn(ccx: @CrateContext, sp: Span, sym: ~str, node_id: ast::Nod } } - if is_entry_fn(&ccx.sess, node_id) && !*ccx.sess.building_library { + if is_entry_fn(&ccx.sess, node_id) && !ccx.sess.building_library.get() { create_entry_wrapper(ccx, sp, llfn); } } @@ -2678,7 +2678,7 @@ pub fn get_item_val(ccx: @CrateContext, id: ast::NodeId) -> ValueRef { // library then we've already declared the crate map // so use that instead. if attr::contains_name(ni.attrs, "crate_map") { - if *ccx.sess.building_library { + if ccx.sess.building_library.get() { let s = "_rust_crate_map_toplevel"; let g = unsafe { s.with_c_str(|buf| { @@ -3044,7 +3044,7 @@ pub fn decl_crate_map(sess: session::Session, mapmeta: LinkMeta, let mut n_subcrates = 1; let cstore = sess.cstore; while cstore.have_crate_data(n_subcrates) { n_subcrates += 1; } - let is_top = !*sess.building_library || sess.gen_crate_map(); + let is_top = !sess.building_library.get() || sess.gen_crate_map(); let sym_name = if is_top { ~"_rust_crate_map_toplevel" } else { @@ -3154,7 +3154,9 @@ pub fn crate_ctxt_to_encode_parms<'r>(cx: &'r CrateContext, ie: encoder::encode_ pub fn write_metadata(cx: &CrateContext, crate: &ast::Crate) -> ~[u8] { use extra::flate; - if !*cx.sess.building_library { return ~[]; } + if !cx.sess.building_library.get() { + return ~[] + } let encode_inlined_item: encoder::encode_inlined_item = |ecx, ebml_w, path, ii| @@ -3227,8 +3229,7 @@ pub fn trans_crate(sess: session::Session, // __rust_crate_map_toplevel symbol (extra underscore) which it will // subsequently fail to find. So to mitigate that we just introduce // an alias from the symbol it expects to the one that actually exists. - if ccx.sess.targ_cfg.os == OsWin32 && - !*ccx.sess.building_library { + if ccx.sess.targ_cfg.os == OsWin32 && !ccx.sess.building_library.get() { let maptype = val_ty(ccx.crate_map).to_ref(); diff --git a/src/librustc/middle/typeck/mod.rs b/src/librustc/middle/typeck/mod.rs index 4443fa000e7..9a1e6cbeaba 100644 --- a/src/librustc/middle/typeck/mod.rs +++ b/src/librustc/middle/typeck/mod.rs @@ -438,7 +438,7 @@ fn check_start_fn_ty(ccx: &CrateCtxt, fn check_for_entry_fn(ccx: &CrateCtxt) { let tcx = ccx.tcx; - if !*tcx.sess.building_library { + if !tcx.sess.building_library.get() { match tcx.sess.entry_fn.get() { Some((id, sp)) => match tcx.sess.entry_type.get() { Some(session::EntryMain) => check_main_fn_ty(ccx, id, sp),