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
55
55
56
56
generate-JavaKitReflection : Java2Swift generate-JavaKit
57
57
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
59
59
60
60
generate-JavaKitJar : Java2Swift generate-JavaKit
61
61
mkdir -p Sources/JavaKitJar/generated
Original file line number Diff line number Diff line change @@ -280,6 +280,25 @@ extension JavaTranslator {
280
280
}
281
281
}
282
282
)
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
+ )
283
302
284
303
// Map the generic parameters.
285
304
let genericParameterClause : String
@@ -327,6 +346,8 @@ extension JavaTranslator {
327
346
328
347
// Format the class declaration.
329
348
classDecl = classDecl. formatted ( using: format) . cast ( DeclSyntax . self)
349
+
350
+ // TODO: Handle static fields in https://github.com/swiftlang/swift-java/issues/39
330
351
331
352
if staticMethods. isEmpty {
332
353
return [ classDecl]
@@ -422,6 +443,15 @@ extension JavaTranslator {
422
443
public func \( raw: javaMethod. getName ( ) ) \( raw: genericParameterClause) ( \( raw: parametersStr) ) \( raw: throwsStr) \( raw: resultTypeStr) \( raw: whereClause)
423
444
"""
424
445
}
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
+ }
425
455
426
456
// Translate a Java parameter list into Swift parameters.
427
457
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 {
28
28
29
29
@JavaMethod
30
30
public func getMethods( ) -> [ Method ? ]
31
+
32
+ @JavaMethod
33
+ public func getFields( ) -> [ Field ? ]
31
34
32
35
@JavaMethod
33
36
public func getConstruct ors( ) -> [ Constructor < ObjectType > ? ]
You can’t perform that action at this time.
0 commit comments