zsh-workers
 help / color / mirror / code / Atom feed
* Bug or misundertanding from my part?
@ 2005-09-19 14:32 DervishD
  2005-09-19 14:41 ` Peter Stephenson
  0 siblings, 1 reply; 3+ messages in thread
From: DervishD @ 2005-09-19 14:32 UTC (permalink / raw)
  To: Zsh Workers

    Hi all :)

    In the ZSH manual for 4.2.5 we can read:

{ TRY-LIST } always { ALWAYS-LIST }
     First execute TRY-LIST.  Regardless of errors, or break, continue,
     or return commands encountered within TRY-LIST, execute
     ALWAYS-LIST.  Execution then continues from the result of the
     execution of TRY-LIST; in other words, any error, or break,
     continue, or return command is treated in the normal way, as if
     ALWAYS-LIST were not present.  The two chunks of code are referred
     to as the `try block' and the `always block'.

    So, this code should print "try list" and "always list", but it
doesn't:

    #!/bin/zsh
    emulate -L zsh

    {
        print "try list"
        return 13
    } always {
        print "always list"
        return 0
    }

    print "What?"

    The code above just prints "try list" and exits with a return
code of "13", but the manual says that the ALWAYS-LIST is executed
"Regardless of [...] return commands encountered [...]". Am I doing
something wrong? I'm a bit puzzled because the above works if I
change 'return 13' for 'false'.

    Thanks a lot in advance :)
    
    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736 | http://www.dervishd.net
http://www.pleyades.net & http://www.gotesdelluna.net
It's my PC and I'll cry if I want to...


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Bug or misundertanding from my part?
  2005-09-19 14:32 Bug or misundertanding from my part? DervishD
@ 2005-09-19 14:41 ` Peter Stephenson
  2005-09-19 15:02   ` DervishD
  0 siblings, 1 reply; 3+ messages in thread
From: Peter Stephenson @ 2005-09-19 14:41 UTC (permalink / raw)
  To: Zsh hackers list

DervishD wrote:
>     Hi all :)
> 
>     In the ZSH manual for 4.2.5 we can read:
> 
> { TRY-LIST } always { ALWAYS-LIST }
>      First execute TRY-LIST.  Regardless of errors, or break, continue,
>      or return commands encountered within TRY-LIST, execute
>      ALWAYS-LIST.  Execution then continues from the result of the
>      execution of TRY-LIST; in other words, any error, or break,
>      continue, or return command is treated in the normal way, as if
>      ALWAYS-LIST were not present.  The two chunks of code are referred
>      to as the `try block' and the `always block'.
> 
>     So, this code should print "try list" and "always list", but it
> doesn't:
> 
>     #!/bin/zsh
>     emulate -L zsh
> 
>     {
>         print "try list"
>         return 13
>     } always {
>         print "always list"
>         return 0
>     }
> 
>     print "What?"
> 
>     The code above just prints "try list" and exits with a return
> code of "13", but the manual says that the ALWAYS-LIST is executed
> "Regardless of [...] return commands encountered [...]". Am I doing
> something wrong? I'm a bit puzzled because the above works if I
> change 'return 13' for 'false'.

You're running this as a script, right?  In that case the returns are treated
as exits, which have an immediate effect.  To treat returns as returns
you need a function.

pws


**********************************************************************
This email and any files transmitted with it are confidential and
intended solely for the use of the individual or entity to whom they
are addressed. If you have received this email in error please notify
the system manager.

**********************************************************************


^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: Bug or misundertanding from my part?
  2005-09-19 14:41 ` Peter Stephenson
@ 2005-09-19 15:02   ` DervishD
  0 siblings, 0 replies; 3+ messages in thread
From: DervishD @ 2005-09-19 15:02 UTC (permalink / raw)
  To: Peter Stephenson; +Cc: Zsh hackers list

    Hi Peter :)

 * Peter Stephenson <pws@csr.com> dixit:
> >     The code above just prints "try list" and exits with a return
> > code of "13", but the manual says that the ALWAYS-LIST is executed
> > "Regardless of [...] return commands encountered [...]". Am I doing
> > something wrong? I'm a bit puzzled because the above works if I
> > change 'return 13' for 'false'.
> You're running this as a script, right?

    Yes.

> In that case the returns are treated
> as exits, which have an immediate effect.

    I know that, but I assumed, from the documentation, that "return"
and "exit" were handled differently in any context (even in scripts).
Couldn't a little note be added to the docs in the last part, where
the warning about "An exit command encountered in try-list [...]"
already exists. I know, I know, every zsh user should take into
account that a return-is-an-exit-in-a-script, OK, but I think that it
would be a good idea to add a little reminder O:)

> To treat returns as returns you need a function.

    OK, thanks for the information :))

    Raúl Núñez de Arenas Coronado

-- 
Linux Registered User 88736 | http://www.dervishd.net
http://www.pleyades.net & http://www.gotesdelluna.net
It's my PC and I'll cry if I want to...


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2005-09-19 14:58 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2005-09-19 14:32 Bug or misundertanding from my part? DervishD
2005-09-19 14:41 ` Peter Stephenson
2005-09-19 15:02   ` DervishD

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).