From unknown Fri Jun 13 11:45:52 2025 X-Loop: help-debbugs@gnu.org Subject: bug#39395: GOOPS generic promotion fails for nary functions Resent-From: Rob Browning Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Sun, 02 Feb 2020 19:05:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 39395 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 39395@debbugs.gnu.org X-Debbugs-Original-To: bug-guile@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.158067028623035 (code B ref -1); Sun, 02 Feb 2020 19:05:01 +0000 Received: (at submit) by debbugs.gnu.org; 2 Feb 2020 19:04:46 +0000 Received: from localhost ([127.0.0.1]:40551 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iyKY2-0005zS-Jo for submit@debbugs.gnu.org; Sun, 02 Feb 2020 14:04:46 -0500 Received: from lists.gnu.org ([209.51.188.17]:41399) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1iyKY0-0005zK-Nk for submit@debbugs.gnu.org; Sun, 02 Feb 2020 14:04:45 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:55084) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1iyKXz-0004zF-Je for bug-guile@gnu.org; Sun, 02 Feb 2020 14:04:44 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1iyKXy-0001IO-HJ for bug-guile@gnu.org; Sun, 02 Feb 2020 14:04:43 -0500 Received: from defaultvalue.org ([45.33.119.55]:58388) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1iyKXy-0001GE-Ck for bug-guile@gnu.org; Sun, 02 Feb 2020 14:04:42 -0500 Received: from trouble.defaultvalue.org (localhost [127.0.0.1]) (Authenticated sender: rlb@defaultvalue.org) by defaultvalue.org (Postfix) with ESMTPSA id A3FA9200FA for ; Sun, 2 Feb 2020 13:04:40 -0600 (CST) Received: by trouble.defaultvalue.org (Postfix, from userid 1000) id 5CBD214E071; Sun, 2 Feb 2020 13:04:42 -0600 (CST) From: Rob Browning Date: Sun, 02 Feb 2020 13:04:42 -0600 Message-ID: <87a7606cad.fsf@trouble.defaultvalue.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 45.33.119.55 X-Spam-Score: 0.2 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) I noticed that this fails in (at least) 2.0, 2.2 and 3.0: (use-modules (oop goops)) (define (foo . rest) 'fallback) (define-method (foo (x )) ) e.g.: $ guile-3.0 -s test.scm Backtrace: In ice-9/boot-9.scm: 1736:10 6 (with-exception-handler _ _ #:unwind? _ # _) In unknown file: 5 (apply-smob/0 #) In ice-9/boot-9.scm: 718:2 4 (call-with-prompt _ _ #) In ice-9/eval.scm: 619:8 3 (_ #(#(#))) In ice-9/boot-9.scm: 2806:4 2 (save-module-excursion _) 4351:12 1 (_) In oop/goops.scm: 1585:2 0 (_ _ _) And then I found that the the manual says this: If symbol was previously bound to a Scheme procedure (or procedure-with-setter), the old procedure (and setter) is incorporated into the new generic function as its default procedure (and setter). So I wondered if this might be a bug, or was expected behavior. It's also easy to work around -- just change the first define to a define-method. Thanks -- Rob Browning rlb @defaultvalue.org and @debian.org GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4 From unknown Fri Jun 13 11:45:52 2025 X-Loop: help-debbugs@gnu.org Subject: bug#39395: GOOPS generic promotion fails for nary functions Resent-From: Rob Browning Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Fri, 07 Feb 2020 06:40:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 39395 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 39395@debbugs.gnu.org X-Debbugs-Original-To: bug-guile@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.158105756520345 (code B ref -1); Fri, 07 Feb 2020 06:40:01 +0000 Received: (at submit) by debbugs.gnu.org; 7 Feb 2020 06:39:25 +0000 Received: from localhost ([127.0.0.1]:48822 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1izxIT-0005I5-09 for submit@debbugs.gnu.org; Fri, 07 Feb 2020 01:39:25 -0500 Received: from lists.gnu.org ([209.51.188.17]:45997) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1izxIQ-0005Hx-Iy for submit@debbugs.gnu.org; Fri, 07 Feb 2020 01:39:23 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:45112) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1izxIP-0006Y6-Do for bug-guile@gnu.org; Fri, 07 Feb 2020 01:39:22 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,URIBL_BLOCKED autolearn=disabled version=3.3.2 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1izxII-0001CL-Mv for bug-guile@gnu.org; Fri, 07 Feb 2020 01:39:21 -0500 Received: from defaultvalue.org ([45.33.119.55]:58522) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1izxII-0001B2-It for bug-guile@gnu.org; Fri, 07 Feb 2020 01:39:14 -0500 Received: from trouble.defaultvalue.org (localhost [127.0.0.1]) (Authenticated sender: rlb@defaultvalue.org) by defaultvalue.org (Postfix) with ESMTPSA id 46D2220136 for ; Fri, 7 Feb 2020 00:39:13 -0600 (CST) Received: by trouble.defaultvalue.org (Postfix, from userid 1000) id 0E66114E071; Fri, 7 Feb 2020 00:39:16 -0600 (CST) From: Rob Browning In-Reply-To: <87a7606cad.fsf@trouble.defaultvalue.org> References: <87a7606cad.fsf@trouble.defaultvalue.org> Date: Fri, 07 Feb 2020 00:39:15 -0600 Message-ID: <87o8ua2964.fsf@trouble.defaultvalue.org> MIME-Version: 1.0 Content-Type: text/plain X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 45.33.119.55 X-Spam-Score: 0.2 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.8 (/) Rob Browning writes: > And then I found that the the manual says this: > > If symbol was previously bound to a Scheme procedure (or > procedure-with-setter), the old procedure (and setter) is incorporated > into the new generic function as its default procedure (and setter). > > So I wondered if this might be a bug, or was expected behavior. It's > also easy to work around -- just change the first define to a > define-method. Not sure if this might be related. With guile-3.0 (use-modules (oop goops)) (define x close) (define-generic x) produces: $ guile-3.0 -s test.scm ;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0 ;;; or pass the --no-auto-compile argument to disable. ;;; compiling /home/rlb/test.scm ;;; /home/rlb/test.scm:5:0: warning: shadows previous definition of `x' at /home/rlb/test.scm:4:0 ;;; compiled /home/rlb/.cache/guile/ccache/3.0-LE-8-4.2/home/rlb/test.scm.go Thanks -- Rob Browning rlb @defaultvalue.org and @debian.org GPG as of 2011-07-10 E6A9 DA3C C9FD 1FF8 C676 D2C4 C0F0 39E9 ED1B 597A GPG as of 2002-11-03 14DD 432F AE39 534D B592 F9A0 25C8 D377 8C7E 73A4