Skip to content

Commit f54c47d

Browse files
committed
Move check_expr match block into its own method
1 parent f120c71 commit f54c47d

File tree

1 file changed

+26
-19
lines changed
  • src/librustc_typeck/check

1 file changed

+26
-19
lines changed

src/librustc_typeck/check/mod.rs

Lines changed: 26 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -3291,10 +3291,35 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
32913291
lvalue_pref: LvaluePreference) -> Ty<'tcx> {
32923292
debug!(">> typechecking: expr={:?} expected={:?}",
32933293
expr, expected);
3294+
let ty = self.check_expr_kind(expr, expected, lvalue_pref);
32943295

3296+
self.write_ty(expr.id, ty);
3297+
3298+
debug!("type of expr({}) {} is...", expr.id,
3299+
pprust::expr_to_string(expr));
3300+
debug!("... {:?}, expected is {:?}",
3301+
ty,
3302+
expected);
3303+
3304+
// Add adjustments to !-expressions
3305+
if ty.is_never() {
3306+
if let Some(hir::map::NodeExpr(_)) = self.tcx.map.find(expr.id) {
3307+
let adj_ty = self.next_diverging_ty_var();
3308+
let adj = adjustment::AdjustNeverToAny(adj_ty);
3309+
self.write_adjustment(expr.id, adj);
3310+
return adj_ty;
3311+
}
3312+
}
3313+
ty
3314+
}
3315+
3316+
fn check_expr_kind(&self,
3317+
expr: &'gcx hir::Expr,
3318+
expected: Expectation<'tcx>,
3319+
lvalue_pref: LvaluePreference) -> Ty<'tcx> {
32953320
let tcx = self.tcx;
32963321
let id = expr.id;
3297-
let ty = match expr.node {
3322+
match expr.node {
32983323
hir::ExprBox(ref subexpr) => {
32993324
let expected_inner = expected.to_option(self).map_or(NoExpectation, |ty| {
33003325
match ty.sty {
@@ -3723,25 +3748,7 @@ impl<'a, 'gcx, 'tcx> FnCtxt<'a, 'gcx, 'tcx> {
37233748
}
37243749
}
37253750
}
3726-
};
3727-
self.write_ty(id, ty);
3728-
3729-
debug!("type of expr({}) {} is...", expr.id,
3730-
pprust::expr_to_string(expr));
3731-
debug!("... {:?}, expected is {:?}",
3732-
ty,
3733-
expected);
3734-
3735-
// Add adjustments to !-expressions
3736-
if ty.is_never() {
3737-
if let Some(hir::map::NodeExpr(_)) = self.tcx.map.find(id) {
3738-
let adj_ty = self.next_diverging_ty_var();
3739-
let adj = adjustment::AdjustNeverToAny(adj_ty);
3740-
self.write_adjustment(id, adj);
3741-
return adj_ty;
3742-
}
37433751
}
3744-
ty
37453752
}
37463753

37473754
// Finish resolving a path in a struct expression or pattern `S::A { .. }` if necessary.

0 commit comments

Comments
 (0)