changeset 20797:bb585db6dee2

eliminate return statements after calls to print_usage * lex.ll, oct-parse.in.yy: Eliminate return statements after calls to print_usage.
author John W. Eaton <jwe@octave.org>
date Thu, 03 Dec 2015 15:07:01 -0500
parents 492738d32c60
children c349d4c91ce2
files libinterp/parse-tree/lex.ll libinterp/parse-tree/oct-parse.in.yy
diffstat 2 files changed, 186 insertions(+), 203 deletions(-) [+]
line wrap: on
line diff
--- a/libinterp/parse-tree/lex.ll
+++ b/libinterp/parse-tree/lex.ll
@@ -1916,6 +1916,9 @@
 
   string_vector argv = args.make_argv ("iskeyword");
 
+  if (argc < 1 || argc > 2)
+    print_usage ();
+
   if (argc == 1)
     {
       // Neither set and get are keywords.  See the note in the
@@ -1941,8 +1944,6 @@
     {
       retval = is_keyword (argv[1]);
     }
-  else
-    print_usage ();
 
   return retval;
 }
--- a/libinterp/parse-tree/oct-parse.in.yy
+++ b/libinterp/parse-tree/oct-parse.in.yy
@@ -4355,6 +4355,9 @@
 
   int nargin = args.length ();
 
+  if (nargin == 1 || nargin > 3)
+    print_usage ();
+
   if (nargin == 0)
     {
       Cell func_names (dim_vector (autoload_map.size (), 1));
@@ -4377,7 +4380,7 @@
 
       retval = m;
     }
-  else if (nargin == 2 || nargin == 3)
+  else
     {
       string_vector argv = args.make_argv ("autoload");
 
@@ -4425,8 +4428,6 @@
           autoload_map.erase (argv[1]);
         }
     }
-  else
-    print_usage ();
 
   return retval;
 }
@@ -4554,10 +4555,7 @@
   int nargin = args.length ();
 
   if (nargin > 1)
-    {
-      print_usage ();
-      return retval;
-    }
+    print_usage ();
 
   std::string arg;
 
@@ -4611,20 +4609,18 @@
 
   int nargin = args.length ();
 
-  if (nargin == 1 || nargin == 2)
-    {
-      std::string file_name = args(0).xstring_value ("source: expecting filename as argument");
-
-      std::string context;
-
-      if (nargin == 2)
-        context = args(1).xstring_value ("source: expecting context to be character string");
-
-      source_file (file_name, context);
-    }
-  else
+  if (nargin < 1 || nargin > 2)
     print_usage ();
 
+  std::string file_name = args(0).xstring_value ("source: expecting filename as argument");
+
+  std::string context;
+
+  if (nargin == 2)
+    context = args(1).xstring_value ("source: expecting context to be character string");
+
+  source_file (file_name, context);
+
   return retval;
 }
 
@@ -4755,16 +4751,12 @@
 instead.\n\
 @end deftypefn")
 {
-  octave_value_list retval;
-
   int nargin = args.length ();
 
-  if (nargin > 0)
-    retval = feval (args, nargout);
-  else
+  if (nargin == 0)
     print_usage ();
 
-  return retval;
+  return feval (args, nargout);
 }
 
 DEFUN (builtin, args, nargout,
@@ -4797,19 +4789,17 @@
 
   int nargin = args.length ();
 
-  if (nargin > 0)
-    {
-      const std::string name (args(0).xstring_value ("builtin: function name (F) must be a string"));
-
-      octave_value fcn = symbol_table::builtin_find (name);
-
-      if (fcn.is_defined ())
-        retval = feval (fcn.function_value (), args.splice (0, 1), nargout);
-      else
-        error ("builtin: lookup for symbol '%s' failed", name.c_str ());
-    }
+  if (nargin == 0)
+    print_usage ();
+
+  const std::string name (args(0).xstring_value ("builtin: function name (F) must be a string"));
+
+  octave_value fcn = symbol_table::builtin_find (name);
+
+  if (fcn.is_defined ())
+    retval = feval (fcn.function_value (), args.splice (0, 1), nargout);
   else
-    print_usage ();
+    error ("builtin: lookup for symbol '%s' failed", name.c_str ());
 
   return retval;
 }
@@ -4957,58 +4947,56 @@
 
   int nargin = args.length ();
 
