Mercurial > octave
diff test/args.tst @ 28193:56c209ff0a08 stable
improve handling of ans assignment with wrapper functions
* oct-lvalue.h, oct-lvalue.cc (octave_lvalue::index_is_colon):
New function.
* pt-assign.cc (tree_multi_assignment::evaluate_n): Also handle result
value when LHS is [varargout{:}] and varargout is defined but empty.
* args.tst: New tests.
author | John W. Eaton <jwe@octave.org> |
---|---|
date | Wed, 08 Apr 2020 14:56:27 -0400 |
parents | bd51beb6205e |
children | ec591c500fa4 0a5b15007766 |
line wrap: on
line diff
--- a/test/args.tst Tue Apr 07 08:42:31 2020 +0200 +++ b/test/args.tst Wed Apr 08 14:56:27 2020 -0400 @@ -124,6 +124,36 @@ %! [s, t, u, v] = f (1, 2, 3); %! assert ([s t u v], [1 2 3 4]); +## Wrapper functions +%!function [x, y, z] = f (varargin) +%! assert (nargin, 0); +%! assert (nargout, 0); +%! x = 3; +%! y = 2; +%! z = 1; +%!endfunction +%!function varargout = wrapper_1 (varargin) +%! assert (nargout, 0); +%! [varargout{1:nargout}] = f (); +%!endfunction +%!function varargout = wrapper_2 (varargin) +%! assert (nargout, 0); +%! varargout = cell (1, nargout); +%! [varargout{1:nargout}] = f (); +%!endfunction +%!function varargout = wrapper_3 (varargin) +%! assert (nargout, 0); +%! varargout = cell (1, nargout); +%! [varargout{:}] = f (); +%!endfunction +%!test +%! wrapper_1 (); +%! assert (ans, 3); +%! wrapper_2 (); +%! assert (ans, 3); +%! wrapper_3 (); +%! assert (ans, 3); + ## Test default arguments ## numeric %!function f (x = 0)