@@ -26,6 +26,11 @@ struct JavaClassTranslator {
26
26
/// The Java class (or interface) being translated.
27
27
let javaClass : JavaClass < JavaObject >
28
28
29
+ /// Whether to translate this Java class into a Swift class.
30
+ ///
31
+ /// This will be false for Java interfaces.
32
+ let translateAsClass : Bool
33
+
29
34
/// The type parameters to the Java class or interface.
30
35
let javaTypeParameters : [ TypeVariable < JavaClass < JavaObject > > ]
31
36
@@ -107,6 +112,7 @@ struct JavaClassTranslator {
107
112
let fullName = javaClass. getName ( )
108
113
self . javaClass = javaClass
109
114
self . translator = translator
115
+ self . translateAsClass = translator. translateAsClass && !javaClass. isInterface ( )
110
116
self . swiftTypeName = try translator. getSwiftTypeNameFromJavaClassName (
111
117
fullName,
112
118
preferValueTypes: false ,
@@ -175,7 +181,7 @@ struct JavaClassTranslator {
175
181
}
176
182
177
183
// Gather methods.
178
- let methods = translator . translateAsClass
184
+ let methods = translateAsClass
179
185
? javaClass. getDeclaredMethods ( )
180
186
: javaClass. getMethods ( )
181
187
for method in methods {
@@ -231,7 +237,7 @@ extension JavaClassTranslator {
231
237
}
232
238
233
239
// Don't include inherited fields when translating to a class.
234
- if translator . translateAsClass &&
240
+ if translateAsClass &&
235
241
!field. getDeclaringClass ( ) !. equals ( javaClass. as ( JavaObject . self) !) {
236
242
return
237
243
}
@@ -315,7 +321,7 @@ extension JavaClassTranslator {
315
321
// formulation).
316
322
let extends : String
317
323
let inheritanceClause : String
318
- if translator . translateAsClass {
324
+ if translateAsClass {
319
325
extends = " "
320
326
inheritanceClause = swiftSuperclass. map { " : \( $0) " } ?? " "
321
327
} else {
@@ -334,7 +340,7 @@ extension JavaClassTranslator {
334
340
335
341
// Emit the struct declaration describing the java class.
336
342
let classOrInterface : String = isInterface ? " JavaInterface " : " JavaClass " ;
337
- let introducer = translator . translateAsClass ? " open class " : " public struct "
343
+ let introducer = translateAsClass ? " open class " : " public struct "
338
344
var classDecl : DeclSyntax =
339
345
"""
340
346
@ \( raw: classOrInterface) ( \( literal: javaClass. getName ( ) ) \( raw: extends) \( raw: interfacesStr) )
@@ -485,7 +491,7 @@ extension JavaClassTranslator {
485
491
let parametersStr = parameters. map { $0. description } . joined ( separator: " , " )
486
492
let throwsStr = javaConstructor. throwsCheckedException ? " throws " : " "
487
493
let accessModifier = javaConstructor. isPublic ? " public " : " "
488
- let convenienceModifier = translator . translateAsClass ? " convenience " : " "
494
+ let convenienceModifier = translateAsClass ? " convenience " : " "
489
495
return """
490
496
@JavaMethod
491
497
\( raw: accessModifier) \( raw: convenienceModifier) init( \( raw: parametersStr) ) \( raw: throwsStr)
@@ -523,10 +529,9 @@ extension JavaClassTranslator {
523
529
? " "
524
530
: javaMethod. isStatic ? " @JavaStaticMethod \n " : " @JavaMethod \n " ;
525
531
let accessModifier = implementedInSwift ? " "
526
- : ( javaMethod. isStatic || !translator . translateAsClass) ? " public "
532
+ : ( javaMethod. isStatic || !translateAsClass) ? " public "
527
533
: " open "
528
- let overrideOpt = ( translator. translateAsClass &&
529
- !javaMethod. isStatic && isOverride ( javaMethod) )
534
+ let overrideOpt = ( translateAsClass && !javaMethod. isStatic && isOverride ( javaMethod) )
530
535
? " override "
531
536
: " "
532
537
return """
@@ -577,7 +582,7 @@ extension JavaClassTranslator {
577
582
}
578
583
"""
579
584
580
- let convenienceModifier = translator . translateAsClass ? " convenience " : " "
585
+ let convenienceModifier = translateAsClass ? " convenience " : " "
581
586
let initSyntax : DeclSyntax = """
582
587
public \( raw: convenienceModifier) init(_ enumValue: \( raw: name) , environment: JNIEnvironment? = nil) {
583
588
let _environment = if let environment {
@@ -591,7 +596,7 @@ extension JavaClassTranslator {
591
596
return """
592
597
case . \( $0. getName ( ) ) :
593
598
if let \( $0. getName ( ) ) = classObj. \( $0. getName ( ) ) {
594
- \( translator . translateAsClass
599
+ \( translateAsClass
595
600
? " self.init(javaHolder: \( $0. getName ( ) ) .javaHolder) "
596
601
: " self = \( $0. getName ( ) ) " )
597
602
} else {
0 commit comments