@@ -164,7 +164,14 @@ public class JSFunction: JSObject {
164164}
165165
166166#if hasFeature(Embedded)
167- // NOTE: once embedded supports variadic generics, we can remove these overloads
167+ // Overloads of `callAsFunction(ConvertibleToJSValue...) -> JSValue`
168+ // for 0 through 7 arguments for Embedded Swift.
169+ //
170+ // These are required because the `ConvertibleToJSValue...` version is not
171+ // available in Embedded Swift due to lack of support for existentials.
172+ //
173+ // Once Embedded Swift supports parameter packs/variadic generics, we can
174+ // replace all variants with a single method each that takes a generic pack.
168175public extension JSFunction {
169176
170177 @discardableResult
@@ -178,15 +185,74 @@ public extension JSFunction {
178185 }
179186
180187 @discardableResult
181- func callAsFunction( this: JSObject , _ arg0: some ConvertibleToJSValue , _ arg1: some ConvertibleToJSValue ) -> JSValue {
188+ func callAsFunction(
189+ this: JSObject ,
190+ _ arg0: some ConvertibleToJSValue ,
191+ _ arg1: some ConvertibleToJSValue
192+ ) -> JSValue {
182193 invokeNonThrowingJSFunction ( arguments: [ arg0. jsValue, arg1. jsValue] , this: this) . jsValue
183194 }
184195
185196 @discardableResult
186- func callAsFunction( this: JSObject , _ arg0: some ConvertibleToJSValue , _ arg1: some ConvertibleToJSValue , _ arg2: some ConvertibleToJSValue ) -> JSValue {
197+ func callAsFunction(
198+ this: JSObject ,
199+ _ arg0: some ConvertibleToJSValue ,
200+ _ arg1: some ConvertibleToJSValue ,
201+ _ arg2: some ConvertibleToJSValue
202+ ) -> JSValue {
187203 invokeNonThrowingJSFunction ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue] , this: this) . jsValue
188204 }
189205
206+ @discardableResult
207+ func callAsFunction(
208+ this: JSObject ,
209+ _ arg0: some ConvertibleToJSValue ,
210+ _ arg1: some ConvertibleToJSValue ,
211+ _ arg2: some ConvertibleToJSValue ,
212+ _ arg3: some ConvertibleToJSValue
213+ ) -> JSValue {
214+ invokeNonThrowingJSFunction ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue, arg3. jsValue] , this: this) . jsValue
215+ }
216+
217+ @discardableResult
218+ func callAsFunction(
219+ this: JSObject ,
220+ _ arg0: some ConvertibleToJSValue ,
221+ _ arg1: some ConvertibleToJSValue ,
222+ _ arg2: some ConvertibleToJSValue ,
223+ _ arg3: some ConvertibleToJSValue ,
224+ _ arg4: some ConvertibleToJSValue
225+ ) -> JSValue {
226+ invokeNonThrowingJSFunction ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue, arg3. jsValue, arg4. jsValue] , this: this) . jsValue
227+ }
228+
229+ @discardableResult
230+ func callAsFunction(
231+ this: JSObject ,
232+ _ arg0: some ConvertibleToJSValue ,
233+ _ arg1: some ConvertibleToJSValue ,
234+ _ arg2: some ConvertibleToJSValue ,
235+ _ arg3: some ConvertibleToJSValue ,
236+ _ arg4: some ConvertibleToJSValue ,
237+ _ arg5: some ConvertibleToJSValue
238+ ) -> JSValue {
239+ invokeNonThrowingJSFunction ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue, arg3. jsValue, arg4. jsValue, arg5. jsValue] , this: this) . jsValue
240+ }
241+
242+ @discardableResult
243+ func callAsFunction(
244+ this: JSObject ,
245+ _ arg0: some ConvertibleToJSValue ,
246+ _ arg1: some ConvertibleToJSValue ,
247+ _ arg2: some ConvertibleToJSValue ,
248+ _ arg3: some ConvertibleToJSValue ,
249+ _ arg4: some ConvertibleToJSValue ,
250+ _ arg5: some ConvertibleToJSValue ,
251+ _ arg6: some ConvertibleToJSValue
252+ ) -> JSValue {
253+ invokeNonThrowingJSFunction ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue, arg3. jsValue, arg4. jsValue, arg5. jsValue, arg6. jsValue] , this: this) . jsValue
254+ }
255+
190256 @discardableResult
191257 func callAsFunction( this: JSObject , arguments: [ JSValue ] ) -> JSValue {
192258 invokeNonThrowingJSFunction ( arguments: arguments, this: this) . jsValue
@@ -203,15 +269,68 @@ public extension JSFunction {
203269 }
204270
205271 @discardableResult
206- func callAsFunction( _ arg0: some ConvertibleToJSValue , _ arg1: some ConvertibleToJSValue ) -> JSValue {
272+ func callAsFunction(
273+ _ arg0: some ConvertibleToJSValue ,
274+ _ arg1: some ConvertibleToJSValue
275+ ) -> JSValue {
207276 invokeNonThrowingJSFunction ( arguments: [ arg0. jsValue, arg1. jsValue] ) . jsValue
208277 }
209278
210279 @discardableResult
211- func callAsFunction( _ arg0: some ConvertibleToJSValue , _ arg1: some ConvertibleToJSValue , _ arg2: some ConvertibleToJSValue ) -> JSValue {
280+ func callAsFunction(
281+ _ arg0: some ConvertibleToJSValue ,
282+ _ arg1: some ConvertibleToJSValue ,
283+ _ arg2: some ConvertibleToJSValue
284+ ) -> JSValue {
212285 invokeNonThrowingJSFunction ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue] ) . jsValue
213286 }
214287
288+ @discardableResult
289+ func callAsFunction(
290+ _ arg0: some ConvertibleToJSValue ,
291+ _ arg1: some ConvertibleToJSValue ,
292+ _ arg2: some ConvertibleToJSValue ,
293+ _ arg3: some ConvertibleToJSValue
294+ ) -> JSValue {
295+ invokeNonThrowingJSFunction ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue, arg3. jsValue] ) . jsValue
296+ }
297+
298+ @discardableResult
299+ func callAsFunction(
300+ _ arg0: some ConvertibleToJSValue ,
301+ _ arg1: some ConvertibleToJSValue ,
302+ _ arg2: some ConvertibleToJSValue ,
303+ _ arg3: some ConvertibleToJSValue ,
304+ _ arg4: some ConvertibleToJSValue
305+ ) -> JSValue {
306+ invokeNonThrowingJSFunction ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue, arg3. jsValue, arg4. jsValue] ) . jsValue
307+ }
308+
309+ @discardableResult
310+ func callAsFunction(
311+ _ arg0: some ConvertibleToJSValue ,
312+ _ arg1: some ConvertibleToJSValue ,
313+ _ arg2: some ConvertibleToJSValue ,
314+ _ arg3: some ConvertibleToJSValue ,
315+ _ arg4: some ConvertibleToJSValue ,
316+ _ arg5: some ConvertibleToJSValue
317+ ) -> JSValue {
318+ invokeNonThrowingJSFunction ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue, arg3. jsValue, arg4. jsValue, arg5. jsValue] ) . jsValue
319+ }
320+
321+ @discardableResult
322+ func callAsFunction(
323+ _ arg0: some ConvertibleToJSValue ,
324+ _ arg1: some ConvertibleToJSValue ,
325+ _ arg2: some ConvertibleToJSValue ,
326+ _ arg3: some ConvertibleToJSValue ,
327+ _ arg4: some ConvertibleToJSValue ,
328+ _ arg5: some ConvertibleToJSValue ,
329+ _ arg6: some ConvertibleToJSValue
330+ ) -> JSValue {
331+ invokeNonThrowingJSFunction ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue, arg3. jsValue, arg4. jsValue, arg5. jsValue, arg6. jsValue] ) . jsValue
332+ }
333+
215334 func new( ) -> JSObject {
216335 new ( arguments: [ ] )
217336 }
@@ -220,19 +339,60 @@ public extension JSFunction {
220339 new ( arguments: [ arg0. jsValue] )
221340 }
222341
223- func new( _ arg0: some ConvertibleToJSValue , _ arg1: some ConvertibleToJSValue ) -> JSObject {
342+ func new(
343+ _ arg0: some ConvertibleToJSValue ,
344+ _ arg1: some ConvertibleToJSValue
345+ ) -> JSObject {
224346 new ( arguments: [ arg0. jsValue, arg1. jsValue] )
225347 }
226348
227- func new( _ arg0: some ConvertibleToJSValue , _ arg1: some ConvertibleToJSValue , _ arg2: some ConvertibleToJSValue ) -> JSObject {
349+ func new(
350+ _ arg0: some ConvertibleToJSValue ,
351+ _ arg1: some ConvertibleToJSValue ,
352+ _ arg2: some ConvertibleToJSValue
353+ ) -> JSObject {
228354 new ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue] )
229355 }
230356
231- func new( _ arg0: some ConvertibleToJSValue , _ arg1: some ConvertibleToJSValue , _ arg2: some ConvertibleToJSValue , arg3: some ConvertibleToJSValue ) -> JSObject {
357+ func new(
358+ _ arg0: some ConvertibleToJSValue ,
359+ _ arg1: some ConvertibleToJSValue ,
360+ _ arg2: some ConvertibleToJSValue ,
361+ _ arg3: some ConvertibleToJSValue
362+ ) -> JSObject {
232363 new ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue, arg3. jsValue] )
233364 }
234365
235- func new( _ arg0: some ConvertibleToJSValue , _ arg1: some ConvertibleToJSValue , _ arg2: some ConvertibleToJSValue , _ arg3: some ConvertibleToJSValue , _ arg4: some ConvertibleToJSValue , _ arg5: some ConvertibleToJSValue , _ arg6: some ConvertibleToJSValue ) -> JSObject {
366+ func new(
367+ _ arg0: some ConvertibleToJSValue ,
368+ _ arg1: some ConvertibleToJSValue ,
369+ _ arg2: some ConvertibleToJSValue ,
370+ _ arg3: some ConvertibleToJSValue ,
371+ _ arg4: some ConvertibleToJSValue
372+ ) -> JSObject {
373+ new ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue, arg3. jsValue, arg4. jsValue] )
374+ }
375+
376+ func new(
377+ _ arg0: some ConvertibleToJSValue ,
378+ _ arg1: some ConvertibleToJSValue ,
379+ _ arg2: some ConvertibleToJSValue ,
380+ _ arg3: some ConvertibleToJSValue ,
381+ _ arg4: some ConvertibleToJSValue ,
382+ _ arg5: some ConvertibleToJSValue
383+ ) -> JSObject {
384+ new ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue, arg3. jsValue, arg4. jsValue, arg5. jsValue] )
385+ }
386+
387+ func new(
388+ _ arg0: some ConvertibleToJSValue ,
389+ _ arg1: some ConvertibleToJSValue ,
390+ _ arg2: some ConvertibleToJSValue ,
391+ _ arg3: some ConvertibleToJSValue ,
392+ _ arg4: some ConvertibleToJSValue ,
393+ _ arg5: some ConvertibleToJSValue ,
394+ _ arg6: some ConvertibleToJSValue
395+ ) -> JSObject {
236396 new ( arguments: [ arg0. jsValue, arg1. jsValue, arg2. jsValue, arg3. jsValue, arg4. jsValue, arg5. jsValue, arg6. jsValue] )
237397 }
238398}
0 commit comments