Skip to content

Commit cfb47b4

Browse files
committed
librustc: Use expr_ty_adjusted in trans_overloaded_call.
1 parent 0973eb4 commit cfb47b4

File tree

2 files changed

+30
-1
lines changed

2 files changed

+30
-1
lines changed

src/librustc/middle/trans/expr.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1466,7 +1466,7 @@ fn trans_overloaded_call<'a>(
14661466
// Evaluate and tuple the arguments.
14671467
let tuple_type = ty::mk_tup(bcx.tcx(),
14681468
args.iter()
1469-
.map(|e| expr_ty(bcx, &**e))
1469+
.map(|e| ty::expr_ty_adjusted(bcx.tcx(), &**e))
14701470
.collect());
14711471
let repr = adt::represent_type(bcx.ccx(), tuple_type);
14721472
let numbered_fields: Vec<(uint, Gc<ast::Expr>)> =

src/test/run-pass/issue-14958.rs

+29
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
// Copyright 2014 The Rust Project Developers. See the COPYRIGHT
2+
// file at the top-level directory of this distribution and at
3+
// http://rust-lang.org/COPYRIGHT.
4+
//
5+
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
6+
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
7+
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
8+
// option. This file may not be copied, modified, or distributed
9+
// except according to those terms.
10+
11+
#![feature(overloaded_calls)]
12+
13+
trait Foo {}
14+
15+
struct Bar;
16+
17+
impl<'a> std::ops::Fn<(&'a Foo,), ()> for Bar {
18+
fn call(&self, _: (&'a Foo,)) {}
19+
}
20+
21+
struct Baz;
22+
23+
impl Foo for Baz {}
24+
25+
fn main() {
26+
let bar = Bar;
27+
let baz = &Baz;
28+
bar(baz);
29+
}

0 commit comments

Comments
 (0)