GNU bug report logs -
#64508
Optimization of "-" function is incorrect in presence of GOOPS overloading
Previous Next
To reply to this bug, email your comments to 64508 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-guile <at> gnu.org
:
bug#64508
; Package
guile
.
(Fri, 07 Jul 2023 12:57:01 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Jean Abou Samra <jean <at> abou-samra.fr>
:
New bug report received and forwarded. Copy sent to
bug-guile <at> gnu.org
.
(Fri, 07 Jul 2023 12:57:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
The following code demonstrates that when byte-compiling (but not when
interpreting), the call (- x) is transformed into (- 0 x). This results
in failure of custom - methods defined via GOOPS.
I think this says it all:
$ guile3.0
GNU Guile 3.0.7 [...]
scheme@(guile-user)> ,optimize (- x)
$1 = (- 0 x)
The longer version:
$ cat minus.scm
(use-modules (oop goops))
(define-class <Foo> ()
(bar #:init-keyword #:bar))
(define-method (- (x <Foo>))
(make <Foo> #:bar (- (slot-ref x 'bar))))
(display (slot-ref (- (make <Foo> #:bar 5))
'bar))
(newline)
$ guile3.0 --no-auto-compile minus.scm
-5
$ guile3.0 minus.scm
;;; note: auto-compilation is enabled, set GUILE_AUTO_COMPILE=0
;;; or pass the --no-auto-compile argument to disable.
;;; compiling /home/jean/tmp/minus.scm
;;; compiled /home/jean/.cache/guile/ccache/3.0-LE-8-
4.5/home/jean/tmp/minus.scm.go
Backtrace:
In ice-9/boot-9.scm:
1752:10 8 (with-exception-handler _ _ #:unwind? _ # _)
In unknown file:
7 (apply-smob/0 #<thunk 7f569a4a0f60>)
In ice-9/boot-9.scm:
724:2 6 (call-with-prompt _ _ #<procedure default-prompt-handle…>)
In ice-9/eval.scm:
619:8 5 (_ #(#(#<directory (guile-user) 7f569a499c80>)))
In ice-9/boot-9.scm:
2835:4 4 (save-module-excursion _)
4380:12 3 (_)
In /home/jean/tmp/minus.scm:
9:19 2 (_)
In oop/goops.scm:
1567:11 1 (cache-miss 0 #<<Foo> 7f56944e70b0>)
1585:2 0 (_ _ _)
oop/goops.scm:1585:2: No applicable method for #<<generic> - (1)> in call (- 0
#<<Foo> 7f56944e70b0>)
[signature.asc (application/pgp-signature, inline)]
This bug report was last modified 1 year and 175 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.