use fresh vars in place of _|_ when incorrect # of params supplied
This commit is contained in:
parent
23f92ea370
commit
fe610f04d8
@ -2362,11 +2362,13 @@ fn check_expr_with_unifier(fcx: @fn_ctxt, expr: @ast::expr, unify: unifier,
|
||||
} else {
|
||||
"s were"
|
||||
}]);
|
||||
// HACK: build an arguments list with dummy arguments to
|
||||
// check against
|
||||
let dummy = {mode: ast::expl(ast::by_ref),
|
||||
ty: ty::mk_bot(fcx.ccx.tcx)};
|
||||
arg_tys = vec::from_elem(supplied_arg_count, dummy);
|
||||
|
||||
// Just use fresh type variables for the types,
|
||||
// since we don't know them.
|
||||
arg_tys = vec::from_fn(supplied_arg_count) {|_i|
|
||||
{mode: ast::expl(ast::by_ref),
|
||||
ty: next_ty_var(fcx)}
|
||||
};
|
||||
}
|
||||
|
||||
// Check the arguments.
|
||||
|
12
src/test/compile-fail/not-enough-arguments.rs
Normal file
12
src/test/compile-fail/not-enough-arguments.rs
Normal file
@ -0,0 +1,12 @@
|
||||
// Check that the only error msg we report is the
|
||||
// mismatch between the # of params, and not other
|
||||
// unrelated errors.
|
||||
|
||||
fn foo(a: int, b: int, c: int, d:int) {
|
||||
fail;
|
||||
}
|
||||
|
||||
fn main() {
|
||||
foo(1, 2, 3);
|
||||
//!^ ERROR this function takes 4 parameters but 3
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user