@@ -257,7 +257,7 @@ extension JavaTranslator {
257257 do {
258258 return try translateField ( field)
259259 } catch {
260- logUntranslated ( " Unable to translate ' \( fullName) ' field ' \( field. getName ( ) ) ': \( error) " )
260+ logUntranslated ( " Unable to translate ' \( fullName) ' static field ' \( field. getName ( ) ) ': \( error) " )
261261 return nil
262262 }
263263 }
@@ -347,23 +347,28 @@ extension JavaTranslator {
347347
348348 // Format the class declaration.
349349 classDecl = classDecl. formatted ( using: format) . cast ( DeclSyntax . self)
350-
351- // TODO: Handle static fields in https://github.com/swiftlang/swift-java/issues/39
352-
353- if staticMethods. isEmpty {
350+
351+ if staticMethods. isEmpty && staticFields. isEmpty {
354352 return [ classDecl]
355353 }
356354
357355 // Translate static members.
358356 var staticMembers : [ DeclSyntax ] = [ ]
359- staticMembers. append (
360- contentsOf: javaClass. getMethods ( ) . compactMap {
361- $0. flatMap { method in
362- // Skip the instance methods; they were handled above.
363- if !method. isStatic {
364- return nil
365- }
366357
358+ staticMembers. append (
359+ contentsOf: staticFields. compactMap { field in
360+ // Translate each static field.
361+ do {
362+ return try translateField ( field)
363+ } catch {
364+ logUntranslated ( " Unable to translate ' \( fullName) ' field ' \( field. getName ( ) ) ': \( error) " )
365+ return nil
366+ }
367+ }
368+ )
369+
370+ staticMembers. append (
371+ contentsOf: staticMethods. compactMap { method in
367372 // Translate each static method.
368373 do {
369374 return try translateMethod (
@@ -376,7 +381,6 @@ extension JavaTranslator {
376381 return nil
377382 }
378383 }
379- }
380384 )
381385
382386 if staticMembers. isEmpty {
@@ -447,7 +451,7 @@ extension JavaTranslator {
447451
448452 func translateField( _ javaField: Field ) throws -> DeclSyntax {
449453 let typeName = try getSwiftTypeNameAsString ( javaField. getGenericType ( ) !, outerOptional: true )
450- let fieldAttribute : AttributeSyntax = " @JavaField " ;
454+ let fieldAttribute : AttributeSyntax = javaField . isStatic ? " @JavaStaticField " : " @JavaField " ;
451455 return """
452456 \( fieldAttribute)
453457 public var \( raw: javaField. getName ( ) ) : \( raw: typeName)
0 commit comments