[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Variables with same name as functions. trouble!
From: 
John W. Eaton 
Subject: 
Variables with same name as functions. trouble! 
Date: 
Thu, 21 Oct 1999 03:55:25 0500 (CDT) 
On 20Oct1999, Joao Cardoso <address@hidden> wrote:
 I spent several hours (dummy!) debugging some old scripts where it
 happened that I used variables with the same name as script/builtin
 functions. The error message is cryptic, and does not point to the
 correct source line where the problem is. Of course this is a (bad)
 programmer issue, but I suggest that, whenever a function name is
 overwritten with a variable, a warning message be output.

 The following script illustrate the problem:

 function po

 error=[1,2,3];
 error("This is an error!\n")

 endfunction

 octave:76> po
 error: string type invalid as index value
 error: called from `po' in file `/u/qual/src/misc/po.m'

 If the script where several dozen lines long, it would be difficult to
 find the problem...

 With the 582 script files in the standard octave2.1.14 distribution it
 is easy to make such a mistake.
OK, how about this, which I just put in the bleedingedge sources?
octave:1> variables_can_hide_functions = 0;
octave:2> error = 2
error: variable `error' hides function
error: evaluating assignment expression near line 2, column 7
octave:2> variables_can_hide_functions = "warn";
octave:3> error = 2
warning: variable `error' hides function
error = 2
octave:4> clear error
octave:5> error
error: unspecified error
octave:5> variables_can_hide_functions = 1;
octave:6> error = 2
error = 2
It will also tell you if an assignment will hide an .m or .oct file
that defines a function.
The default value for the new variable is 1, for backward
compatibility.
jwe

Octave is freely available under the terms of the GNU GPL. To ensure
that development continues, see www.che.wisc.edu/octave/giftform.html
Instructions for unsubscribing: www.che.wisc.edu/octave/archive.html
