File tree Expand file tree Collapse file tree 4 files changed +54
-1
lines changed Expand file tree Collapse file tree 4 files changed +54
-1
lines changed Original file line number Diff line number Diff line change @@ -55,7 +55,7 @@ generate-JavaKit: Java2Swift
5555
5656generate-JavaKitReflection : Java2Swift generate-JavaKit
5757 mkdir -p Sources/JavaKitReflection/generated
58- $(BUILD_DIR ) /debug/Java2Swift --module-name JavaKitReflection --manifests Sources/JavaKit/generated/JavaKit.swift2java -o Sources/JavaKitReflection/generated java.lang.reflect.Method java.lang.reflect.Type java.lang.reflect.Constructor java.lang.reflect.Parameter java.lang.reflect.ParameterizedType java.lang.reflect.Executable java.lang.reflect.AnnotatedType java.lang.reflect.TypeVariable java.lang.reflect.WildcardType java.lang.reflect.GenericArrayType java.lang.reflect.AccessibleObject java.lang.annotation.Annotation java.lang.reflect.GenericDeclaration
58+ $(BUILD_DIR ) /debug/Java2Swift --module-name JavaKitReflection --manifests Sources/JavaKit/generated/JavaKit.swift2java -o Sources/JavaKitReflection/generated java.lang.reflect.Method java.lang.reflect.Type java.lang.reflect.Constructor java.lang.reflect.Parameter java.lang.reflect.ParameterizedType java.lang.reflect.Executable java.lang.reflect.AnnotatedType java.lang.reflect.TypeVariable java.lang.reflect.WildcardType java.lang.reflect.GenericArrayType java.lang.reflect.AccessibleObject java.lang.annotation.Annotation java.lang.reflect.GenericDeclaration java.lang.reflect.Field
5959
6060generate-JavaKitJar : Java2Swift generate-JavaKit
6161 mkdir -p Sources/JavaKitJar/generated
Original file line number Diff line number Diff line change @@ -280,6 +280,25 @@ extension JavaTranslator {
280280 }
281281 }
282282 )
283+
284+ var staticFields : [ Field ] = [ ]
285+ members. append (
286+ contentsOf: javaClass. getFields ( ) . compactMap {
287+ $0. flatMap { field in
288+ if field. isStatic {
289+ staticFields. append ( field)
290+ return nil
291+ }
292+
293+ do {
294+ return try translateField ( field)
295+ } catch {
296+ logUntranslated ( " Unable to translate ' \( fullName) ' field ' \( field. getName ( ) ) ': \( error) " )
297+ return nil
298+ }
299+ }
300+ }
301+ )
283302
284303 // Map the generic parameters.
285304 let genericParameterClause : String
@@ -327,6 +346,8 @@ extension JavaTranslator {
327346
328347 // Format the class declaration.
329348 classDecl = classDecl. formatted ( using: format) . cast ( DeclSyntax . self)
349+
350+ // TODO: Handle static fields in https://github.com/swiftlang/swift-java/issues/39
330351
331352 if staticMethods. isEmpty {
332353 return [ classDecl]
@@ -422,6 +443,15 @@ extension JavaTranslator {
422443 public func \( raw: javaMethod. getName ( ) ) \( raw: genericParameterClause) ( \( raw: parametersStr) ) \( raw: throwsStr) \( raw: resultTypeStr) \( raw: whereClause)
423444 """
424445 }
446+
447+ func translateField( _ javaField: Field ) throws -> DeclSyntax {
448+ let typeName = try getSwiftTypeNameAsString ( javaField. getGenericType ( ) !, outerOptional: true )
449+ let fieldAttribute : AttributeSyntax = " @JavaField " ;
450+ return """
451+ \( fieldAttribute)
452+ public func \( raw: javaField. getName ( ) ) : \( raw: typeName)
453+ """
454+ }
425455
426456 // Translate a Java parameter list into Swift parameters.
427457 private func translateParameters( _ parameters: [ Parameter ? ] ) throws -> [ FunctionParameterSyntax ] {
Original file line number Diff line number Diff line change 1+ //===----------------------------------------------------------------------===//
2+ //
3+ // This source file is part of the Swift.org open source project
4+ //
5+ // Copyright (c) 2024 Apple Inc. and the Swift.org project authors
6+ // Licensed under Apache License v2.0
7+ //
8+ // See LICENSE.txt for license information
9+ // See CONTRIBUTORS.txt for the list of Swift.org project authors
10+ //
11+ // SPDX-License-Identifier: Apache-2.0
12+ //
13+ //===----------------------------------------------------------------------===//
14+
15+ extension Field {
16+ /// Whether this is a 'static' field.
17+ public var isStatic : Bool {
18+ return ( getModifiers ( ) & 0x08 ) != 0
19+ }
20+ }
Original file line number Diff line number Diff line change @@ -28,6 +28,9 @@ extension JavaClass {
2828
2929 @JavaMethod
3030 public func getMethods( ) -> [ Method ? ]
31+
32+ @JavaMethod
33+ public func getFields( ) -> [ Field ? ]
3134
3235 @JavaMethod
3336 public func getConstruct ors( ) -> [ Constructor < ObjectType > ? ]
You can’t perform that action at this time.
0 commit comments