diff libinterp/parse-tree/pt-exp.h @ 31394:7781b1e77406

use separate class for braindead shortcircuit evaluation Change adapted from patch #10238 by Petter Tomner <tomner@kth.se>. * parse.h, oct-parse.yy (base_parser::maybe_convert_to_braindead_shortcircuit): New function. (if_cmd_list1, elseif_clause, loop_command): Use it to convert expressions that could be evaluated using Matlab-style short-circuit rules to be tree_braindead_shortcircuit_binary_expression objects instead of simple tree_binary_expression objects. * pt-exp.h (tree_expression::mark_braindead_shortcircuit): Delete. * pt-binop.h (tree_binary_expression::mark_braindead_shortcircuit): Delete. * pt-binop.h, pt-binop.cc (tree_braindead_shortcircuit_binary_expression): New class to evaluate Matlab-style short-circuit expressions. * pt-binop.h, pt-binop.cc (tree_binary_expression::preserve_operands): New function. (tree_binary_expression::m_preserve_operands): New private data member. (tree_binary_expression::m_eligible_for_braindead_shortcircuit): Delete data member. (tree_binary_expression::is_eligible_for_braindead_shortcircuit): Delete function. (tree_binary_expression::mark_braindead_shortcircuit): Delete function. (tree_binary_expression::~tree_binary_expression): Don't delete m_lhs or m_rhs if m_preserve_operands is true. (tree_binary_expression::evaluate): Don't check for or process Matlab-style short-circuit expressions here.
author John W. Eaton <jwe@octave.org>
date Thu, 03 Nov 2022 17:50:24 -0400
parents 97504d2edcc7
children e88a07dec498
line wrap: on
line diff
--- a/libinterp/parse-tree/pt-exp.h	Thu Nov 03 14:47:18 2022 -0400
+++ b/libinterp/parse-tree/pt-exp.h	Thu Nov 03 17:50:24 2022 -0400
@@ -107,8 +107,6 @@
 
     virtual std::string original_text (void) const;
 
-    virtual void mark_braindead_shortcircuit (void) { }
-
     void mark_as_for_cmd_expr (void) { m_for_cmd_expr = true; }
 
     bool is_for_cmd_expr (void) const { return m_for_cmd_expr; }