blob: cf98c8ec75e79116d37f87d866c8599c79b7d869 [file] [edit]
/-!
# Invalid named arguments in patterns
This test assesses hints in error messages for invalid argument names in patterns.
-/
inductive T where
| mk1 (num : Nat) (str : String)
| mk2 (x y z : Bool)
/--
error: Invalid argument name `w` for function `T.mk2`
Hint: Perhaps you meant one of the following parameter names:
• `x`: w̵x̲
-/
#guard_msgs in
example (t : T) :=
match t with
| .mk2 (y := true) (w := true) (z := false) => ()
| _ => ()
/--
error: Invalid argument name `w` for function `T.mk2`
Hint: Replace `w` with one of the following parameter names:
• `x`: w̵x̲
-/
#guard_msgs in
example (t : T) :=
match t with
| T.mk2 (y := true) (w := true) (z := false) => ()
| _ => ()
/-- error: Invalid pattern: Too many arguments to `T.mk2`; expected 3 explicit arguments -/
#guard_msgs in
example (t : T) :=
match t with
| T.mk2 a b (y := true) (z := false) (w := true) => ()
| _ => ()
/--
error: Invalid argument names `n` and `s` for function `T.mk1`
Hint: Replace `n` with one of the following parameter names:
• `num`: nu̲m̲
• `str`: n̵s̲t̲r̲
-/
#guard_msgs in
example (t : T) :=
match t with
| T.mk1 (n := 17) (s := "hi") => ()
| _ => ()
-- Ensure we don't offer hints for synthetic syntax:
macro "make_synthetic_bad_match" : command => `(
example (t : T) :=
match t with
| T.mk1 (m := 0) (n := 1) .. => ()
| _ => ()
)
/--
error: Invalid argument names `m` and `n` for function `T.mk1✝`
Hint: Perhaps you meant one of the following parameter names: `num` or `str`
-/
#guard_msgs in
make_synthetic_bad_match