Received: (at submit) by debbugs.gnu.org; 25 Nov 2025 20:31:55 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 25 15:31:55 2025
Received: from localhost ([127.0.0.1]:42328 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vNzha-0004t2-9D
for submit <at> debbugs.gnu.org; Tue, 25 Nov 2025 15:31:54 -0500
Received: from lists.gnu.org ([2001:470:142::17]:45894)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <monnier@HIDDEN>)
id 1vNLdi-0001XZ-S2
for submit <at> debbugs.gnu.org; Sun, 23 Nov 2025 20:45:16 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <monnier@HIDDEN>)
id 1vNLdY-000668-0s
for bug-gnu-emacs@HIDDEN; Sun, 23 Nov 2025 20:45:04 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <monnier@HIDDEN>)
id 1vNLdW-0002C0-PU
for bug-gnu-emacs@HIDDEN; Sun, 23 Nov 2025 20:45:03 -0500
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id C813D81703;
Sun, 23 Nov 2025 20:45:01 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
s=mail; t=1763948701;
bh=OhO4tVRDV4JJ/WEitY/uQlRs8awp1VLQlZQGwb3VJF8=;
h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
b=HFoc2uuiwHYiygGKjCFsAY8pO0BDi99GmQn+aZ0NHk9wwDu+WV0HnQzz0RWKXBx8y
/+nuDsVnw+CayhHLK261oFjU7FFFkF0K2jnLP1Y45PqPlztcOBmnGOM4CHwD/Ya2dd
uX0i4QxKtnahVkictLAy/po6OssEKFvj1B/L30vvngS7umPds+0n9zepVO7BGgVQcT
8Q9lT4wVDzLx6ZA3t8Ww3Oh6EXy6AWhYUt1yBcjt1RY5/ROkyJB9FIdLy/s5R/lqTY
Ce6poWtqi7WxnGAeYcrRdFDGTPTHJScPEv5xNuYQfXGgwkjNVBD3soau6cTmpESazQ
sEifCvnQ4Vfdw==
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 0915E8053B;
Sun, 23 Nov 2025 20:45:01 -0500 (EST)
Received: from asado (unknown [181.28.45.30])
by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id D58431207B0;
Sun, 23 Nov 2025 20:44:59 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
To: Jonas Bernoulli <jonas@HIDDEN>
Subject: Re: func-arity should take into account that advices change arity
In-Reply-To: <87see5iks1.fsf@HIDDEN>
Message-ID: <jwvwm3gcikc.fsf-monnier+emacs@HIDDEN>
References: <87see5iks1.fsf@HIDDEN>
Date: Sun, 23 Nov 2025 20:44:56 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results: 0
ALL_TRUSTED -1 Passed through trusted hosts only via SMTP
AWL -0.249 Adjusted score from AWL reputation of From: address
BAYES_00 -1.9 Bayes spam probability is 0 to 1%
DKIM_SIGNED 0.1 Message has a DKIM or DK signature,
not necessarily valid
DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
domain
DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from
domain
X-SPAM-LEVEL:
Received-SPF: pass client-ip=132.204.25.50;
envelope-from=monnier@HIDDEN; helo=mailscanner.iro.umontreal.ca
X-Spam_score_int: -42
X-Spam_score: -4.3
X-Spam_bar: ----
X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3,
RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,
SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: submit
Cc: bug-gnu-emacs@HIDDEN
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)
> I think that's problematic. E.g., if a function gains a new argument
> and a package would like to support both the old and the new version,
> then it could use `func-arity' to determine whether to pass the new
> argument or not, but this breaks if a third-party advises the same
> function.
(condition-case nil
(foo bar baz)
(wrong-number-of-arguments
(foo bar)))
is the standard way to deal with changes in API.
I recommend not to use `func-arity`, ever.
Stefan
bug-gnu-emacs@HIDDEN:bug#79880; Package emacs.
Full text available.
Received: (at submit) by debbugs.gnu.org; 25 Nov 2025 20:22:08 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Nov 25 15:22:08 2025
Received: from localhost ([127.0.0.1]:41840 helo=debbugs.gnu.org)
by debbugs.gnu.org with esmtp (Exim 4.84_2)
(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
id 1vNzY7-00010q-Nm
for submit <at> debbugs.gnu.org; Tue, 25 Nov 2025 15:22:08 -0500
Received: from lists.gnu.org ([2001:470:142::17]:44308)
by debbugs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.84_2) (envelope-from <jonas@HIDDEN>) id 1vMzBS-0008Eh-J5
for submit <at> debbugs.gnu.org; Sat, 22 Nov 2025 20:46:35 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <jonas@HIDDEN>) id 1vMzBB-0003nf-CS
for bug-gnu-emacs@HIDDEN; Sat, 22 Nov 2025 20:46:21 -0500
Received: from mail.hostpark.net ([212.243.197.30])
by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
(Exim 4.90_1) (envelope-from <jonas@HIDDEN>) id 1vMzB2-0002pW-IU
for bug-gnu-emacs@HIDDEN; Sat, 22 Nov 2025 20:46:15 -0500
Received: from localhost (localhost [127.0.0.1])
by mail.hostpark.net (Postfix) with ESMTP id D9652162C9;
Sun, 23 Nov 2025 02:45:51 +0100 (CET)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=bernoul.li; h=
content-type:content-type:mime-version:message-id:date:date
:subject:subject:from:from; s=sel2011a; t=1763862351; bh=k7UUChl
ou1TYkq6b5nf1mR67vQJuPkiofv2Hm5ICqbU=; b=tDIW2s2Qh2dEcSWYQwEZuvE
kk8rtZifAeCIFOjl7wuV4AWiHQvQd5ram1BNnuZbv/Mu1t765AtXHPla5sTvMyzd
LBZupPF3ugiijm1pAppvTjoXYLrj9HOoUQ8YKgW5Q5xT2JchMBzNjEobhuGgSJ2f
TmZKF3Y+oj9gpwtP3nn4=
X-Virus-Scanned: by Hostpark/NetZone Mailprotection at hostpark.net
Received: from mail.hostpark.net ([127.0.0.1])
by localhost (mail0.hostpark.net [127.0.0.1]) (amavis, port 10224) with ESMTP
id xVCIA9zRMJ-p; Sun, 23 Nov 2025 02:45:51 +0100 (CET)
Received: from customer (localhost [127.0.0.1])
(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)
key-exchange secp256r1 server-signature RSA-PSS (2048 bits) server-digest
SHA256) (No client certificate requested)
by mail.hostpark.net (Postfix) with ESMTPSA id 341D9162C7;
Sun, 23 Nov 2025 02:45:50 +0100 (CET)
From: Jonas Bernoulli <jonas@HIDDEN>
To: bug-gnu-emacs@HIDDEN, Stefan Monnier <monnier@HIDDEN>
Subject: func-arity should take into account that advices change arity
Date: Sun, 23 Nov 2025 02:45:50 +0100
Message-ID: <87see5iks1.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
Received-SPF: pass client-ip=212.243.197.30; envelope-from=jonas@HIDDEN;
helo=mail.hostpark.net
X-Spam_score_int: -27
X-Spam_score: -2.8
X-Spam_bar: --
X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1,
DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1,
RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001,
RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, RCVD_IN_VALIDITY_SAFE_BLOCKED=0.001,
SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: 0.9 (/)
X-Debbugs-Envelope-To: submit
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -0.1 (/)
Hello,
Advising a function changes its arity.
(defun foo (a))
(func-arity 'foo)
=> (1 . 1)
(advice-add 'foo :around (lambda (fn a) (funcall fn a)))
(func-arity 'foo)
=> (0 . many)
I think that's problematic. E.g., if a function gains a new argument
and a package would like to support both the old and the new version,
then it could use `func-arity' to determine whether to pass the new
argument or not, but this breaks if a third-party advises the same
function.
This could be dealt with by adding a new argument to `func-arity',
which controls whether any advice is peeled before determining the
arity. I tend to think it should peel by default (i.e., the current
behavior looks like a bug to me).
I've been using a wrapper like this:
(defun my-func-arity (fn)
(func-arity
(advice--cd*r
(if (symbolp fn) (symbol-function fn) fn))))
Thanks,
Jonas
Jonas Bernoulli <jonas@HIDDEN>:bug-gnu-emacs@HIDDEN.
Full text available.bug-gnu-emacs@HIDDEN:bug#79880; Package emacs.
Full text available.
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997 nCipher Corporation Ltd,
1994-97 Ian Jackson.