Changeset 7792 for branches


Ignore:
Timestamp:
Nov 30, 2007, 12:46:53 PM (17 years ago)
Author:
Gary Byers
Message:

Track SETF function name inverses.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/level-1/l1-aprims.lisp

    r7725 r7792  
    229229
    230230(defvar %setf-function-names% (make-hash-table :weak t :test 'eq))
     231(defvar %setf-function-name-inverses% (make-hash-table :weak t :test 'eq))
    231232
    232233(defun setf-function-name (sym)
    233234   (or (gethash sym %setf-function-names%)
    234        (setf (gethash sym %setf-function-names%) (construct-setf-function-name sym))))
    235 
    236 
     235       (progn
     236         (let* ((setf-package-sym (construct-setf-function-name sym)))
     237           (setf (gethash setf-package-sym %setf-function-name-inverses%) sym
     238                 (gethash sym %setf-function-names%) setf-package-sym)))))
     239
     240
     241(defun maybe-setf-name (sym)
     242  (let* ((other (gethash sym %setf-function-name-inverses%)))
     243    (if other
     244      `(setf ,other)
     245      sym)))
    237246
    238247                     
     
    247256      (values
    248257       (intern
    249         ;I wonder, if we didn't check, would anybody report it as a bug?
     258        ;;I wonder, if we didn't check, would anybody report it as a bug?
    250259        (if (not (%str-member #\: (setq pkg (package-name pkg))))
    251260          (%str-cat pkg "::" sym)
Note: See TracChangeset for help on using the changeset viewer.