changeset 32155:addd99059d4c

inputParser.m: Fix regression with empty cell array default (Bug #64305) * inputParser.m: Use temporary variable to allow empty cell array default.
author A.R. Burgers <arburgers@gmail.com>
date Tue, 20 Jun 2023 15:57:37 -0400
parents 934cbff768c8
children cec8bd93ca10
files scripts/miscellaneous/inputParser.m
diffstat 1 files changed, 17 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/scripts/miscellaneous/inputParser.m	Tue Jun 20 01:01:56 2023 -0400
+++ b/scripts/miscellaneous/inputParser.m	Tue Jun 20 15:57:37 2023 -0400
@@ -358,7 +358,16 @@
       endif
 
       this.validate_name ("Parameter", name);
-      this.Parameter(end+1) = struct ("name", name, "def", def, "val", val);
+      if iscell(def)
+        ## Allow constructs like these (bug #64305)
+        ##    p = inputParser;
+        ##    p.addParameter('p3', {});
+        tmp = struct ("name", name, "def", [], "val", val);
+        tmp.def = def;
+        this.Parameter(end+1) = tmp;
+      else
+        this.Parameter(end+1) = struct ("name", name, "def", def, "val", val);
+      endif
 
     endfunction
 
@@ -1028,6 +1037,13 @@
 %! p.parse (30, 'b', 20, 'a',10);
 %! assert (fieldnames (p.Results), {'a'; 'b'; 'c'; 'z'});
 
+%!test <*64305>
+%! p = inputParser ();
+%! p.addParameter ('a',{});
+%! p.parse ('a', 20);
+%! assert (fieldnames (p.Results), {'a'});
+%! assert (p.Results.a, 20);
+
 %!test <*49793>
 %! p = inputParser ();
 %! p.addRequired ("name", @(x) validateattributes (x, {'char'}, {'nonempty'}));