Mercurial > octave
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'}));