From 2e860e4d9ff4bbd9154c5f1751ebb98f3ace1d64 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?David=20B=C3=BChler?= <david.buhler@cea.fr>
Date: Thu, 4 Jul 2019 14:47:28 +0200
Subject: [PATCH] [Kernel] -explain: do not fail on unknown options.

---
 .../cmdline_parameters/cmdline.ml             | 22 +++++++++++--------
 1 file changed, 13 insertions(+), 9 deletions(-)

diff --git a/src/kernel_services/cmdline_parameters/cmdline.ml b/src/kernel_services/cmdline_parameters/cmdline.ml
index 4b536083294..808046e9e91 100644
--- a/src/kernel_services/cmdline_parameters/cmdline.ml
+++ b/src/kernel_services/cmdline_parameters/cmdline.ml
@@ -1085,15 +1085,19 @@ let list_all_plugin_options ~print_invisible =
 (* ************************************************************************* *)
 
 let pp_option_help name =
-  let option = Hashtbl.find Plugin.all_options name in
-  let help =
-    if option.oname = name then option.ohelp else
-      "alias for " ^ option.oname ^ "\n" ^ option.ohelp
-  in
-  let argname = option.argname in
-  let name = if argname = "" then name else name ^ " <" ^ argname ^ ">" in
-  let print fmt = print_helpline fmt name help option.ext_help in
-  Log.print_on_output print
+  try
+    let option = Hashtbl.find Plugin.all_options name in
+    let help =
+      if option.oname = name then option.ohelp else
+        "alias for " ^ option.oname ^ "\n" ^ option.ohelp
+    in
+    let argname = option.argname in
+    let name = if argname = "" then name else name ^ " <" ^ argname ^ ">" in
+    let print fmt = print_helpline fmt name help option.ext_help in
+    Log.print_on_output print
+  with Not_found ->
+    let print fmt = Format.fprintf fmt "Invalid option %s@." name in
+    Log.print_on_output print
 
 (* [option_re] allows matching an option and extracting its name,
    even when there is a '=', e.g. "-kernel-msg-key=-typing".
-- 
GitLab