-use crate::utils::span_lint_and_help;
+use clippy_utils::diagnostics::span_lint_and_help;
use rustc_ast::ast::{Block, Expr, ExprKind, Stmt, StmtKind};
use rustc_ast::visit::{walk_expr, Visitor};
-use rustc_lint::{EarlyContext, EarlyLintPass};
+use rustc_lint::{EarlyContext, EarlyLintPass, LintContext};
use rustc_middle::lint::in_external_macro;
use rustc_session::{declare_lint_pass, declare_tool_lint};
declare_clippy_lint! {
- /// **What it does:** Checks for `else` blocks that can be removed without changing semantics.
+ /// ### What it does
+ /// Checks for `else` blocks that can be removed without changing semantics.
///
- /// **Why is this bad?** The `else` block adds unnecessary indentation and verbosity.
+ /// ### Why is this bad?
+ /// The `else` block adds unnecessary indentation and verbosity.
///
- /// **Known problems:** Some may prefer to keep the `else` block for clarity.
- ///
- /// **Example:**
+ /// ### Known problems
+ /// Some may prefer to keep the `else` block for clarity.
///
+ /// ### Example
/// ```rust
/// fn my_func(count: u32) {
/// if count == 0 {
/// print!("Moving on...");
/// }
/// ```
+ #[clippy::version = "1.50.0"]
pub REDUNDANT_ELSE,
pedantic,
"`else` branch that can be removed without changing semantics"
impl EarlyLintPass for RedundantElse {
fn check_stmt(&mut self, cx: &EarlyContext<'_>, stmt: &Stmt) {
- if in_external_macro(cx.sess, stmt.span) {
+ if in_external_macro(cx.sess(), stmt.span) {
return;
}
// Only look at expressions that are a whole statement