use super::common::HirExpr;
pub(crate) fn expr_observes_eval_order(expr: &HirExpr) -> bool {
match expr {
HirExpr::GlobalRef(_) | HirExpr::TableAccess(_) | HirExpr::Call(_) => true,
HirExpr::Unary(_) | HirExpr::Binary(_) | HirExpr::LogicalAnd(_) | HirExpr::LogicalOr(_) => {
true
}
HirExpr::Decision(_) | HirExpr::TableConstructor(_) => true,
HirExpr::Closure(closure) => closure
.captures
.iter()
.any(|capture| expr_observes_eval_order(&capture.value)),
HirExpr::Nil
| HirExpr::Boolean(_)
| HirExpr::Integer(_)
| HirExpr::Number(_)
| HirExpr::String(_)
| HirExpr::Int64(_)
| HirExpr::UInt64(_)
| HirExpr::Complex { .. }
| HirExpr::ParamRef(_)
| HirExpr::LocalRef(_)
| HirExpr::UpvalueRef(_)
| HirExpr::TempRef(_)
| HirExpr::VarArg
| HirExpr::Unresolved(_) => false,
}
}