diff --git a/src/kernel_internals/parsing/clexer.mll b/src/kernel_internals/parsing/clexer.mll
index 603bab87c565977c17eece7e50293bb4e86baaff..71d54b7ee3449b04cebdab892e97bdc67ada3112 100644
--- a/src/kernel_internals/parsing/clexer.mll
+++ b/src/kernel_internals/parsing/clexer.mll
@@ -233,12 +233,12 @@ let init_lexicon _ =
           let filename =
             Filepath.Normalized.to_pretty_string (fst loc).pos_path
           in
-          (* TODO: when 4.07 becomes minimal OCaml version,
-             use String.to_seq and Seq.fold_left. *)
-          let l = ref [] in
-          let convert_char c = l:=Int64.of_int (Char.code c) :: !l in
-          String.iter convert_char filename;
-          CST_STRING (List.rev !l,loc)))
+          let seq = String.to_seq filename in
+          let convert_char c = Int64.of_int (Char.code c) in
+          let l =
+            Seq.fold_left (fun acc c -> convert_char c :: acc) [] seq
+          in
+          CST_STRING (List.rev l,loc)))
     ]