use crate::passes::walk::NodeCtx;
use syntax::ast::Expression;
use super::helpers::{expressions_equivalent, is_empty_block};
pub fn check_identical_if_branches(expression: &Expression, ctx: &NodeCtx) {
let Expression::If {
consequence,
alternative,
span,
..
} = expression
else {
return;
};
if matches!(
alternative.as_ref(),
Expression::If { .. } | Expression::IfLet { .. }
) {
return;
}
if is_empty_block(consequence) || is_empty_block(alternative) {
return;
}
if !expressions_equivalent(consequence, alternative) {
return;
}
ctx.sink
.push(diagnostics::lint::identical_if_branches(span));
}