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).
29 lines
513 B
Text
29 lines
513 B
Text
/-!
|
|
# Improved `simpa` error messages
|
|
|
|
Updated error message to show the elaborated term rather than `h✝`
|
|
-/
|
|
|
|
/--
|
|
error: type mismatch, term
|
|
hp
|
|
after simplification has type
|
|
p
|
|
but is expected to have type
|
|
p ∧ q
|
|
-/
|
|
#guard_msgs in
|
|
example (p q : Prop) (hp : p ∧ True) : p ∧ q ∧ True := by
|
|
simpa using hp
|
|
|
|
/--
|
|
error: type mismatch, term
|
|
fun x => x
|
|
after simplification has type
|
|
True
|
|
but is expected to have type
|
|
False
|
|
-/
|
|
#guard_msgs in
|
|
example : False := by
|
|
simpa using (fun x : True => x)
|