Skip to content

Commit

Permalink
Fix misuse of FBOUNDP
Browse files Browse the repository at this point in the history
  • Loading branch information
shamazmazum committed Jan 3, 2020
1 parent f591d1e commit 3e6d42d
Showing 1 changed file with 32 additions and 30 deletions.
62 changes: 32 additions & 30 deletions src/macro.lisp
Expand Up @@ -63,6 +63,10 @@

;;; Utilities

(defun slot-exists-and-bound-p (object slot-name)
(and (slot-exists-p object slot-name)
(slot-boundp object slot-name)))

(defun make-class-metadata (class)
"Create metadata for HTML classes."
(make-meta
Expand Down Expand Up @@ -193,41 +197,39 @@ explicitly supported by this method."
(make-cell (list (make-text "Value"))
:metadata header-metadata))
:metadata row-metadata))
(when (fboundp 'docparser::struct-slot-type)
(list (make-row (list (make-cell (list (make-text "Type:"))
:metadata left-col-metadata)
(make-cell (list (write-to-code-node
"class-struct-slot-symbol-list"
(docparser::struct-slot-type node)))
:metadata symbol-list-metadata))
:metadata row-metadata)))
(when (fboundp 'docparser::struct-slot-read-only)
(list (make-row (list (make-cell (list (make-text "Read Only:"))
:metadata left-col-metadata)
(make-cell (list (write-to-code-node
"class-struct-slot-symbol-list"
(docparser::struct-slot-read-only node)))
:metadata symbol-list-metadata))
:metadata row-metadata)))
(list (make-row (list (make-cell (list (make-text "Type:"))
:metadata left-col-metadata)
(make-cell (list (write-to-code-node
"class-struct-slot-symbol-list"
(docparser::struct-slot-type node)))
:metadata symbol-list-metadata))
:metadata row-metadata))
(list (make-row (list (make-cell (list (make-text "Read Only:"))
:metadata left-col-metadata)
(make-cell (list (write-to-code-node
"class-struct-slot-symbol-list"
(docparser::struct-slot-read-only node)))
:metadata symbol-list-metadata))
:metadata row-metadata))
;; Only include accessor and initform if they are available.
(when (and (fboundp 'docparser::struct-slot-accessor)
(docparser::struct-slot-accessor node))
(when (docparser::struct-slot-accessor node)
(list (make-row (list (make-cell (list (make-text "Accessor:"))
:metadata left-col-metadata)
(make-cell (list (write-to-code-node
"class-struct-slot-symbol-list"
(docparser::struct-slot-accessor node)))
:metadata symbol-list-metadata))
:metadata row-metadata)))
(when (and (slot-exists-p node 'docparser::initform)
(second (multiple-value-list (docparser:slot-initform node))))
(list (make-row (list (make-cell (list (make-text "Initform:"))
:metadata left-col-metadata)
(make-cell (list (write-to-code-node
"class-struct-slot-symbol-list"
(docparser:slot-initform node)))
:metadata symbol-list-metadata))
:metadata row-metadata))))))
(multiple-value-bind (initform initform-exists)
(docparser:slot-initform node)
(when initform-exists
(list (make-row (list (make-cell (list (make-text "Initform:"))
:metadata left-col-metadata)
(make-cell (list (write-to-code-node
"class-struct-slot-symbol-list"
initform))
:metadata symbol-list-metadata))
:metadata row-metadata)))))))
(make-instance 'list-item
:metadata (make-class-metadata (list "slot" "structure-slot"))
:children
Expand Down Expand Up @@ -379,7 +381,7 @@ explicitly supported by this method."
(list t))))
:metadata symbol-list-metadata))
:metadata row-metadata))
(when (fboundp 'docparser::class-node-metaclass)
(when (slot-exists-and-bound-p node 'docparser::metaclass)
(list (make-row
(list (make-cell (list (make-text "Metaclass:"))
:metadata left-col-metadata)
Expand All @@ -389,7 +391,7 @@ explicitly supported by this method."
(docparser::class-node-metaclass node)))
:metadata symbol-list-metadata))
:metadata row-metadata)))
(when (fboundp 'docparser::class-node-default-initargs)
(when (slot-exists-and-bound-p node 'docparser::default-initargs)
(list (make-row
(list (make-cell
(list (make-text "Default Initargs:"))
Expand All @@ -413,7 +415,7 @@ explicitly supported by this method."
;; 6. type, if something other than nil
;; 7. named, if meaningful
;; 8. initial-offset, if meaningful
(when (every #'fboundp
(when (every (lambda (slot) (slot-exists-and-bound-p node slot))
'(docparser::struct-node-constructor
docparser::struct-node-predicate
docparser::struct-node-copier
Expand Down

0 comments on commit 3e6d42d

Please sign in to comment.