about summary refs log tree commit diff
path: root/src
diff options
context:
space:
mode:
authorTom Jakubowski <tom@crystae.net>2014-12-20 10:08:16 -0800
committerTom Jakubowski <tom@crystae.net>2014-12-20 10:08:16 -0800
commitfb9b45189effece40b2b672fc4fd3b01e15f19cb (patch)
treea4208f5331656e77abbd35937646c49d9a1f9da7 /src
parent44f6f52578d5711ba8f395c8d5da577bb3c5fe15 (diff)
downloadrust-fb9b45189effece40b2b672fc4fd3b01e15f19cb.tar.gz
rust-fb9b45189effece40b2b672fc4fd3b01e15f19cb.zip
Visit + encode stability for foreign items
Fix #19649
Diffstat (limited to 'src')
-rw-r--r--src/librustc/metadata/encoder.rs4
-rw-r--r--src/librustc/middle/stability.rs4
2 files changed, 8 insertions, 0 deletions
diff --git a/src/librustc/metadata/encoder.rs b/src/librustc/metadata/encoder.rs
index 8eb902f0797..e5dae926db9 100644
--- a/src/librustc/metadata/encoder.rs
+++ b/src/librustc/metadata/encoder.rs
@@ -1479,6 +1479,8 @@ fn encode_info_for_foreign_item(ecx: &EncodeContext,
             encode_inlined_item(ecx, rbml_w, IIForeignRef(nitem));
         }
         encode_attributes(rbml_w, &*nitem.attrs);
+        let stab = stability::lookup(ecx.tcx, ast_util::local_def(nitem.id));
+        encode_stability(rbml_w, stab);
         encode_symbol(ecx, rbml_w, nitem.id);
       }
       ast::ForeignItemStatic(_, mutbl) => {
@@ -1490,6 +1492,8 @@ fn encode_info_for_foreign_item(ecx: &EncodeContext,
         encode_bounds_and_type(rbml_w, ecx,
                                &lookup_item_type(ecx.tcx,local_def(nitem.id)));
         encode_attributes(rbml_w, &*nitem.attrs);
+        let stab = stability::lookup(ecx.tcx, ast_util::local_def(nitem.id));
+        encode_stability(rbml_w, stab);
         encode_symbol(ecx, rbml_w, nitem.id);
         encode_name(rbml_w, nitem.ident.name);
       }
diff --git a/src/librustc/middle/stability.rs b/src/librustc/middle/stability.rs
index ca8029fdfca..3e874f46a33 100644
--- a/src/librustc/middle/stability.rs
+++ b/src/librustc/middle/stability.rs
@@ -111,6 +111,10 @@ impl<'v> Visitor<'v> for Annotator {
     fn visit_struct_field(&mut self, s: &StructField) {
         self.annotate(s.node.id, &s.node.attrs, |v| visit::walk_struct_field(v, s));
     }
+
+    fn visit_foreign_item(&mut self, i: &ast::ForeignItem) {
+        self.annotate(i.id, &i.attrs, |_| {});
+    }
 }
 
 impl Index {