From 62f77181a8b09dcd9450b99c0ce30c7a450a18d0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr> Date: Tue, 28 Feb 2023 12:08:04 +0100 Subject: [PATCH] [server] Catches exceptions when building a marker from a user-provided term. --- src/plugins/server/kernel_ast.ml | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/src/plugins/server/kernel_ast.ml b/src/plugins/server/kernel_ast.ml index 0411f40ff33..6864cbb2b69 100644 --- a/src/plugins/server/kernel_ast.ml +++ b/src/plugins/server/kernel_ast.ml @@ -847,22 +847,26 @@ end module MarkerTermOutput = Data.Joption (Marker) -let build_marker = - Option.map @@ fun input -> +let build_marker input = let env = let open Logic_typing in Lenv.empty () |> append_pre_label |> append_init_label |> append_here_label in - let kf = Kernel_function.find_englobing_kf input.atStmt in - let term = Logic_parse_string.term ~env kf input.term in - let exp = Logic_to_c.term_to_exp term in - Printer_tag.PExp (Some kf, Kstmt input.atStmt, exp) + try + let kf = Kernel_function.find_englobing_kf input.atStmt in + let term = Logic_parse_string.term ~env kf input.term in + let exp = Logic_to_c.term_to_exp term in + Some (Printer_tag.PExp (Some kf, Kstmt input.atStmt, exp)) + with Not_found + | Logic_parse_string.Error _ + | Logic_parse_string.Unbound _ + | Logic_to_c.No_conversion -> None (* TODO: return an error message. *) let descr = "Build a marker from an ACSL term." let () = Request.register ~package ~kind:`GET ~name:"markerFromTerm" ~descr:(Markdown.plain descr) ~input:(module MarkerTermInput) ~output:(module MarkerTermOutput) - build_marker + (fun input -> Option.bind input build_marker) (**************************************************************************) -- GitLab