From 1f056eda8eb553d3c7d690017b3872db2cc8fdf1 Mon Sep 17 00:00:00 2001 From: Patrick Walton Date: Thu, 30 Aug 2012 16:07:55 -0700 Subject: [PATCH] rustc: Make the compiler no longer ICE on unused foreign constants --- src/rustc/middle/trans/foreign.rs | 5 ++++- src/rustc/middle/typeck/check/method.rs | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/rustc/middle/trans/foreign.rs b/src/rustc/middle/trans/foreign.rs index 45dd30b4e185..34ccdb3d6e5b 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 bb90bcaea012..93bab0f84e5d 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;