This PR improves the error messages produced by the `split` tactic, including suggesting syntax fixes and related tactics with which it might be confused. Note that, to avoid clashing with the new error message styling conventions used in these messages, this PR also updates the formatting of the message produced by `throwTacticEx`. Closes #6224
69 lines
998 B
Text
69 lines
998 B
Text
|
||
/-- Construct a natural number using `left`. -/
|
||
def zero : Nat := by
|
||
left
|
||
|
||
example : zero = 0 := rfl
|
||
|
||
/-- Construct a natural number using `right`. -/
|
||
def two : Nat := by
|
||
right
|
||
exact 1
|
||
|
||
example : two = 2 := rfl
|
||
|
||
set_option linter.missingDocs false
|
||
|
||
/--
|
||
error: Tactic `left` failed:
|
||
left tactic works for inductive types with exactly 2 constructors
|
||
|
||
⊢ Unit
|
||
-/
|
||
#guard_msgs in
|
||
example : Unit := by
|
||
left
|
||
|
||
inductive F
|
||
| a | b | c
|
||
|
||
/--
|
||
error: Tactic `left` failed:
|
||
left tactic works for inductive types with exactly 2 constructors
|
||
|
||
⊢ F
|
||
-/
|
||
#guard_msgs in
|
||
example : F := by
|
||
left
|
||
|
||
def G := Nat
|
||
|
||
/-- Look through definitions. -/
|
||
example : G := by
|
||
left
|
||
|
||
/--
|
||
error: Tactic `left` failed: target is not an inductive datatype
|
||
|
||
⊢ Type
|
||
-/
|
||
#guard_msgs in
|
||
example : Type := by
|
||
left
|
||
|
||
example : Sum Nat (List Nat) := by
|
||
left
|
||
exact zero
|
||
|
||
example : Sum Nat (List Nat) := by
|
||
right
|
||
exact [0]
|
||
|
||
example : (1 = 1) ∨ (2 = 3) := by
|
||
left
|
||
rfl
|
||
|
||
example : (1 = 2) ∨ (3 = 3) := by
|
||
right
|
||
rfl
|