]> git.lizzy.rs Git - rust.git/commitdiff
Add asyncness table.
authorCamille GILLOT <gillot.camille@gmail.com>
Fri, 18 Feb 2022 18:15:48 +0000 (19:15 +0100)
committerCamille GILLOT <gillot.camille@gmail.com>
Sat, 19 Feb 2022 14:41:41 +0000 (15:41 +0100)
compiler/rustc_metadata/src/rmeta/decoder.rs
compiler/rustc_metadata/src/rmeta/decoder/cstore_impl.rs
compiler/rustc_metadata/src/rmeta/encoder.rs
compiler/rustc_metadata/src/rmeta/mod.rs

index 7071a0ee22a79400abcf8bca3f5bf0807735bd9f..dc4909bbf5c8c4936e343af9ddfc38e1d5b81f23 100644 (file)
@@ -1431,15 +1431,6 @@ fn is_const_fn_raw(self, id: DefIndex) -> bool {
         constness == hir::Constness::Const
     }
 
         constness == hir::Constness::Const
     }
 
-    fn asyncness(self, id: DefIndex) -> hir::IsAsync {
-        match self.kind(id) {
-            EntryKind::Fn(data) => data.decode(self).asyncness,
-            EntryKind::AssocFn(data) => data.decode(self).fn_data.asyncness,
-            EntryKind::ForeignFn(data) => data.decode(self).asyncness,
-            _ => bug!("asyncness: expected function kind"),
-        }
-    }
-
     fn is_foreign_item(self, id: DefIndex) -> bool {
         match self.kind(id) {
             EntryKind::ForeignImmStatic | EntryKind::ForeignMutStatic | EntryKind::ForeignFn(_) => {
     fn is_foreign_item(self, id: DefIndex) -> bool {
         match self.kind(id) {
             EntryKind::ForeignImmStatic | EntryKind::ForeignMutStatic | EntryKind::ForeignFn(_) => {
index 0a065dc19109885eacd7bd75535127eae37aed38..240792a939b26abc2718c8e9b94f6eaf6da76288 100644 (file)
@@ -138,6 +138,7 @@ fn into_args(self) -> (DefId, DefId) {
     coerce_unsized_info => { table }
     mir_const_qualif => { table }
     rendered_const => { table }
     coerce_unsized_info => { table }
     mir_const_qualif => { table }
     rendered_const => { table }
+    asyncness => { table }
 
     trait_def => { cdata.get_trait_def(def_id.index, tcx.sess) }
     adt_def => { cdata.get_adt_def(def_id.index, tcx) }
 
     trait_def => { cdata.get_trait_def(def_id.index, tcx.sess) }
     adt_def => { cdata.get_adt_def(def_id.index, tcx) }
@@ -149,7 +150,6 @@ fn into_args(self) -> (DefId, DefId) {
     associated_item => { cdata.get_associated_item(def_id.index) }
     inherent_impls => { cdata.get_inherent_implementations_for_type(tcx, def_id.index) }
     is_const_fn_raw => { cdata.is_const_fn_raw(def_id.index) }
     associated_item => { cdata.get_associated_item(def_id.index) }
     inherent_impls => { cdata.get_inherent_implementations_for_type(tcx, def_id.index) }
     is_const_fn_raw => { cdata.is_const_fn_raw(def_id.index) }
-    asyncness => { cdata.asyncness(def_id.index) }
     is_foreign_item => { cdata.is_foreign_item(def_id.index) }
     static_mutability => { cdata.static_mutability(def_id.index) }
     generator_kind => { cdata.generator_kind(def_id.index) }
     is_foreign_item => { cdata.is_foreign_item(def_id.index) }
     static_mutability => { cdata.static_mutability(def_id.index) }
     generator_kind => { cdata.generator_kind(def_id.index) }
index fcb2f3acdd62f3768f8544749bf918f8c42b2c3b..7142242aac7d03032bbdcd2ea2842f8abe7b8f3f 100644 (file)
@@ -1199,11 +1199,8 @@ fn encode_info_for_trait_item(&mut self, def_id: DefId) {
                         hir::TraitFn::Required(ref names) => self.encode_fn_param_names(names),
                         hir::TraitFn::Provided(body) => self.encode_fn_param_names_for_body(body),
                     };
                         hir::TraitFn::Required(ref names) => self.encode_fn_param_names(names),
                         hir::TraitFn::Provided(body) => self.encode_fn_param_names_for_body(body),
                     };
-                    FnData {
-                        asyncness: m_sig.header.asyncness,
-                        constness: hir::Constness::NotConst,
-                        param_names,
-                    }
+                    record!(self.tables.asyncness[def_id] <- m_sig.header.asyncness);
+                    FnData { constness: hir::Constness::NotConst, param_names }
                 } else {
                     bug!()
                 };
                 } else {
                     bug!()
                 };
@@ -1264,8 +1261,8 @@ fn encode_info_for_impl_item(&mut self, def_id: DefId) {
             }
             ty::AssocKind::Fn => {
                 let fn_data = if let hir::ImplItemKind::Fn(ref sig, body) = ast_item.kind {
             }
             ty::AssocKind::Fn => {
                 let fn_data = if let hir::ImplItemKind::Fn(ref sig, body) = ast_item.kind {
+                    record!(self.tables.asyncness[def_id] <- sig.header.asyncness);
                     FnData {
                     FnData {
-                        asyncness: sig.header.asyncness,
                         // Can be inside `impl const Trait`, so using sig.header.constness is not reliable
                         constness: if self.tcx.is_const_fn_raw(def_id) {
                             hir::Constness::Const
                         // Can be inside `impl const Trait`, so using sig.header.constness is not reliable
                         constness: if self.tcx.is_const_fn_raw(def_id) {
                             hir::Constness::Const
@@ -1407,8 +1404,8 @@ fn encode_info_for_item(&mut self, def_id: DefId, item: &'tcx hir::Item<'tcx>) {
                 EntryKind::Const
             }
             hir::ItemKind::Fn(ref sig, .., body) => {
                 EntryKind::Const
             }
             hir::ItemKind::Fn(ref sig, .., body) => {
+                record!(self.tables.asyncness[def_id] <- sig.header.asyncness);
                 let data = FnData {
                 let data = FnData {
-                    asyncness: sig.header.asyncness,
                     constness: sig.header.constness,
                     param_names: self.encode_fn_param_names_for_body(body),
                 };
                     constness: sig.header.constness,
                     param_names: self.encode_fn_param_names_for_body(body),
                 };
@@ -1876,8 +1873,8 @@ fn encode_info_for_foreign_item(&mut self, def_id: DefId, nitem: &hir::ForeignIt
 
         match nitem.kind {
             hir::ForeignItemKind::Fn(_, ref names, _) => {
 
         match nitem.kind {
             hir::ForeignItemKind::Fn(_, ref names, _) => {
+                record!(self.tables.asyncness[def_id] <- hir::IsAsync::NotAsync);
                 let data = FnData {
                 let data = FnData {
-                    asyncness: hir::IsAsync::NotAsync,
                     constness: if self.tcx.is_const_fn_raw(def_id) {
                         hir::Constness::Const
                     } else {
                     constness: if self.tcx.is_const_fn_raw(def_id) {
                         hir::Constness::Const
                     } else {
index c0cfcf3f702f4feccfaf44e7c75cb63044f12509..d3d3fc61e4cd285dbf2254647c550aa60041389a 100644 (file)
@@ -310,6 +310,7 @@ fn encode(&self, buf: &mut Encoder) -> LazyTables<'tcx> {
     coerce_unsized_info: Table<DefIndex, Lazy!(ty::adjustment::CoerceUnsizedInfo)>,
     mir_const_qualif: Table<DefIndex, Lazy!(mir::ConstQualifs)>,
     rendered_const: Table<DefIndex, Lazy!(String)>,
     coerce_unsized_info: Table<DefIndex, Lazy!(ty::adjustment::CoerceUnsizedInfo)>,
     mir_const_qualif: Table<DefIndex, Lazy!(mir::ConstQualifs)>,
     rendered_const: Table<DefIndex, Lazy!(String)>,
+    asyncness: Table<DefIndex, Lazy!(hir::IsAsync)>,
 
     trait_item_def_id: Table<DefIndex, Lazy<DefId>>,
     inherent_impls: Table<DefIndex, Lazy<[DefIndex]>>,
 
     trait_item_def_id: Table<DefIndex, Lazy<DefId>>,
     inherent_impls: Table<DefIndex, Lazy<[DefIndex]>>,
@@ -361,7 +362,6 @@ enum EntryKind {
 
 #[derive(MetadataEncodable, MetadataDecodable)]
 struct FnData {
 
 #[derive(MetadataEncodable, MetadataDecodable)]
 struct FnData {
-    asyncness: hir::IsAsync,
     constness: hir::Constness,
     param_names: Lazy<[Ident]>,
 }
     constness: hir::Constness,
     param_names: Lazy<[Ident]>,
 }