Fix attribute vs method map to same Lisp name clash.
Sat Apr 3 14:03:07 CEST 2010 Tobias Rautenkranz <tobias@rautenkranz.ch>
* Fix attribute vs method map to same Lisp name clash.
e.g.: setWidget() and set_widget are in Lisp both #'set-widget. Prefer the method
over the attribute; the attribute will be accessible with SLOT-VALUE.
diff -rN -u old-smoke/src/smoke-to-clos.lisp new-smoke/src/smoke-to-clos.lisp
--- old-smoke/src/smoke-to-clos.lisp 2014-10-30 07:05:00.000000000 +0100
+++ new-smoke/src/smoke-to-clos.lisp 2014-10-30 07:05:00.000000000 +0100
@@ -138,8 +138,9 @@
(unless (nth-value 1 (gethash (lispify name :cxx) setf-function-symbols))
(setf (gethash (lispify name :cxx) setf-function-symbols) t)
(push (setf-method-definition method) functions)))
- (setf (gethash (lispify name "CXX") generics)
- name))
+ (let ((lisp-name (lispify name "CXX")))
+ (unless (and (gethash lisp-name generics) (attribute-p method))
+ (setf (gethash lisp-name generics) name))))
(when (static-p method)
(let* ((function-symbol (static-method-symbol package method))
(methods (gethash function-symbol function-symbols)))