@@ -239,11 +239,16 @@ extension JavaTranslator {
239239 $0. flatMap { field in
240240 if field. isStatic {
241241 staticFields. append ( field)
242- return nil
242+
243+ if field. isEnumConstant ( ) {
244+ return " public static let \( raw: field. getName ( ) ) = try! JavaClass<Self>(environment: JavaVirtualMachine.environment()). \( raw: field. getName ( ) ) "
245+ } else {
246+ return nil
247+ }
243248 }
244249
245250 do {
246- return try translateField ( field)
251+ return try translateField ( field, isOptional : true )
247252 } catch {
248253 logUntranslated ( " Unable to translate ' \( fullName) ' static field ' \( field. getName ( ) ) ': \( error) " )
249254 return nil
@@ -347,7 +352,8 @@ extension JavaTranslator {
347352 contentsOf: staticFields. compactMap { field in
348353 // Translate each static field.
349354 do {
350- return try translateField ( field)
355+ // Enum constants are guaranteed to not be optional
356+ return try translateField ( field, isOptional: !field. isEnumConstant ( ) )
351357 } catch {
352358 logUntranslated ( " Unable to translate ' \( fullName) ' field ' \( field. getName ( ) ) ': \( error) " )
353359 return nil
@@ -437,8 +443,8 @@ extension JavaTranslator {
437443 """
438444 }
439445
440- package func translateField( _ javaField: Field ) throws -> DeclSyntax {
441- let typeName = try getSwiftTypeNameAsString ( javaField. getGenericType ( ) !, outerOptional: true )
446+ package func translateField( _ javaField: Field , isOptional : Bool ) throws -> DeclSyntax {
447+ let typeName = try getSwiftTypeNameAsString ( javaField. getGenericType ( ) !, outerOptional: isOptional )
442448 let fieldAttribute : AttributeSyntax = javaField. isStatic ? " @JavaStaticField " : " @JavaField " ;
443449 let swiftFieldName = javaField. getName ( ) . escapedSwiftName
444450 return """
0 commit comments