@@ -122,8 +122,9 @@ public function resolveDependencies(Node $node, Scope $scope): NodeDependencies
122
122
foreach ($ returnType ->getReferencedClasses () as $ referencedClass ) {
123
123
$ this ->addClassToDependencies ($ referencedClass , $ dependenciesReflections );
124
124
}
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 ();
127
128
foreach ($ classNames as $ className ) {
128
129
$ this ->addClassToDependencies ($ className , $ dependenciesReflections );
129
130
}
@@ -132,6 +133,31 @@ public function resolveDependencies(Node $node, Scope $scope): NodeDependencies
132
133
foreach ($ returnType ->getReferencedClasses () as $ referencedClass ) {
133
134
$ this ->addClassToDependencies ($ referencedClass , $ dependenciesReflections );
134
135
}
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
+ }
135
161
} elseif (
136
162
$ node instanceof Node \Expr \StaticCall
137
163
|| $ node instanceof Node \Expr \ClassConstFetch
0 commit comments