bug#39395: GOOPS generic promotion fails for nary functions

Rob Browning <[email protected]>
Newsgroups gmane.lisp.guile.bugs
Message-ID <[email protected]>
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 <string>)) <string>)

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 #<thunk 558f3c1bbb80>)
  In ice-9/boot-9.scm:
      718:2  4 (call-with-prompt _ _ #<procedure default-prompt-handle?>)
  In ice-9/eval.scm:
      619:8  3 (_ #(#(#<directory (guile-user) 558f3c28bf00>)))
  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
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.