@@ -92,6 +92,8 @@ protected function introspect(array $parameters, Schema $schema, ?Field $parent
9292 */
9393 private function introspectSource (string $ source , Schema $ schema , Field $ parent , array $ path ): void
9494 {
95+ $ originalSource = $ source ;
96+
9597 $ result = $ this ->introspector ->analyze ($ source );
9698 $ introspection = $ result ->introspectable ();
9799 if ($ introspection !== null ) {
@@ -104,9 +106,25 @@ private function introspectSource(string $source, Schema $schema, Field $parent,
104106 return ;
105107 }
106108
107- $ this ->sources [] = $ source ;
109+ $ this ->pushSources ( $ originalSource , $ source) ;
108110 $ this ->introspect ($ nestedParameters , $ schema , $ parent , $ path );
111+ $ this ->popSources ($ originalSource , $ source );
112+ }
113+
114+ private function pushSources (string $ originalSource , string $ source ): void
115+ {
116+ $ this ->sources [] = $ originalSource ;
117+ if ($ originalSource !== $ source ) {
118+ $ this ->sources [] = $ source ;
119+ }
120+ }
121+
122+ private function popSources (string $ originalSource , string $ source ): void
123+ {
109124 array_pop ($ this ->sources );
125+ if ($ originalSource !== $ source ) {
126+ array_pop ($ this ->sources );
127+ }
110128 }
111129
112130 private function wouldCauseCircularReference (string $ source ): bool
@@ -125,7 +143,7 @@ private function extractParameters(string $source): array
125143 if (is_array ($ parameters )) {
126144 return $ parameters ;
127145 }
128- $ parameters = Target::createFrom ((string )$ source )
146+ $ parameters = Target::createFrom ((string ) $ source )
129147 ->getReflectionParameters ();
130148 return $ this ->cache ->set ($ key , $ parameters );
131149 }
0 commit comments