/-! # 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