diff --git a/src/librustc_typeck/check/writeback.rs b/src/librustc_typeck/check/writeback.rs index 5eab90764d4e3..889975f0eb2f9 100644 --- a/src/librustc_typeck/check/writeback.rs +++ b/src/librustc_typeck/check/writeback.rs @@ -92,10 +92,10 @@ impl<'cx, 'tcx> WritebackCx<'cx, 'tcx> { // operating on scalars, we clear the overload. fn fix_scalar_binary_expr(&mut self, e: &ast::Expr) { if let ast::ExprBinary(ref op, ref lhs, ref rhs) = e.node { - let lhs_ty = self.fcx.expr_ty(lhs.id); + let lhs_ty = self.fcx.node_ty(lhs.id); let lhs_ty = self.fcx.infcx().resolve_type_vars_if_possible(&lhs_ty); - let rhs_ty = self.fcx.expr_ty(rhs.id); + let rhs_ty = self.fcx.node_ty(rhs.id); let rhs_ty = self.fcx.infcx().resolve_type_vars_if_possible(&rhs_ty); if ty::type_is_scalar(lhs_ty) && ty::type_is_scalar(rhs_ty) { diff --git a/src/test/compile-fail/issue-24363.rs b/src/test/compile-fail/issue-24363.rs new file mode 100644 index 0000000000000..590c464371c06 --- /dev/null +++ b/src/test/compile-fail/issue-24363.rs @@ -0,0 +1,16 @@ +// Copyright 2015 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 or the MIT license +// , at your +// option. This file may not be copied, modified, or distributed +// except according to those terms. + +fn main() { + 1.create_a_type_error[ //~ ERROR attempted access of field + ()+() //~ ERROR binary operation `+` cannot be applied + // ^ ensure that we typeck the inner expression ^ + ]; +}