Fix resolving of "static" and "self" types

WIP
Hugo Thunnissen 3 years ago
parent 4c2b3dd601
commit c50f2ae09b

@ -1166,8 +1166,7 @@ TODO:
(statement (phpinspect--get-last-statement-in-token
enclosing-token))
(type-resolver (phpinspect--make-type-resolver-for-resolvecontext
resolvecontext
token-tree))
resolvecontext))
(static))
(phpinspect--log "Enclosing token: %s" enclosing-token)
(phpinspect--log "reference token: %s" (car (last statement 2)))
@ -1478,6 +1477,7 @@ resolve types of function argument variables."
(defun phpinspect--make-type-resolver (types &optional token-tree namespace)
"Little wrapper closure to pass around and resolve types with."
(unless namespace (setq namespace ""))
(let* ((inside-class
(if token-tree (or (phpinspect--find-innermost-incomplete-class token-tree)
(phpinspect--find-class-token token-tree))))
@ -1487,7 +1487,8 @@ resolve types of function argument variables."
(phpinspect--real-type
types
namespace
(if (and inside-class-name (or (string= type "self") (string= type "static")))
(if (and inside-class-name (or (string= type "self")
(string= type "static")))
(progn
(phpinspect--log "Returning inside class name for %s : %s"
type inside-class-name)
@ -1937,7 +1938,7 @@ Example configuration:
(defun phpinspect--find-class-token (token)
"Recurse into token tree until a class is found."
(when (and (listp token) (> 1 (length token)))
(when (and (listp token) (> (length token) 1))
(let ((last-token (car (last token))))
(cond ((phpinspect-class-p token) token)
(last-token
@ -2065,8 +2066,7 @@ static variables and static methods."
phpinspect--buffer-index
(phpinspect--index-tokens token-tree)))
(type-resolver (phpinspect--make-type-resolver-for-resolvecontext
resolvecontext
token-tree))
resolvecontext))
(method-lister (phpinspect--make-method-lister
resolvecontext
buffer-classes
@ -2083,7 +2083,7 @@ static variables and static methods."
(funcall method-lister type)))))))
(defun phpinspect--make-type-resolver-for-resolvecontext
(resolvecontext &optional token-tree)
(resolvecontext)
(let ((namespace-or-root
(seq-find #'phpinspect-namespace-or-root-p
(phpinspect--resolvecontext-enclosing-tokens
@ -2091,7 +2091,9 @@ static variables and static methods."
(phpinspect--make-type-resolver
(phpinspect--uses-to-types
(seq-filter #'phpinspect-use-p namespace-or-root))
token-tree
(seq-find #'phpinspect-class-p
(phpinspect--resolvecontext-enclosing-tokens
resolvecontext))
(when (phpinspect-namespace-p namespace-or-root)
(cadadr namespace-or-root)))))
@ -2414,7 +2416,6 @@ located in \"vendor\" folder."
when INDEX-NEW is non-nil, new files are added to the index
before the search is executed."
(phpinspect--log "%s" (phpinspect--get-project-root))
(when (eq index-new 'index-new)
(with-temp-buffer
(call-process phpinspect-index-executable nil (current-buffer) nil "index" "--new")))

Loading…
Cancel
Save