Changeset 11735


Ignore:
Timestamp:
Feb 14, 2009, 11:12:17 PM (11 years ago)
Author:
gz
Message:

Make defclass warn if the same initarg occurs in two different slots

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/working-0711/ccl/lib/macros.lisp

    r11685 r11735  
    19041904    (let* ((options-seen ())
    19051905           (signatures ())
    1906            (slot-names))
     1906           (slot-names ())
     1907           (slot-initargs ()))
    19071908      (flet ((canonicalize-defclass-option (option)
    19081909               (let* ((option-name (car option)))
     
    19791980                          (push setf-name writers))))
    19801981                     (:initarg
    1981                       (push (require-type (cadr options) 'symbol) initargs))
     1982                      (let* ((initarg (require-type (cadr options) 'symbol))
     1983                             (other (position initarg slot-initargs :test #'memq)))
     1984                        (when other
     1985                          (warn "Initarg ~s occurs in both ~s and ~s slots"
     1986                                initarg (nth (1+ other) slot-names) slot-name))
     1987                        (push initarg initargs)))
    19821988                     (:type
    19831989                      (if type-p
     
    20132019                                       (car (push (list (car options)) other-options)))))
    20142020                        (push (cadr options) (cdr pair))))))
     2021                 (push initargs slot-initargs)
    20152022                 `(list :name ',slot-name
    20162023                   ,@(when allocation `(:allocation ',allocation))
Note: See TracChangeset for help on using the changeset viewer.