/-! # `all_goals` should not consume error messages https://github.com/leanprover/lean4/issues/4888 -/ /-- error: Application type mismatch: The argument True has type Prop but is expected to have type Nat in the application Nat.succ True -/ #guard_msgs in theorem bug: True := by all_goals exact Nat.succ True trace "Did not get here" /-! Regression test: `all_goals` should admit goals rather than leaving metavariables. -/ /-- error: omega could not prove the goal: No usable constraints found. You may need to unfold definitions so `omega` can see linear arithmetic facts about `Nat` and `Int`, which may also involve multiplication, division, and modular remainder by constants. --- error: omega could not prove the goal: No usable constraints found. You may need to unfold definitions so `omega` can see linear arithmetic facts about `Nat` and `Int`, which may also involve multiplication, division, and modular remainder by constants. --- error: omega could not prove the goal: No usable constraints found. You may need to unfold definitions so `omega` can see linear arithmetic facts about `Nat` and `Int`, which may also involve multiplication, division, and modular remainder by constants. --- error: omega could not prove the goal: No usable constraints found. You may need to unfold definitions so `omega` can see linear arithmetic facts about `Nat` and `Int`, which may also involve multiplication, division, and modular remainder by constants. -/ #guard_msgs in theorem kernel_declaration_meta_variables (x y z : Option Int) : (x = y) ↔ (x = z) := by apply Iff.elim all_goals omega trace "Did not get here" /-! Regression test: `all_goals` still respects recovery state. -/ /-- warning: declaration uses `sorry` -/ #guard_msgs in example (x y z : Option Int) : (x = y) ↔ (x = z) := by apply Iff.elim first | all_goals omega | all_goals sorry