Re: Unusual EU Problem (must see)

new topic     » goto parent     » topic index » view thread      » older message » newer message

On Thu, 14 Aug 2003 06:39:51 +0000, Al Getz <Xaxo at aol.com> wrote:

>Very unexpected behavior when i accidentally used:
>
>function FunctionAAA()
>  atom param
>  param=3D1
>  return FunctionBBB(param)
>end function
>
<snip>
>procedure FunctionBBB(atom param)
>  ?param
>end procedure

>but no real error comes up as usual in Euphoria.
well, I got Syntax error - expected to see an expression, not a
procedure. If I change FunctionAAA() to a procedure, which is what I
think you meant, there is no error or warning.

The correct warning to report in this case is unreachable code, or
"will never be executed".

While I'm here, probably my biggest bugbear:

The warning system in Euphoria is so OTT that virtually every program
ever written has without warning as the top line, something which
should only be done for release code (possibly if the proposed shroud
-fullsource option is implemented, which creates a single releaseable
source with all the comments etc left intact). A warning system is not
much use if most people turn it off, during development!


=46irstly, I'd like warnings to be classified, eg:

unused parameters
unused parameters on routines referenced by routine_id
unused variables
unused constants
unused constants created with side effects
short circuit warnings
unreachable code

I think that in much the same way you can have with/without trace
covering sections of code, but still need the trace() command, you
need with/without warning and a warning() command, to set the classes
of warnings you are (locally) interested in.

My code ends up littered with things like:
	procedure onClickButton(int self, int event, seq params)
		if self or event or length(params) end if -- suppress warnings

	constant menu=3Dcreate(Menu,"File",0,...)
	crud=3Dmenu	-- suppress warnings

	-- if isVisible(x) or isVisible(y) then
	flag=3DisVisible(x) or isVisible(y)
	if flag then

	(And no Rob, you are not allowed to add that extremely annoying=20
	warning to the second case to make them consistent blink


There is definitely something wrong with
without warning
	constant A=3D1
with warning
having no effect; whether or not you get a warning about A and all
other unused constants depends solely on whether warning is in force
at the end of the file, which is counter-intuitive. Maybe I'm being
simple-minded, but somewhere in the above it must set a flag to
indicate A has never been referenced to True, should be False.


Also, if the program dies with an error, it should definitely prompt
before dumping out the warnings and scrolling the error message off
the screen.


My other vote would be for a win32 style debugger, with display of
subscripts and slices.

Pete

new topic     » goto parent     » topic index » view thread      » older message » newer message

Search



Quick Links

User menu

Not signed in.

Misc Menu