From 094b36aae4d53f175f8980a8bf1f2838c86d102c Mon Sep 17 00:00:00 2001 From: James Miller Date: Fri, 28 Nov 2014 16:04:06 +1300 Subject: [PATCH] Fix corner case in `expr_kind` Assume that an ExprPath that resolves to a DefStruct, but doesn't have a type, is a unit struct constructor expression and return the kind `RvalueDpsExpr` --- src/librustc/middle/ty.rs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs index 0574806c1b770..7f74ac66001c4 100644 --- a/src/librustc/middle/ty.rs +++ b/src/librustc/middle/ty.rs @@ -3873,8 +3873,8 @@ pub fn expr_kind(tcx: &ctxt, expr: &ast::Expr) -> ExprKind { } def::DefStruct(_) => { - match expr_ty(tcx, expr).sty { - ty_bare_fn(..) => RvalueDatumExpr, + match expr_ty_opt(tcx, expr) { + Some(&TyS {sty: ty_bare_fn(..), ..}) => RvalueDatumExpr, _ => RvalueDpsExpr } }