From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.2 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_EF,HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI, RCVD_IN_DNSWL_MED,T_SCC_BODY_TEXT_LINE autolearn=ham autolearn_force=no version=3.4.4 Received: from zero.zsh.org (zero.zsh.org [IPv6:2a02:898:31:0:48:4558:7a:7368]) by inbox.vuxu.org (Postfix) with ESMTP id 595C824A99 for ; Sat, 2 Mar 2024 08:30:10 +0100 (CET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1709364610; b=eVfOZpjxoF+9vetIc1+lJOImPIyK58u0UuERsqTEhkVtD/zrh6DgkXwMwnd4KAs2ncaNJj3gph UaybsBHhLglC3QFK8PmhNpg6S4qq8C7I8ZDOtqXXwAJr+KbIQaXqg5pRVXVK8uCC95bLA5caYP f9O+ztVP4BszJmyXjWbvVAQ/ma6KFGLHD9YBOONgYSeh8IyLqqJN0sBsApQwJ8Ck3CLtnztvof jWJrE6TaUf/wSIBNNde6xFHp8EG9oW5YBuoxoBG68vpqJOQdJomGxqXn1wrr6N4m+l6d6yiDVO IAFH+XAp3Z9Pf5jwWiFvLVC6rY4YALgUZ7alRu4o6Jpblg==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ej1-f54.google.com) smtp.remote-ip=209.85.218.54; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1709364610; bh=ApFrgkd8vKk6kgMvgPa72NjHLfMkzassH3zUL7I67RE=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Transfer-Encoding:Content-Type:To:Subject:Message-ID: Date:From:In-Reply-To:References:MIME-Version:DKIM-Signature:DKIM-Signature; b=MskeM/o43pR2rTnJps9iO6dQPQoE1CvhFoOvCM7OkjOZMBEWb2A+/TjBZGtSMRXxc4laqWDhXg FRVnXNafR90hMoGSIMccNiQYZ+JsMGrrBbXL5E6ZyS7zs1yA8S4bhcxWcNNUUBsKzn1vgSzPfP pgEmcJfi04XDZlIbZi5dOCOSGCK3eK3Qn/Il9uFoEfcGDVFwrwz6qP5nOIxC7fzRxWdGOtgwl5 lVeRRyfVv44ZyhCDeGOmnti/2cYLQ+b1vlAhHepzMgQjaAnyHv5kEl3M1z7IY/q/tgeo+usX27 +eRH4ORh3una0JEkGEQEuUDoAbwjtE9+EPxM6DKt3ENPyg==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Transfer-Encoding: Content-Type:To:Subject:Message-ID:Date:From:In-Reply-To:References: MIME-Version:Reply-To:Cc:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID; bh=D7lVQDF7vqwq9+1ln5/Ak+h10bHCTvgRMzfULonu8cs=; b=dECPU0NISXV2xy/EVqsX02FERB Vgh7Rcqfx4I7QFszWT3L8zzTZzq7cNB1XGEWIfDNZyjiTx0wQrSJ7d4MU+48HKNDMzzS/sXt7W1BA 8eDcm4j549/IPyecKYABEObvx9La7YcQ5LblIF5WgDxeLLeD+iRXqQZnzz1R1IDdl1IL9ITYmyxJZ 0J/WHhvlRfQ8/U5zNL/yUONuFZm//+7Ef5K0AixExy4d1Ayxw9h4ERZVxaASsI8ptpW3Y2UdEmI3u clNfQK9jBC4UvwkWzuxE/OLXfFtgK1qhkCtfKiC/WLd4HCxra9c+SSCBC3vRzOgo9s8ccRlcBHzJs 0josWZpA==; Received: by zero.zsh.org with local id 1rgJot-000Itr-QV; Sat, 02 Mar 2024 07:30:07 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ej1-f54.google.com) smtp.remote-ip=209.85.218.54; dkim=pass header.d=brasslantern-com.20230601.gappssmtp.com header.s=20230601 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ej1-f54.google.com ([209.85.218.54]:44184) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1rgJoZ-000Ib9-Jq; Sat, 02 Mar 2024 07:29:48 +0000 Received: by mail-ej1-f54.google.com with SMTP id a640c23a62f3a-a26fa294e56so528116466b.0 for ; Fri, 01 Mar 2024 23:29:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20230601.gappssmtp.com; s=20230601; t=1709364587; x=1709969387; darn=zsh.org; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:from:to:cc:subject:date :message-id:reply-to; bh=D7lVQDF7vqwq9+1ln5/Ak+h10bHCTvgRMzfULonu8cs=; b=Z3ljtfwppdo9Yae0lHTvUBjYxrg0EP+KAQtgnrZxfKhDx6f7ypw8obE/1h2Axa3ocq hIwJrBZgywtFYzUOC5FOGiqOlMbf2Jzy/VT4ZR0oZa1mC2mb5xlgZF05ekLrc49bzTOb JmDfzzCDH1Dq/3x7cCsjFq2iXQf5Ldq6YSh+EtGs6o4Dg4i+qqMgu4fT5/c9NJH7MNmN eASkakfOM3gOgMJ1nFKm96eCSvQJlg5DCXoS66YZ9U61uKPLwTN7PpQRKPKUB5TvNqVM 62Um3ckgjZfr+sImb9HQ/pUCz4tOXEwi2pQpbOYwjgCrPjkjG/UErH79LfHOzHO0RxXQ kfTw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1709364587; x=1709969387; h=content-transfer-encoding:to:subject:message-id:date:from :in-reply-to:references:mime-version:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=D7lVQDF7vqwq9+1ln5/Ak+h10bHCTvgRMzfULonu8cs=; b=mUCiXmmlMP1GO+ICec5ZT3Sb/4+tJV/vi4BjegHc8HGcMLRPznxbo/O9GFj+Vv8dd6 u+lFnI/1xuNRKEctJMrtMdVMc/vjUPbdmi952gSir7CYEnW2ZG0+uc1QHGBVC2vBqf6N BRvIR7wakPTQs4bLH+LrkGt88KmORjjgmhMydqfYdgPe18JsZTo+7qsioClt2AJ0V/Ug /ZSR18DX1CyFJN9MW5IvYNAqAFdG8cxDsXClRFQ528NdzCRlBCP7wIVH2gzfmGfwWIuh 7J1cv+mFlw5puIZFoInTCgfyd3sf01S72qRhFsLPOMdOwh/t+7C3FlYQAm1LmMohUxPv 2wEA== X-Forwarded-Encrypted: i=1; AJvYcCWv6RlAeynXOy9vuJQX1hyu6jhyCDzctN/w1xy2GMYf4bWE6MpTTZzSMjkvr9QX0ZVhyFByF1fmantWFwcKsF0JgRF0 X-Gm-Message-State: AOJu0YwIcGELnuByrBbdU6R36YvZZh1cXwGYoPa6TvudrT3grC9KuQi8 YmD2Gx+2nZJ5uwvIvHCc3Ruy1Tw3X/si7qdGI9d0hxfAXNIyoK1rU0jmFqGIvaI59D9qR+UfJVf VQ9eT1xWPtAdgd9vDrgTYPtcCyjcPFyYZO5TuZbR22f8X2zTiyg== X-Google-Smtp-Source: AGHT+IEs7gbUXyOO39hg/XGYQpAXg8t+HSQ+zDd/LpGAwTiqY/ypPo9XItJ+sKMcHIvVetj9TIaj2betd/QJrep3v7o= X-Received: by 2002:a17:906:230b:b0:a44:80f0:1883 with SMTP id l11-20020a170906230b00b00a4480f01883mr3021165eja.42.1709364586812; Fri, 01 Mar 2024 23:29:46 -0800 (PST) MIME-Version: 1.0 References: <40726-1676098925.110777@U2kb.d0Pd.I9ml> <20240211070042.4j37hkgjjn3dfjqd@chazelas.org> <20240220210553.g6imt3op6zahz4pa@chazelas.org> <20240221201215.anpjcfav6na55gg6@chazelas.org> <20240301182238.tpyajwblbam5bxw7@chazelas.org> In-Reply-To: From: Bart Schaefer Date: Fri, 1 Mar 2024 23:29:35 -0800 Message-ID: Subject: Re: Up-scope named references, vs. ksh To: Bart Schaefer , Zsh hackers list Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable X-Seq: 52648 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: On Wed, Feb 28, 2024 at 9:16=E2=80=AFPM Bart Schaefer wrote: > > it's akin to attempting to allocate new space in your caller's stack > frame in C (except there's one stack for each parameter name). On Fri, Mar 1, 2024 at 12:34=E2=80=AFPM Bart Schaefer wrote: > > zsh uses dynamic scoping, and ksh also has special handling of > "typeset -n ref=3D$1" (and other positionals) that is simply never going > to happen in zsh. How about this: Instead of magically turning a positional into a reference into the surrounding scope, let's make it explicit. I propose that when the -u flag is combined with the -n flag, the named reference refers to the enclosing scope, even if there's a local of that name already in scope. Otherwise (without -u) normal dynamic scoping applies. So in an example like this: y () { typeset $1=3DY typeset -nu upref=3D$1 upref=3DUP echo In y: typeset -p $1 } z () { local var y var echo In z: typeset -p var } The output would be: In y: typeset var=3DY In z: typeset var=3DUP However, there's no good way around the stack problem, so removing the declaration in z -- z () { y var echo In z: typeset -p var } -- will cause an error at the "upref=3DUP" assignment in y. Or that assignment could just silently fail, which already happens in a couple of existing tests. The decision on that probably rests on what to do with prefix assignments, e.g., if it's an error then upref=3DUP /bin/echo bad would print a message and not execute at all. If instead the assignment does nothing but set $?, then /bin/echo will execute and its status will determine $?.