]> git.lizzy.rs Git - rust.git/commitdiff
extract two more record calls
authorNiko Matsakis <niko@alum.mit.edu>
Sun, 14 Aug 2016 22:50:53 +0000 (18:50 -0400)
committerNiko Matsakis <niko@alum.mit.edu>
Wed, 17 Aug 2016 19:21:45 +0000 (15:21 -0400)
src/librustc_metadata/encoder.rs

index cc9b2e213b9f447daf7ee15b64cdcf68492212a0..9855eeeb97070c5af246b9e4a438e246210a43f7 100644 (file)
@@ -1258,54 +1258,54 @@ fn encode_addl_trait_info(&mut self,
             });
         }
     }
+}
 
+impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> {
     fn encode_info_for_foreign_item(&mut self,
+                                    def_id: DefId,
                                     nitem: &hir::ForeignItem) {
         let ecx = self.ecx();
 
         debug!("writing foreign item {}", ecx.tcx.node_path_str(nitem.id));
-        let def_id = ecx.tcx.map.local_def_id(nitem.id);
         let abi = ecx.tcx.map.get_foreign_abi(nitem.id);
 
-        self.record(def_id, |this| {
-            encode_def_id_and_key(ecx, this.rbml_w, def_id);
-            let parent_id = ecx.tcx.map.get_parent(nitem.id);
-            this.encode_parent_item(ecx.tcx.map.local_def_id(parent_id));
-            this.encode_visibility(&nitem.vis);
-            match nitem.node {
-                hir::ForeignItemFn(ref fndecl, _) => {
-                    encode_family(this.rbml_w, FN_FAMILY);
-                    this.encode_bounds_and_type_for_item(nitem.id);
-                    encode_name(this.rbml_w, nitem.name);
-                    if abi == Abi::RustIntrinsic || abi == Abi::PlatformIntrinsic {
-                        encode_inlined_item(ecx,
-                                            this.rbml_w,
-                                            InlinedItemRef::Foreign(def_id, nitem));
-                        this.encode_mir(nitem.id);
-                    }
-                    encode_attributes(this.rbml_w, &nitem.attrs);
-                    let stab = ecx.tcx.lookup_stability(ecx.tcx.map.local_def_id(nitem.id));
-                    let depr = ecx.tcx.lookup_deprecation(ecx.tcx.map.local_def_id(nitem.id));
-                    encode_stability(this.rbml_w, stab);
-                    encode_deprecation(this.rbml_w, depr);
-                    this.encode_method_argument_names(&fndecl);
+        encode_def_id_and_key(ecx, self.rbml_w, def_id);
+        let parent_id = ecx.tcx.map.get_parent(nitem.id);
+        self.encode_parent_item(ecx.tcx.map.local_def_id(parent_id));
+        self.encode_visibility(&nitem.vis);
+        match nitem.node {
+            hir::ForeignItemFn(ref fndecl, _) => {
+                encode_family(self.rbml_w, FN_FAMILY);
+                self.encode_bounds_and_type_for_item(nitem.id);
+                encode_name(self.rbml_w, nitem.name);
+                if abi == Abi::RustIntrinsic || abi == Abi::PlatformIntrinsic {
+                    encode_inlined_item(ecx,
+                                        self.rbml_w,
+                                        InlinedItemRef::Foreign(def_id, nitem));
+                    self.encode_mir(nitem.id);
                 }
-                hir::ForeignItemStatic(_, mutbl) => {
-                    if mutbl {
-                        encode_family(this.rbml_w, 'b');
-                    } else {
-                        encode_family(this.rbml_w, 'c');
-                    }
-                    this.encode_bounds_and_type_for_item(nitem.id);
-                    encode_attributes(this.rbml_w, &nitem.attrs);
-                    let stab = ecx.tcx.lookup_stability(ecx.tcx.map.local_def_id(nitem.id));
-                    let depr = ecx.tcx.lookup_deprecation(ecx.tcx.map.local_def_id(nitem.id));
-                    encode_stability(this.rbml_w, stab);
-                    encode_deprecation(this.rbml_w, depr);
-                    encode_name(this.rbml_w, nitem.name);
+                encode_attributes(self.rbml_w, &nitem.attrs);
+                let stab = ecx.tcx.lookup_stability(ecx.tcx.map.local_def_id(nitem.id));
+                let depr = ecx.tcx.lookup_deprecation(ecx.tcx.map.local_def_id(nitem.id));
+                encode_stability(self.rbml_w, stab);
+                encode_deprecation(self.rbml_w, depr);
+                self.encode_method_argument_names(&fndecl);
+            }
+            hir::ForeignItemStatic(_, mutbl) => {
+                if mutbl {
+                    encode_family(self.rbml_w, 'b');
+                } else {
+                    encode_family(self.rbml_w, 'c');
                 }
+                self.encode_bounds_and_type_for_item(nitem.id);
+                encode_attributes(self.rbml_w, &nitem.attrs);
+                let stab = ecx.tcx.lookup_stability(ecx.tcx.map.local_def_id(nitem.id));
+                let depr = ecx.tcx.lookup_deprecation(ecx.tcx.map.local_def_id(nitem.id));
+                encode_stability(self.rbml_w, stab);
+                encode_deprecation(self.rbml_w, depr);
+                encode_name(self.rbml_w, nitem.name);
             }
-        });
+        }
     }
 }
 
@@ -1329,7 +1329,8 @@ fn visit_item(&mut self, item: &'tcx hir::Item) {
     }
     fn visit_foreign_item(&mut self, ni: &'tcx hir::ForeignItem) {
         intravisit::walk_foreign_item(self, ni);
-        self.index.encode_info_for_foreign_item(ni);
+        let def_id = self.index.ecx.tcx.map.local_def_id(ni.id);
+        self.index.record(def_id, |index| index.encode_info_for_foreign_item(def_id, ni));
     }
     fn visit_ty(&mut self, ty: &'tcx hir::Ty) {
         intravisit::walk_ty(self, ty);
@@ -1357,29 +1358,34 @@ fn encode_info_for_expr(&mut self, expr: &hir::Expr) {
             hir::ExprClosure(..) => {
                 let def_id = ecx.tcx.map.local_def_id(expr.id);
 
-                self.record(def_id, |this| {
-                    encode_def_id_and_key(ecx, this.rbml_w, def_id);
-                    encode_name(this.rbml_w, syntax::parse::token::intern("<closure>"));
-
-                    this.rbml_w.start_tag(tag_items_closure_ty);
-                    write_closure_type(ecx,
-                                       this.rbml_w,
-                                       &ecx.tcx.tables.borrow().closure_tys[&def_id]);
-                    this.rbml_w.end_tag();
-
-                    this.rbml_w.start_tag(tag_items_closure_kind);
-                    ecx.tcx.closure_kind(def_id).encode(this.rbml_w).unwrap();
-                    this.rbml_w.end_tag();
-
-                    assert!(ecx.mir_map.map.contains_key(&def_id));
-                    this.encode_mir(expr.id);
-                });
+                self.record(def_id, |this| this.encode_info_for_closure(def_id, expr.id));
             }
             _ => { }
         }
     }
 }
 
+impl<'a, 'tcx, 'encoder> ItemContentBuilder<'a, 'tcx, 'encoder> {
+    fn encode_info_for_closure(&mut self, def_id: DefId, expr_id: NodeId) {
+        let ecx = self.ecx;
+        encode_def_id_and_key(ecx, self.rbml_w, def_id);
+        encode_name(self.rbml_w, syntax::parse::token::intern("<closure>"));
+
+        self.rbml_w.start_tag(tag_items_closure_ty);
+        write_closure_type(ecx,
+                           self.rbml_w,
+                           &ecx.tcx.tables.borrow().closure_tys[&def_id]);
+        self.rbml_w.end_tag();
+
+        self.rbml_w.start_tag(tag_items_closure_kind);
+        ecx.tcx.closure_kind(def_id).encode(self.rbml_w).unwrap();
+        self.rbml_w.end_tag();
+
+        assert!(ecx.mir_map.map.contains_key(&def_id));
+        self.encode_mir(expr_id);
+    }
+}
+
 fn encode_info_for_items<'a, 'tcx>(ecx: &EncodeContext<'a, 'tcx>,
                                    rbml_w: &mut Encoder)
                                    -> (IndexData, FnvHashMap<XRef<'tcx>, u32>) {