librustc: Use expr_ty_adjusted in trans_overloaded_call.

This commit is contained in:
Luqman Aden 2014-06-17 15:21:28 -04:00 committed by Alex Crichton
parent ae7006e373
commit 8e9e17d188
2 changed files with 30 additions and 1 deletions

View File

@ -1463,7 +1463,7 @@ fn trans_overloaded_call<'a>(
// Evaluate and tuple the arguments.
let tuple_type = ty::mk_tup(bcx.tcx(),
args.iter()
.map(|e| expr_ty(bcx, &**e))
.map(|e| ty::expr_ty_adjusted(bcx.tcx(), &**e))
.collect());
let repr = adt::represent_type(bcx.ccx(), tuple_type);
let numbered_fields: Vec<(uint, Gc<ast::Expr>)> =

View File

@ -0,0 +1,29 @@
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
#![feature(overloaded_calls)]
trait Foo {}
struct Bar;
impl<'a> std::ops::Fn<(&'a Foo,), ()> for Bar {
fn call(&self, _: (&'a Foo,)) {}
}
struct Baz;
impl Foo for Baz {}
fn main() {
let bar = Bar;
let baz = &Baz;
bar(baz);
}