Track unsafe blocks, don't trigger missing unsafe diagnostic when unsafe exprs within unsafe block

This commit is contained in:
Paul Daniel Faria 2020-05-24 16:24:36 -04:00
parent 3df0f9ce7e
commit 278cbf12cd
7 changed files with 82 additions and 19 deletions

View file

@ -150,6 +150,9 @@ pub enum Expr {
Tuple {
exprs: Vec<ExprId>,
},
UnsafeBlock {
body: ExprId,
},
Array(Array),
Literal(Literal),
}
@ -247,7 +250,7 @@ impl Expr {
f(*expr);
}
}
Expr::TryBlock { body } => f(*body),
Expr::TryBlock { body } | Expr::UnsafeBlock { body } => f(*body),
Expr::Loop { body, .. } => f(*body),
Expr::While { condition, body, .. } => {
f(*condition);