|
|
@ -38,7 +38,8 @@
|
|
|
|
|
|
|
|
|
|
|
|
(defun phpinspect-suggest-variables-at-point (resolvecontext)
|
|
|
|
(defun phpinspect-suggest-variables-at-point (resolvecontext)
|
|
|
|
(phpinspect--log "Suggesting variables at point")
|
|
|
|
(phpinspect--log "Suggesting variables at point")
|
|
|
|
(let ((variables))
|
|
|
|
|
|
|
|
|
|
|
|
(let ((variables (make-hash-table :test 'equal)))
|
|
|
|
(dolist (token (phpinspect--resolvecontext-enclosing-tokens resolvecontext))
|
|
|
|
(dolist (token (phpinspect--resolvecontext-enclosing-tokens resolvecontext))
|
|
|
|
(when (phpinspect-not-class-p token)
|
|
|
|
(when (phpinspect-not-class-p token)
|
|
|
|
(let ((token-list token)
|
|
|
|
(let ((token-list token)
|
|
|
@ -46,26 +47,33 @@
|
|
|
|
(while token-list
|
|
|
|
(while token-list
|
|
|
|
(setq potential-variable (pop token-list))
|
|
|
|
(setq potential-variable (pop token-list))
|
|
|
|
(cond ((phpinspect-variable-p potential-variable)
|
|
|
|
(cond ((phpinspect-variable-p potential-variable)
|
|
|
|
(phpinspect--log "Pushing variable %s" potential-variable)
|
|
|
|
(puthash (cadr potential-variable)
|
|
|
|
(push (phpinspect--make-variable
|
|
|
|
(phpinspect--make-variable :name (cadr potential-variable))
|
|
|
|
:name (cadr potential-variable)
|
|
|
|
variables))
|
|
|
|
:type phpinspect--null-type)
|
|
|
|
|
|
|
|
variables))
|
|
|
|
|
|
|
|
((phpinspect-function-p potential-variable)
|
|
|
|
((phpinspect-function-p potential-variable)
|
|
|
|
(push (phpinspect-function-block potential-variable) token-list)
|
|
|
|
(push (phpinspect-function-block potential-variable) token-list)
|
|
|
|
(dolist (argument (phpinspect-function-argument-list potential-variable))
|
|
|
|
(dolist (argument (phpinspect-function-argument-list potential-variable))
|
|
|
|
(when (phpinspect-variable-p argument)
|
|
|
|
(when (phpinspect-variable-p argument)
|
|
|
|
(push (phpinspect--make-variable
|
|
|
|
(puthash (cadr argument)
|
|
|
|
:name (cadr argument)
|
|
|
|
(phpinspect--make-variable :name (cadr argument))
|
|
|
|
:type phpinspect--null-type)
|
|
|
|
variables))))
|
|
|
|
variables))))
|
|
|
|
|
|
|
|
((phpinspect-block-p potential-variable)
|
|
|
|
((phpinspect-block-p potential-variable)
|
|
|
|
(dolist (nested-token (cdr potential-variable))
|
|
|
|
(dolist (nested-token (cdr potential-variable))
|
|
|
|
(push nested-token token-list))))))))
|
|
|
|
(push nested-token token-list))))))))
|
|
|
|
|
|
|
|
|
|
|
|
;; Only return variables that have a name. Unnamed variables are just dollar
|
|
|
|
(let (variable-list)
|
|
|
|
;; signs (:
|
|
|
|
(dolist (var (hash-table-values variables))
|
|
|
|
(seq-filter #'phpinspect--variable-name variables)))
|
|
|
|
;; Only return variables that have a name. Unnamed variables are just dollar
|
|
|
|
|
|
|
|
;; signs (:
|
|
|
|
|
|
|
|
(when (phpinspect--variable-name var)
|
|
|
|
|
|
|
|
(setf (phpinspect--variable-type var)
|
|
|
|
|
|
|
|
(phpinspect-resolve-type-from-context
|
|
|
|
|
|
|
|
(phpinspect--repurpose-resolvecontext
|
|
|
|
|
|
|
|
resolvecontext nil `(:variable ,(phpinspect--variable-name var)))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(push var variable-list)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
variable-list)))
|
|
|
|
|
|
|
|
|
|
|
|
(defun phpinspect-get-cached-project-class-methods (project-root class-fqn &optional static)
|
|
|
|
(defun phpinspect-get-cached-project-class-methods (project-root class-fqn &optional static)
|
|
|
|
(phpinspect--log "Getting cached project class methods for %s (%s)"
|
|
|
|
(phpinspect--log "Getting cached project class methods for %s (%s)"
|
|
|
|