changeset 25267:308a272bbe3c

Emit an error if binary operator functions (or, plus, etc.) are called with 1 arg (bug 53450). * data.cc (binary_assoc_op_defun_body): Verify at least two args given or * data.cc (Fplus): Add BIST tests for function. Add input validation tests for all functions which call binary_assoc_op_defun_body().
author Rik <rik@octave.org>
date Mon, 16 Apr 2018 14:39:33 -0700
parents 6f9d51536643
children 592a4258b237
files libinterp/corefcn/data.cc
diffstat 1 files changed, 13 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/corefcn/data.cc	Mon Apr 16 00:14:23 2018 -0700
+++ b/libinterp/corefcn/data.cc	Mon Apr 16 14:39:33 2018 -0700
@@ -5906,14 +5906,12 @@
 {
   int nargin = args.length ();
 
-  if (nargin == 0)
+  if (nargin < 2)
     print_usage ();
 
   octave_value retval;
 
-  if (nargin == 1)
-    retval = args(0);
-  else if (nargin == 2)
+  if (nargin == 2)
     retval = do_binary_op (op, args(0), args(1));
   else
     {
@@ -5947,6 +5945,17 @@
                                      octave_value::op_add_eq, args);
 }
 
+/*
+%!assert (plus (1,1), 2)
+%!assert (plus (1:3, 1), 2:4)
+%!assert (plus (1:3, 1, 3), 5:7)
+%!assert (plus (1,2,3,4,5,6,7,8,9), sum (1:9))
+
+## Test input validation for all functions which use binary_assoc_op_defun_body
+%!error plus ()
+%!error plus (1)
+*/
+
 DEFUN (minus, args, ,
        doc: /* -*- texinfo -*-
 @deftypefn {} {} minus (@var{x}, @var{y})