mirror of
https://github.com/rust-lang/rust.git
synced 2025-02-17 17:33:07 +00:00
Do not ICE in if
without else
in async fn
This commit is contained in:
parent
695fe96517
commit
7d61484b46
@ -244,7 +244,13 @@ impl<'a, 'tcx> Visitor<'tcx> for InteriorVisitor<'a, 'tcx> {
|
||||
// can be reborrowed without needing to spill to a temporary.
|
||||
// If this were not the case, then we could conceivably have
|
||||
// to create intermediate temporaries.)
|
||||
let ty = self.fcx.tables.borrow().expr_ty(expr);
|
||||
self.record(ty, scope, Some(expr), expr.span);
|
||||
//
|
||||
// The type table might not have invormation for this expression
|
||||
// if it is in a malformed scope. (#66387)
|
||||
if let Some(ty) = self.fcx.tables.borrow().expr_ty_opt(expr) {
|
||||
self.record(ty, scope, Some(expr), expr.span);
|
||||
} else {
|
||||
self.fcx.tcx.sess.delay_span_bug(expr.span, "no type for node");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
8
src/test/ui/async-await/issue-66387-if-without-else.rs
Normal file
8
src/test/ui/async-await/issue-66387-if-without-else.rs
Normal file
@ -0,0 +1,8 @@
|
||||
// edition:2018
|
||||
async fn f() -> i32 {
|
||||
if true { //~ ERROR if may be missing an else clause
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {}
|
16
src/test/ui/async-await/issue-66387-if-without-else.stderr
Normal file
16
src/test/ui/async-await/issue-66387-if-without-else.stderr
Normal file
@ -0,0 +1,16 @@
|
||||
error[E0317]: if may be missing an else clause
|
||||
--> $DIR/issue-66387-if-without-else.rs:3:5
|
||||
|
|
||||
LL | / if true {
|
||||
LL | | return 0;
|
||||
LL | | }
|
||||
| |_____^ expected (), found i32
|
||||
|
|
||||
= note: expected type `()`
|
||||
found type `i32`
|
||||
= note: `if` expressions without `else` evaluate to `()`
|
||||
= help: consider adding an `else` block that evaluates to the expected type
|
||||
|
||||
error: aborting due to previous error
|
||||
|
||||
For more information about this error, try `rustc --explain E0317`.
|
Loading…
Reference in New Issue
Block a user