@@ -73,12 +73,12 @@ public function getResultType(string $queryString, int $fetchType): ?Type
7373 *
7474 * @throws UnresolvableQueryException
7575 */
76- public function resolvePreparedQueryStrings (Expr $ queryExpr , Type $ parameterTypes , Scope $ scope ): iterable
76+ public function resolvePreparedQueryStrings (Expr $ queryExpr , Type $ parameterTypes , ? Type $ boundParameterTypes , Scope $ scope ): iterable
7777 {
7878 $ type = $ scope ->getType ($ queryExpr );
7979
8080 if ($ type instanceof UnionType) {
81- $ parameters = $ this ->resolveParameters ($ parameterTypes );
81+ $ parameters = $ this ->resolveParameters ($ parameterTypes, $ boundParameterTypes );
8282 if (null === $ parameters ) {
8383 return null ;
8484 }
@@ -103,15 +103,15 @@ public function resolvePreparedQueryStrings(Expr $queryExpr, Type $parameterType
103103 *
104104 * @throws UnresolvableQueryException
105105 */
106- public function resolvePreparedQueryString (Expr $ queryExpr , Type $ parameterTypes , Scope $ scope ): ?string
106+ public function resolvePreparedQueryString (Expr $ queryExpr , Type $ parameterTypes , ? Type , $ boundParameterTypes , Scope $ scope ): ?string
107107 {
108108 $ queryString = $ this ->resolveQueryExpr ($ queryExpr , $ scope );
109109
110110 if (null === $ queryString ) {
111111 return null ;
112112 }
113113
114- $ parameters = $ this ->resolveParameters ($ parameterTypes );
114+ $ parameters = $ this ->resolveParameters ($ parameterTypes, $ boundParameterTypes );
115115 if (null === $ parameters ) {
116116 return null ;
117117 }
@@ -211,20 +211,20 @@ public static function getQueryType(string $query): ?string
211211 *
212212 * @throws UnresolvableQueryException
213213 */
214- public function resolveParameters (Type $ parameterTypes ): ?array
214+ public function resolveParameters (Type $ parameterTypes, ? Type $ boundParameterTypes ): ?array
215215 {
216216 $ parameters = [];
217217
218218 if ($ parameterTypes instanceof UnionType) {
219219 foreach (TypeUtils::getConstantArrays ($ parameterTypes ) as $ constantArray ) {
220- $ parameters = $ parameters + $ this ->resolveConstantArray ($ constantArray , true );
220+ $ parameters = $ parameters + $ this ->resolveConstantArray ($ constantArray , $ boundParameterTypes , true );
221221 }
222222
223223 return $ parameters ;
224224 }
225225
226226 if ($ parameterTypes instanceof ConstantArrayType) {
227- return $ this ->resolveConstantArray ($ parameterTypes , false );
227+ return $ this ->resolveConstantArray ($ parameterTypes , $ boundParameterTypes , false );
228228 }
229229
230230 return null ;
@@ -235,7 +235,7 @@ public function resolveParameters(Type $parameterTypes): ?array
235235 *
236236 * @throws UnresolvableQueryException
237237 */
238- private function resolveConstantArray (ConstantArrayType $ parameterTypes , bool $ forceOptional ): array
238+ private function resolveConstantArray (ConstantArrayType $ parameterTypes , ? Type $ boundParameterTypes , bool $ forceOptional ): array
239239 {
240240 $ parameters = [];
241241
@@ -259,7 +259,7 @@ private function resolveConstantArray(ConstantArrayType $parameterTypes, bool $f
259259 $ param = new Parameter (
260260 $ placeholderName ,
261261 $ valueTypes [$ i ],
262- QuerySimulation::simulateParamValueType ($ valueTypes [$ i ], true ),
262+ QuerySimulation::simulateParamValueType ($ valueTypes [$ i ], true ), // TODO pass $i of $boundParameterTypes here if a resolved constant type is available?
263263 $ isOptional
264264 );
265265
@@ -268,7 +268,7 @@ private function resolveConstantArray(ConstantArrayType $parameterTypes, bool $f
268268 $ param = new Parameter (
269269 null ,
270270 $ valueTypes [$ i ],
271- QuerySimulation::simulateParamValueType ($ valueTypes [$ i ], true ),
271+ QuerySimulation::simulateParamValueType ($ valueTypes [$ i ], true ), // TODO pass $i of $boundParameterTypes here if a resolved constant type is available?
272272 $ isOptional
273273 );
274274
0 commit comments