about summary refs log tree commit diff
path: root/src/rustc
diff options
context:
space:
mode:
authorPatrick Walton <pcwalton@mimiga.net>2012-08-30 16:07:55 -0700
committerPatrick Walton <pcwalton@mimiga.net>2012-08-30 16:08:58 -0700
commit1f056eda8eb553d3c7d690017b3872db2cc8fdf1 (patch)
tree64777f63eb15a0cac8f265dbed3ef58751ae1a55 /src/rustc
parent65b05a6ce8e486e085e6a58634f66a27cc631cfb (diff)
downloadrust-1f056eda8eb553d3c7d690017b3872db2cc8fdf1.tar.gz
rust-1f056eda8eb553d3c7d690017b3872db2cc8fdf1.zip
rustc: Make the compiler no longer ICE on unused foreign constants
Diffstat (limited to 'src/rustc')
-rw-r--r--src/rustc/middle/trans/foreign.rs5
-rw-r--r--src/rustc/middle/typeck/check/method.rs5
2 files changed, 8 insertions, 2 deletions
diff --git a/src/rustc/middle/trans/foreign.rs b/src/rustc/middle/trans/foreign.rs
index 45dd30b4e18..34ccdb3d6e5 100644
--- a/src/rustc/middle/trans/foreign.rs
+++ b/src/rustc/middle/trans/foreign.rs
@@ -794,7 +794,10 @@ fn trans_foreign_mod(ccx: @crate_ctxt,
               }
           }
         }
-        ast::foreign_item_const(*) => {}
+        ast::foreign_item_const(*) => {
+            let ident = ccx.sess.parse_sess.interner.get(foreign_item.ident);
+            ccx.item_symbols.insert(foreign_item.id, copy *ident);
+        }
       }
     }
 }
diff --git a/src/rustc/middle/typeck/check/method.rs b/src/rustc/middle/typeck/check/method.rs
index bb90bcaea01..93bab0f84e5 100644
--- a/src/rustc/middle/typeck/check/method.rs
+++ b/src/rustc/middle/typeck/check/method.rs
@@ -306,7 +306,10 @@ struct lookup {
             };
 
             let trt_methods = ty::trait_methods(tcx, trait_id);
-            match vec::position(*trt_methods, |m| m.ident == self.m_name) {
+            let match_fn: &fn(m: ty::method) -> bool = |m| {
+                m.self_ty != ast::sty_static && m.ident == self.m_name
+            };
+            match vec::position(*trt_methods, match_fn) {
               None => {
                 /* check next bound */
                 trait_bnd_idx += 1u;