-  if (nargin > 0)
+  if (nargin == 0)
+    print_usage ();
+
+  unwind_protect frame;
+
+  if (nargin > 1)
+    {
+      frame.protect_var (buffer_error_messages);
+      buffer_error_messages++;
+    }
+
+  int parse_status = 0;
+
+  bool execution_error = false;
+
+  octave_value_list tmp;
+
+  try
     {
-      unwind_protect frame;
-
-      if (nargin > 1)
-        {
-          frame.protect_var (buffer_error_messages);
-          buffer_error_messages++;
-        }
-
-      int parse_status = 0;
-
-      bool execution_error = false;
-
-      octave_value_list tmp;
-
-      try
-        {
-          tmp = eval_string (args(0), nargout > 0, parse_status, nargout);
-        }
-      catch (const octave_execution_exception&)
-        {
-          recover_from_exception ();
-
-          execution_error = true;
-        }
-
-      if (nargin > 1 && (parse_status != 0 || execution_error))
-        {
-          // Set up for letting the user print any messages from
-          // errors that occurred in the first part of this eval().
-
-          buffer_error_messages--;
-
-          tmp = eval_string (args(1), nargout > 0, parse_status, nargout);
-
-          if (nargout > 0)
-            retval = tmp;
-        }
-      else
-        {
-          if (nargout > 0)
-            retval = tmp;
-
-          // FIXME: we should really be rethrowing whatever exception occurred,
-          // not just throwing an execution exception.
-          if (execution_error)
-            octave_throw_execution_exception ();
-        }
+      tmp = eval_string (args(0), nargout > 0, parse_status, nargout);
+    }
+  catch (const octave_execution_exception&)
+    {
+      recover_from_exception ();
+
+      execution_error = true;
+    }
+
+  if (nargin > 1 && (parse_status != 0 || execution_error))
+    {
+      // Set up for letting the user print any messages from
+      // errors that occurred in the first part of this eval().
+
+      buffer_error_messages--;
+
+      tmp = eval_string (args(1), nargout > 0, parse_status, nargout);
+
+      if (nargout > 0)
+        retval = tmp;
     }
   else
-    print_usage ();
+    {
+      if (nargout > 0)
+        retval = tmp;
+
+      // FIXME: we should really be rethrowing whatever exception occurred,
+      // not just throwing an execution exception.
+      if (execution_error)
+        octave_throw_execution_exception ();
+    }
 
   return retval;
 }
@@ -5063,30 +5051,28 @@
 
   int nargin = args.length ();
 
-  if (nargin == 3)
-    {
-      std::string context = args(0).xstring_value ("assignin: CONTEXT must be a string");
-
-      unwind_protect frame;
-
-      if (context == "caller")
-        octave_call_stack::goto_caller_frame ();
-      else if (context == "base")
-        octave_call_stack::goto_base_frame ();
-      else
-        error ("assignin: CONTEXT must be \"caller\" or \"base\"");
-
-      frame.add_fcn (octave_call_stack::pop);
-
-      std::string nm = args(1).xstring_value ("assignin: VARNAME must be a string");
-
-      if (valid_identifier (nm))
-        symbol_table::assign (nm, args(2));
-      else
-        error ("assignin: invalid variable name in argument VARNAME");
-    }
+  if (nargin != 3)
+    print_usage ();
+
+  std::string context = args(0).xstring_value ("assignin: CONTEXT must be a string");
+
+  unwind_protect frame;
+
+  if (context == "caller")
+    octave_call_stack::goto_caller_frame ();
+  else if (context == "base")
+    octave_call_stack::goto_base_frame ();
   else
-    print_usage ();
+    error ("assignin: CONTEXT must be \"caller\" or \"base\"");
+
+  frame.add_fcn (octave_call_stack::pop);
+
+  std::string nm = args(1).xstring_value ("assignin: VARNAME must be a string");
+
+  if (valid_identifier (nm))
+    symbol_table::assign (nm, args(2));
+  else
+    error ("assignin: invalid variable name in argument VARNAME");
 
   return retval;
 }
@@ -5104,71 +5090,69 @@
 
   int nargin = args.length ();
 
