Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
Re: break/continue vs. try-always
On Thu, 12 Jun 2014 23:57:57 -0700
Bart Schaefer <schaefer@xxxxxxxxxxxxxxxx> wrote:
> On Jun 12,  8:35pm, Peter Stephenson wrote:
> }
> } This makes a break or continue at the end of a function produce a
> } warning.  It didn't seem worth a hard error, but presumably a break or
> } continue is usually intended to do something so it should be reported if
> } it doesn't.
> 
> Hrm.  That makes it sort of like WARN_CREATE_GLOBAL.  I can think of
> cases where you want the warning, and cases where you don't ... the
> situation that got us to this point is one of latter.
I agree there's no obvious single right answer.  In the test code, we
can handle the warning when it appears, however: it's inside any
redirection of test output.
> } +When this option is not set, the effect of tt(break) and tt(continue)
> } +commands may propagate outside function scope, affecting loops in
> } +calling functions.  When this option is not set, a tt(break) or
> } +a tt(continue) that is not caught within a function produces a warning.
> 
> Typo, extra "not" in the last sentence.
Yes, and I improved the documentation after I'd sent the patch to make it
clearer what happens where.
> } +	opts[LOCALLOOPS] = saveopts[LOCALLOOPS];
> } +    }
> } +
> } +    if (opts[LOCALLOOPS]) {
> } +	if (contflag)
> } +	    zwarn("`continue' active at end of function scope");
> } +	if (breaks)
> } +	    zwarn("`break' active at end of function scope");
> } +	contflag = breaks = 0;
> 
> Since breaks is saved as obreaks on entry to doshfunc, shouldn't this be
> 
> 	breaks = obreaks;
> 
> Also, probably need to save/restore contflag and loops?  In case the
> function is called from a trap handler, for example?
As this is a new feature anyway, there's no reason we shouldn't do
that.  I couldn't think of a case where the continue or break wouldn't
already have been dealt with if they were set; traps do the saving and
restoring of stuff elsewhere.  But for a couple of extra variables it seems
a reasonable piece of safety.
pws
Messages sorted by:
Reverse Date,
Date,
Thread,
Author