Skip to content

Add Support for Final Fields #117

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 2 commits into from
Oct 26, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Sources/Java2SwiftLib/JavaTranslator.swift
Original file line number Diff line number Diff line change
Expand Up @@ -546,7 +546,7 @@ extension JavaTranslator {
let fieldAttribute: AttributeSyntax = javaField.isStatic ? "@JavaStaticField" : "@JavaField";
let swiftFieldName = javaField.getName().escapedSwiftName
return """
\(fieldAttribute)
\(fieldAttribute)(isFinal: \(raw: javaField.isFinal))
public var \(raw: swiftFieldName): \(raw: typeName)
"""
}
Expand Down
4 changes: 2 additions & 2 deletions Sources/JavaKit/Macros.swift
Original file line number Diff line number Diff line change
Expand Up @@ -92,7 +92,7 @@ public macro JavaInterface(_ fullClassName: String, extends: (any AnyJavaObject.
/// }
/// ```
@attached(accessor)
public macro JavaField(_ javaFieldName: String? = nil) = #externalMacro(module: "JavaKitMacros", type: "JavaFieldMacro")
public macro JavaField(_ javaFieldName: String? = nil, isFinal: Bool = false) = #externalMacro(module: "JavaKitMacros", type: "JavaFieldMacro")


/// Attached macro that turns a Swift property into one that accesses a Java static field on the underlying Java object.
Expand All @@ -106,7 +106,7 @@ public macro JavaField(_ javaFieldName: String? = nil) = #externalMacro(module:
/// }
/// ```
@attached(accessor)
public macro JavaStaticField(_ javaFieldName: String? = nil) = #externalMacro(module: "JavaKitMacros", type: "JavaFieldMacro")
public macro JavaStaticField(_ javaFieldName: String? = nil, isFinal: Bool = false) = #externalMacro(module: "JavaKitMacros", type: "JavaFieldMacro")

/// Attached macro that turns a Swift method into one that wraps a Java method on the underlying Java object.
///
Expand Down
6 changes: 3 additions & 3 deletions Sources/JavaKit/generated/JavaBoolean.swift
Original file line number Diff line number Diff line change
Expand Up @@ -46,13 +46,13 @@ public struct JavaBoolean {
public func wait() throws
}
extension JavaClass<JavaBoolean> {
@JavaStaticField
@JavaStaticField(isFinal: true)
public var TRUE: JavaBoolean?

@JavaStaticField
@JavaStaticField(isFinal: true)
public var FALSE: JavaBoolean?

@JavaStaticField
@JavaStaticField(isFinal: true)
public var TYPE: JavaClass<JavaBoolean>?

@JavaStaticMethod
Expand Down
10 changes: 5 additions & 5 deletions Sources/JavaKit/generated/JavaByte.swift
Original file line number Diff line number Diff line change
Expand Up @@ -61,19 +61,19 @@ public struct JavaByte {
public func wait() throws
}
extension JavaClass<JavaByte> {
@JavaStaticField
@JavaStaticField(isFinal: true)
public var MIN_VALUE: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MAX_VALUE: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var TYPE: JavaClass<JavaByte>?

@JavaStaticField
@JavaStaticField(isFinal: true)
public var SIZE: Int32

@JavaStaticField
@JavaStaticField(isFinal: true)
public var BYTES: Int32

@JavaStaticMethod
Expand Down
140 changes: 70 additions & 70 deletions Sources/JavaKit/generated/JavaCharacter.swift
Original file line number Diff line number Diff line change
Expand Up @@ -43,214 +43,214 @@ public struct JavaCharacter {
public func wait() throws
}
extension JavaClass<JavaCharacter> {
@JavaStaticField
@JavaStaticField(isFinal: true)
public var MIN_RADIX: Int32

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MAX_RADIX: Int32

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MIN_VALUE: UInt16

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MAX_VALUE: UInt16

@JavaStaticField
@JavaStaticField(isFinal: true)
public var TYPE: JavaClass<JavaCharacter>?

@JavaStaticField
@JavaStaticField(isFinal: true)
public var UNASSIGNED: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var UPPERCASE_LETTER: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var LOWERCASE_LETTER: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var TITLECASE_LETTER: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MODIFIER_LETTER: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var OTHER_LETTER: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var NON_SPACING_MARK: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var ENCLOSING_MARK: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var COMBINING_SPACING_MARK: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DECIMAL_DIGIT_NUMBER: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var LETTER_NUMBER: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var OTHER_NUMBER: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var SPACE_SEPARATOR: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var LINE_SEPARATOR: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var PARAGRAPH_SEPARATOR: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var CONTROL: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var FORMAT: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var PRIVATE_USE: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var SURROGATE: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DASH_PUNCTUATION: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var START_PUNCTUATION: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var END_PUNCTUATION: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var CONNECTOR_PUNCTUATION: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var OTHER_PUNCTUATION: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MATH_SYMBOL: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var CURRENCY_SYMBOL: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MODIFIER_SYMBOL: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var OTHER_SYMBOL: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var INITIAL_QUOTE_PUNCTUATION: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var FINAL_QUOTE_PUNCTUATION: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_UNDEFINED: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_LEFT_TO_RIGHT: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_RIGHT_TO_LEFT: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_EUROPEAN_NUMBER: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_ARABIC_NUMBER: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_COMMON_NUMBER_SEPARATOR: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_NONSPACING_MARK: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_BOUNDARY_NEUTRAL: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_PARAGRAPH_SEPARATOR: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_SEGMENT_SEPARATOR: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_WHITESPACE: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_OTHER_NEUTRALS: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_POP_DIRECTIONAL_FORMAT: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_LEFT_TO_RIGHT_ISOLATE: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_RIGHT_TO_LEFT_ISOLATE: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_FIRST_STRONG_ISOLATE: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var DIRECTIONALITY_POP_DIRECTIONAL_ISOLATE: Int8

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MIN_HIGH_SURROGATE: UInt16

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MAX_HIGH_SURROGATE: UInt16

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MIN_LOW_SURROGATE: UInt16

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MAX_LOW_SURROGATE: UInt16

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MIN_SURROGATE: UInt16

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MAX_SURROGATE: UInt16

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MIN_SUPPLEMENTARY_CODE_POINT: Int32

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MIN_CODE_POINT: Int32

@JavaStaticField
@JavaStaticField(isFinal: true)
public var MAX_CODE_POINT: Int32

@JavaStaticField
@JavaStaticField(isFinal: true)
public var SIZE: Int32

@JavaStaticField
@JavaStaticField(isFinal: true)
public var BYTES: Int32

@JavaStaticMethod
Expand Down
Loading