Only retrieve/update class when a name has been declared for it

WIP-cache
Hugo Thunnissen 9 months ago
parent 8b6dc2eb38
commit 633b08809e

@ -214,16 +214,18 @@ linked with."
(dolist (class new-declarations) (dolist (class new-declarations)
(unless (memq (cdr class) indexed) (unless (memq (cdr class) indexed)
(pcase-let* ((`(,imports ,namespace-name) (phpinspect-get-token-index-context namespaces buffer-imports (cdr class))) (let (imports namespace-name class-name class-obj)
(`(,class-name) (phpinspect--index-class-declaration (pcase-setq `(,imports ,namespace-name) (phpinspect-get-token-index-context namespaces buffer-imports (cdr class))
`(,class-name) (phpinspect--index-class-declaration
(car class) (car class)
(phpinspect--make-type-resolver (phpinspect--make-type-resolver
(phpinspect--uses-to-types imports) (phpinspect--uses-to-types imports)
(phpinspect-class-block (phpinspect-meta-token (cdr class))) (phpinspect-class-block (phpinspect-meta-token (cdr class)))
namespace-name))) namespace-name)))
(class-obj (phpinspect-project-get-class-create project class-name 'no-enqueue))) (when class-name
(phpinspect-buffer-set-index-reference-for-token buffer (phpinspect-meta-token (cdr class)) class-obj) (setq class-obj (phpinspect-project-get-class-create project class-name 'no-enqueue))
(phpinspect--class-update-declaration class-obj (car class) imports namespace-name))))) (phpinspect-buffer-set-index-reference-for-token buffer (phpinspect-meta-token (cdr class)) class-obj)
(phpinspect--class-update-declaration class-obj (car class) imports namespace-name))))))
;; Else: Index all classes ;; Else: Index all classes
(setf (phpinspect-buffer-classes buffer) (phpinspect-make-toc classes)) (setf (phpinspect-buffer-classes buffer) (phpinspect-make-toc classes))
(phpinspect-splayt-traverse (class classes) (phpinspect-splayt-traverse (class classes)
@ -235,9 +237,11 @@ linked with."
(phpinspect--uses-to-types imports) (phpinspect--uses-to-types imports)
(phpinspect-class-block (phpinspect-meta-token class)) (phpinspect-class-block (phpinspect-meta-token class))
namespace-name))) namespace-name)))
(class-obj (phpinspect-project-get-class-create project class-name 'no-enqueue))) (class-obj))
(phpinspect-buffer-set-index-reference-for-token buffer (phpinspect-meta-token class) class-obj) (when class-name
(phpinspect--class-update-declaration class-obj (phpinspect-meta-token declaration) imports namespace-name)))))) (setq class-obj (phpinspect-project-get-class-create project class-name 'no-enqueue))
(phpinspect-buffer-set-index-reference-for-token buffer (phpinspect-meta-token class) class-obj)
(phpinspect--class-update-declaration class-obj (phpinspect-meta-token declaration) imports namespace-name)))))))
(cl-defmethod phpinspect-buffer-index-functions ((buffer phpinspect-buffer) (functions (head phpinspect-splayt))) (cl-defmethod phpinspect-buffer-index-functions ((buffer phpinspect-buffer) (functions (head phpinspect-splayt)))
(let ((classes (phpinspect-buffer-classes buffer)) (let ((classes (phpinspect-buffer-classes buffer))
@ -456,6 +460,14 @@ use."
(cl-defmethod phpinspect-buffer-root-meta ((buffer phpinspect-buffer)) (cl-defmethod phpinspect-buffer-root-meta ((buffer phpinspect-buffer))
(phpinspect-bmap-root-meta (phpinspect-buffer-map buffer))) (phpinspect-bmap-root-meta (phpinspect-buffer-map buffer)))
(defun phpinspect-display-buffer-tree ()
(interactive)
(when phpinspect-current-buffer
(let ((buffer phpinspect-current-buffer))
(pop-to-buffer (generate-new-buffer "phpinspect-buffer-tree"))
(insert (pp-to-string (phpinspect-buffer-parse buffer 'no-interrupt)))
(read-only-mode))))
(defun phpinspect-display-buffer-index () (defun phpinspect-display-buffer-index ()
(interactive) (interactive)
(when phpinspect-current-buffer (when phpinspect-current-buffer

Loading…
Cancel
Save