changeset 504:be155b3d5a2f

[project @ 1994-07-08 23:45:33 by jwe]
author jwe
date Fri, 08 Jul 1994 23:52:12 +0000
parents dbb8a47acc3a
children f264c1454c2b
files src/oct-obj.h src/parse.y src/pt-const.h src/pt-exp-base.cc src/pt-exp-base.h src/tc-rep.cc
diffstat 6 files changed, 38 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/src/oct-obj.h	Fri Jul 08 23:41:39 1994 +0000
+++ b/src/oct-obj.h	Fri Jul 08 23:52:12 1994 +0000
@@ -21,12 +21,17 @@
 
 */
 
+#if !defined (octave_oct_obj_h)
+#define octave_oct_obj_h 1
+
 #include "Array.h"
 
 class tree_constant;
 
 typedef Array<tree_constant> Octave_object;
 
+#endif
+
 /*
 ;;; Local Variables: ***
 ;;; mode: C++ ***
--- a/src/parse.y	Fri Jul 08 23:41:39 1994 +0000
+++ b/src/parse.y	Fri Jul 08 23:52:12 1994 +0000
@@ -1042,6 +1042,13 @@
 		    quote_is_transpose = 0;
 		    $$ = (tree_parameter_list *) NULL;
 		  }
+		| '(' ELLIPSIS ')'
+		  {
+		    quote_is_transpose = 0;
+		    tree_parameter_list *tmp = new tree_parameter_list ();
+		    tmp->mark_varargs_only ();
+		    $$ = tmp;
+		  }
 		| param_list1 ')'
 		  {
 		    quote_is_transpose = 0;
@@ -1057,6 +1064,7 @@
 		    tmp->mark_varargs ();
 		    $$ = tmp;
 		  }
+		;
 
 param_list1	: '(' identifier
 		  { $$ = new tree_parameter_list ($2); }
@@ -1077,8 +1085,11 @@
 		;
 
 identifier	: NAME
-		  { $$ = new tree_identifier
-		      ($1->sym_rec (), $1->line (), $1->column ()); }
+		  {
+		    $$ = new tree_identifier
+		      ($1->sym_rec (), $1->line (), $1->column ());
+		  }
+		;
 
 arg_list	: arg_list1
 		  { $$ = $1->reverse (); }
--- a/src/pt-const.h	Fri Jul 08 23:41:39 1994 +0000
+++ b/src/pt-const.h	Fri Jul 08 23:52:12 1994 +0000
@@ -30,7 +30,6 @@
 
 #include <stdlib.h>
 
-#include "Array.h"
 #include "mx-base.h"
 #include "Range.h"
 
--- a/src/pt-exp-base.cc	Fri Jul 08 23:41:39 1994 +0000
+++ b/src/pt-exp-base.cc	Fri Jul 08 23:52:12 1994 +0000
@@ -1151,6 +1151,7 @@
 	{
 	  int nargout = maybe_do_ans_assign ? 0 : 1;
 
+//	  int nargin = (ans->is_constant ()) ? 0 : 1;
 	  Octave_object tmp_args;
 	  Octave_object tmp = ans->eval (0, nargout, tmp_args, 0);
 
@@ -1512,7 +1513,8 @@
   unwind_protect_int (num_named_args);
   unwind_protect_int (curr_arg_number);
 
-  if (param_list != (tree_parameter_list *) NULL)
+  if (param_list != (tree_parameter_list *) NULL
+      && ! param_list->varargs_only ())
     {
       param_list->define_from_arg_vector (args, nargin);
       if (error_state)
@@ -2841,6 +2843,18 @@
   return marked_for_varargs;
 }
 
+void
+tree_parameter_list::mark_varargs_only (void)
+{
+  marked_for_varargs = -1;
+}
+
+int
+tree_parameter_list::varargs_only (void)
+{
+  return (marked_for_varargs < 0);
+}
+
 tree_identifier *
 tree_parameter_list::define (tree_constant *t)
 {
--- a/src/pt-exp-base.h	Fri Jul 08 23:41:39 1994 +0000
+++ b/src/pt-exp-base.h	Fri Jul 08 23:52:12 1994 +0000
@@ -30,8 +30,6 @@
 
 #include <stdio.h>
 
-#include "Array.h"
-
 #include "builtins.h"
 #include "error.h"
 #include "oct-obj.h"
@@ -582,6 +580,9 @@
   void mark_varargs (void);
   int takes_varargs (void) const;
 
+  void mark_varargs_only (void);
+  int varargs_only (void);
+
   tree_identifier *define (tree_constant *t);
 
   void define_from_arg_vector (const Octave_object& args, int nargin);
--- a/src/tc-rep.cc	Fri Jul 08 23:41:39 1994 +0000
+++ b/src/tc-rep.cc	Fri Jul 08 23:52:12 1994 +0000
@@ -38,6 +38,7 @@
 #include "mx-base.h"
 #include "Range.h"
 
+#include "arith-ops.h"
 #include "variables.h"
 #include "error.h"
 #include "gripes.h"
@@ -5098,7 +5099,7 @@
 	  }
 	  break;
 	default:
-	  ::error ("illegal number of arguments for scalar type");
+	  ::error ("invalid number of arguments for scalar type");
 	  return tree_constant ();
 	  break;
 	}