about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMarijn Haverbeke <marijnh@gmail.com>2012-04-03 16:30:39 +0200
committerMarijn Haverbeke <marijnh@gmail.com>2012-04-03 16:37:28 +0200
commit90d3f0fb5e8512a3024a7ece53c8c200e8e12e28 (patch)
tree154084db15ed3dc0021f2d8a613269dbd2a13ebc
parentfabd49bc2d13d169f55916cc722d45651a0be50b (diff)
downloadrust-90d3f0fb5e8512a3024a7ece53c8c200e8e12e28.tar.gz
rust-90d3f0fb5e8512a3024a7ece53c8c200e8e12e28.zip
Ensure method names in iface and impl items are unique
Closes #2114
-rw-r--r--src/rustc/middle/infer.rs4
-rw-r--r--src/rustc/middle/resolve.rs14
2 files changed, 10 insertions, 8 deletions
diff --git a/src/rustc/middle/infer.rs b/src/rustc/middle/infer.rs
index f0e2bcf40fe..ec7af5ff365 100644
--- a/src/rustc/middle/infer.rs
+++ b/src/rustc/middle/infer.rs
@@ -1341,10 +1341,6 @@ impl of combine for glb {
         ok(ty::mk_bot(self.infcx().tcx))
     }
 
-    fn c_regions(a: ty::region, _b: ty::region) -> cres<ty::region> {
-        ok(a) // FIXME
-    }
-
     fn c_mts(a: ty::mt, b: ty::mt) -> cres<ty::mt> {
         let tcx = self.infcx().tcx;
 
diff --git a/src/rustc/middle/resolve.rs b/src/rustc/middle/resolve.rs
index 972fdc186a9..601e2ac4768 100644
--- a/src/rustc/middle/resolve.rs
+++ b/src/rustc/middle/resolve.rs
@@ -1727,13 +1727,21 @@ fn check_item(e: @env, i: @ast::item, &&x: (), v: vt<()>) {
     alt i.node {
       ast::item_fn(decl, ty_params, _) {
         check_fn(*e, i.span, decl);
-        ensure_unique(*e, i.span, typaram_names(ty_params), ident_id,
+        ensure_unique(*e, i.span, ty_params, {|tp| tp.ident},
                       "type parameter");
       }
       ast::item_enum(_, ty_params) {
-        ensure_unique(*e, i.span, typaram_names(ty_params), ident_id,
+        ensure_unique(*e, i.span, ty_params, {|tp| tp.ident},
                       "type parameter");
       }
+      ast::item_iface(_, methods) {
+        ensure_unique(*e, i.span, methods, {|m| m.ident},
+                      "method");
+      }
+      ast::item_impl(_, _, _, methods) {
+        ensure_unique(*e, i.span, methods, {|m| m.ident},
+                      "method");
+      }
       _ { }
     }
 }
@@ -1871,8 +1879,6 @@ fn add_name(ch: checker, sp: span, name: ident) {
     ch.seen += [name];
 }
 
-fn ident_id(&&i: ident) -> ident { ret i; }
-
 fn ensure_unique<T>(e: env, sp: span, elts: [T], id: fn(T) -> ident,
                     kind: str) {
     let ch = checker(e, kind);