Mercurial > hg > octave-lyh
diff src/pt-misc.cc @ 6215:516d3071b34c
[project @ 2006-12-15 03:24:12 by jwe]
author | jwe |
---|---|
date | Fri, 15 Dec 2006 03:24:13 +0000 |
parents | 2a6cb4ed8f1e |
children | 93c65f2a5668 |
line wrap: on
line diff
--- a/src/pt-misc.cc +++ b/src/pt-misc.cc @@ -54,7 +54,7 @@ { for (iterator p = begin (); p != end (); p++) { - tree_identifier *elt = *p; + tree_decl_elt *elt = *p; elt->mark_as_formal_parameter (); } } @@ -73,7 +73,7 @@ if (++count > nargout) break; - tree_identifier *elt = *p; + tree_decl_elt *elt = *p; if (! elt->is_defined ()) { @@ -99,16 +99,13 @@ { int nargin = args.length (); - if (nargin <= 0) - return; - int expected_nargin = length (); iterator p = begin (); for (int i = 0; i < expected_nargin; i++) { - tree_identifier *elt = *p++; + tree_decl_elt *elt = *p++; octave_lvalue ref = elt->lvalue (); @@ -116,14 +113,17 @@ { if (args(i).is_defined () && args(i).is_magic_colon ()) { - ::error ("invalid use of colon in function argument list"); - return; + if (! elt->eval ()) + { + ::error ("no default value for argument %d\n", i+1); + return; + } } - - ref.assign (octave_value::op_asn_eq, args(i)); + else + ref.assign (octave_value::op_asn_eq, args(i)); } else - ref.assign (octave_value::op_asn_eq, octave_value ()); + elt->eval (); } } @@ -136,7 +136,7 @@ for (int i = 0; i < len; i++) { - tree_identifier *elt = *p++; + tree_decl_elt *elt = *p++; octave_lvalue ref = elt->lvalue (); @@ -157,7 +157,7 @@ for (iterator p = begin (); p != end (); p++) { - tree_identifier *elt = *p; + tree_decl_elt *elt = *p; retval(i++) = elt->is_defined () ? elt->rvalue () : octave_value (); } @@ -175,7 +175,7 @@ for (iterator p = begin (); p != end (); p++) { - tree_identifier *elt = *p; + tree_decl_elt *elt = *p; if (! elt->is_defined ()) { @@ -197,7 +197,7 @@ for (iterator p = begin (); p != end (); p++) { - tree_identifier *elt = *p; + tree_decl_elt *elt = *p; new_list->append (elt->dup (sym_tab)); }