doc/list-exports.lisp: Forbid bad slot names in private classes.
authorMark Wooding <mdw@distorted.org.uk>
Tue, 6 Aug 2019 12:02:38 +0000 (13:02 +0100)
committerMark Wooding <mdw@distorted.org.uk>
Tue, 6 Aug 2019 12:06:28 +0000 (13:06 +0100)
Previously we only worried about exported/foreign slot names in classes
whose names were exported symbols.  Also worry about classes whose names
are private symbols (in the home package).

doc/list-exports.lisp

index bc40e95..6663801 100755 (executable)
   (sort (loop for s being the external-symbols of package collect s)
        #'string< :key #'symbol-name))
 
+(defun list-all-symbols (package)
+  (let ((externs (make-hash-table)))
+    (dolist (sym (list-exported-symbols package))
+      (setf (gethash sym externs) t))
+    (sort (loop for s being the symbols of package
+               when (or (not (exported-symbol-p s))
+                        (gethash s externs))
+                 collect s)
+         #'string< :key #'symbol-name)))
+
 (defun find-symbol-homes (paths package)
   (let* ((symbols (list-exported-symbols package))
         (exports-alist (let ((*package* package))
 
 (defun check-slot-names (package)
   (setf package (find-package package))
-  (let* ((symbols (list-exported-symbols package))
+  (let* ((symbols (list-all-symbols package))
         (classes (mapcan (lambda (symbol)
                            (when (eq (symbol-package symbol) package)
                              (let ((class (find-class symbol nil)))