@@ -122,8 +122,9 @@ public function resolveDependencies(Node $node, Scope $scope): NodeDependencies
122122 foreach ($ returnType ->getReferencedClasses () as $ referencedClass ) {
123123 $ this ->addClassToDependencies ($ referencedClass , $ dependenciesReflections );
124124 }
125- } elseif ($ node instanceof Node \Expr \MethodCall || $ node instanceof Node \Expr \PropertyFetch) {
126- $ classNames = $ scope ->getType ($ node ->var )->getReferencedClasses ();
125+ } elseif ($ node instanceof Node \Expr \MethodCall) {
126+ $ calledOnType = $ scope ->getType ($ node ->var );
127+ $ classNames = $ calledOnType ->getReferencedClasses ();
127128 foreach ($ classNames as $ className ) {
128129 $ this ->addClassToDependencies ($ className , $ dependenciesReflections );
129130 }
@@ -132,6 +133,31 @@ public function resolveDependencies(Node $node, Scope $scope): NodeDependencies
132133 foreach ($ returnType ->getReferencedClasses () as $ referencedClass ) {
133134 $ this ->addClassToDependencies ($ referencedClass , $ dependenciesReflections );
134135 }
136+
137+ if ($ node ->name instanceof Node \Identifier) {
138+ $ methodReflection = $ scope ->getMethodReflection ($ calledOnType , $ node ->name ->toString ());
139+ if ($ methodReflection !== null ) {
140+ $ this ->addClassToDependencies ($ methodReflection ->getDeclaringClass ()->getName (), $ dependenciesReflections );
141+ }
142+ }
143+ } elseif ($ node instanceof Node \Expr \PropertyFetch) {
144+ $ fetchedOnType = $ scope ->getType ($ node ->var );
145+ $ classNames = $ fetchedOnType ->getReferencedClasses ();
146+ foreach ($ classNames as $ className ) {
147+ $ this ->addClassToDependencies ($ className , $ dependenciesReflections );
148+ }
149+
150+ $ propertyType = $ scope ->getType ($ node );
151+ foreach ($ propertyType ->getReferencedClasses () as $ referencedClass ) {
152+ $ this ->addClassToDependencies ($ referencedClass , $ dependenciesReflections );
153+ }
154+
155+ if ($ node ->name instanceof Node \Identifier) {
156+ $ propertyReflection = $ scope ->getPropertyReflection ($ fetchedOnType , $ node ->name ->toString ());
157+ if ($ propertyReflection !== null ) {
158+ $ this ->addClassToDependencies ($ propertyReflection ->getDeclaringClass ()->getName (), $ dependenciesReflections );
159+ }
160+ }
135161 } elseif (
136162 $ node instanceof Node \Expr \StaticCall
137163 || $ node instanceof Node \Expr \ClassConstFetch
0 commit comments