changeset 32240:d1bbd7a0982c

optimget.m,optimset.m: Emit an error when short name matches multiple properties (bug #64525) * optimget.m, optimset.m: Replace call to warning() with call to error() if short name is ambiguous and matches multiple possible properties. Use single quotes around short name in error messages to make it stand out. Adjust BIST tests for new behavior
author Rik <rik@octave.org>
date Mon, 07 Aug 2023 11:16:51 -0700
parents 10db16bf2440
children 4379d4e29943 1ce1c922a34b
files scripts/optimization/optimget.m scripts/optimization/optimset.m
diffstat 2 files changed, 10 insertions(+), 10 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/optimization/optimget.m	Sat Aug 05 19:29:38 2023 +0200
+++ b/scripts/optimization/optimget.m	Mon Aug 07 11:16:51 2023 -0700
@@ -48,11 +48,11 @@
   if (nmatch == 1)
     optname = opts{idx};
   elseif (nmatch == 0)
-    warning ("optimget: unrecognized option: %s", optname);
+    warning ("optimget: unrecognized option: '%s'", optname);
   else
-    fmt = sprintf ("optimget: ambiguous option: %%s (%s%%s)",
+    fmt = sprintf ("optimget: ambiguous option: '%%s' (%s%%s)",
                    repmat ("%s, ", 1, nmatch-1));
-    warning (fmt, optname, opts{idx});
+    error (fmt, optname, opts{idx});
   endif
 
   if (isfield (options, optname) && ! isempty (options.(optname)))
@@ -79,5 +79,5 @@
 %!error <Invalid call> optimget (1)
 %!error optimget (1, "name")
 %!error optimget (struct (), 2)
-%!warning <unrecognized option: foobar> (optimget (opts, "foobar"));
-%!warning <ambiguous option: Max> (optimget (opts, "Max"));
+%!warning <unrecognized option: 'foobar'> (optimget (opts, "foobar"));
+%!error <ambiguous option: 'Max'> (optimget (opts, "Max"));
--- a/scripts/optimization/optimset.m	Sat Aug 05 19:29:38 2023 +0200
+++ b/scripts/optimization/optimset.m	Mon Aug 07 11:16:51 2023 -0700
@@ -184,11 +184,11 @@
       if (nmatch == 1)
         key = opts{find (i)};
       elseif (nmatch == 0)
-        warning ("optimset: unrecognized option: %s", key);
+        warning ("optimset: unrecognized option: '%s'", key);
       else
-        fmt = sprintf ("optimset: ambiguous option: %%s (%s%%s)",
+        fmt = sprintf ("optimset: ambiguous option: '%%s' (%s%%s)",
                        repmat ("%s, ", 1, nmatch-1));
-        warning (fmt, key, opts{i});
+        error (fmt, key, opts{i});
       endif
     endif
     if (useempty || ! isempty (val))
@@ -220,5 +220,5 @@
 ## Test input validation
 %!error optimset ("1_Parameter")
 %!error <no defaults for function> optimset ("%NOT_A_REAL_FUNCTION_NAME%")
-%!warning <unrecognized option: foobar> optimset ("foobar", 13);
-%!warning <ambiguous option: Max> optimset ("Max", 10);
+%!warning <unrecognized option: 'foobar'> optimset ("foobar", 13);
+%!error <ambiguous option: 'Max'> optimset ("Max", 10);