diff options
| author | bors <bors@rust-lang.org> | 2018-08-20 15:47:39 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2018-08-20 15:47:39 +0000 |
| commit | 1558ae7cfd5e1190d3388dcc6f0f734589e4e478 (patch) | |
| tree | e5052cf7aa779cc0cd67d31c8723a0fd88ce5ff1 /src/librustc_metadata/encoder.rs | |
| parent | bf1e461173e3936e4014cc951dfbdd7d9ec9190b (diff) | |
| parent | ee9bd0fd99ef5049f53b5d8233369187637cb71c (diff) | |
| download | rust-1558ae7cfd5e1190d3388dcc6f0f734589e4e478.tar.gz rust-1558ae7cfd5e1190d3388dcc6f0f734589e4e478.zip | |
Auto merge of #51880 - varkor:generics-hir-generalisation-followup, r=eddyb
The Great Generics Generalisation: HIR Followup Addresses the final comments in #48149. r? @eddyb, but there are a few things I have yet to clean up. Making the PR now to more easily see when things break. cc @yodaldevoid
Diffstat (limited to 'src/librustc_metadata/encoder.rs')
| -rw-r--r-- | src/librustc_metadata/encoder.rs | 25 |
1 files changed, 12 insertions, 13 deletions
diff --git a/src/librustc_metadata/encoder.rs b/src/librustc_metadata/encoder.rs index 4b5c9d68fd7..1b13c240a87 100644 --- a/src/librustc_metadata/encoder.rs +++ b/src/librustc_metadata/encoder.rs @@ -1262,12 +1262,9 @@ impl<'a, 'b: 'a, 'tcx: 'b> IsolatedEncoder<'a, 'b, 'tcx> { hir::ItemKind::Const(..) => self.encode_optimized_mir(def_id), hir::ItemKind::Fn(_, header, ..) => { let generics = tcx.generics_of(def_id); - let has_types = generics.params.iter().any(|param| match param.kind { - ty::GenericParamDefKind::Type { .. } => true, - _ => false, - }); let needs_inline = - (has_types || tcx.codegen_fn_attrs(def_id).requests_inline()) && + (generics.requires_monomorphization(tcx) || + tcx.codegen_fn_attrs(def_id).requests_inline()) && !self.metadata_output_only(); let always_encode_mir = self.tcx.sess.opts.debugging_opts.always_encode_mir; if needs_inline @@ -1683,15 +1680,17 @@ impl<'a, 'b, 'tcx> IndexBuilder<'a, 'b, 'tcx> { } fn encode_info_for_generics(&mut self, generics: &hir::Generics) { - generics.params.iter().for_each(|param| match param.kind { - hir::GenericParamKind::Lifetime { .. } => {} - hir::GenericParamKind::Type { ref default, .. } => { - let def_id = self.tcx.hir.local_def_id(param.id); - let has_default = Untracked(default.is_some()); - let encode_info = IsolatedEncoder::encode_info_for_ty_param; - self.record(def_id, encode_info, (def_id, has_default)); + for param in &generics.params { + match param.kind { + hir::GenericParamKind::Lifetime { .. } => {} + hir::GenericParamKind::Type { ref default, .. } => { + let def_id = self.tcx.hir.local_def_id(param.id); + let has_default = Untracked(default.is_some()); + let encode_info = IsolatedEncoder::encode_info_for_ty_param; + self.record(def_id, encode_info, (def_id, has_default)); + } } - }); + } } fn encode_info_for_ty(&mut self, ty: &hir::Ty) { |
