|
|
|
@ -105,7 +105,7 @@
|
|
|
|
|
result)))))
|
|
|
|
|
|
|
|
|
|
(ert-deftest phpinspect-get-variable-type-in-block-array-access ()
|
|
|
|
|
(let* ((tokens (phpinspect-parse-string "class Foo { function a(\\Thing $baz) { $foo = []; $foo[] = $baz; $bar = $foo[0]; $bork = [$foo[0]]; $bark = $bork[0];"))
|
|
|
|
|
(let* ((tokens (phpinspect-parse-string "class Foo { function a(\\Thing $baz) { $foo = []; $foo[] = $baz; $bar = $foo[0]; $bork = [$foo[0]]; $bark = $bork[0]; $borknest = [$bork]; $barknest = $borknest[0][0]"))
|
|
|
|
|
(context (phpinspect--get-resolvecontext tokens))
|
|
|
|
|
(project-root "could never be a real project root")
|
|
|
|
|
(phpinspect-project-root-function
|
|
|
|
@ -159,6 +159,32 @@
|
|
|
|
|
(should (phpinspect--type= (phpinspect--make-type :name "\\Thing")
|
|
|
|
|
result)))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(ert-deftest phpinspect-get-variable-type-in-block-nested-array ()
|
|
|
|
|
(let* ((tokens (phpinspect-parse-string "class Foo { function a(\\Thing $baz) { $foo = [[$baz]]; foreach ($foo[0] as $bar) {$bar->"))
|
|
|
|
|
(context (phpinspect--get-resolvecontext tokens))
|
|
|
|
|
(project-root "could never be a real project root")
|
|
|
|
|
(phpinspect-project-root-function
|
|
|
|
|
(lambda (&rest _ignored) project-root))
|
|
|
|
|
(project (phpinspect--make-project
|
|
|
|
|
:fs (phpinspect-make-virtual-fs)
|
|
|
|
|
:root project-root
|
|
|
|
|
:worker (phpinspect-make-worker))))
|
|
|
|
|
|
|
|
|
|
(puthash project-root project (phpinspect--cache-projects phpinspect-cache))
|
|
|
|
|
|
|
|
|
|
(let* ((function-token (seq-find #'phpinspect-function-p
|
|
|
|
|
(phpinspect--resolvecontext-enclosing-tokens context)))
|
|
|
|
|
(result (phpinspect-get-variable-type-in-block
|
|
|
|
|
context "bar"
|
|
|
|
|
(phpinspect-function-block function-token)
|
|
|
|
|
(phpinspect--make-type-resolver-for-resolvecontext context)
|
|
|
|
|
(phpinspect-function-argument-list function-token))))
|
|
|
|
|
|
|
|
|
|
(should (phpinspect--type= (phpinspect--make-type :name "\\Thing")
|
|
|
|
|
result)))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(ert-deftest phpinspect--find-assignments-in-token ()
|
|
|
|
|
(let* ((tokens (cadr
|
|
|
|
|
(phpinspect-parse-string "{ $foo = ['nr 1']; $bar = $nr2; if (true === ($foo = $nr3)) { $foo = $nr4; $notfoo = $nr5; if ([] === ($foo = [ $nr6 ])){ $foo = [ $nr7 ];}}}")))
|
|
|
|
|