rustc: Fix inference for auto slots (forgot to stage changes before)

This commit is contained in:
Patrick Walton 2011-03-18 17:45:11 -07:00
parent a599d80e98
commit 9c0c0af1b2
1 changed files with 6 additions and 7 deletions

View File

@ -924,7 +924,9 @@ fn collect_item_types(session.session sess, @ast.crate crate)
fn unify(&@fn_ctxt fcx, @ty.t expected, @ty.t actual) -> ty.unify_result {
obj unify_handler(@fn_ctxt fcx) {
fn resolve_local(ast.def_id id) -> @ty.t {
check (fcx.locals.contains_key(id));
if (!fcx.locals.contains_key(id)) {
ret next_ty_var(fcx.ccx);
}
ret fcx.locals.get(id);
}
fn record_local(ast.def_id id, @ty.t t) {
@ -2377,20 +2379,17 @@ fn check_decl_local(&@fn_ctxt fcx, &@ast.decl decl) -> @ast.decl {
alt (decl.node) {
case (ast.decl_local(?local)) {
auto local_ty;
alt (local.ty) {
case (none[@ast.ty]) {
// Auto slot. Assign a ty_var.
local_ty = next_ty_var(fcx.ccx);
// Auto slot. Do nothing for now.
}
case (some[@ast.ty](?ast_ty)) {
local_ty = ast_ty_to_ty_crate(fcx.ccx, ast_ty);
auto local_ty = ast_ty_to_ty_crate(fcx.ccx, ast_ty);
fcx.locals.insert(local.id, local_ty);
}
}
fcx.locals.insert(local.id, local_ty);
auto rhs_ty = local_ty;
auto init = local.init;
alt (local.init) {
case (some[@ast.expr](?expr)) {