diff options
| author | Niko Matsakis <niko@alum.mit.edu> | 2012-02-12 07:17:42 -0800 |
|---|---|---|
| committer | Niko Matsakis <niko@alum.mit.edu> | 2012-02-13 06:50:58 -0800 |
| commit | 4eb52f69a9ebd39af4545fe7583f843edaa1a07d (patch) | |
| tree | 795180045e1687b23a6e69709f5b8bf8815f0f59 /src/comp | |
| parent | a7641e99e8e6830e4242cfe441a867eb6e955694 (diff) | |
do not fail if iface/impl method have different number of parameters
Diffstat (limited to 'src/comp')
| -rw-r--r-- | src/comp/middle/typeck.rs | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/src/comp/middle/typeck.rs b/src/comp/middle/typeck.rs index 6a49e288701..f80e20bd701 100644 --- a/src/comp/middle/typeck.rs +++ b/src/comp/middle/typeck.rs @@ -620,6 +620,13 @@ fn compare_impl_method(tcx: ty::ctxt, sp: span, impl_m: ty::method, tcx.sess.span_err(sp, "method `" + if_m.ident + "` has an incompatible set of type parameters"); ty::mk_fn(tcx, impl_m.fty) + } else if vec::len(impl_m.fty.inputs) != vec::len(if_m.fty.inputs) { + tcx.sess.span_err(sp,#fmt["method `%s`` has %u parameters \ + but the iface has %u", + if_m.ident, + vec::len(impl_m.fty.inputs), + vec::len(if_m.fty.inputs)]); + ty::mk_fn(tcx, impl_m.fty) } else { let auto_modes = vec::map2(impl_m.fty.inputs, if_m.fty.inputs, {|i, f| alt ty::get(f.ty).struct { |
