diff options
| author | Camille GILLOT <gillot.camille@gmail.com> | 2022-07-03 22:53:57 +0200 |
|---|---|---|
| committer | Camille GILLOT <gillot.camille@gmail.com> | 2023-01-22 11:04:53 +0000 |
| commit | 6ecf30d67d7e82722ac7aff232378739e92f33e6 (patch) | |
| tree | 30995d77aa7737f3f0e3a96c7c0992f7bf0104de /compiler/rustc_metadata/src | |
| parent | d7f6564fdd05c9bb0168be0554626de2886f1314 (diff) | |
| download | rust-6ecf30d67d7e82722ac7aff232378739e92f33e6.tar.gz rust-6ecf30d67d7e82722ac7aff232378739e92f33e6.zip | |
Inline encode_enum_variant_info.
Diffstat (limited to 'compiler/rustc_metadata/src')
| -rw-r--r-- | compiler/rustc_metadata/src/rmeta/encoder.rs | 46 |
1 files changed, 18 insertions, 28 deletions
diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs index 772c99a07bc..6227d01bcfa 100644 --- a/compiler/rustc_metadata/src/rmeta/encoder.rs +++ b/compiler/rustc_metadata/src/rmeta/encoder.rs @@ -1223,36 +1223,26 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> { // so it's easier to do that here then to wait until we would encounter // normally in the visitor walk. for variant in adt_def.variants().iter() { - self.encode_enum_variant_info(variant); - } - } - - fn encode_enum_variant_info(&mut self, variant: &ty::VariantDef) { - let tcx = self.tcx; - let def_id = variant.def_id; - debug!("EncodeContext::encode_enum_variant_info({:?})", def_id); + let data = VariantData { + discr: variant.discr, + ctor: variant.ctor.map(|(kind, def_id)| (kind, def_id.index)), + is_non_exhaustive: variant.is_field_list_non_exhaustive(), + }; + record!(self.tables.variant_data[variant.def_id] <- data); - let data = VariantData { - discr: variant.discr, - ctor: variant.ctor.map(|(kind, def_id)| (kind, def_id.index)), - is_non_exhaustive: variant.is_field_list_non_exhaustive(), - }; + self.tables.constness.set(variant.def_id.index, hir::Constness::Const); + record_array!(self.tables.children[variant.def_id] <- variant.fields.iter().map(|f| { + assert!(f.did.is_local()); + f.did.index + })); - record!(self.tables.variant_data[def_id] <- data); - self.tables.constness.set(def_id.index, hir::Constness::Const); - record_array!(self.tables.children[def_id] <- variant.fields.iter().map(|f| { - assert!(f.did.is_local()); - f.did.index - })); - if let Some((CtorKind::Fn, ctor_def_id)) = variant.ctor { - debug!("EncodeContext::encode_enum_variant_ctor({:?})", ctor_def_id); - - self.tables.constness.set(ctor_def_id.index, hir::Constness::Const); - - let fn_sig = tcx.fn_sig(ctor_def_id); - record!(self.tables.fn_sig[ctor_def_id] <- fn_sig); - // FIXME(eddyb) encode signature only for `ctor_def_id`. - record!(self.tables.fn_sig[def_id] <- fn_sig); + if let Some((CtorKind::Fn, ctor_def_id)) = variant.ctor { + self.tables.constness.set(ctor_def_id.index, hir::Constness::Const); + let fn_sig = tcx.fn_sig(ctor_def_id); + record!(self.tables.fn_sig[ctor_def_id] <- fn_sig); + // FIXME only encode signature for ctor_def_id + record!(self.tables.fn_sig[variant.def_id] <- fn_sig); + } } } |