-  if (nargin > 1)
+  if (nargin < 2)
+    print_usage ();
+
+  std::string context = args(0).xstring_value ("evalin: CONTEXT must be a string");
+
+  unwind_protect frame;
+
+  if (context == "caller")
+    octave_call_stack::goto_caller_frame ();
+  else if (context == "base")
+    octave_call_stack::goto_base_frame ();
+  else
+    error ("evalin: CONTEXT must be \"caller\" or \"base\"");
+
+  frame.add_fcn (octave_call_stack::pop);
+
+  if (nargin > 2)
     {
-      std::string context = args(0).xstring_value ("evalin: CONTEXT must be a string");
-
-      unwind_protect frame;
-
-      if (context == "caller")
-        octave_call_stack::goto_caller_frame ();
-      else if (context == "base")
-        octave_call_stack::goto_base_frame ();
-      else
-        error ("evalin: CONTEXT must be \"caller\" or \"base\"");
-
-      frame.add_fcn (octave_call_stack::pop);
-
-      if (nargin > 2)
-        {
-          frame.protect_var (buffer_error_messages);
-          buffer_error_messages++;
-        }
-
-      int parse_status = 0;
-
-      bool execution_error = false;
-
-      octave_value_list tmp;
-
-      try
-        {
-          tmp = eval_string (args(1), nargout > 0,
-                             parse_status, nargout);
-        }
-      catch (const octave_execution_exception&)
-        {
-          recover_from_exception ();
-
-          execution_error = true;
-        }
-
-      if (nargin > 2 && (parse_status != 0 || execution_error))
-        {
-          // Set up for letting the user print any messages from
-          // errors that occurred in the first part of this eval().
-
-          buffer_error_messages--;
-
-          tmp = eval_string (args(2), nargout > 0,
-                             parse_status, nargout);
-
-          retval = (nargout > 0) ? tmp : octave_value_list ();
-        }
-      else
-        {
-          if (nargout > 0)
-            retval = tmp;
-
-          // FIXME: we should really be rethrowing whatever
-          // exception occurred, not just throwing an
-          // execution exception.
-          if (execution_error)
-            octave_throw_execution_exception ();
-        }
+      frame.protect_var (buffer_error_messages);
+      buffer_error_messages++;
+    }
+
+  int parse_status = 0;
+
+  bool execution_error = false;
+
+  octave_value_list tmp;
+
+  try
+    {
+      tmp = eval_string (args(1), nargout > 0,
+                         parse_status, nargout);
+    }
+  catch (const octave_execution_exception&)
+    {
+      recover_from_exception ();
+
+      execution_error = true;
+    }
+
+  if (nargin > 2 && (parse_status != 0 || execution_error))
+    {
+      // Set up for letting the user print any messages from
+      // errors that occurred in the first part of this eval().
+
+      buffer_error_messages--;
+
+      tmp = eval_string (args(2), nargout > 0,
+                         parse_status, nargout);
+
+      retval = (nargout > 0) ? tmp : octave_value_list ();
     }
   else
-    print_usage ();
+    {
+      if (nargout > 0)
+        retval = tmp;
+
+      // FIXME: we should really be rethrowing whatever
+      // exception occurred, not just throwing an
+      // execution exception.
+      if (execution_error)
+        octave_throw_execution_exception ();
+    }
 
   return retval;
 }
@@ -5204,38 +5188,36 @@
 
   int nargin = args.length ();
 
-  if (nargin == 1 || nargin == 2)
+  if (nargin < 1 || nargin > 2)
+    print_usage ();
+
+  std::string file = args(0).xstring_value ("__parse_file__: expecting filename as argument");
+
+  std::string full_file = octave_env::make_absolute (file);
+
+  size_t file_len = file.length ();
+
+  if ((file_len > 4 && file.substr (file_len-4) == ".oct")
+      || (file_len > 4 && file.substr (file_len-4) == ".mex")
+      || (file_len > 2 && file.substr (file_len-2) == ".m"))
     {
-      std::string file = args(0).xstring_value ("__parse_file__: expecting filename as argument");
-
-      std::string full_file = octave_env::make_absolute (file);
-
-      size_t file_len = file.length ();
-
-      if ((file_len > 4 && file.substr (file_len-4) == ".oct")
-          || (file_len > 4 && file.substr (file_len-4) == ".mex")
-          || (file_len > 2 && file.substr (file_len-2) == ".m"))
-        {
-          file = octave_env::base_pathname (file);
-          file = file.substr (0, file.find_last_of ('.'));
-
-          size_t pos = file.find_last_of (file_ops::dir_sep_str ());
-          if (pos != std::string::npos)
-            file = file.substr (pos+1);
-        }
-
-      if (nargin == 2)
-        octave_stdout << "parsing " << full_file << std::endl;
-
-      octave_function *fcn = parse_fcn_file (full_file, file, "", "",
-                                             true, false, false,
-                                             false, "__parse_file__");
-
-      if (fcn)
-        delete fcn;
+      file = octave_env::base_pathname (file);
+      file = file.substr (0, file.find_last_of ('.'));
+
+      size_t pos = file.find_last_of (file_ops::dir_sep_str ());
+      if (pos != std::string::npos)
+        file = file.substr (pos+1);
     }
-  else
-    print_usage ();
+
+  if (nargin == 2)
+    octave_stdout << "parsing " << full_file << std::endl;
+
+  octave_function *fcn = parse_fcn_file (full_file, file, "", "",
+                                         true, false, false,
+                                         false, "__parse_file__");
+
+  if (fcn)
+    delete fcn;
 
   return retval;
 }