From c2937ad051ba14976712013e27d3aee8ad4b334b Mon Sep 17 00:00:00 2001 From: Mark Wooding Date: Tue, 6 Aug 2019 13:02:38 +0100 Subject: [PATCH] doc/list-exports.lisp: Forbid bad slot names in private classes. 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 | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/doc/list-exports.lisp b/doc/list-exports.lisp index bc40e95..6663801 100755 --- a/doc/list-exports.lisp +++ b/doc/list-exports.lisp @@ -116,6 +116,16 @@ (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)) @@ -427,7 +437,7 @@ (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))) -- 2.11.0