This PR adds a linter (`linter.unusedSimpArgs`) that complains when a simp argument (`simp [foo]`) is unused. It should do the right thing if the `simp` invocation is run multiple times, e.g. inside `all_goals`. It does not trigger when the `simp` call is inside a macro. The linter message contains a clickable hint to remove the simp argument. I chose to display a separate warning for each unused argument. This means that the user has to click multiple times to remove all of them (and wait for re-elaboration in between). But this just means multiple endorphine kicks, and the main benefit over a single warning that would have to span the whole argument list is that already the squigglies tell the users about unused arguments. This closes #4483. Making Init and Std clean wrt to this linter revealed close to 1000 unused simp args, a pleasant experience for anyone enjoying tidying things: #8905
16 lines
450 B
Text
16 lines
450 B
Text
/-
|
|
Copyright (c) 2022 Lars König. All rights reserved.
|
|
Released under Apache 2.0 license as described in the file LICENSE.
|
|
Authors: Lars König
|
|
-/
|
|
prelude
|
|
import Lean.Linter.Util
|
|
import Lean.Linter.Builtin
|
|
import Lean.Linter.ConstructorAsVariable
|
|
import Lean.Linter.Deprecated
|
|
import Lean.Linter.UnusedVariables
|
|
import Lean.Linter.MissingDocs
|
|
import Lean.Linter.Omit
|
|
import Lean.Linter.List
|
|
import Lean.Linter.Sets
|
|
import Lean.Linter.UnusedSimpArgs
|