From ccd64ba033a027b0fdbc8ce9d76061ec1cfd115a Mon Sep 17 00:00:00 2001 From: Kento Okura Date: Thu, 2 Apr 2026 15:49:49 +0200 Subject: [PATCH] Fix bug in function that computes suggestions for unresolved idents Add test forests --- lib/compiler/Suggestions.ml | 6 +++--- test/errors.t | 8 ++++---- test/forests/eval-errors/invalid-date.tree | 1 + test/forests/eval-errors/unresolved-ident.tree | 3 +++ test/forests/latex-errors.toml | 2 ++ test/forests/latex-errors/index.tree | 1 + test/forests/unlinked-attributions.toml | 2 ++ test/forests/unlinked-attributions/index.tree | 1 + test/forests/unlinked-attributions/unlinked-tag.tree | 1 + test/forests/xml-errors.toml | 2 ++ test/forests/xml-errors/index.tree | 3 +++ 11 files changed, 23 insertions(+), 7 deletions(-) create mode 100644 test/forests/eval-errors/invalid-date.tree create mode 100644 test/forests/eval-errors/unresolved-ident.tree create mode 100644 test/forests/latex-errors.toml create mode 100644 test/forests/latex-errors/index.tree create mode 100644 test/forests/unlinked-attributions.toml create mode 100644 test/forests/unlinked-attributions/index.tree create mode 100644 test/forests/unlinked-attributions/unlinked-tag.tree create mode 100644 test/forests/xml-errors.toml create mode 100644 test/forests/xml-errors/index.tree diff --git a/lib/compiler/Suggestions.ml b/lib/compiler/Suggestions.ml index f98ea8c..6f942aa 100644 --- a/lib/compiler/Suggestions.ml +++ b/lib/compiler/Suggestions.ml @@ -7,10 +7,10 @@ open Forester_core -let suggestions ?prefix ~(limit : int) (p : Trie.bwd_path) : +let filter ?prefix ~(limit : int) (p : Trie.bwd_path) : ('data, 'tag) Trie.t -> ('data, int) Trie.t = let compare p d = - String.edit_distance ~limit + String.edit_distance (String.concat "" (Bwd.to_list p)) (String.concat "" (Bwd.to_list d)) in @@ -19,7 +19,7 @@ let suggestions ?prefix ~(limit : int) (p : Trie.bwd_path) : if i > limit then None else Some (data, i) let suggestions ~visible path = - suggestions ~limit:2 (Bwd.of_list path) visible + filter ~limit:2 (Bwd.of_list path) visible |> Trie.to_seq |> Seq.map (fun (path, (data, distance)) -> (path, data, distance)) |> List.of_seq diff --git a/test/errors.t b/test/errors.t index 687e4ba..918d636 100644 --- a/test/errors.t +++ b/test/errors.t @@ -20,11 +20,11 @@ ┌─ $TESTCASE_ROOT/forests/eval-errors/invalid-date.tree:1:6 1 │ \date{asdf} │ ^^^^^^ - error: unresolved identifier foobar + error: unresolved identifier rel/has-taf ┌─ $TESTCASE_ROOT/forests/eval-errors/unresolved-ident.tree:2:4 - 2 │ \foobar - │ ^^^^^^ - = Did you mean ⋃? + 2 │ \rel/has-taf + │ ^^^^^^^^^^^ + = Did you mean rel/has-tag? [1] $ forester build missing-tree-dir.toml diff --git a/test/forests/eval-errors/invalid-date.tree b/test/forests/eval-errors/invalid-date.tree new file mode 100644 index 0000000..f1c482c --- /dev/null +++ b/test/forests/eval-errors/invalid-date.tree @@ -0,0 +1 @@ +\date{asdf} diff --git a/test/forests/eval-errors/unresolved-ident.tree b/test/forests/eval-errors/unresolved-ident.tree new file mode 100644 index 0000000..5cb9841 --- /dev/null +++ b/test/forests/eval-errors/unresolved-ident.tree @@ -0,0 +1,3 @@ +\p{ + \rel/has-taf +} diff --git a/test/forests/latex-errors.toml b/test/forests/latex-errors.toml new file mode 100644 index 0000000..c07128f --- /dev/null +++ b/test/forests/latex-errors.toml @@ -0,0 +1,2 @@ +[forest] +trees = ["latex-errors"] diff --git a/test/forests/latex-errors/index.tree b/test/forests/latex-errors/index.tree new file mode 100644 index 0000000..20daa02 --- /dev/null +++ b/test/forests/latex-errors/index.tree @@ -0,0 +1 @@ +\figure{\tex{}{\omega}} diff --git a/test/forests/unlinked-attributions.toml b/test/forests/unlinked-attributions.toml new file mode 100644 index 0000000..9048ca5 --- /dev/null +++ b/test/forests/unlinked-attributions.toml @@ -0,0 +1,2 @@ +[forest] +trees = ["unlinked-attributions"] diff --git a/test/forests/unlinked-attributions/index.tree b/test/forests/unlinked-attributions/index.tree new file mode 100644 index 0000000..a3ffb7e --- /dev/null +++ b/test/forests/unlinked-attributions/index.tree @@ -0,0 +1 @@ +\author{unknown} diff --git a/test/forests/unlinked-attributions/unlinked-tag.tree b/test/forests/unlinked-attributions/unlinked-tag.tree new file mode 100644 index 0000000..d06e9c5 --- /dev/null +++ b/test/forests/unlinked-attributions/unlinked-tag.tree @@ -0,0 +1 @@ +\tag{foo} diff --git a/test/forests/xml-errors.toml b/test/forests/xml-errors.toml new file mode 100644 index 0000000..9e56e98 --- /dev/null +++ b/test/forests/xml-errors.toml @@ -0,0 +1,2 @@ +[forest] +trees = ["xml-errors"] diff --git a/test/forests/xml-errors/index.tree b/test/forests/xml-errors/index.tree new file mode 100644 index 0000000..63e6134 --- /dev/null +++ b/test/forests/xml-errors/index.tree @@ -0,0 +1,3 @@ +\p{ + \ +} -- 2.51.2