/-! Assortion of tests to make sure the #8815 simp arg elaboration refactoring did not change behavior. -/ set_option linter.unusedVariables false example (P Q : Prop) (hQ : Q) (hP : P) : P := by simp [*, -hQ] /-- error: `simp` made no progress -/ #guard_msgs in example (P Q : Prop) (hQ : Q) (hP : P) : P := by simp [*, -hP] /-- error: Unknown constant `hQ` -/ #guard_msgs in example (P Q : Prop) (hQ : Q) (hP : P) : P := by simp [-hQ, *] #guard_msgs in example (P Q : Prop) (hQ : Q) (hP : P) : P := by simp_all [-hQ] /-- error: Unknown constant `hQ` --- error: `simp` made no progress -/ #guard_msgs in example (P Q : Prop) (hQ : Q) (hP : P) : P := by simp [-hQ] theorem a_thm : True := trivial def f : Nat → Nat | 0 => 1 | n + 1 => f n + 1 example : f 0 > 0 := by simp [f] example : f 0 > 0 := by simp! -- NB: simp! disables all warnings, not just for declarations to unfold -- Mild bug, but not a regression. /-- error: unsolved goals ⊢ 0 < f 0 -/ #guard_msgs in example : f 0 > 0 := by simp! [-f, -a_thm] /-- warning: `f` does not have the `[simp]` attribute --- warning: `a_thm` does not have the `[simp]` attribute --- error: unsolved goals ⊢ 0 < f 0 -/ #guard_msgs in example : f 0 > 0 := by simp [-f, -a_thm] /-- error: Invalid simp theorem: Expected a proposition, but found Type 32 -/ #guard_msgs in example : True := by simp [Sort 32] -- mostly about error location, once guard_msgs shows that