diff libinterp/octave-value/ov-cell.cc @ 23481:73558a835b64

eliminate lvalue list arguments from evaluator functions * ov.cc, ov.h, ov-base.cc, ov-base.h, ov-builtin.cc, ov-builtin.h, ov-cell.cc, ov-cell.h, ov-fcn-handle.cc, ov-fcn-handle.h, ov-usr-fcn.cc, ov-usr-fcn.h: Eliminate lvalue_list arguments from subsref, next_subsref, and do_multi_index_op methods. Change all callers. * pt-eval.cc, pt-eval.h (tree_evaluator::ignored_fcn_outputs): New function. * ov-usr-fcn.h, ov-usr-fcn.cc (octave_user_function::bind_automatic_vars): Get list of ignored output arguments from evaluator. * pt-eval.cc, pt-eval.h (tree_evaluator::visit_simple_assignment, tree_evaluator::visit_multi_assignment): Push lvalue list on stack here, not in tree_evaluator::evaluate or tree_evaluator::evaluate_n. Use unwind_protect frame to pop from stack. Don't pass lvalue list to evaluate or evaluate_n functions. * pt-arg-list.cc, pt-arg-list.h (tree_argument_list::lvalue_list): Delete. * pt-eval.cc, pt-eval.h (tree_evaluator::make_lvalue_list): New function. (tree_evaluator::visit_multi_assignment): Use it instead of tree_argument_list::lvalue_list. * ov-builtin.cc, ov-builtin.h (octave_builtin::curr_lvalue_list): Delete data member and all uses. * defun.cc (defun_isargout): Get current lvalue_list from evaluator.
author John W. Eaton <jwe@octave.org>
date Wed, 10 May 2017 11:09:52 -0400
parents f267a982478f
children e95738a119da
line wrap: on
line diff
--- a/libinterp/octave-value/ov-cell.cc	Wed May 10 15:04:28 2017 +0200
+++ b/libinterp/octave-value/ov-cell.cc	Wed May 10 11:09:52 2017 -0400
@@ -131,8 +131,7 @@
 octave_value_list
 octave_cell::subsref (const std::string& type,
                       const std::list<octave_value_list>& idx,
-                      int nargout,
-                      const std::list<octave_lvalue> *lvalue_list)
+                      int nargout)
 {
   octave_value_list retval;
 
@@ -174,9 +173,7 @@
   // octave_user_function::subsref.
 
   if (idx.size () > 1)
-    retval = (lvalue_list
-              ? retval(0).next_subsref (nargout, type, idx, lvalue_list)
-              : retval(0).next_subsref (nargout, type, idx));
+    retval = retval(0).next_subsref (nargout, type, idx);
 
   return retval;
 }