diff options
| author | Marijn Haverbeke <marijnh@gmail.com> | 2012-04-03 16:30:39 +0200 |
|---|---|---|
| committer | Marijn Haverbeke <marijnh@gmail.com> | 2012-04-03 16:37:28 +0200 |
| commit | 90d3f0fb5e8512a3024a7ece53c8c200e8e12e28 (patch) | |
| tree | 154084db15ed3dc0021f2d8a613269dbd2a13ebc | |
| parent | fabd49bc2d13d169f55916cc722d45651a0be50b (diff) | |
| download | rust-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.rs | 4 | ||||
| -rw-r--r-- | src/rustc/middle/resolve.rs | 14 |
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); |
