Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm
Precedence: bulk
X-No-Archive: yes
List-Id: Zsh Workers List <zsh-workers.zsh.org>
List-Post: <mailto:zsh-workers@zsh.org>
List-Help: <mailto:zsh-workers-help@zsh.org>
X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on f.primenet.com.au
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,FREEMAIL_FROM
	autolearn=ham autolearn_force=no version=3.4.0
Subject: Re: [PATCH] typeset: set $? on incidental error
To: Mikael Magnusson <mikachu@gmail.com>,
 Daniel Shahaf <d.s@daniel.shahaf.name>
References: <20160114001336.GA11173@tarsus.local2> <56973114.90807@gmx.com>
 <20160115062645.GB12223@tarsus.local2>
 <CAHYJk3QLCCVmZf4efzQgxs3haKv2mssQk3cGQXd5fm7DK7dgGg@mail.gmail.com>
Cc: zsh workers <zsh-workers@zsh.org>
From: Eric Cook <llua@gmx.com>
Message-ID: <5699082D.4040105@gmx.com>
Date: Fri, 15 Jan 2016 09:54:37 -0500
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:38.0) Gecko/20100101
 Thunderbird/38.5.0
MIME-Version: 1.0
In-Reply-To: <CAHYJk3QLCCVmZf4efzQgxs3haKv2mssQk3cGQXd5fm7DK7dgGg@mail.gmail.com>
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 7bit
X-Provags-ID: V03:K0:pHFxmOQAhc6kQpA1LUA+1HeKprYZcZFJXiN7L7QgiAHpLT8thHw
 5QR8WvkM90HM0j2KqqsvoZIcsHiepHLzO9EZ4Hleig8rQlMOi13LN5QPp/u+e5g8LURryS8
 JFGYfGhsjUvhCXP1F+ZUUCa/pPX2laZPRwoVKmppdWiVzwzb+98rhFoiZXxcQ+jpKtAcq08
 Q2rZjjs3/lsoxydmbOxoQ==
X-UI-Out-Filterresults: notjunk:1;V01:K0:jhhBil7uL7s=:vxKyqDU3ni4o3KHJQB88Km
 KtlKsnjMwKlChGFUlBINnhrFFH8WWGXC5Yt3J3ta05D7n0j1NsoKOE+2cJjejSdqwI/YcbOr8
 w93qKzKWX2cutFAzYzd5FY0vnBuznfTHxdL0Bkj7JlJQC8AsDxTyuRuoiNMrHMhM9y0r6CGVK
 AZYWeK885+a1ARjWKK862FIOGBvXz0Pr//pNygbibL6LgdojUpaswia8uoT3HATRO8WrRSg1/
 5O3Jl5bTCamMXz143DyW8o1WANyLWzBuIfTanDMPnilpYyWPZSZvxrs2RLOBQmaAliIo28P4X
 4tbmOlTb8fzpTUC4GuDOR3aAd1Nls9FWvN2rDEniFFvEW7yE2GAx+Ss0pI1WC9eU4gW2N2zGe
 7+hASOdE9WJYdlVJYMOOi8v1ivwvumTu4LvWIpEx/ox+/7y5aCt5h2xKvRpJl2lwvjRYPXdjQ
 k2SbYd80q/eZyw2TW8vXzihXbMrJOYymXTnGkbaSlP8vzwc4R5jkDc7kQ1xUTI5RualtfijYA
 nmRme+Kch4zehtdrzvaut7ZhcwZF/ypJMRmJUQXfBz/JAhl6h+B+2SJykTTegG1twywGHJ0vG
 OkGoZ8T6lDpfmcnZPGJ6KbpUMkaMXugDzLc/RE+oKt06qscyyOZhXFRu9iJ6C41kDwbqjy6N9
 y1Ko0OjON86GaXmfcnOQhThPvPXzJOIeinFOx8M4oETg+4fj16T6v/8jn5nuF1QRnrhMkFAMz
 eIO9iQ9Y8wt8FeL4MSDCICOYJNlYWoGWJEnb09wSO/3wKS+URfHp57++TdfwZpp9y32SKb+qH
 bwNdGtn
X-Seq: zsh-workers 37645

On 01/15/2016 09:46 AM, Mikael Magnusson wrote:
> On Fri, Jan 15, 2016 at 7:26 AM, Daniel Shahaf <d.s@daniel.shahaf.name> wrote:
>> Eric Cook wrote on Thu, Jan 14, 2016 at 00:24:36 -0500:
>>> On 01/13/2016 07:13 PM, Daniel Shahaf wrote:
>>>> The 'typeset' family of builtins doesn't set $? when one would expect it
>>>> to do so:
>>>>
>>>>     % x=$(true) y=$(exit 42); echo $?
>>>>     42
>>>>     % local x=$(true) y=$(exit 42); echo $?
>>>>     0
>>>>
>>>> This patch makes 'typeset' behave as ordiary assignment does.
>>>
>>>
>>> But who expects that?
>>
>> I did.
> 
> local/typeset is a command, and it was successful, so I don't see why
> $? should be set to anything else than 0.
> % true x=$(false); echo $?
> 0
> is technically exactly the same situation as your above second command.
> 

But typeset should exit > 0 when it does fail to assign a parameter.

% ksh -c 'typeset -r foo=foo; typeset -r foo=bar'; echo $?
ksh: foo: is read only
1
% bash -c 'typeset -r foo=foo; typeset -r foo=bar'; echo $?
bash: line 0: typeset: foo: readonly variable
1
% zsh -c 'typeset -r foo=foo; typeset -r foo=bar'; echo $?
zsh:1: read-only variable: foo
0

