From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 2803 invoked by alias); 25 Jan 2017 09:24:54 -0000 Mailing-List: contact zsh-workers-help@zsh.org; run by ezmlm Precedence: bulk X-No-Archive: yes List-Id: Zsh Workers List List-Post: List-Help: X-Seq: 40413 Received: (qmail 7870 invoked from network); 25 Jan 2017 09:24:54 -0000 X-Qmail-Scanner-Diagnostics: from mailout2.w1.samsung.com by f.primenet.com.au (envelope-from , uid 7791) with qmail-scanner-2.11 (clamdscan: 0.99.2/21882. spamassassin: 3.4.1. Clear:RC:0(210.118.77.12):SA:0(-8.2/5.0):. Processed in 3.722952 secs); 25 Jan 2017 09:24:54 -0000 X-Spam-Checker-Version: SpamAssassin 3.4.1 (2015-04-28) on f.primenet.com.au X-Spam-Level: X-Spam-Status: No, score=-8.2 required=5.0 tests=RCVD_IN_DNSWL_HI, RCVD_IN_MSPIKE_H3,RCVD_IN_MSPIKE_WL,RP_MATCHES_RCVD,SPF_HELO_PASS autolearn=unavailable autolearn_force=no version=3.4.1 X-Envelope-From: p.stephenson@samsung.com X-Qmail-Scanner-Mime-Attachments: | X-Qmail-Scanner-Zip-Files: | Received-SPF: none (ns1.primenet.com.au: domain at samsung.com does not designate permitted sender hosts) X-AuditID: cbfec7f2-f790f6d000002555-5f-58886ed90391 Date: Wed, 25 Jan 2017 09:24:38 +0000 From: Peter Stephenson To: zsh-workers@zsh.org Subject: Re: LOCAL_VARS option ? Message-id: <20170125092438.215f5a2c@pwslap01u.europe.root.pri> In-reply-to: <20170125055009.GA11466@fujitsu.shahaf.local2> Organization: Samsung Cambridge Solution Centre X-Mailer: Claws Mail 3.7.9 (GTK+ 2.22.0; i386-redhat-linux-gnu) MIME-version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7bit X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFnrFIsWRmVeSWpSXmKPExsWy7djPc7q38joiDJpWMlkcbH7I5MDoserg B6YAxigum5TUnMyy1CJ9uwSujHuPljAWPBKsOLhoK2sD4ybeLkZODgkBE4mHvZ3MELaYxIV7 69m6GLk4hASWMkp0XT3LCOH0Mkk8v7CEBabj7Kz/TBCJZYwSC6fchaqaxiTxf8ERqMwZRokF x6ZBDTvLKNFzdw87SD+LgKrEotOnmEBsNgFDiambZjOC2CIC4hJn154H2yEsoCCx7sotsKt4 Bewl1n2/BVTDwcEpYC1xrsUaJMwvoC9x9e8nJoiT7CVmXjnDCFEuKPFj8j2wMcwCOhLbtj1m h7DlJTavecsMco+EQDO7xMmzR9hAZkoIyEpsOsAMYbpITH5oADFSWOLV8S3sELaMxOXJ3VDf 9zNKPOn2hRgzg1Hi9JkdbBAJa4m+2xcZIXbxSUzaNh1qJq9ER5sQhOkhsWlZOoTpKHH/jMwE RsVZSG6eheTmWUhuXsDIvIpRJLW0ODc9tdhYrzgxt7g0L10vOT93EyMwBZz+d/zTDsavJ6wO MQpwMCrx8L5IaY8QYk0sK67MPcQowcGsJMLrmNsRIcSbklhZlVqUH19UmpNafIhRmoNFSZx3 z4Ir4UIC6YklqdmpqQWpRTBZJg5OqQZGydqbgqGvRa5Mvfn3mF7Zy73VGzX7tkVpK6zdtnrC NulJChE5T6bna8U8zV94L5u9vLeVgfGfX9nS2qyprLMDp59cESiT++Dq15qZ93bvDf37P+Ce HxfjWqEVGxZJBHtuetJkrfrViPmd2eNWbw9O7ylXa7s3MAdFn7zidGRmferS1w2t3AmMSizF GYmGWsxFxYkAbCi+8/0CAAA= X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFlrKIsWRmVeSWpSXmKPExsVy+t/xa7rX8joiDFY2KFscbH7I5MDoserg B6YAxig3m4zUxJTUIoXUvOT8lMy8dFul0BA3XQslhbzE3FRbpQhd35AgJYWyxJxSIM/IAA04 OAe4Byvp2yW4Zdx7tISx4JFgxcFFW1kbGDfxdjFyckgImEicnfWfCcIWk7hwbz1bFyMXh5DA EkaJk2ffsYAkhARmMEkse1wEkTjHKPHsZTsrhHOWUeLdiomsIFUsAqoSi06fAhvFJmAoMXXT bEYQW0RAXOLs2vNgk4QFFCTWXbnFDGLzCthLrPt+C6iGg4NTwFriXIs1xMznLBIt/zeBzeEX 0Je4+vcT1Hn2EjOvnGGE6BWU+DH5HthMZgEtic3bmlghbHmJzWveMkNcrS5x4+5u9gmMwrOQ tMxC0jILScsCRuZVjCKppcW56bnFRnrFibnFpXnpesn5uZsYgVG07djPLTsYu94FH2IU4GBU 4uGdkNQeIcSaWFZcmXuIUYKDWUmE1zG3I0KINyWxsiq1KD++qDQntfgQoykwYCYyS4km5wMj PK8k3tDE0NzS0MjYwsLcyEhJnHfqhyvhQgLpiSWp2ampBalFMH1MHJxSDYxOT+6fbi1f771t 47l/v7mXntnH+uE379yKTWoa4QH/zJ7s6G3gY+ifUW0TwCdbp/OOkSFL1D190sfgQ0nmfrwV TjmXF85ZdeWX6aQzj2vWfjNcfOftylMC/3OeNTIfnHv+vlDajR7XhW2hhku+PjPKupViXnFL ffsuoV3M+9WLtxr99T56uW+bEktxRqKhFnNRcSIAPoB787gCAAA= X-MTR: 20000000000000000@CPGS X-CMS-MailID: 20170125092441eucas1p1340318490eff0774f95e8be8ea7d3db4 X-Msg-Generator: CA X-Sender-IP: 182.198.249.180 X-Local-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUb?= =?UTF-8?B?7IK87ISx7KCE7J6QG1ByaW5jaXBhbCBFbmdpbmVlciwgU29mdHdhcmU=?= X-Global-Sender: =?UTF-8?B?UGV0ZXIgU3RlcGhlbnNvbhtTQ1NDLURhdGEgUGxhbmUbU2Ft?= =?UTF-8?B?c3VuZyBFbGVjdHJvbmljcxtQcmluY2lwYWwgRW5naW5lZXIsIFNvZnR3YXJl?= X-Sender-Code: =?UTF-8?B?QzEwG0VIURtDMTBDRDA1Q0QwNTAwNTg=?= CMS-TYPE: 201P X-HopCount: 7 X-CMS-RootMailID: 20170119155014epcas1p3534510d7cf4809b97464615de3dd3544 X-RootMTR: 20170119155014epcas1p3534510d7cf4809b97464615de3dd3544 References: <20170119065408.GA5534@fujitsu.shahaf.local2> <20170119160841.354ec75c@pwslap01u.europe.root.pri> <20170120171922.0e0c370d@pwslap01u.europe.root.pri> <20170122190052.327898df@ntlworld.com> <20170123100914.55675852@pwslap01u.europe.root.pri> <20170123112008.GA8944@fujitsu.shahaf.local2> <20170125055009.GA11466@fujitsu.shahaf.local2> On Wed, 25 Jan 2017 05:50:09 +0000 Daniel Shahaf wrote: > This case seems to be a false positive: > > % () { typeset -A a; : ${a[hello world]::=foo} } > (anon): scalar parameter hello world set in enclosing scope in function (anon) There's a bogus parameter created for assistance in this case. I didn't see what was going on so I didn't turn off the new warning. By the way, you won't get a warning in a case like this: () { local var=(one two) () { var[3]=three; } print $var } which is probably OK because setting an element of something already presupposes it exists. The WARN_CREATE_GLOBAL equivalent does operate here, so you're protected if it doesn't exist. You also get a warning if you trash the whole array: () { local var=(one two) () { var=(three); } print $var } However, you don't get a warning if you change the array to something else: () { local var=(one two) () { var=three; } print $var } That's a crucial case for protecting against problems and needs looking at in the tortuous type conversion logic. pws diff --git a/Src/params.c b/Src/params.c index ebdd252..a629cf4 100644 --- a/Src/params.c +++ b/Src/params.c @@ -2926,7 +2926,11 @@ assignsparam(char *s, char *val, int flags) unqueue_signals(); return NULL; } - flags &= ~ASSPM_WARN_CREATE; + /* + * Parameter defined here is a temporary bogus one. + * Don't warn about anything. + */ + flags &= ~ASSPM_WARN; } *ss = '['; v = NULL; diff --git a/Test/E01options.ztst b/Test/E01options.ztst index bcd89f7..fd3263a 100644 --- a/Test/E01options.ztst +++ b/Test/E01options.ztst @@ -1188,6 +1188,21 @@ ?fn_wnv:20: numeric parameter foo5 set in enclosing scope in function fn_wnv ?all off again + + ( + setopt warnnestedvar + () { + typeset -A a + : ${a[hello world]::=foo} + print ${(t)a} + key="hello world" + print $a[$key] + } + ) +0:No false positive on parameter used with subscripted assignment +>association-local +>foo + # This really just tests if XTRACE is egregiously broken. # To test it properly would need a full set of its own. fn() { print message; }