This PR improves the “expected type mismatch” error message by omitting the type's types when they are defeq, and putting them into separate lines when not. I found it rather tediuos to parse the error message when the expected type is long, because I had to find the `:` in the middle of a large expression somewhere. Also, when both are of sort `Prop` or `Type` it doesn't add much value to print the sort (and it’s only one hover away anyways).
24 lines
370 B
Text
24 lines
370 B
Text
/-!
|
|
# Tests for the `have` tactic.
|
|
-/
|
|
|
|
/-!
|
|
If the body of a `have` fails to elaborate, the tactic completes with a `sorry` for the proof.
|
|
-/
|
|
/--
|
|
error: type mismatch
|
|
False.elim
|
|
has type
|
|
False → ?m.6
|
|
but is expected to have type
|
|
True
|
|
---
|
|
trace: h : True
|
|
⊢ True
|
|
-/
|
|
#guard_msgs in
|
|
example : True := by
|
|
have h : True :=
|
|
False.elim
|
|
trace_state
|
|
assumption
|