eqv? not a generic, equal? dispatches to generic only for objects
authorAndy Wingo <wingo@pobox.com>
Fri, 6 Nov 2009 09:27:19 +0000 (10:27 +0100)
committerAndy Wingo <wingo@pobox.com>
Wed, 25 Nov 2009 23:25:07 +0000 (00:25 +0100)
commitab455d1f1b14347e1445161eeafec919235af92e
tree5b32056bfa0860d3fa53090fc9687d282475852f
parenta9a90a8820e6f6a36d0f17cdca5f8ba0d7ca735b
eqv? not a generic, equal? dispatches to generic only for objects

* libguile/eq.c (scm_eqv_p): Not a generic any more. Since eqv? is used
  by e.g. `case', which should be able to compile into dispatch tables,
  it really doesn't make sense to dispatch out to a generic.
  (scm_equal_p): So it was always the case that (equal? 'foo "foo") =>
  #f. But (equal? 'foo 'bar) could actually be extended by a generic.
  This was a bug, if you follow the other logic of the code. Changed so
  that generic functions can only extend the domain of equal? when
  operating on goops objects.

* oop/goops.scm: No more eqv? generic.

* test-suite/tests/goops.test: Remove eqv? tests.
libguile/eq.c
module/oop/goops.scm
test-suite/tests/goops.test