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 98CD2242A8 for ; Fri, 23 Feb 2024 06:46:20 +0100 (CET) ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1708667180; b=q7TlB3IY/xQXDRw9I3Mv3Rgy+HKGY4FDpnfZUOvXHWoebhqC3wAbBaRg6nXOXFZvxWdUue+8tk eFVBCyBM93MuwgHg7dr/mU4yDtvuGC3TSHEC9sUJGpQUdOP4fmWHvVMlKYmlZVdzpdj5hmGJP4 jVuFopAJ6E9oXxzBrxZthT96hAnmvwk+4yoNe6CY/IWoSU5viv6SdMQEDTeAQwElbYzJZpiFmU 4PrIyOotNZXvuS6+rw/YCAj44PoUBchbnc/muOcdyv1FgfPagckrhkS3ob9ZZF0nZtU5csLDPa SRwB7PRth2SWm9LedtwqgRw0Lz64bMANB37Mk21/8YVeBA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ej1-f50.google.com) smtp.remote-ip=209.85.218.50; 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=1708667180; bh=zA5cqL90iU10fbrv376A58+hZtU8w6Xg/AnFZNEjGiU=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=UleTEb6a2Ixsy4UD3I8sBN++O8RM25NvLZ43FK0gqFZsdeE3XFaKr/Z7BO9fz3WFhgmfwI2F34 fm9YuYx+gZngK/y43hbbsEZpyEhqJmDnhWGT3SFkt3QqRKVdtdSuW/niiwgpwA/JK3/fR5+b6j dlP69tpTAC9kWjHSynriLcYVqKXI1HmmjpohUuCzUGwQOFZbPf3P1KatAd8ghAT7ORxGyNZfHe 5KYQBGlsfvxBRCVIYRl9p9MFGMUdiEEjBvv3lZV7QXoou9v+1qn7VlsW9Kf8R8gviTOoMTZOYr MrUpQ5z85dgL27SYZPzBZjL070X/shEcjpSH9jJ5eYh2nw==; 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-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=ukGPRoW7S9LBek5MZGKUVuUZurz1DF1qgaqQ45oZkc0=; b=Xuae4cS16Ri3OiHHuN1oQgi+GL UGHTq9iDWiNwU0WdahA+Ju94o64z2Nv+lgY0DILfDcAmpzt6koqh+wPamRQ1bWmHPf5AhGvYLo/xZ q7KG4HJztPXKbu2Qt4sw6V+s1Hz+7Lb6IJo2HhtRaoYshiIH68Qk9skczLUAnX2AO2mgnJCAKowF1 hCG/5uTI2EPMhsuIHV6QgRu1dQjUfySVvTiUxv0WfjK0TNVGU7j2pPWkBqOYxyvWI2uAjHIUjNJJK 8/bXXRHVPrYcXzcEAhrkcKMpdmHUqe8wdYIeRsMBgCAaBqMmU/94tA+BYMXKQBY1KsbMuT+I/13/N jh24bgew==; Received: by zero.zsh.org with local id 1rdOO2-0002fW-5e; Fri, 23 Feb 2024 05:46:18 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ej1-f50.google.com) smtp.remote-ip=209.85.218.50; 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-f50.google.com ([209.85.218.50]:43515) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1rdONh-0002N9-Je; Fri, 23 Feb 2024 05:45:58 +0000 Received: by mail-ej1-f50.google.com with SMTP id a640c23a62f3a-a3ed9cae56fso325033466b.1 for ; Thu, 22 Feb 2024 21:45:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20230601.gappssmtp.com; s=20230601; t=1708667157; x=1709271957; darn=zsh.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=ukGPRoW7S9LBek5MZGKUVuUZurz1DF1qgaqQ45oZkc0=; b=bnZycrgYnoh+xrqszAQ5CzbHVnNiesqhRJLDojF/W2MePnY+zAgtE6wG4eSF97arYc 7IL/n3xMh2luw4UU2UbsmHhXqsRDhFgSyVkYZb8HFLmd8vi/tIlLWlmpjU/hFfE4Gf+5 aicScrhJXZS7uTOktanf9D1zRsLdVL5RoNa7QPHx/7i4B3uRN9GUpLpp8DH73Gbv4k8P gyDJMPzJ9xJFUo0CNKWRMLBZPw4zn9UDGgG1ABGCjHSYB2en95vqAvHa1bJYozsLk9wM fD9kyVYtBDsKLFeLVZOoyrN28kMracXivNPS1GtoFKIn9uAhb55IPIiU86hkq0M12JGS wVuQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1708667157; x=1709271957; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=ukGPRoW7S9LBek5MZGKUVuUZurz1DF1qgaqQ45oZkc0=; b=oQkuCDX9fpL1X09V1IYVHASt88FRlmu2nRckJjOekXCFAqQWi7614FgWb4ybkLREvX 9PqvUkglQxwttbN54wQzLHSMFMr8rUhJ+u0HHIdUG/R5GD+XoK89RMYfzRqWcdPmd2RM ICs7R+OZqi9KAVSCxL/+nhOzcA2N2MLx4vaK1pf+snyeQI6W+WopKUOy0ZkFkPzBE6E5 1a04vm2k4CdV6mAeafa4HsSz1acPvysiXXYclvZiSBc8r0J3NMRa70zCPsKMjg6BClrB z08oNElEqabjqC3waYALtEu7RCleZh/hetvjItfhJjuALqJF+olLEe37Ys6m4AmSYwiL 3ewQ== X-Gm-Message-State: AOJu0YyBGkDpArXgcyGWjx8fjVTD9gTJZzptpdEVSDT3hHOBV7v3NPtx cUWGc5wYnXoyqt5lRT6B4xuHH58brx8MtNOEa9wdhuo2/q2ghP22HNFRSZlgVGzNB02QlkNzlcH tZmbogwOfjpYlRGQ9a7R0CWlmWJYQCCWn6+uGyUTWblM0iEw= X-Google-Smtp-Source: AGHT+IEyKBC/d9zhtWVZyHDmcsT/r6FKbJZnbMWKX76uALcNkCSk0jBPUXShnfyPD/G8D4F0S8MMDwMBFAnOJ/R+lF8= X-Received: by 2002:a17:906:3b0b:b0:a3e:7f80:ecac with SMTP id g11-20020a1709063b0b00b00a3e7f80ecacmr3810905ejf.12.1708667156800; Thu, 22 Feb 2024 21:45:56 -0800 (PST) MIME-Version: 1.0 From: Bart Schaefer Date: Thu, 22 Feb 2024 21:45:45 -0800 Message-ID: Subject: [PATCH] namerefs and specials and scoping (oh my) To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000ebde9b06120612a8" X-Seq: 52583 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: --000000000000ebde9b06120612a8 Content-Type: text/plain; charset="UTF-8" Another obscure one, but with possibly surprising side-effects. In createparam(), we first call gethashnode2() to read the global paramtab directly and then decide whether a new parameter is being created or an existing (but unset) one is being restored. However, for readonly special parameters, calling the paramtab API getnode2 might be necessary to find the right scope for the new parameter ... or more precisely, to find out if there is either already a parameter in that scope that should not be restored, or a named reference whose referent should be neither created nor restored. This mostly affects parameters being assigned by addvars(), that is, assignment expressions with no declaration. If "typeset" is being used, it only matters when the -g option is passed, because otherwise a local is being created. The most consistent place to add test for this is with private namerefs. --000000000000ebde9b06120612a8 Content-Type: text/plain; charset="US-ASCII"; name="scoped-nameref.txt" Content-Disposition: attachment; filename="scoped-nameref.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lsy85gfc0 ZGlmZiAtLWdpdCBhL1NyYy9wYXJhbXMuYyBiL1NyYy9wYXJhbXMuYwppbmRleCBiMzI5ZDIwNzku LjIyNWFjYjhhMSAxMDA2NDQKLS0tIGEvU3JjL3BhcmFtcy5jCisrKyBiL1NyYy9wYXJhbXMuYwpA QCAtMTAwNCw4ICsxMDA0LDI5IEBAIGNyZWF0ZXBhcmFtKGNoYXIgKm5hbWUsIGludCBmbGFncykK IAkJCSBnZXRoYXNobm9kZTIocGFyYW10YWIsIG5hbWUpIDoKIAkJCSBwYXJhbXRhYi0+Z2V0bm9k ZShwYXJhbXRhYiwgbmFtZSkpOwogCi0JaWYgKG9sZHBtICYmIChvbGRwbS0+bm9kZS5mbGFncyAm IFBNX05BTUVSRUYpICYmCi0JICAgICEoZmxhZ3MgJiBQTV9OQU1FUkVGKSAmJiAob2xkcG0gPSB1 cHNjb3BlKG9sZHBtLCBvbGRwbS0+YmFzZSkpKSB7CisJaWYgKG9sZHBtICYmIChvbGRwbS0+bm9k ZS5mbGFncyAmIFBNX1JPX0JZX0RFU0lHTikpIHsKKwkgICAgaWYgKCEoZmxhZ3MgJiBQTV9MT0NB TCkpIHsKKwkJLyogTXVzdCBjYWxsIHRoZSBBUEkgZm9yIG5hbWVyZWZzIGFuZCBzcGVjaWFscyB0 byB3b3JrICovCisJCXBtID0gKFBhcmFtKSBwYXJhbXRhYi0+Z2V0bm9kZTIocGFyYW10YWIsIG9s ZHBtLT5ub2RlLm5hbSk7CisJCWlmICghcG0gfHwgKChwbS0+bm9kZS5mbGFncyAmIFBNX05BTUVS RUYpICYmCisJCQkgICAgcG0tPmxldmVsICE9IGxvY2FsbGV2ZWwpKSB7CisJCSAgICB6ZXJyKCIl czogY2FuJ3QgbW9kaWZ5IHJlYWQtb25seSBwYXJhbWV0ZXIiLCBuYW1lKTsKKwkJICAgIHJldHVy biBOVUxMOworCQl9CisJICAgIH0KKwkgICAgLyoqCisJICAgICAqIEltcGxlbWVudGF0aW9uIG5v dGU6IEluIHRoZSBjYXNlIG9mIGEgcmVhZG9ubHkgbmFtZXJlZiwKKwkgICAgICogdGhlIHJpZ2h0 IHRoaW5nIG1pZ2h0IGJlIHRvIGluc2VydCBhIG5ldyBnbG9iYWwgaW50bworCSAgICAgKiB0aGUg cGFyYW10YWIgYW5kIHBvaW50IHRoZSBsb2NhbCBwbS0+b2xkIGF0IGl0LCByYXRoZXIKKwkgICAg ICogdGhhbiBlcnJvci4gIFRoYXQgaXMgd2h5IGdldGhhc2hub2RlMigpIGlzIGNhbGxlZAorCSAg ICAgKiBmaXJzdCwgdG8gYXZvaWQgc2tpcHBpbmcgdXAgdGhlIHN0YWNrIHByZW1hdHVyZWx5Lgor CSAgICAgKiovCisJfQorCisJaWYgKG9sZHBtICYmICEoZmxhZ3MgJiBQTV9OQU1FUkVGKSAmJgor CSAgICAoIShvbGRwbS0+bm9kZS5mbGFncyAmIFBNX1JPX0JZX0RFU0lHTikgfHwgIShmbGFncyAm IFBNX0xPQ0FMKSkgJiYKKwkgICAgKG9sZHBtLT5ub2RlLmZsYWdzICYgUE1fTkFNRVJFRikgJiYK KwkgICAgKG9sZHBtID0gdXBzY29wZShvbGRwbSwgb2xkcG0tPmJhc2UpKSkgewogCSAgICBQYXJh bSBsYXN0cG07CiAJICAgIHN0cnVjdCBhc2dtZW50IHN0b3A7CiAJICAgIHN0b3AuZmxhZ3MgPSBQ TV9OQU1FUkVGIHwgKGZsYWdzICYgUE1fTE9DQUwpOwpkaWZmIC0tZ2l0IGEvVGVzdC9WMTBwcml2 YXRlLnp0c3QgYi9UZXN0L1YxMHByaXZhdGUuenRzdAppbmRleCA0MTQwZDRlOTYuLmVmYTM0NjAw MiAxMDA2NDQKLS0tIGEvVGVzdC9WMTBwcml2YXRlLnp0c3QKKysrIGIvVGVzdC9WMTBwcml2YXRl Lnp0c3QKQEAgLTMxMSw2ICszMTEsNDcgQEAgRjpmdXR1cmUgcmV2aXNpb24gd2lsbCBjcmVhdGUg YSBnbG9iYWwgd2l0aCB0aGlzIGFzc2lnbm1lbnQKID5UT1AKID5VUDoKIAorICgpIHsKKyAgIHR5 cGVzZXQgLWEgYXJ5CisgICBsb2NhbCAtUCAtbiByZWY9YXJ5CisgICB7CisgICAgKCl7CisgICAg IHJlZj1YWAkjIFNob3VsZCBiZSBhbiBlcnJvcgorICAgICB0eXBlc2V0IC1wIGFyeSByZWYKKyAg ICB9CisgICB9IGFsd2F5cyB7CisgICAgVFJZX0JMT0NLX0VSUk9SPTAKKyAgICB0eXBlc2V0IC1w IGFyeSByZWYKKyAgIH0KKyB9CisgdHlwZXNldCAtcCBhcnkKKzE6YXNzaWdubWVudCB0byBwcml2 YXRlIG5hbWVyZWYgaW4gd3Jvbmcgc2NvcGUsIHBhcnQgMQorPnR5cGVzZXQgLWEgYXJ5Cis+dHlw ZXNldCAtaG4gcmVmPWFyeQorKj8qcmVmOiBjYW4ndCBtb2RpZnkgcmVhZC1vbmx5IHBhcmFtZXRl cgorKj8qbm8gc3VjaCB2YXJpYWJsZTogYXJ5CisKKyAoKSB7CisgICB0eXBlc2V0IC1hIGFyeQor ICAgbG9jYWwgLVAgLW4gcmVmPWFyeQorICAgeworICAgICgpeworICAgICB0eXBlc2V0IHJlZj1Y WAkjIFNob3VsZCBjcmVhdGUgYSBsb2NhbAorICAgICB0eXBlc2V0IC1wIGFyeSByZWYKKyAgICB9 CisgICB9IGFsd2F5cyB7CisgICAgVFJZX0JMT0NLX0VSUk9SPTAKKyAgICB0eXBlc2V0IC1wIGFy eSByZWYKKyAgIH0KKyB9CisgdHlwZXNldCAtcCBhcnkKKzE6YXNzaWdubWVudCB0byBwcml2YXRl IG5hbWVyZWYgaW4gd3Jvbmcgc2NvcGUsIHBhcnQgMgorPnR5cGVzZXQgLWcgLWEgYXJ5Cis+dHlw ZXNldCByZWY9WFgKKz50eXBlc2V0IC1hIGFyeQorPnR5cGVzZXQgLWhuIHJlZj1hcnkKKyo/Km5v IHN1Y2ggdmFyaWFibGU6IGFyeQorCiAgKCkgewogICAgdHlwZXNldCAtbiBwdHIxPXB0cjIKICAg IHByaXZhdGUgLW4gcHRyMgkjIFRZUEVTRVRfVE9fVU5TRVQgbWFrZXMgdGhpcyBub3QgYSAicGxh Y2Vob2xkZXIiCg== --000000000000ebde9b06120612a8--