@@ -78,7 +78,7 @@ package class JNISwift2JavaGenerator: Swift2JavaGenerator {
7878 ) {
7979 self . config = config
8080 self . logger = Logger ( label: " jni-generator " , logLevel: translator. log. logLevel)
81- self . analysis = translator. result
81+ let analysis = translator. result
8282 self . swiftModuleName = translator. swiftModuleName
8383 self . javaPackage = javaPackage
8484 self . swiftOutputDirectory = swiftOutputDirectory
@@ -92,7 +92,7 @@ package class JNISwift2JavaGenerator: Swift2JavaGenerator {
9292 if config. effectiveWriteEmptyFiles {
9393 self . expectedOutputSwiftFileNames = Set (
9494 translator. inputs. compactMap { ( input) -> String ? in
95- guard let fileName = input. path. split ( separator : PATH_SEPARATOR ) . last else {
95+ guard let fileName = input. path. split ( whereSeparator : { $0 == " / " || $0 == " \\ " } ) . last else {
9696 return nil
9797 }
9898 if fileName. hasSuffix ( " .swift " ) {
@@ -105,7 +105,7 @@ package class JNISwift2JavaGenerator: Swift2JavaGenerator {
105105 )
106106 // Also include filtered-out files so SwiftPM gets the empty outputs it expects
107107 for path in translator. filteredOutPaths {
108- guard let fileName = path. split ( separator : PATH_SEPARATOR ) . last else {
108+ guard let fileName = path. split ( whereSeparator : { $0 == " / " || $0 == " \\ " } ) . last else {
109109 continue
110110 }
111111 if fileName. hasSuffix ( " .swift " ) {
@@ -120,18 +120,23 @@ package class JNISwift2JavaGenerator: Swift2JavaGenerator {
120120 self . expectedOutputSwiftFileNames = [ ]
121121 }
122122
123- if config. enableJavaCallbacks ?? false {
124- // We translate all the protocol wrappers
125- // as we need them to know what protocols we can allow the user to implement themselves
126- // in Java.
127- self . interfaceProtocolWrappers = self . generateInterfaceWrappers ( Array ( self . analysis. extractedTypes. values) )
128- }
123+ // Expand variadic functions into N overloads
124+ var expandedAnalysis = analysis
125+ expandedAnalysis. expandVariadicOverloads ( maxOverloads: config. effectiveMaxVariadicOverloads)
126+ self . analysis = expandedAnalysis
129127
130128 // Every extracted protocol that also gets a plain Java `interface`
131129 // generated for it is eligible to be boxed as an existential.
132- self . existentialProtocolBoxes = self . analysis . extractedTypes. values
130+ self . existentialProtocolBoxes = expandedAnalysis . extractedTypes. values
133131 . filter { $0. swiftNominal. kind == . protocol }
134132 . sorted { $0. swiftNominal. qualifiedName < $1. swiftNominal. qualifiedName }
133+
134+ if config. effectiveEnableJavaCallbacks {
135+ // We translate all the protocol wrappers
136+ // as we need them to know what protocols we can allow the user to implement themselves
137+ // in Java.
138+ self . interfaceProtocolWrappers = self . generateInterfaceWrappers ( Array ( expandedAnalysis. extractedTypes. values) )
139+ }
135140 }
136141
137142 func generate( ) throws {
0 commit comments