This PR improves the error messages produced by invalid projections and field notation. It also adds a hint to the "function expected" error message noting the argument to which the term is being applied, which can be helpful for debugging spurious "function expected" messages actually caused by syntax errors. --------- Co-authored-by: Joachim Breitner <mail@joachim-breitner.de>
33 lines
658 B
Text
33 lines
658 B
Text
/-!
|
||
# Tests for app elaborator in explicit mode
|
||
-/
|
||
|
||
namespace Test1
|
||
|
||
/-!
|
||
Named arguments in explicit mode should not cause arguments they depend on to become implicit,
|
||
unless there are no more positional arguments.
|
||
-/
|
||
|
||
theorem foo {p : Prop} [Decidable p] (h : ite p x y = x) : p := sorry
|
||
|
||
variable {p : Prop} [Decidable p] {α : Type} (x y : α) (h : ite p x y = x)
|
||
|
||
|
||
example : p := @foo (h := h)
|
||
|
||
example : p := @foo (h := h) _ _ _ _ _
|
||
|
||
/--
|
||
error: Function expected at
|
||
foo h
|
||
but this term has type
|
||
p
|
||
|
||
Note: Expected a function because this term is being applied to the argument
|
||
_
|
||
-/
|
||
#guard_msgs in
|
||
example : p := @foo (h := h) _ _ _ _ _ _
|
||
|
||
end Test1
|