@@ -19,7 +19,7 @@ extension FFMSwift2JavaGenerator {
1919 _ printer: inout CodePrinter ,
2020 _ decl: ImportedFunc
2121 ) {
22- guard let _ = translatedDecl ( for: decl) else {
22+ guard translatedDecl ( for: decl) != nil else {
2323 // Failed to translate. Skip.
2424 return
2525 }
@@ -65,7 +65,7 @@ extension FFMSwift2JavaGenerator {
6565 printJavaBindingDowncallMethod ( & printer, cFunc)
6666 if let outCallback = translated. translatedSignature. result. outCallback {
6767 printUpcallParameterDescriptorClasses ( & printer, outCallback)
68- } else { // FIXME: not an "else"
68+ } else { // FIXME: not an "else"
6969 printParameterDescriptorClasses ( & printer, cFunc)
7070 }
7171 }
@@ -109,13 +109,13 @@ extension FFMSwift2JavaGenerator {
109109 var params : [ String ] = [ ]
110110 var args : [ String ] = [ ]
111111 for param in cFunc. parameters {
112- let name = param. name! // !-safe, because cdecl lowering guarantees the parameter named.
112+ let name = param. name! // !-safe, because cdecl lowering guarantees the parameter named.
113113
114114 let annotationsStr =
115115 if param. type. javaType. parameterAnnotations. isEmpty {
116116 " "
117117 } else {
118- param. type. javaType. parameterAnnotations. map ( { $0. render ( ) } ) . joined ( separator: " " ) + " "
118+ param. type. javaType. parameterAnnotations. map ( { $0. render ( ) } ) . joined ( separator: " " ) + " "
119119 }
120120 params. append ( " \( annotationsStr) \( param. type. javaType) \( name) " )
121121 args. append ( name)
@@ -156,14 +156,15 @@ extension FFMSwift2JavaGenerator {
156156 continue
157157 }
158158 }
159- }
160-
159+ }
160+
161161 func printUpcallParameterDescriptorClasses(
162162 _ printer: inout CodePrinter ,
163163 _ outCallback: OutCallback
164164 ) {
165165 let name = outCallback. name
166- printFunctionPointerParameterDescriptorClass ( & printer, name, outCallback. cFunc. functionType, impl: outCallback)
166+ printFunctionPointerParameterDescriptorClass (
167+ & printer, name, outCallback. cFunc. functionType, impl: outCallback)
167168 }
168169
169170 /// Print a class describing a function pointer parameter type.
@@ -181,7 +182,7 @@ extension FFMSwift2JavaGenerator {
181182 /// }
182183 /// }
183184 /// ```
184- ///
185+ ///
185186 /// If a `functionBody` is provided, a `Function$Impl` class will be emitted as well.
186187 func printFunctionPointerParameterDescriptorClass(
187188 _ printer: inout CodePrinter ,
@@ -192,10 +193,10 @@ extension FFMSwift2JavaGenerator {
192193 let cResultType : CType
193194 let cParameterTypes : [ CType ]
194195 if case . pointer( . function( let _cResultType, let _cParameterTypes, variadic: false ) ) = cType {
195- cResultType = _cResultType
196+ cResultType = _cResultType
196197 cParameterTypes = _cParameterTypes
197198 } else if case . function( let _cResultType, let _cParameterTypes, variadic: false ) = cType {
198- cResultType = _cResultType
199+ cResultType = _cResultType
199200 cParameterTypes = _cParameterTypes
200201 } else {
201202 fatalError ( " must be a C function (pointer) type; name= \( name) , cType= \( cType) " )
@@ -204,7 +205,7 @@ extension FFMSwift2JavaGenerator {
204205 let cParams = cParameterTypes. enumerated ( ) . map { i, ty in
205206 CParameter ( name: " _ \( i) " , type: ty)
206207 }
207- let paramDecls = cParams. map ( { " \( $0. type. javaType) \( $0. name!) " } )
208+ let paramDecls = cParams. map ( { " \( $0. type. javaType) \( $0. name!) " } )
208209
209210 printer. printBraceBlock (
210211 """
@@ -224,7 +225,7 @@ extension FFMSwift2JavaGenerator {
224225 }
225226 """
226227 )
227-
228+
228229 if let impl {
229230 printer. print (
230231 """
@@ -236,7 +237,7 @@ extension FFMSwift2JavaGenerator {
236237 }
237238 """
238239 )
239- }
240+ }
240241
241242 printFunctionDescriptorDefinition ( & printer, cResultType, cParams)
242243 printer. print (
@@ -308,7 +309,7 @@ extension FFMSwift2JavaGenerator {
308309 """
309310 )
310311
311- let cdeclParams = functionType. cdeclType. parameters. map ( { " \( $0. parameterName!) " } )
312+ let cdeclParams = functionType. cdeclType. parameters. map ( { " \( $0. parameterName!) " } )
312313
313314 printer. printBraceBlock (
314315 """
@@ -360,7 +361,8 @@ extension FFMSwift2JavaGenerator {
360361 let translatedSignature = translated. translatedSignature
361362 let returnTy = translatedSignature. result. javaResultType
362363
363- var annotationsStr = translatedSignature. annotations. map ( { $0. render ( ) } ) . joined ( separator: " \n " )
364+ var annotationsStr = translatedSignature. annotations. map ( { $0. render ( ) } ) . joined (
365+ separator: " \n " )
364366 if !annotationsStr. isEmpty { annotationsStr += " \n " }
365367
366368 var paramDecls = translatedSignature. parameters
@@ -380,7 +382,7 @@ extension FFMSwift2JavaGenerator {
380382 \( annotationsStr) \( modifiers) \( returnTy) \( methodName) ( \( paramDecls. joined ( separator: " , " ) ) )
381383 """
382384 ) { printer in
383- if case . instance( _) = decl. functionSignature. selfParameter {
385+ if case . instance( _) = decl. functionSignature. selfParameter {
384386 // Make sure the object has not been destroyed.
385387 printer. print ( " $ensureAlive(); " )
386388 }
@@ -401,7 +403,7 @@ extension FFMSwift2JavaGenerator {
401403
402404 if translatedSignature. requiresTemporaryArena {
403405 printer. print ( " try(var arena$ = Arena.ofConfined()) { " )
404- printer. indent ( ) ;
406+ printer. indent ( )
405407 }
406408
407409 //=== Part 1.5: integer range checks (before any narrowing casts).
@@ -438,14 +440,16 @@ extension FFMSwift2JavaGenerator {
438440 }
439441 let memoryLayout = renderMemoryLayoutValue ( for: type)
440442
441- let arena = if let className = type. className,
442- analysis. importedTypes [ className] != nil {
443- // Use passed-in 'SwiftArena' for 'SwiftValue'.
444- " swiftArena$ "
445- } else {
446- // Otherwise use the temporary 'Arena'.
447- " arena$ "
448- }
443+ let arena =
444+ if let className = type. className,
445+ analysis. importedTypes [ className] != nil
446+ {
447+ // Use passed-in 'SwiftArena' for 'SwiftValue'.
448+ " swiftArena$ "
449+ } else {
450+ // Otherwise use the temporary 'Arena'.
451+ " arena$ "
452+ }
449453
450454 // FIXME: use trailing$ convention
451455 let varName = outParameter. name. isEmpty ? " _result " : " _result_ " + outParameter. name
@@ -457,7 +461,7 @@ extension FFMSwift2JavaGenerator {
457461 }
458462
459463 let thunkName = thunkNameRegistry. functionThunkName ( decl: decl)
460-
464+
461465 if let outCallback = translatedSignature. result. outCallback {
462466 let funcName = outCallback. name
463467 assert ( funcName. first == " $ " , " OutCallback names must start with $ " )
@@ -479,9 +483,9 @@ extension FFMSwift2JavaGenerator {
479483 } else {
480484 let placeholder : String
481485 let placeholderForDowncall : String ?
482-
486+
483487 if let outCallback = translatedSignature. result. outCallback {
484- placeholder = " \( outCallback. name) " // the result will be read out from the _result_initialize java class
488+ placeholder = " \( outCallback. name) " // the result will be read out from the _result_initialize java class
485489 placeholderForDowncall = " \( downCall) "
486490 } else if translatedSignature. result. outParameters. isEmpty {
487491 placeholder = downCall
@@ -492,13 +496,14 @@ extension FFMSwift2JavaGenerator {
492496 placeholderForDowncall = nil
493497 placeholder = " _result "
494498 }
495- let result = translatedSignature. result. conversion. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
499+ let result = translatedSignature. result. conversion. render (
500+ & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
496501
497502 if translatedSignature. result. javaResultType != . void {
498503 switch translatedSignature. result. conversion {
499504 case . initializeResultWithUpcall( _, let extractResult) :
500- printer. print ( " \( result) ; " ) // the result in the callback situation is a series of setup steps
501- printer. print ( " return \( extractResult. render ( & printer, placeholder) ) ; " ) // extract the actual result
505+ printer. print ( " \( result) ; " ) // the result in the callback situation is a series of setup steps
506+ printer. print ( " return \( extractResult. render ( & printer, placeholder) ) ; " ) // extract the actual result
502507 default :
503508 printer. print ( " return \( result) ; " )
504509 }
@@ -519,7 +524,7 @@ extension FFMSwift2JavaGenerator {
519524 rangeCheck: IntegerRangeCheck
520525 ) {
521526 if rangeCheck. onlyWhenSwiftIntIs32Bit {
522- printer. print ( " if (SwiftValueLayout.SWIFT_INT == ValueLayout.JAVA_INT ) { " )
527+ printer. print ( " if (SwiftValueLayout.has32bitSwiftInt() ) { " )
523528 printer. indent ( )
524529 }
525530
@@ -565,11 +570,11 @@ extension FFMSwift2JavaGenerator.JavaConversionStep {
565570 case . call( let inner, let base, _, _) :
566571 return inner. requiresSwiftArena || ( base? . requiresSwiftArena == true )
567572
568- case . cast( let inner, _) ,
569- . construct( let inner, _) ,
570- . method( let inner, _, _, _) ,
571- . property( let inner, _) ,
572- . swiftValueSelfSegment( let inner) :
573+ case . cast( let inner, _) ,
574+ . construct( let inner, _) ,
575+ . method( let inner, _, _, _) ,
576+ . property( let inner, _) ,
577+ . swiftValueSelfSegment( let inner) :
573578 return inner. requiresSwiftArena
574579
575580 case . commaSeparated( let list, _) :
@@ -592,16 +597,17 @@ extension FFMSwift2JavaGenerator.JavaConversionStep {
592597 return true
593598 case . introduceVariable( _, let value) :
594599 return value. requiresTemporaryArena
595- case . cast( let inner, _) ,
596- . construct( let inner, _) ,
597- . constructSwiftValue( let inner, _) ,
598- . swiftValueSelfSegment( let inner) ,
599- . wrapMemoryAddressUnsafe( let inner, _) :
600+ case . cast( let inner, _) ,
601+ . construct( let inner, _) ,
602+ . constructSwiftValue( let inner, _) ,
603+ . swiftValueSelfSegment( let inner) ,
604+ . wrapMemoryAddressUnsafe( let inner, _) :
600605 return inner. requiresSwiftArena
601606 case . call( let inner, let base, _, let withArena) :
602607 return withArena || ( base? . requiresTemporaryArena == true ) || inner. requiresTemporaryArena
603608 case . method( let inner, _, let args, let withArena) :
604- return withArena || inner. requiresTemporaryArena || args. contains ( where: { $0. requiresTemporaryArena } )
609+ return withArena || inner. requiresTemporaryArena
610+ || args. contains ( where: { $0. requiresTemporaryArena } )
605611 case . property( let inner, _) :
606612 return inner. requiresTemporaryArena
607613 case . commaSeparated( let list, _) :
@@ -610,7 +616,9 @@ extension FFMSwift2JavaGenerator.JavaConversionStep {
610616 }
611617
612618 /// Returns the conversion string applied to the placeholder.
613- func render( _ printer: inout CodePrinter , _ placeholder: String , placeholderForDowncall: String ? = nil ) -> String {
619+ func render(
620+ _ printer: inout CodePrinter , _ placeholder: String , placeholderForDowncall: String ? = nil
621+ ) -> String {
614622 // NOTE: 'printer' is used if the conversion wants to cause side-effects.
615623 // E.g. storing a temporary values into a variable.
616624 switch self {
@@ -626,7 +634,7 @@ extension FFMSwift2JavaGenerator.JavaConversionStep {
626634 case . placeholderForSwiftThunkName:
627635 if let placeholderForDowncall {
628636 let downcall = " \( placeholderForDowncall) "
629- return String ( downcall [ ..< ( downcall. firstIndex ( of: " . " ) ?? downcall. endIndex) ] ) // . separates thunk name from the `.call`
637+ return String ( downcall [ ..< ( downcall. firstIndex ( of: " . " ) ?? downcall. endIndex) ] ) // . separates thunk name from the `.call`
630638 } else {
631639 return " /*placeholderForDowncall undefined!*/"
632640 }
@@ -639,24 +647,25 @@ extension FFMSwift2JavaGenerator.JavaConversionStep {
639647
640648 case . swiftValueSelfSegment:
641649 return " \( placeholder) .$memorySegment() "
642-
650+
643651 case . javaNew( let value) :
644- return " new \( value. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall) ) "
652+ return
653+ " new \( value. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall) ) "
645654
646655 case . initializeResultWithUpcall( let steps, _) :
647656 // TODO: could we use the printing to introduce the upcall handle instead?
648- return steps. map { step in
657+ return steps. map { step in
649658 var printer = CodePrinter ( )
650659 var out = " "
651660 out += step. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
652661 out += printer. contents
653- return out
662+ return out
654663 } . joined ( separator: " ; \n " )
655664
656665 case . call( let inner, let base, let function, let withArena) :
657666 let inner = inner. render ( & printer, placeholder)
658667 let arenaArg = withArena ? " , arena$ " : " "
659- let baseStr : String =
668+ let baseStr : String =
660669 if let base {
661670 base. render ( & printer, placeholder) + " . "
662671 } else {
@@ -666,38 +675,47 @@ extension FFMSwift2JavaGenerator.JavaConversionStep {
666675
667676 // TODO: deduplicate with 'method'
668677 case . method( let inner, let methodName, let arguments, let withArena) :
669- let inner = inner. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
670- let args = arguments. map { $0. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall) }
678+ let inner = inner. render (
679+ & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
680+ let args = arguments. map {
681+ $0. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
682+ }
671683 let argsStr = ( args + ( withArena ? [ " arena$ " ] : [ ] ) ) . joined ( separator: " , " )
672684 return " \( inner) . \( methodName) ( \( argsStr) ) "
673685
674686 case . property( let inner, let propertyName) :
675- let inner = inner. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
687+ let inner = inner. render (
688+ & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
676689 return " \( inner) . \( propertyName) "
677690
678691 case . constructSwiftValue( let inner, let javaType) :
679- let inner = inner. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
692+ let inner = inner. render (
693+ & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
680694 return " new \( javaType. className!) ( \( inner) , swiftArena$) "
681695
682696 case . wrapMemoryAddressUnsafe( let inner, let javaType) :
683- let inner = inner. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
697+ let inner = inner. render (
698+ & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
684699 return " \( javaType. className!) .wrapMemoryAddressUnsafe( \( inner) , swiftArena$) "
685700
686701 case . construct( let inner, let javaType) :
687- let inner = inner. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
702+ let inner = inner. render (
703+ & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
688704 return " new \( javaType) ( \( inner) ) "
689-
705+
690706 case . introduceVariable( let name, let value) :
691- let value = value. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
707+ let value = value. render (
708+ & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
692709 return " var \( name) = \( value) ; "
693710
694711 case . cast( let inner, let javaType) :
695- let inner = inner. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
712+ let inner = inner. render (
713+ & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
696714 return " ( \( javaType) ) \( inner) "
697715
698716 case . commaSeparated( let list, let separator) :
699- return list. map ( {
700- $0. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
717+ return list. map ( {
718+ $0. render ( & printer, placeholder, placeholderForDowncall: placeholderForDowncall)
701719 } ) . joined ( separator: separator)
702720
703721 case . constant( let value) :
0 commit comments