From da622a3796f5488d89daaf3b32ceb509ce4d669b Mon Sep 17 00:00:00 2001 From: Eduard-Mihai Burtescu Date: Sat, 21 Jul 2018 22:15:11 +0300 Subject: [PATCH 1/2] rustc: remove {FxHash,Node,DefId,HirId,ItemLocal}{Map,Set} "constructor" fns. --- src/librustc/hir/lowering.rs | 17 ++++++----- src/librustc/hir/map/definitions.rs | 2 +- src/librustc/infer/opaque_types/mod.rs | 2 +- src/librustc/lint/mod.rs | 2 +- src/librustc/middle/liveness.rs | 12 ++++---- src/librustc/middle/reachable.rs | 2 +- src/librustc/middle/resolve_lifetime.rs | 12 ++++---- src/librustc/ty/context.rs | 28 +++++++++---------- src/librustc/util/nodemap.rs | 4 --- src/librustc_codegen_llvm/debuginfo/mod.rs | 2 +- .../back/symbol_export.rs | 4 +-- src/librustc_data_structures/fx.rs | 4 +-- src/librustc_lint/builtin.rs | 2 +- src/librustc_metadata/cstore_impl.rs | 2 +- src/librustc_mir/build/mod.rs | 2 +- src/librustc_mir/monomorphize/collector.rs | 2 +- src/librustc_mir/transform/mod.rs | 2 +- src/librustc_passes/rvalue_promotion.rs | 4 +-- src/librustc_privacy/lib.rs | 2 +- src/librustc_resolve/check_unused.rs | 2 +- src/librustc_resolve/lib.rs | 18 ++++++------ src/librustc_typeck/check/mod.rs | 8 +++--- src/librustc_typeck/check/writeback.rs | 2 +- src/librustc_typeck/check_unused.rs | 2 +- .../coherence/inherent_impls.rs | 2 +- src/librustc_typeck/variance/terms.rs | 2 +- src/librustdoc/passes/strip_hidden.rs | 2 +- src/librustdoc/passes/strip_private.rs | 2 +- 28 files changed, 72 insertions(+), 75 deletions(-) diff --git a/src/librustc/hir/lowering.rs b/src/librustc/hir/lowering.rs index ce1e6780431..7ac3b033437 100644 --- a/src/librustc/hir/lowering.rs +++ b/src/librustc/hir/lowering.rs @@ -244,9 +244,9 @@ pub fn lower_crate( loop_scopes: Vec::new(), is_in_loop_condition: false, anonymous_lifetime_mode: AnonymousLifetimeMode::PassThrough, - type_def_lifetime_params: DefIdMap(), + type_def_lifetime_params: Default::default(), current_hir_id_owner: vec![(CRATE_DEF_INDEX, 0)], - item_local_id_counters: NodeMap(), + item_local_id_counters: Default::default(), node_id_to_hir_id: IndexVec::new(), is_generator: false, is_in_trait_impl: false, @@ -1168,7 +1168,7 @@ impl<'a> LoweringContext<'a> { hir::TyKind::BareFn(P(hir::BareFnTy { generic_params: this.lower_generic_params( &f.generic_params, - &NodeMap(), + &NodeMap::default(), ImplTraitContext::disallowed(), ), unsafety: this.lower_unsafety(f.unsafety), @@ -2467,7 +2467,7 @@ impl<'a> LoweringContext<'a> { // FIXME: This could probably be done with less rightward drift. Also looks like two control // paths where report_error is called are also the only paths that advance to after // the match statement, so the error reporting could probably just be moved there. - let mut add_bounds: NodeMap> = NodeMap(); + let mut add_bounds: NodeMap> = Default::default(); for pred in &generics.where_clause.predicates { if let WherePredicate::BoundPredicate(ref bound_pred) = *pred { 'next_bound: for bound in &bound_pred.bounds { @@ -2552,7 +2552,7 @@ impl<'a> LoweringContext<'a> { hir::WherePredicate::BoundPredicate(hir::WhereBoundPredicate { bound_generic_params: this.lower_generic_params( bound_generic_params, - &NodeMap(), + &NodeMap::default(), ImplTraitContext::disallowed(), ), bounded_ty: this.lower_ty(bounded_ty, ImplTraitContext::disallowed()), @@ -2636,8 +2636,11 @@ impl<'a> LoweringContext<'a> { p: &PolyTraitRef, mut itctx: ImplTraitContext<'_>, ) -> hir::PolyTraitRef { - let bound_generic_params = - self.lower_generic_params(&p.bound_generic_params, &NodeMap(), itctx.reborrow()); + let bound_generic_params = self.lower_generic_params( + &p.bound_generic_params, + &NodeMap::default(), + itctx.reborrow(), + ); let trait_ref = self.with_parent_impl_lifetime_defs( &bound_generic_params, |this| this.lower_trait_ref(&p.trait_ref, itctx), diff --git a/src/librustc/hir/map/definitions.rs b/src/librustc/hir/map/definitions.rs index dd689154086..6be7444136e 100644 --- a/src/librustc/hir/map/definitions.rs +++ b/src/librustc/hir/map/definitions.rs @@ -418,7 +418,7 @@ impl Definitions { index_to_key: [vec![], vec![]], def_path_hashes: [vec![], vec![]], }, - node_to_def_index: NodeMap(), + node_to_def_index: Default::default(), def_index_to_node: [vec![], vec![]], node_to_hir_id: IndexVec::new(), parent_modules_of_macro_defs: Default::default(), diff --git a/src/librustc/infer/opaque_types/mod.rs b/src/librustc/infer/opaque_types/mod.rs index cc73dd63816..fda9817cc88 100644 --- a/src/librustc/infer/opaque_types/mod.rs +++ b/src/librustc/infer/opaque_types/mod.rs @@ -121,7 +121,7 @@ impl<'a, 'gcx, 'tcx> InferCtxt<'a, 'gcx, 'tcx> { parent_def_id, body_id, param_env, - opaque_types: DefIdMap(), + opaque_types: Default::default(), obligations: vec![], }; let value = instantiator.instantiate_opaque_types_in_map(value); diff --git a/src/librustc/lint/mod.rs b/src/librustc/lint/mod.rs index 18922ec5d17..c43cdb24c33 100644 --- a/src/librustc/lint/mod.rs +++ b/src/librustc/lint/mod.rs @@ -496,7 +496,7 @@ pub struct LintBuffer { impl LintBuffer { pub fn new() -> LintBuffer { - LintBuffer { map: NodeMap() } + LintBuffer { map: ::std::default::Default::default() } } pub fn add_lint(&mut self, diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs index 1b258a23462..54a0192d2e8 100644 --- a/src/librustc/middle/liveness.rs +++ b/src/librustc/middle/liveness.rs @@ -272,9 +272,9 @@ impl<'a, 'tcx> IrMaps<'a, 'tcx> { tcx, num_live_nodes: 0, num_vars: 0, - live_node_map: HirIdMap(), - variable_map: HirIdMap(), - capture_info_map: NodeMap(), + live_node_map: HirIdMap::default(), + variable_map: HirIdMap::default(), + capture_info_map: Default::default(), var_kinds: Vec::new(), lnks: Vec::new(), } @@ -397,7 +397,7 @@ fn visit_fn<'a, 'tcx: 'a>(ir: &mut IrMaps<'a, 'tcx>, fn add_from_pat<'a, 'tcx>(ir: &mut IrMaps<'a, 'tcx>, pat: &P) { // For struct patterns, take note of which fields used shorthand // (`x` rather than `x: x`). - let mut shorthand_field_ids = HirIdSet(); + let mut shorthand_field_ids = HirIdSet::default(); let mut pats = VecDeque::new(); pats.push_back(pat); while let Some(pat) = pats.pop_front() { @@ -691,8 +691,8 @@ impl<'a, 'tcx> Liveness<'a, 'tcx> { s: specials, successors: vec![invalid_node(); num_live_nodes], rwu_table: RWUTable::new(num_live_nodes * num_vars), - break_ln: NodeMap(), - cont_ln: NodeMap(), + break_ln: Default::default(), + cont_ln: Default::default(), } } diff --git a/src/librustc/middle/reachable.rs b/src/librustc/middle/reachable.rs index 8c3a3fb6dc1..0009a517dd1 100644 --- a/src/librustc/middle/reachable.rs +++ b/src/librustc/middle/reachable.rs @@ -408,7 +408,7 @@ fn reachable_set<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, crate_num: CrateNum) -> let mut reachable_context = ReachableContext { tcx, tables: &ty::TypeckTables::empty(None), - reachable_symbols: NodeSet(), + reachable_symbols: Default::default(), worklist: Vec::new(), any_library, }; diff --git a/src/librustc/middle/resolve_lifetime.rs b/src/librustc/middle/resolve_lifetime.rs index 79cd8b21f1b..b7f4e380815 100644 --- a/src/librustc/middle/resolve_lifetime.rs +++ b/src/librustc/middle/resolve_lifetime.rs @@ -425,8 +425,8 @@ fn resolve_lifetimes<'tcx>( fn krate<'tcx>(tcx: TyCtxt<'_, 'tcx, 'tcx>) -> NamedRegionMap { let krate = tcx.hir.krate(); let mut map = NamedRegionMap { - defs: NodeMap(), - late_bound: NodeSet(), + defs: Default::default(), + late_bound: Default::default(), object_lifetime_defaults: compute_object_lifetime_defaults(tcx), }; { @@ -437,8 +437,8 @@ fn krate<'tcx>(tcx: TyCtxt<'_, 'tcx, 'tcx>) -> NamedRegionMap { trait_ref_hack: false, is_in_fn_syntax: false, labels_in_fn: vec![], - xcrate_object_lifetime_defaults: DefIdMap(), - lifetime_uses: &mut DefIdMap(), + xcrate_object_lifetime_defaults: Default::default(), + lifetime_uses: &mut Default::default(), }; for (_, item) in &krate.items { visitor.visit_item(item); @@ -1278,7 +1278,7 @@ fn extract_labels(ctxt: &mut LifetimeContext<'_, '_>, body: &hir::Body) { fn compute_object_lifetime_defaults( tcx: TyCtxt<'_, '_, '_>, ) -> NodeMap> { - let mut map = NodeMap(); + let mut map = NodeMap::default(); for item in tcx.hir.krate().items.values() { match item.node { hir::ItemKind::Struct(_, ref generics) @@ -1432,7 +1432,7 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> { } = self; let labels_in_fn = replace(&mut self.labels_in_fn, vec![]); let xcrate_object_lifetime_defaults = - replace(&mut self.xcrate_object_lifetime_defaults, DefIdMap()); + replace(&mut self.xcrate_object_lifetime_defaults, DefIdMap::default()); let mut this = LifetimeContext { tcx: *tcx, map: map, diff --git a/src/librustc/ty/context.rs b/src/librustc/ty/context.rs index 923d362c234..a8ce52a8e15 100644 --- a/src/librustc/ty/context.rs +++ b/src/librustc/ty/context.rs @@ -446,22 +446,22 @@ impl<'tcx> TypeckTables<'tcx> { pub fn empty(local_id_root: Option) -> TypeckTables<'tcx> { TypeckTables { local_id_root, - type_dependent_defs: ItemLocalMap(), - field_indices: ItemLocalMap(), - user_provided_tys: ItemLocalMap(), + type_dependent_defs: Default::default(), + field_indices: Default::default(), + user_provided_tys: Default::default(), user_provided_sigs: Default::default(), - node_types: ItemLocalMap(), - node_substs: ItemLocalMap(), - user_substs: ItemLocalMap(), - adjustments: ItemLocalMap(), - pat_binding_modes: ItemLocalMap(), - pat_adjustments: ItemLocalMap(), + node_types: Default::default(), + node_substs: Default::default(), + user_substs: Default::default(), + adjustments: Default::default(), + pat_binding_modes: Default::default(), + pat_adjustments: Default::default(), upvar_capture_map: Default::default(), - closure_kind_origins: ItemLocalMap(), - liberated_fn_sigs: ItemLocalMap(), - fru_field_types: ItemLocalMap(), - cast_kinds: ItemLocalMap(), - used_trait_imports: Lrc::new(DefIdSet()), + closure_kind_origins: Default::default(), + liberated_fn_sigs: Default::default(), + fru_field_types: Default::default(), + cast_kinds: Default::default(), + used_trait_imports: Lrc::new(Default::default()), tainted_by_errors: false, free_region_map: Default::default(), concrete_existential_types: Default::default(), diff --git a/src/librustc/util/nodemap.rs b/src/librustc/util/nodemap.rs index dbd3e00d9fd..6adfe2cde6c 100644 --- a/src/librustc/util/nodemap.rs +++ b/src/librustc/util/nodemap.rs @@ -10,8 +10,6 @@ //! An efficient hash map for node IDs -#![allow(non_snake_case)] - use hir::def_id::DefId; use hir::{HirId, ItemLocalId}; use syntax::ast; @@ -22,9 +20,7 @@ pub use rustc_data_structures::fx::FxHashSet; macro_rules! define_id_collections { ($map_name:ident, $set_name:ident, $key:ty) => { pub type $map_name = FxHashMap<$key, T>; - pub fn $map_name() -> $map_name { Default::default() } pub type $set_name = FxHashSet<$key>; - pub fn $set_name() -> $set_name { Default::default() } } } diff --git a/src/librustc_codegen_llvm/debuginfo/mod.rs b/src/librustc_codegen_llvm/debuginfo/mod.rs index 9784cc6cf9c..6dd13447fb5 100644 --- a/src/librustc_codegen_llvm/debuginfo/mod.rs +++ b/src/librustc_codegen_llvm/debuginfo/mod.rs @@ -106,7 +106,7 @@ impl<'a, 'tcx> CrateDebugContext<'a, 'tcx> { created_files: Default::default(), created_enum_disr_types: Default::default(), type_map: Default::default(), - namespace_map: RefCell::new(DefIdMap()), + namespace_map: RefCell::new(Default::default()), composite_types_completed: Default::default(), } } diff --git a/src/librustc_codegen_ssa/back/symbol_export.rs b/src/librustc_codegen_ssa/back/symbol_export.rs index dff7e518630..10dd1de8b78 100644 --- a/src/librustc_codegen_ssa/back/symbol_export.rs +++ b/src/librustc_codegen_ssa/back/symbol_export.rs @@ -64,7 +64,7 @@ fn reachable_non_generics_provider<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, assert_eq!(cnum, LOCAL_CRATE); if !tcx.sess.opts.output_types.should_codegen() { - return Lrc::new(DefIdMap()) + return Lrc::new(Default::default()) } // Check to see if this crate is a "special runtime crate". These @@ -299,7 +299,7 @@ fn upstream_monomorphizations_provider<'a, 'tcx>( let cnums = tcx.all_crate_nums(LOCAL_CRATE); - let mut instances: DefIdMap> = DefIdMap(); + let mut instances: DefIdMap> = Default::default(); let cnum_stable_ids: IndexVec = { let mut cnum_stable_ids = IndexVec::from_elem_n(Fingerprint::ZERO, diff --git a/src/librustc_data_structures/fx.rs b/src/librustc_data_structures/fx.rs index bce21f5085c..7c7fc3a9346 100644 --- a/src/librustc_data_structures/fx.rs +++ b/src/librustc_data_structures/fx.rs @@ -8,6 +8,4 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. -pub use rustc_hash::FxHashMap; -pub use rustc_hash::FxHashSet; -pub use rustc_hash::FxHasher; +pub use rustc_hash::{FxHasher, FxHashMap, FxHashSet}; diff --git a/src/librustc_lint/builtin.rs b/src/librustc_lint/builtin.rs index bef7b364d84..7dd1ca3493e 100644 --- a/src/librustc_lint/builtin.rs +++ b/src/librustc_lint/builtin.rs @@ -603,7 +603,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MissingDebugImplementations { }; if self.impling_types.is_none() { - let mut impls = NodeSet(); + let mut impls = NodeSet::default(); cx.tcx.for_each_impl(debug, |d| { if let Some(ty_def) = cx.tcx.type_of(d).ty_adt_def() { if let Some(node_id) = cx.tcx.hir.as_local_node_id(ty_def.did) { diff --git a/src/librustc_metadata/cstore_impl.rs b/src/librustc_metadata/cstore_impl.rs index e1d9ca5339e..c7bd1744a3d 100644 --- a/src/librustc_metadata/cstore_impl.rs +++ b/src/librustc_metadata/cstore_impl.rs @@ -316,7 +316,7 @@ pub fn provide<'tcx>(providers: &mut Providers<'tcx>) { use std::collections::hash_map::Entry; assert_eq!(cnum, LOCAL_CRATE); - let mut visible_parent_map: DefIdMap = DefIdMap(); + let mut visible_parent_map: DefIdMap = Default::default(); // Issue 46112: We want the map to prefer the shortest // paths when reporting the path to an item. Therefore we diff --git a/src/librustc_mir/build/mod.rs b/src/librustc_mir/build/mod.rs index 0aa1924c0e5..d95a74be776 100644 --- a/src/librustc_mir/build/mod.rs +++ b/src/librustc_mir/build/mod.rs @@ -829,7 +829,7 @@ impl<'a, 'gcx, 'tcx> Builder<'a, 'gcx, 'tcx> { 1, ), upvar_decls, - var_indices: NodeMap(), + var_indices: Default::default(), unit_temp: None, cached_resume_block: None, cached_return_block: None, diff --git a/src/librustc_mir/monomorphize/collector.rs b/src/librustc_mir/monomorphize/collector.rs index 8e27635dee8..b4ffb39a2eb 100644 --- a/src/librustc_mir/monomorphize/collector.rs +++ b/src/librustc_mir/monomorphize/collector.rs @@ -314,7 +314,7 @@ pub fn collect_crate_mono_items<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, time(tcx.sess, "collecting mono items", || { par_iter(roots).for_each(|root| { - let mut recursion_depths = DefIdMap(); + let mut recursion_depths = DefIdMap::default(); collect_items_rec(tcx, root, visited, diff --git a/src/librustc_mir/transform/mod.rs b/src/librustc_mir/transform/mod.rs index 92cfcb3fd56..8d3a04f9f3c 100644 --- a/src/librustc_mir/transform/mod.rs +++ b/src/librustc_mir/transform/mod.rs @@ -72,7 +72,7 @@ fn mir_keys<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, krate: CrateNum) -> Lrc { assert_eq!(krate, LOCAL_CRATE); - let mut set = DefIdSet(); + let mut set = DefIdSet::default(); // All body-owners have MIR associated with them. set.extend(tcx.body_owners()); diff --git a/src/librustc_passes/rvalue_promotion.rs b/src/librustc_passes/rvalue_promotion.rs index a90cccfa7a7..099c6df32ad 100644 --- a/src/librustc_passes/rvalue_promotion.rs +++ b/src/librustc_passes/rvalue_promotion.rs @@ -84,10 +84,10 @@ fn rvalue_promotable_map<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, tables: &ty::TypeckTables::empty(None), in_fn: false, in_static: false, - mut_rvalue_borrows: NodeSet(), + mut_rvalue_borrows: Default::default(), param_env: ty::ParamEnv::empty(), identity_substs: Substs::empty(), - result: ItemLocalSet(), + result: ItemLocalSet::default(), }; // `def_id` should be a `Body` owner diff --git a/src/librustc_privacy/lib.rs b/src/librustc_privacy/lib.rs index 5f8c7daea6e..fbd6f6edd31 100644 --- a/src/librustc_privacy/lib.rs +++ b/src/librustc_privacy/lib.rs @@ -1761,7 +1761,7 @@ fn privacy_access_levels<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, tcx, access_levels: &visitor.access_levels, in_variant: false, - old_error_set: NodeSet(), + old_error_set: Default::default(), }; intravisit::walk_crate(&mut visitor, krate); diff --git a/src/librustc_resolve/check_unused.rs b/src/librustc_resolve/check_unused.rs index ddcaf128bf5..659ca1f5b9f 100644 --- a/src/librustc_resolve/check_unused.rs +++ b/src/librustc_resolve/check_unused.rs @@ -162,7 +162,7 @@ pub fn check_crate(resolver: &mut Resolver, krate: &ast::Crate) { let mut visitor = UnusedImportCheckVisitor { resolver, - unused_imports: NodeMap(), + unused_imports: Default::default(), base_id: ast::DUMMY_NODE_ID, item_span: DUMMY_SP, }; diff --git a/src/librustc_resolve/lib.rs b/src/librustc_resolve/lib.rs index 7b2d1d4a3d5..5f4e9946e50 100644 --- a/src/librustc_resolve/lib.rs +++ b/src/librustc_resolve/lib.rs @@ -1862,22 +1862,22 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { primitive_type_table: PrimitiveTypeTable::new(), - def_map: NodeMap(), - import_map: NodeMap(), - freevars: NodeMap(), - freevars_seen: NodeMap(), + def_map: Default::default(), + import_map: Default::default(), + freevars: Default::default(), + freevars_seen: Default::default(), export_map: FxHashMap::default(), - trait_map: NodeMap(), + trait_map: Default::default(), module_map, - block_map: NodeMap(), + block_map: Default::default(), extern_module_map: FxHashMap::default(), binding_parent_modules: FxHashMap::default(), make_glob_map: make_glob_map == MakeGlobMap::Yes, - glob_map: NodeMap(), + glob_map: Default::default(), used_imports: FxHashSet::default(), - maybe_unused_trait_imports: NodeSet(), + maybe_unused_trait_imports: Default::default(), maybe_unused_extern_crates: Vec::new(), unused_labels: FxHashMap::default(), @@ -1907,7 +1907,7 @@ impl<'a, 'crateloader: 'a> Resolver<'a, 'crateloader> { name_already_seen: FxHashMap::default(), whitelisted_legacy_custom_derives: Vec::new(), potentially_unused_imports: Vec::new(), - struct_constructors: DefIdMap(), + struct_constructors: Default::default(), found_unresolved_macro: false, unused_macros: FxHashSet::default(), current_type_ascription: Vec::new(), diff --git a/src/librustc_typeck/check/mod.rs b/src/librustc_typeck/check/mod.rs index eed5d909063..aabef5c3234 100644 --- a/src/librustc_typeck/check/mod.rs +++ b/src/librustc_typeck/check/mod.rs @@ -643,11 +643,11 @@ impl<'a, 'gcx, 'tcx> Inherited<'a, 'gcx, 'tcx> { }, infcx, fulfillment_cx: RefCell::new(TraitEngine::new(tcx)), - locals: RefCell::new(NodeMap()), - deferred_call_resolutions: RefCell::new(DefIdMap()), + locals: RefCell::new(Default::default()), + deferred_call_resolutions: RefCell::new(Default::default()), deferred_cast_checks: RefCell::new(Vec::new()), deferred_generator_interiors: RefCell::new(Vec::new()), - opaque_types: RefCell::new(DefIdMap()), + opaque_types: RefCell::new(Default::default()), implicit_region_bound, body_id, } @@ -1986,7 +1986,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { has_errors: Cell::new(false), enclosing_breakables: RefCell::new(EnclosingBreakables { stack: Vec::new(), - by_id: NodeMap(), + by_id: Default::default(), }), inh, } diff --git a/src/librustc_typeck/check/writeback.rs b/src/librustc_typeck/check/writeback.rs index 4460d5f64ce..50f54bba3fd 100644 --- a/src/librustc_typeck/check/writeback.rs +++ b/src/librustc_typeck/check/writeback.rs @@ -56,7 +56,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> { let used_trait_imports = mem::replace( &mut self.tables.borrow_mut().used_trait_imports, - Lrc::new(DefIdSet()), + Lrc::new(DefIdSet::default()), ); debug!( "used_trait_imports({:?}) = {:?}", diff --git a/src/librustc_typeck/check_unused.rs b/src/librustc_typeck/check_unused.rs index 9d785dfb58a..22a96d4e908 100644 --- a/src/librustc_typeck/check_unused.rs +++ b/src/librustc_typeck/check_unused.rs @@ -24,7 +24,7 @@ use rustc::util::nodemap::DefIdSet; use rustc_data_structures::fx::FxHashMap; pub fn check_crate<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>) { - let mut used_trait_imports = DefIdSet(); + let mut used_trait_imports = DefIdSet::default(); for &body_id in tcx.hir.krate().bodies.keys() { let item_def_id = tcx.hir.body_owner_def_id(body_id); let imports = tcx.used_trait_imports(item_def_id); diff --git a/src/librustc_typeck/coherence/inherent_impls.rs b/src/librustc_typeck/coherence/inherent_impls.rs index 370f8857f14..79e4abc4c0e 100644 --- a/src/librustc_typeck/coherence/inherent_impls.rs +++ b/src/librustc_typeck/coherence/inherent_impls.rs @@ -38,7 +38,7 @@ pub fn crate_inherent_impls<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, let mut collect = InherentCollect { tcx, impls_map: CrateInherentImpls { - inherent_impls: DefIdMap() + inherent_impls: DefIdMap::default() } }; krate.visit_all_item_likes(&mut collect); diff --git a/src/librustc_typeck/variance/terms.rs b/src/librustc_typeck/variance/terms.rs index 0aec31609b0..087d53b92d4 100644 --- a/src/librustc_typeck/variance/terms.rs +++ b/src/librustc_typeck/variance/terms.rs @@ -81,7 +81,7 @@ pub fn determine_parameters_to_be_inferred<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx> let mut terms_cx = TermsContext { tcx, arena, - inferred_starts: NodeMap(), + inferred_starts: Default::default(), inferred_terms: vec![], lang_items: lang_items(tcx), diff --git a/src/librustdoc/passes/strip_hidden.rs b/src/librustdoc/passes/strip_hidden.rs index 24dd4cc13bf..946c5c5fa9b 100644 --- a/src/librustdoc/passes/strip_hidden.rs +++ b/src/librustdoc/passes/strip_hidden.rs @@ -25,7 +25,7 @@ pub const STRIP_HIDDEN: Pass = /// Strip items marked `#[doc(hidden)]` pub fn strip_hidden(krate: clean::Crate, _: &DocContext) -> clean::Crate { - let mut retained = DefIdSet(); + let mut retained = DefIdSet::default(); // strip all #[doc(hidden)] items let krate = { diff --git a/src/librustdoc/passes/strip_private.rs b/src/librustdoc/passes/strip_private.rs index 46d0034497e..e9d927398e4 100644 --- a/src/librustdoc/passes/strip_private.rs +++ b/src/librustdoc/passes/strip_private.rs @@ -24,7 +24,7 @@ pub const STRIP_PRIVATE: Pass = /// crate, specified by the `xcrate` flag. pub fn strip_private(mut krate: clean::Crate, cx: &DocContext) -> clean::Crate { // This stripper collects all *retained* nodes. - let mut retained = DefIdSet(); + let mut retained = DefIdSet::default(); let access_levels = cx.renderinfo.borrow().access_levels.clone(); // strip all private items From 7683180be5b51bb626e0cf372a3dee31cab8b61c Mon Sep 17 00:00:00 2001 From: Eduard-Mihai Burtescu Date: Wed, 25 Jul 2018 15:44:06 +0300 Subject: [PATCH 2/2] rustc: implement and use Default on more types. --- src/Cargo.lock | 11 ++++++++- src/librustc/dep_graph/graph.rs | 4 ++-- src/librustc/hir/map/definitions.rs | 19 ++++----------- src/librustc/ich/hcx.rs | 3 +-- src/librustc/infer/region_constraints/mod.rs | 14 +++-------- src/librustc/lint/context.rs | 2 +- src/librustc/lint/mod.rs | 5 +--- src/librustc/middle/borrowck.rs | 8 ++++++- src/librustc/middle/resolve_lifetime.rs | 9 +++----- src/librustc/session/mod.rs | 2 +- src/librustc/ty/mod.rs | 2 +- .../back/symbol_export.rs | 2 +- src/librustc_data_structures/Cargo.toml | 2 +- .../snapshot_map/mod.rs | 23 ++++++++++--------- .../transitive_relation.rs | 23 ++++++++++--------- .../coherence/inherent_impls.rs | 5 +--- 16 files changed, 61 insertions(+), 73 deletions(-) diff --git a/src/Cargo.lock b/src/Cargo.lock index e7b42a038a3..0dd693e7217 100644 --- a/src/Cargo.lock +++ b/src/Cargo.lock @@ -659,6 +659,14 @@ dependencies = [ "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "ena" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "env_logger" version = "0.5.12" @@ -2196,7 +2204,7 @@ name = "rustc_data_structures" version = "0.0.0" dependencies = [ "cfg-if 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "ena 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)", + "ena 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)", "graphviz 0.0.0", "log 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", @@ -3261,6 +3269,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" "checksum difference 2.0.0 (registry+https://github.com/rust-lang/crates.io-index)" = "524cbf6897b527295dff137cec09ecf3a05f4fddffd7dfcd1585403449e74198" "checksum either 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3be565ca5c557d7f59e7cfcf1844f9e3033650c929c6566f511e8005f205c1d0" "checksum elasticlunr-rs 2.3.3 (registry+https://github.com/rust-lang/crates.io-index)" = "4837d77a1e157489a3933b743fd774ae75074e0e390b2b7f071530048a0d87ee" +"checksum ena 0.10.1 (registry+https://github.com/rust-lang/crates.io-index)" = "25b4e5febb25f08c49f1b07dc33a182729a6b21edfb562b5aef95f78e0dbe5bb" "checksum ena 0.9.3 (registry+https://github.com/rust-lang/crates.io-index)" = "88dc8393b3c7352f94092497f6b52019643e493b6b890eb417cdb7c46117e621" "checksum env_logger 0.5.12 (registry+https://github.com/rust-lang/crates.io-index)" = "f4d7e69c283751083d53d01eac767407343b8b69c4bd70058e08adc2637cb257" "checksum env_logger 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)" = "afb070faf94c85d17d50ca44f6ad076bce18ae92f0037d350947240a36e9d42e" diff --git a/src/librustc/dep_graph/graph.rs b/src/librustc/dep_graph/graph.rs index ddc5676c74e..63b749c548e 100644 --- a/src/librustc/dep_graph/graph.rs +++ b/src/librustc/dep_graph/graph.rs @@ -101,11 +101,11 @@ impl DepGraph { DepGraph { data: Some(Lrc::new(DepGraphData { previous_work_products: prev_work_products, - dep_node_debug: Lock::new(Default::default()), + dep_node_debug: Default::default(), current: Lock::new(CurrentDepGraph::new()), previous: prev_graph, colors: Lock::new(DepNodeColorMap::new(prev_graph_node_count)), - loaded_from_cache: Lock::new(Default::default()), + loaded_from_cache: Default::default(), })), fingerprints: Lrc::new(Lock::new(fingerprints)), } diff --git a/src/librustc/hir/map/definitions.rs b/src/librustc/hir/map/definitions.rs index 6be7444136e..eb9bd183fd9 100644 --- a/src/librustc/hir/map/definitions.rs +++ b/src/librustc/hir/map/definitions.rs @@ -36,6 +36,7 @@ use util::nodemap::NodeMap; /// Internally the DefPathTable holds a tree of DefKeys, where each DefKey /// stores the DefIndex of its parent. /// There is one DefPathTable for each crate. +#[derive(Default)] pub struct DefPathTable { index_to_key: [Vec; 2], def_path_hashes: [Vec; 2], @@ -153,7 +154,7 @@ impl Decodable for DefPathTable { /// The definition table containing node definitions. /// It holds the DefPathTable for local DefIds/DefPaths and it also stores a /// mapping from NodeIds to local DefIds. -#[derive(Clone)] +#[derive(Clone, Default)] pub struct Definitions { table: DefPathTable, node_to_def_index: NodeMap, @@ -412,20 +413,8 @@ impl Definitions { /// ascending order. /// /// FIXME: there is probably a better place to put this comment. - pub fn new() -> Definitions { - Definitions { - table: DefPathTable { - index_to_key: [vec![], vec![]], - def_path_hashes: [vec![], vec![]], - }, - node_to_def_index: Default::default(), - def_index_to_node: [vec![], vec![]], - node_to_hir_id: IndexVec::new(), - parent_modules_of_macro_defs: Default::default(), - expansions_that_defined: Default::default(), - next_disambiguator: Default::default(), - def_index_to_span: Default::default(), - } + pub fn new() -> Self { + Self::default() } pub fn def_path_table(&self) -> &DefPathTable { diff --git a/src/librustc/ich/hcx.rs b/src/librustc/ich/hcx.rs index 1c7c1b854da..7c623a1874e 100644 --- a/src/librustc/ich/hcx.rs +++ b/src/librustc/ich/hcx.rs @@ -369,8 +369,7 @@ impl<'a> HashStable> for Span { // times, we cache a stable hash of it and hash that instead of // recursing every time. thread_local! { - static CACHE: RefCell> = - RefCell::new(Default::default()); + static CACHE: RefCell> = Default::default(); } let sub_hash: u64 = CACHE.with(|cache| { diff --git a/src/librustc/infer/region_constraints/mod.rs b/src/librustc/infer/region_constraints/mod.rs index 46b12d01829..391bfc428c3 100644 --- a/src/librustc/infer/region_constraints/mod.rs +++ b/src/librustc/infer/region_constraints/mod.rs @@ -29,6 +29,7 @@ use std::{cmp, fmt, mem, u32}; mod taint; +#[derive(Default)] pub struct RegionConstraintCollector<'tcx> { /// For each `RegionVid`, the corresponding `RegionVariableOrigin`. var_infos: IndexVec, @@ -341,17 +342,8 @@ impl TaintDirections { } impl<'tcx> RegionConstraintCollector<'tcx> { - pub fn new() -> RegionConstraintCollector<'tcx> { - RegionConstraintCollector { - var_infos: VarInfos::default(), - data: RegionConstraintData::default(), - lubs: Default::default(), - glbs: Default::default(), - bound_count: 0, - undo_log: Vec::new(), - unification_table: ut::UnificationTable::new(), - any_unifications: false, - } + pub fn new() -> Self { + Self::default() } pub fn num_region_vars(&self) -> usize { diff --git a/src/librustc/lint/context.rs b/src/librustc/lint/context.rs index 8acbaaa844d..469d77403a3 100644 --- a/src/librustc/lint/context.rs +++ b/src/librustc/lint/context.rs @@ -1233,7 +1233,7 @@ pub fn check_ast_crate( let (passes, buffered) = if pre_expansion { ( sess.lint_store.borrow_mut().pre_expansion_passes.take(), - LintBuffer::new(), + LintBuffer::default(), ) } else { ( diff --git a/src/librustc/lint/mod.rs b/src/librustc/lint/mod.rs index c43cdb24c33..4b878b86252 100644 --- a/src/librustc/lint/mod.rs +++ b/src/librustc/lint/mod.rs @@ -490,15 +490,12 @@ mod levels; pub use self::levels::{LintLevelSets, LintLevelMap}; +#[derive(Default)] pub struct LintBuffer { map: NodeMap>, } impl LintBuffer { - pub fn new() -> LintBuffer { - LintBuffer { map: ::std::default::Default::default() } - } - pub fn add_lint(&mut self, lint: &'static Lint, id: ast::NodeId, diff --git a/src/librustc/middle/borrowck.rs b/src/librustc/middle/borrowck.rs index c8d513a59f0..633c5841378 100644 --- a/src/librustc/middle/borrowck.rs +++ b/src/librustc/middle/borrowck.rs @@ -18,9 +18,15 @@ use rustc_data_structures::stable_hasher::{HashStable, StableHasher, #[derive(Copy, Clone, Debug, RustcEncodable, RustcDecodable)] pub enum SignalledError { SawSomeError, NoErrorsSeen } +impl Default for SignalledError { + fn default() -> SignalledError { + SignalledError::NoErrorsSeen + } +} + impl_stable_hash_for!(enum self::SignalledError { SawSomeError, NoErrorsSeen }); -#[derive(Debug, RustcEncodable, RustcDecodable)] +#[derive(Debug, Default, RustcEncodable, RustcDecodable)] pub struct BorrowCheckResult { pub used_mut_nodes: FxHashSet, pub signalled_any_error: SignalledError, diff --git a/src/librustc/middle/resolve_lifetime.rs b/src/librustc/middle/resolve_lifetime.rs index b7f4e380815..6ff450508d1 100644 --- a/src/librustc/middle/resolve_lifetime.rs +++ b/src/librustc/middle/resolve_lifetime.rs @@ -2741,9 +2741,7 @@ fn insert_late_bound_lifetimes( constrained_by_input.visit_ty(arg_ty); } - let mut appears_in_output = AllCollector { - regions: Default::default(), - }; + let mut appears_in_output = AllCollector::default(); intravisit::walk_fn_ret_ty(&mut appears_in_output, &decl.output); debug!( @@ -2755,9 +2753,7 @@ fn insert_late_bound_lifetimes( // // Subtle point: because we disallow nested bindings, we can just // ignore binders here and scrape up all names we see. - let mut appears_in_where_clause = AllCollector { - regions: Default::default(), - }; + let mut appears_in_where_clause = AllCollector::default(); appears_in_where_clause.visit_generics(generics); for param in &generics.params { @@ -2854,6 +2850,7 @@ fn insert_late_bound_lifetimes( } } + #[derive(Default)] struct AllCollector { regions: FxHashSet, } diff --git a/src/librustc/session/mod.rs b/src/librustc/session/mod.rs index 8582900b72c..d688d93b808 100644 --- a/src/librustc/session/mod.rs +++ b/src/librustc/session/mod.rs @@ -1149,7 +1149,7 @@ pub fn build_session_( local_crate_source_file, working_dir, lint_store: RwLock::new(lint::LintStore::new()), - buffered_lints: Lock::new(Some(lint::LintBuffer::new())), + buffered_lints: Lock::new(Some(Default::default())), one_time_diagnostics: Default::default(), plugin_llvm_passes: OneThread::new(RefCell::new(Vec::new())), plugin_attributes: OneThread::new(RefCell::new(Vec::new())), diff --git a/src/librustc/ty/mod.rs b/src/librustc/ty/mod.rs index dfdffa2d547..ad200449f89 100644 --- a/src/librustc/ty/mod.rs +++ b/src/librustc/ty/mod.rs @@ -3183,7 +3183,7 @@ pub fn provide(providers: &mut ty::query::Providers<'_>) { /// rather, you should request the vector for a specific type via /// `tcx.inherent_impls(def_id)` so as to minimize your dependencies /// (constructing this map requires touching the entire crate). -#[derive(Clone, Debug)] +#[derive(Clone, Debug, Default)] pub struct CrateInherentImpls { pub inherent_impls: DefIdMap>>, } diff --git a/src/librustc_codegen_ssa/back/symbol_export.rs b/src/librustc_codegen_ssa/back/symbol_export.rs index 10dd1de8b78..0463da00c89 100644 --- a/src/librustc_codegen_ssa/back/symbol_export.rs +++ b/src/librustc_codegen_ssa/back/symbol_export.rs @@ -64,7 +64,7 @@ fn reachable_non_generics_provider<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, assert_eq!(cnum, LOCAL_CRATE); if !tcx.sess.opts.output_types.should_codegen() { - return Lrc::new(Default::default()) + return Default::default(); } // Check to see if this crate is a "special runtime crate". These diff --git a/src/librustc_data_structures/Cargo.toml b/src/librustc_data_structures/Cargo.toml index 79f073d643d..5b3dd38adf2 100644 --- a/src/librustc_data_structures/Cargo.toml +++ b/src/librustc_data_structures/Cargo.toml @@ -9,7 +9,7 @@ path = "lib.rs" crate-type = ["dylib"] [dependencies] -ena = "0.9.3" +ena = "0.10.1" log = "0.4" rustc_cratesio_shim = { path = "../librustc_cratesio_shim" } serialize = { path = "../libserialize" } diff --git a/src/librustc_data_structures/snapshot_map/mod.rs b/src/librustc_data_structures/snapshot_map/mod.rs index f8663cd4fd4..0b42cb1eddd 100644 --- a/src/librustc_data_structures/snapshot_map/mod.rs +++ b/src/librustc_data_structures/snapshot_map/mod.rs @@ -23,6 +23,18 @@ pub struct SnapshotMap undo_log: Vec>, } +// HACK(eddyb) manual impl avoids `Default` bounds on `K` and `V`. +impl Default for SnapshotMap + where K: Hash + Clone + Eq +{ + fn default() -> Self { + SnapshotMap { + map: Default::default(), + undo_log: Default::default(), + } + } +} + pub struct Snapshot { len: usize, } @@ -35,17 +47,6 @@ enum UndoLog { Noop, } -impl Default for SnapshotMap - where K: Hash + Clone + Eq -{ - fn default() -> Self { - SnapshotMap { - map: FxHashMap::default(), - undo_log: vec![], - } - } -} - impl SnapshotMap where K: Hash + Clone + Eq { diff --git a/src/librustc_data_structures/transitive_relation.rs b/src/librustc_data_structures/transitive_relation.rs index e1318eb54d5..fd5dfab9e61 100644 --- a/src/librustc_data_structures/transitive_relation.rs +++ b/src/librustc_data_structures/transitive_relation.rs @@ -42,6 +42,18 @@ pub struct TransitiveRelation { closure: Lock>>, } +// HACK(eddyb) manual impl avoids `Default` bound on `T`. +impl Default for TransitiveRelation { + fn default() -> Self { + TransitiveRelation { + elements: Default::default(), + map: Default::default(), + edges: Default::default(), + closure: Default::default(), + } + } +} + #[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash, RustcEncodable, RustcDecodable, Debug)] struct Index(usize); @@ -51,17 +63,6 @@ struct Edge { target: Index, } -impl Default for TransitiveRelation { - fn default() -> TransitiveRelation { - TransitiveRelation { - elements: vec![], - map: FxHashMap::default(), - edges: vec![], - closure: Lock::new(None), - } - } -} - impl TransitiveRelation { pub fn is_empty(&self) -> bool { self.edges.is_empty() diff --git a/src/librustc_typeck/coherence/inherent_impls.rs b/src/librustc_typeck/coherence/inherent_impls.rs index 79e4abc4c0e..d9dff144129 100644 --- a/src/librustc_typeck/coherence/inherent_impls.rs +++ b/src/librustc_typeck/coherence/inherent_impls.rs @@ -22,7 +22,6 @@ use rustc::hir::def_id::{CrateNum, DefId, LOCAL_CRATE}; use rustc::hir; use rustc::hir::itemlikevisit::ItemLikeVisitor; use rustc::ty::{self, CrateInherentImpls, TyCtxt}; -use rustc::util::nodemap::DefIdMap; use rustc_data_structures::sync::Lrc; use syntax::ast; @@ -37,9 +36,7 @@ pub fn crate_inherent_impls<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, let krate = tcx.hir.krate(); let mut collect = InherentCollect { tcx, - impls_map: CrateInherentImpls { - inherent_impls: DefIdMap::default() - } + impls_map: Default::default(), }; krate.visit_all_item_likes(&mut collect); Lrc::new(collect.impls_map)