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).
64 lines
893 B
Text
64 lines
893 B
Text
@[irreducible] def f (x : Nat) := x + 1
|
|
set_option allowUnsafeReducibility true
|
|
set_option pp.mvars false
|
|
/--
|
|
error: type mismatch
|
|
rfl
|
|
has type
|
|
?_ = ?_
|
|
but is expected to have type
|
|
f x = x + 1
|
|
-/
|
|
#guard_msgs in
|
|
example : f x = x + 1 :=
|
|
rfl
|
|
|
|
section
|
|
attribute [local reducible] f
|
|
example : f x = x + 1 :=
|
|
rfl
|
|
end
|
|
|
|
/--
|
|
error: type mismatch
|
|
rfl
|
|
has type
|
|
?_ = ?_
|
|
but is expected to have type
|
|
f x = x + 1
|
|
-/
|
|
#guard_msgs in
|
|
example : f x = x + 1 :=
|
|
rfl
|
|
|
|
namespace Boo
|
|
attribute [scoped semireducible] f
|
|
end Boo
|
|
|
|
/--
|
|
error: type mismatch
|
|
rfl
|
|
has type
|
|
?_ = ?_
|
|
but is expected to have type
|
|
f x = x + 1
|
|
-/
|
|
#guard_msgs in
|
|
example : f x = x + 1 :=
|
|
rfl
|
|
|
|
open Boo in -- `f` should be `semireducible
|
|
example : f x = x + 1 :=
|
|
rfl
|
|
|
|
/--
|
|
error: type mismatch
|
|
rfl
|
|
has type
|
|
?_ = ?_
|
|
but is expected to have type
|
|
f x = x + 1
|
|
-/
|
|
#guard_msgs in
|
|
example : f x = x + 1 :=
|
|
rfl
|