bug#47232: GOOPS cannot use generic as accessor in 3.0.x

Jan Nieuwenhuizen <[email protected]>
Newsgroups gmane.lisp.guile.bugs
Organization AvatarAcademy.nl
Message-ID <[email protected]>
Hi!

Trying to upgrade 8sync to latest Guile, I found the problem that a
generic function cannot be used as as accessor, and then be
exported/imported.  Or something.  At least, the problem is triggered
when compiling (or using) a module that does that.

See the attached foo.scm, bar.scm and `doit', when running it in the
Guile source tree I get

--8<---------------cut here---------------start------------->8---
$ ./doit 
++ export GUILE_LOAD_COMPILED_PATH=/home/janneke/src/8sync/wip
++ GUILE_LOAD_COMPILED_PATH=/home/janneke/src/8sync/wip
++ ./pre-inst-env guild compile -L . -o foo.go foo.scm
wrote `foo.go'
++ ./pre-inst-env guild compile -L . -o bar.go bar.scm
Backtrace:
In ice-9/eval.scm:
   293:34 19 (_ #<module (#{ g79}#) 7ff689b8dd20>)
In ice-9/boot-9.scm:
   3380:4 18 (define-module* _ #:filename _ #:pure _ #:version _ #:imports _ #:exports _ #:replacements _ # _ # …)
  2565:24 17 (call-with-deferred-observers #<procedure 7ff689b948c0 at ice-9/boot-9.scm:3381:5 ()>)
  3393:24 16 (_)
   222:17 15 (map1 (((foo))))
  3297:17 14 (resolve-interface (foo) #:select _ #:hide _ #:prefix _ #:renamer _ #:version _)
In ice-9/threads.scm:
    390:8 13 (_ _)
In ice-9/boot-9.scm:
  3223:13 12 (_)
In ice-9/threads.scm:
    390:8 11 (_ _)
In ice-9/boot-9.scm:
  3507:20 10 (_)
   2806:4  9 (save-module-excursion #<procedure 7ff68aeece10 at ice-9/boot-9.scm:3508:21 ()>)
  3527:26  8 (_)
In unknown file:
           7 (primitive-load-path "foo" #<procedure 7ff689bb6140 at ice-9/boot-9.scm:3514:37 ()>)
In foo.scm:
     12:0  6 (_)
In oop/goops.scm:
   2852:4  5 (_ _ . _)
   2782:2  4 (_ #<<class> <foo> 7ff688c64f80> _)
In srfi/srfi-1.scm:
    634:9  3 (for-each #<procedure 7ff688c5c0c0 at oop/goops.scm:2579:3 (slot)> (#<<slot> foo 7ff688c64e80>))
In oop/goops.scm:
  2590:22  2 (_ #<<slot> foo 7ff688c64e80>)
In unknown file:
           1 (setter #<<generic> .foo (1)>)
In ice-9/boot-9.scm:
  1669:16  0 (raise-exception _ #:continuable? _)

ice-9/boot-9.scm:1669:16: In procedure raise-exception:
In procedure setter: Wrong type argument in position 1: #<<generic> .foo (1)>
--8<---------------cut here---------------end--------------->8---

I found similar behaviour in guile-3.0.2, guile-2.2.7 is fine.

Greetings,
Janneke


-- 
Jan Nieuwenhuizen <[email protected]> | GNU LilyPond http://lilypond.org
Freelance IT http://JoyofSource.com | Avatar® http://AvatarAcademy.com
doit (application/octet-stream, 331 B) - not displayed
foo.scm (application/octet-stream, 160 B) - not displayed
bar.scm (application/octet-stream, 64 B) - not displayed
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.