typeck: use diverges.replace(..)
This commit is contained in:
parent
ce361fb24f
commit
d47673d3d7
3 changed files with 6 additions and 13 deletions
|
@ -50,10 +50,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||||
|
|
||||||
self.warn_arms_when_scrutinee_diverges(arms, match_src);
|
self.warn_arms_when_scrutinee_diverges(arms, match_src);
|
||||||
|
|
||||||
// Otherwise, we have to union together the types that the
|
// Otherwise, we have to union together the types that the arms produce and so forth.
|
||||||
// arms produce and so forth.
|
let scrut_diverges = self.diverges.replace(Diverges::Maybe);
|
||||||
let scrut_diverges = self.diverges.get();
|
|
||||||
self.diverges.set(Diverges::Maybe);
|
|
||||||
|
|
||||||
// rust-lang/rust#55810: Typecheck patterns first (via eager
|
// rust-lang/rust#55810: Typecheck patterns first (via eager
|
||||||
// collection into `Vec`), so we get types for all bindings.
|
// collection into `Vec`), so we get types for all bindings.
|
||||||
|
|
|
@ -165,10 +165,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Hide the outer diverging and has_errors flags.
|
// Hide the outer diverging and has_errors flags.
|
||||||
let old_diverges = self.diverges.get();
|
let old_diverges = self.diverges.replace(Diverges::Maybe);
|
||||||
let old_has_errors = self.has_errors.get();
|
let old_has_errors = self.has_errors.replace(false);
|
||||||
self.diverges.set(Diverges::Maybe);
|
|
||||||
self.has_errors.set(false);
|
|
||||||
|
|
||||||
let ty = self.check_expr_kind(expr, expected, needs);
|
let ty = self.check_expr_kind(expr, expected, needs);
|
||||||
|
|
||||||
|
|
|
@ -4418,10 +4418,8 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||||
self.warn_if_unreachable(stmt.hir_id, stmt.span, "statement");
|
self.warn_if_unreachable(stmt.hir_id, stmt.span, "statement");
|
||||||
|
|
||||||
// Hide the outer diverging and `has_errors` flags.
|
// Hide the outer diverging and `has_errors` flags.
|
||||||
let old_diverges = self.diverges.get();
|
let old_diverges = self.diverges.replace(Diverges::Maybe);
|
||||||
let old_has_errors = self.has_errors.get();
|
let old_has_errors = self.has_errors.replace(false);
|
||||||
self.diverges.set(Diverges::Maybe);
|
|
||||||
self.has_errors.set(false);
|
|
||||||
|
|
||||||
match stmt.kind {
|
match stmt.kind {
|
||||||
hir::StmtKind::Local(ref l) => {
|
hir::StmtKind::Local(ref l) => {
|
||||||
|
@ -4431,7 +4429,6 @@ impl<'a, 'tcx> FnCtxt<'a, 'tcx> {
|
||||||
hir::StmtKind::Item(_) => {}
|
hir::StmtKind::Item(_) => {}
|
||||||
hir::StmtKind::Expr(ref expr) => {
|
hir::StmtKind::Expr(ref expr) => {
|
||||||
// Check with expected type of `()`.
|
// Check with expected type of `()`.
|
||||||
|
|
||||||
self.check_expr_has_type_or_error(&expr, self.tcx.mk_unit(), |err| {
|
self.check_expr_has_type_or_error(&expr, self.tcx.mk_unit(), |err| {
|
||||||
self.suggest_semicolon_at_end(expr.span, err);
|
self.suggest_semicolon_at_end(expr.span, err);
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue