]> git.lizzy.rs Git - rust.git/commitdiff
Make encode_info_for_trait_item use queries instead of accessing the HIR
authorSantiago Pastorino <spastorino@gmail.com>
Thu, 8 Dec 2022 14:56:43 +0000 (11:56 -0300)
committerSantiago Pastorino <spastorino@gmail.com>
Thu, 8 Dec 2022 14:58:14 +0000 (11:58 -0300)
compiler/rustc_metadata/src/rmeta/encoder.rs

index 8b4c4bb2675cb62309fe840c2c5efc1303b1ca72..29f9e82da75cc58b9b6f50b2f090dde45e50d7d2 100644 (file)
@@ -1337,24 +1337,16 @@ fn encode_info_for_trait_item(&mut self, def_id: DefId) {
         debug!("EncodeContext::encode_info_for_trait_item({:?})", def_id);
         let tcx = self.tcx;
 
-        let ast_item = tcx.hir().expect_trait_item(def_id.expect_local());
-        self.tables.impl_defaultness.set(def_id.index, ast_item.defaultness);
+        let impl_defaultness = tcx.impl_defaultness(def_id.expect_local());
+        self.tables.impl_defaultness.set(def_id.index, impl_defaultness);
         let trait_item = tcx.associated_item(def_id);
         self.tables.assoc_container.set(def_id.index, trait_item.container);
 
         match trait_item.kind {
             ty::AssocKind::Const => {}
             ty::AssocKind::Fn => {
-                let hir::TraitItemKind::Fn(m_sig, m) = &ast_item.kind else { bug!() };
-                match *m {
-                    hir::TraitFn::Required(ref names) => {
-                        record_array!(self.tables.fn_arg_names[def_id] <- *names)
-                    }
-                    hir::TraitFn::Provided(body) => {
-                        record_array!(self.tables.fn_arg_names[def_id] <- self.tcx.hir().body_param_names(body))
-                    }
-                };
-                self.tables.asyncness.set(def_id.index, m_sig.header.asyncness);
+                record_array!(self.tables.fn_arg_names[def_id] <- tcx.fn_arg_names(def_id));
+                self.tables.asyncness.set(def_id.index, tcx.asyncness(def_id));
                 self.tables.constness.set(def_id.index, hir::Constness::NotConst);
             }
             ty::AssocKind::Type => {