diff --git a/compiler/catala_utils/suggestions.ml b/compiler/catala_utils/suggestions.ml index ee6fca0d..65f5f3aa 100644 --- a/compiler/catala_utils/suggestions.ml +++ b/compiler/catala_utils/suggestions.ml @@ -77,13 +77,25 @@ let sorted_candidates ?(max_elements = 5) suggs given = in List.concat candidates |> sub [] max_elements -let format (ppf : Format.formatter) (suggestions_list : string list) = - match suggestions_list with +let format ppf suggs = + let open Format in + let pp_elt elt = fprintf ppf "@{\"%s\"@}" elt in + let rec loop = function + | [] -> assert false + | [h] -> + pp_elt h; + pp_print_string ppf "?" + | [h; t] -> + pp_elt h; + fprintf ppf "@ or@ "; + loop [t] + | h :: t -> + pp_elt h; + fprintf ppf ",@ "; + loop t + in + match suggs with | [] -> () - | _ :: _ -> - Format.pp_print_string ppf "Maybe you wanted to write : "; - Format.pp_print_list - ~pp_sep:(fun ppf () -> Format.fprintf ppf ",@ or ") - (fun ppf string -> Format.fprintf ppf "@{\"%s\"@}" string) - ppf suggestions_list; - Format.pp_print_string ppf " ?" + | suggs -> + pp_print_string ppf "Maybe you wanted to write: "; + loop suggs diff --git a/tests/default/bad/typing_or_logical_error.catala_en b/tests/default/bad/typing_or_logical_error.catala_en index 2fb9b88b..fa086ef6 100644 --- a/tests/default/bad/typing_or_logical_error.catala_en +++ b/tests/default/bad/typing_or_logical_error.catala_en @@ -24,7 +24,7 @@ $ catala test-scope A │ 8 │ definition wrong_definition = 1 │ │ ‾ │ -│ Maybe you wanted to write : "." ? +│ Maybe you wanted to write: "."? └─ #return code 123# ``` diff --git a/tests/default/bad/verbose_errors.catala_en b/tests/default/bad/verbose_errors.catala_en index 08217c7c..3815e74f 100644 --- a/tests/default/bad/verbose_errors.catala_en +++ b/tests/default/bad/verbose_errors.catala_en @@ -50,8 +50,8 @@ $ catala test-scope A │ │ ‾ ├─ Article │ -│ Maybe you wanted to write : "field0", or "field2", or "field10", -│ or "field1", or "field3" ? +│ Maybe you wanted to write: "field0", "field2", "field10", "field1" or +│ "field3"? └─ #return code 123# ``` diff --git a/tests/enum/bad/quick_pattern_fail.catala_en b/tests/enum/bad/quick_pattern_fail.catala_en index 26259c60..5c13c344 100644 --- a/tests/enum/bad/quick_pattern_fail.catala_en +++ b/tests/enum/bad/quick_pattern_fail.catala_en @@ -29,7 +29,7 @@ $ catala test-scope A │ │ ‾‾‾‾‾ ├─ Article │ -│ Maybe you wanted to write : "Case1", or "Case2" ? +│ Maybe you wanted to write: "Case1" or "Case2"? └─ #return code 123# ``` diff --git a/tests/enum/bad/wrong_cons.catala_en b/tests/enum/bad/wrong_cons.catala_en index 7fde756e..5f826432 100644 --- a/tests/enum/bad/wrong_cons.catala_en +++ b/tests/enum/bad/wrong_cons.catala_en @@ -25,7 +25,7 @@ $ catala Typecheck │ │ ‾‾‾‾‾ ├─ Article │ -│ Maybe you wanted to write : "Case1" ? +│ Maybe you wanted to write: "Case1"? └─ #return code 123# ``` diff --git a/tests/parsing/bad/multiple_errors.catala_en b/tests/parsing/bad/multiple_errors.catala_en index ffe93d63..6f9a229e 100644 --- a/tests/parsing/bad/multiple_errors.catala_en +++ b/tests/parsing/bad/multiple_errors.catala_en @@ -30,7 +30,7 @@ $ catala test-scope A │ 12 │ definitoin i equals 3. │ │ ‾‾‾‾‾‾‾‾‾‾ │ -│ Maybe you wanted to write : "definition" ? +│ Maybe you wanted to write: "definition"? └─ ┌─[ERROR (2/2)]─ @@ -46,7 +46,7 @@ $ catala test-scope A │ 16 │ definition i equal money of (decimal of x) │ │ ‾‾‾‾‾ │ -│ Maybe you wanted to write : "equals" ? +│ Maybe you wanted to write: "equals"? └─ #return code 123# ``` diff --git a/tests/parsing/bad/single_error.catala_en b/tests/parsing/bad/single_error.catala_en index b47f7b20..30a4ac6d 100644 --- a/tests/parsing/bad/single_error.catala_en +++ b/tests/parsing/bad/single_error.catala_en @@ -21,7 +21,7 @@ $ catala test-scope A │ 5 │ output i contents decimal │ │ ‾‾‾‾‾‾‾‾ │ -│ Maybe you wanted to write : "content" ? +│ Maybe you wanted to write: "content"? └─ #return code 123# ``` diff --git a/tests/scope/bad/scope_call_extra.catala_en b/tests/scope/bad/scope_call_extra.catala_en index 91055354..6f44b80b 100644 --- a/tests/scope/bad/scope_call_extra.catala_en +++ b/tests/scope/bad/scope_call_extra.catala_en @@ -31,7 +31,7 @@ $ catala dcalc -s Titi │ 2 │ declaration scope Toto: │ │ ‾‾‾‾ │ -│ Maybe you wanted to write : "bar", or "baz", or "foo" ? +│ Maybe you wanted to write: "bar", "baz" or "foo"? └─ #return code 123# ```