@@ -1573,35 +1573,37 @@ fn check_expr_with_unifier(fcx: &@fn_ctxt, expr: &@ast::expr,
1573
1573
}
1574
1574
1575
1575
// Grab the argument types
1576
- let arg_tys;
1577
- alt sty {
1578
- ty : : ty_fn ( _, arg_tys_0, _, _, _) |
1579
- ty:: ty_native_fn ( _, arg_tys_0, _) { arg_tys = arg_tys_0; }
1576
+ let arg_tys = alt sty {
1577
+ ty : : ty_fn ( _, arg_tys, _, _, _) |
1578
+ ty:: ty_native_fn ( _, arg_tys, _) { arg_tys }
1580
1579
_ {
1581
1580
fcx. ccx . tcx . sess . span_fatal ( f. span ,
1582
1581
"mismatched types: \
1583
1582
expected function or native \
1584
1583
function but found "
1585
- + ty_to_str ( fcx. ccx . tcx , fty) ) ;
1584
+ + ty_to_str ( fcx. ccx . tcx , fty) )
1586
1585
}
1587
- }
1586
+ } ;
1588
1587
1589
1588
// Check that the correct number of arguments were supplied.
1590
- let expected_arg_count = vec:: len :: < ty :: arg > ( arg_tys) ;
1591
- let supplied_arg_count = vec:: len :: < option :: t < @ast :: expr > > ( args) ;
1589
+ let expected_arg_count = vec:: len ( arg_tys) ;
1590
+ let supplied_arg_count = vec:: len ( args) ;
1592
1591
if expected_arg_count != supplied_arg_count {
1593
- fcx. ccx . tcx . sess . span_fatal ( sp,
1594
- #fmt ( "this function takes %u \
1595
- parameter%s but %u parameter%s \
1596
- supplied",
1597
- expected_arg_count,
1598
- if expected_arg_count == 1 u {
1599
- ""
1600
- } else { "s" } ,
1601
- supplied_arg_count,
1602
- if supplied_arg_count == 1 u {
1603
- " was"
1604
- } else { "s were" } ) ) ;
1592
+ fcx. ccx . tcx . sess . span_err (
1593
+ sp,
1594
+ #fmt ( "this function takes %u \
1595
+ parameter%s but %u parameter%s supplied",
1596
+ expected_arg_count,
1597
+ if expected_arg_count == 1 u { "" } else { "s" } ,
1598
+ supplied_arg_count,
1599
+ if supplied_arg_count == 1 u
1600
+ { " was" } else { "s were" } ) ) ;
1601
+ // HACK: extend the arguments list with dummy arguments to
1602
+ // check against
1603
+ let dummy = { mode: ty:: mo_val, ty: ty:: mk_nil ( fcx. ccx . tcx ) } ;
1604
+ while vec:: len ( arg_tys) < supplied_arg_count {
1605
+ arg_tys += ~[ dummy] ;
1606
+ }
1605
1607
}
1606
1608
1607
1609
// Check the arguments.
0 commit comments