@@ -206,8 +206,10 @@ public static function applyIntrinsicArgOverrides(
206206 ) {
207207 $ arrayMapArgs = $ args [0 ]->value ->getAttribute (ArrayMapArgVisitor::ATTRIBUTE_NAME );
208208 if ($ arrayMapArgs !== null ) {
209- $ callbackParameters = [];
210- $ nativeCallbackParameters = [];
209+ $ callbackValueTypes = [];
210+ $ callbackArrayTypes = [];
211+ $ nativeCallbackValueTypes = [];
212+ $ nativeCallbackArrayTypes = [];
211213 foreach ($ arrayMapArgs as $ arg ) {
212214 $ argType = ($ typeGetter )($ arg ->value );
213215 $ nativeArgType = ($ nativeTypeGetter )($ arg ->value );
@@ -217,7 +219,8 @@ public static function applyIntrinsicArgOverrides(
217219 foreach ($ constantArrays as $ constantArray ) {
218220 $ valueTypes = $ constantArray ->getValueTypes ();
219221 foreach ($ valueTypes as $ valueType ) {
220- $ callbackParameters [] = new DummyParameter ('item ' , ($ iterableValueTypeGetter )($ valueType ), optional: false , passedByReference: PassedByReference ::createNo (), variadic: false , defaultValue: null );
222+ $ callbackValueTypes [] = ($ iterableValueTypeGetter )($ valueType );
223+ $ callbackArrayTypes [] = $ valueType ;
221224 }
222225 }
223226 }
@@ -226,16 +229,28 @@ public static function applyIntrinsicArgOverrides(
226229 foreach ($ nativeConstantArrays as $ constantArray ) {
227230 $ valueTypes = $ constantArray ->getValueTypes ();
228231 foreach ($ valueTypes as $ valueType ) {
229- $ nativeCallbackParameters [] = new DummyParameter ('item ' , ($ iterableValueTypeGetter )($ valueType ), optional: false , passedByReference: PassedByReference ::createNo (), variadic: false , defaultValue: null );
232+ $ nativeCallbackValueTypes [] = ($ iterableValueTypeGetter )($ valueType );
233+ $ nativeCallbackArrayTypes [] = $ valueType ;
230234 }
231235 }
232236 }
233237 } else {
234- $ callbackParameters [] = new DummyParameter ('item ' , ($ iterableValueTypeGetter )($ argType ), optional: false , passedByReference: PassedByReference ::createNo (), variadic: false , defaultValue: null );
235- $ nativeCallbackParameters [] = new DummyParameter ('item ' , ($ iterableValueTypeGetter )($ nativeArgType ), optional: false , passedByReference: PassedByReference ::createNo (), variadic: false , defaultValue: null );
238+ $ callbackValueTypes [] = ($ iterableValueTypeGetter )($ argType );
239+ $ callbackArrayTypes [] = $ argType ;
240+ $ nativeCallbackValueTypes [] = ($ iterableValueTypeGetter )($ nativeArgType );
241+ $ nativeCallbackArrayTypes [] = $ nativeArgType ;
236242 }
237243 }
238244
245+ $ callbackParameters = [];
246+ foreach (ArrayMapCallbackParameterTypes ::addPaddingNull ($ callbackValueTypes , $ callbackArrayTypes ) as $ valueType ) {
247+ $ callbackParameters [] = new DummyParameter ('item ' , $ valueType , optional: false , passedByReference: PassedByReference ::createNo (), variadic: false , defaultValue: null );
248+ }
249+ $ nativeCallbackParameters = [];
250+ foreach (ArrayMapCallbackParameterTypes ::addPaddingNull ($ nativeCallbackValueTypes , $ nativeCallbackArrayTypes ) as $ valueType ) {
251+ $ nativeCallbackParameters [] = new DummyParameter ('item ' , $ valueType , optional: false , passedByReference: PassedByReference ::createNo (), variadic: false , defaultValue: null );
252+ }
253+
239254 $ acceptor = $ parametersAcceptors [0 ];
240255 $ parameters = $ acceptor ->getParameters ();
241256 if (isset ($ parameters [0 ])) {
0 commit comments