Skip to content

Commit 07b0c54

Browse files
authored
Add Support for Final Fields (#117)
* Add Support for Final Fields * Generate Classes
1 parent c5a3d4d commit 07b0c54

23 files changed

+331
-301
lines changed

Sources/Java2SwiftLib/JavaTranslator.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -546,7 +546,7 @@ extension JavaTranslator {
546546
let fieldAttribute: AttributeSyntax = javaField.isStatic ? "@JavaStaticField" : "@JavaField";
547547
let swiftFieldName = javaField.getName().escapedSwiftName
548548
return """
549-
\(fieldAttribute)
549+
\(fieldAttribute)(isFinal: \(raw: javaField.isFinal))
550550
public var \(raw: swiftFieldName): \(raw: typeName)
551551
"""
552552
}

Sources/JavaKit/Macros.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ public macro JavaInterface(_ fullClassName: String, extends: (any AnyJavaObject.
9292
/// }
9393
/// ```
9494
@attached(accessor)
95-
public macro JavaField(_ javaFieldName: String? = nil) = #externalMacro(module: "JavaKitMacros", type: "JavaFieldMacro")
95+
public macro JavaField(_ javaFieldName: String? = nil, isFinal: Bool = false) = #externalMacro(module: "JavaKitMacros", type: "JavaFieldMacro")
9696

9797

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

111111
/// Attached macro that turns a Swift method into one that wraps a Java method on the underlying Java object.
112112
///

Sources/JavaKit/generated/JavaBoolean.swift

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,13 +46,13 @@ public struct JavaBoolean {
4646
public func wait() throws
4747
}
4848
extension JavaClass<JavaBoolean> {
49-
@JavaStaticField
49+
@JavaStaticField(isFinal: true)
5050
public var TRUE: JavaBoolean?
5151

52-
@JavaStaticField
52+
@JavaStaticField(isFinal: true)
5353
public var FALSE: JavaBoolean?
5454

55-
@JavaStaticField
55+
@JavaStaticField(isFinal: true)
5656
public var TYPE: JavaClass<JavaBoolean>?
5757

5858
@JavaStaticMethod

Sources/JavaKit/generated/JavaByte.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -61,19 +61,19 @@ public struct JavaByte {
6161
public func wait() throws
6262
}
6363
extension JavaClass<JavaByte> {
64-
@JavaStaticField
64+
@JavaStaticField(isFinal: true)
6565
public var MIN_VALUE: Int8
6666

67-
@JavaStaticField
67+
@JavaStaticField(isFinal: true)
6868
public var MAX_VALUE: Int8
6969

70-
@JavaStaticField
70+
@JavaStaticField(isFinal: true)
7171
public var TYPE: JavaClass<JavaByte>?
7272

73-
@JavaStaticField
73+
@JavaStaticField(isFinal: true)
7474
public var SIZE: Int32
7575

76-
@JavaStaticField
76+
@JavaStaticField(isFinal: true)
7777
public var BYTES: Int32
7878

7979
@JavaStaticMethod

Sources/JavaKit/generated/JavaCharacter.swift

Lines changed: 70 additions & 70 deletions
Original file line numberDiff line numberDiff line change
@@ -43,214 +43,214 @@ public struct JavaCharacter {
4343
public func wait() throws
4444
}
4545
extension JavaClass<JavaCharacter> {
46-
@JavaStaticField
46+
@JavaStaticField(isFinal: true)
4747
public var MIN_RADIX: Int32
4848

49-
@JavaStaticField
49+
@JavaStaticField(isFinal: true)
5050
public var MAX_RADIX: Int32
5151

52-
@JavaStaticField
52+
@JavaStaticField(isFinal: true)
5353
public var MIN_VALUE: UInt16
5454

55-
@JavaStaticField
55+
@JavaStaticField(isFinal: true)
5656
public var MAX_VALUE: UInt16
5757

58-
@JavaStaticField
58+
@JavaStaticField(isFinal: true)
5959
public var TYPE: JavaClass<JavaCharacter>?
6060

61-
@JavaStaticField
61+
@JavaStaticField(isFinal: true)
6262
public var UNASSIGNED: Int8
6363

64-
@JavaStaticField
64+
@JavaStaticField(isFinal: true)
6565
public var UPPERCASE_LETTER: Int8
6666

67-
@JavaStaticField
67+
@JavaStaticField(isFinal: true)
6868
public var LOWERCASE_LETTER: Int8
6969

70-
@JavaStaticField
70+
@JavaStaticField(isFinal: true)
7171
public var TITLECASE_LETTER: Int8
7272

73-
@JavaStaticField
73+
@JavaStaticField(isFinal: true)
7474
public var MODIFIER_LETTER: Int8
7575

76-
@JavaStaticField
76+
@JavaStaticField(isFinal: true)
7777
public var OTHER_LETTER: Int8
7878

79-
@JavaStaticField
79+
@JavaStaticField(isFinal: true)
8080
public var NON_SPACING_MARK: Int8
8181

82-
@JavaStaticField
82+
@JavaStaticField(isFinal: true)
8383
public var ENCLOSING_MARK: Int8
8484

85-
@JavaStaticField
85+
@JavaStaticField(isFinal: true)
8686
public var COMBINING_SPACING_MARK: Int8
8787

88-
@JavaStaticField
88+
@JavaStaticField(isFinal: true)
8989
public var DECIMAL_DIGIT_NUMBER: Int8
9090

91-
@JavaStaticField
91+
@JavaStaticField(isFinal: true)
9292
public var LETTER_NUMBER: Int8
9393

94-
@JavaStaticField
94+
@JavaStaticField(isFinal: true)
9595
public var OTHER_NUMBER: Int8
9696

97-
@JavaStaticField
97+
@JavaStaticField(isFinal: true)
9898
public var SPACE_SEPARATOR: Int8
9999

100-
@JavaStaticField
100+
@JavaStaticField(isFinal: true)
101101
public var LINE_SEPARATOR: Int8
102102

103-
@JavaStaticField
103+
@JavaStaticField(isFinal: true)
104104
public var PARAGRAPH_SEPARATOR: Int8
105105

106-
@JavaStaticField
106+
@JavaStaticField(isFinal: true)
107107
public var CONTROL: Int8
108108

109-
@JavaStaticField
109+
@JavaStaticField(isFinal: true)
110110
public var FORMAT: Int8
111111

112-
@JavaStaticField
112+
@JavaStaticField(isFinal: true)
113113
public var PRIVATE_USE: Int8
114114

115-
@JavaStaticField
115+
@JavaStaticField(isFinal: true)
116116
public var SURROGATE: Int8
117117

118-
@JavaStaticField
118+
@JavaStaticField(isFinal: true)
119119
public var DASH_PUNCTUATION: Int8
120120

121-
@JavaStaticField
121+
@JavaStaticField(isFinal: true)
122122
public var START_PUNCTUATION: Int8
123123

124-
@JavaStaticField
124+
@JavaStaticField(isFinal: true)
125125
public var END_PUNCTUATION: Int8
126126

127-
@JavaStaticField
127+
@JavaStaticField(isFinal: true)
128128
public var CONNECTOR_PUNCTUATION: Int8
129129

130-
@JavaStaticField
130+
@JavaStaticField(isFinal: true)
131131
public var OTHER_PUNCTUATION: Int8
132132

133-
@JavaStaticField
133+
@JavaStaticField(isFinal: true)
134134
public var MATH_SYMBOL: Int8
135135

136-
@JavaStaticField
136+
@JavaStaticField(isFinal: true)
137137
public var CURRENCY_SYMBOL: Int8
138138

139-
@JavaStaticField
139+
@JavaStaticField(isFinal: true)
140140
public var MODIFIER_SYMBOL: Int8
141141

142-
@JavaStaticField
142+
@JavaStaticField(isFinal: true)
143143
public var OTHER_SYMBOL: Int8
144144

145-
@JavaStaticField
145+
@JavaStaticField(isFinal: true)
146146
public var INITIAL_QUOTE_PUNCTUATION: Int8
147147

148-
@JavaStaticField
148+
@JavaStaticField(isFinal: true)
149149
public var FINAL_QUOTE_PUNCTUATION: Int8
150150

151-
@JavaStaticField
151+
@JavaStaticField(isFinal: true)
152152
public var DIRECTIONALITY_UNDEFINED: Int8
153153

154-
@JavaStaticField
154+
@JavaStaticField(isFinal: true)
155155
public var DIRECTIONALITY_LEFT_TO_RIGHT: Int8
156156

157-
@JavaStaticField
157+
@JavaStaticField(isFinal: true)
158158
public var DIRECTIONALITY_RIGHT_TO_LEFT: Int8
159159

160-
@JavaStaticField
160+
@JavaStaticField(isFinal: true)
161161
public var DIRECTIONALITY_RIGHT_TO_LEFT_ARABIC: Int8
162162

163-
@JavaStaticField
163+
@JavaStaticField(isFinal: true)
164164
public var DIRECTIONALITY_EUROPEAN_NUMBER: Int8
165165

166-
@JavaStaticField
166+
@JavaStaticField(isFinal: true)
167167
public var DIRECTIONALITY_EUROPEAN_NUMBER_SEPARATOR: Int8
168168

169-
@JavaStaticField
169+
@JavaStaticField(isFinal: true)
170170
public var DIRECTIONALITY_EUROPEAN_NUMBER_TERMINATOR: Int8
171171

172-
@JavaStaticField
172+
@JavaStaticField(isFinal: true)
173173
public var DIRECTIONALITY_ARABIC_NUMBER: Int8
174174

175-
@JavaStaticField
175+
@JavaStaticField(isFinal: true)
176176
public var DIRECTIONALITY_COMMON_NUMBER_SEPARATOR: Int8
177177

178-
@JavaStaticField
178+
@JavaStaticField(isFinal: true)
179179
public var DIRECTIONALITY_NONSPACING_MARK: Int8
180180

181-
@JavaStaticField
181+
@JavaStaticField(isFinal: true)
182182
public var DIRECTIONALITY_BOUNDARY_NEUTRAL: Int8
183183

184-
@JavaStaticField
184+
@JavaStaticField(isFinal: true)
185185
public var DIRECTIONALITY_PARAGRAPH_SEPARATOR: Int8
186186

187-
@JavaStaticField
187+
@JavaStaticField(isFinal: true)
188188
public var DIRECTIONALITY_SEGMENT_SEPARATOR: Int8
189189

190-
@JavaStaticField
190+
@JavaStaticField(isFinal: true)
191191
public var DIRECTIONALITY_WHITESPACE: Int8
192192

193-
@JavaStaticField
193+
@JavaStaticField(isFinal: true)
194194
public var DIRECTIONALITY_OTHER_NEUTRALS: Int8
195195

196-
@JavaStaticField
196+
@JavaStaticField(isFinal: true)
197197
public var DIRECTIONALITY_LEFT_TO_RIGHT_EMBEDDING: Int8
198198

199-
@JavaStaticField
199+
@JavaStaticField(isFinal: true)
200200
public var DIRECTIONALITY_LEFT_TO_RIGHT_OVERRIDE: Int8
201201

202-
@JavaStaticField
202+
@JavaStaticField(isFinal: true)
203203
public var DIRECTIONALITY_RIGHT_TO_LEFT_EMBEDDING: Int8
204204

205-
@JavaStaticField
205+
@JavaStaticField(isFinal: true)
206206
public var DIRECTIONALITY_RIGHT_TO_LEFT_OVERRIDE: Int8
207207

208-
@JavaStaticField
208+
@JavaStaticField(isFinal: true)
209209
public var DIRECTIONALITY_POP_DIRECTIONAL_FORMAT: Int8
210210

211-
@JavaStaticField
211+
@JavaStaticField(isFinal: true)
212212
public var DIRECTIONALITY_LEFT_TO_RIGHT_ISOLATE: Int8
213213

214-
@JavaStaticField
214+
@JavaStaticField(isFinal: true)
215215
public var DIRECTIONALITY_RIGHT_TO_LEFT_ISOLATE: Int8
216216

217-
@JavaStaticField
217+
@JavaStaticField(isFinal: true)
218218
public var DIRECTIONALITY_FIRST_STRONG_ISOLATE: Int8
219219

220-
@JavaStaticField
220+
@JavaStaticField(isFinal: true)
221221
public var DIRECTIONALITY_POP_DIRECTIONAL_ISOLATE: Int8
222222

223-
@JavaStaticField
223+
@JavaStaticField(isFinal: true)
224224
public var MIN_HIGH_SURROGATE: UInt16
225225

226-
@JavaStaticField
226+
@JavaStaticField(isFinal: true)
227227
public var MAX_HIGH_SURROGATE: UInt16
228228

229-
@JavaStaticField
229+
@JavaStaticField(isFinal: true)
230230
public var MIN_LOW_SURROGATE: UInt16
231231

232-
@JavaStaticField
232+
@JavaStaticField(isFinal: true)
233233
public var MAX_LOW_SURROGATE: UInt16
234234

235-
@JavaStaticField
235+
@JavaStaticField(isFinal: true)
236236
public var MIN_SURROGATE: UInt16
237237

238-
@JavaStaticField
238+
@JavaStaticField(isFinal: true)
239239
public var MAX_SURROGATE: UInt16
240240

241-
@JavaStaticField
241+
@JavaStaticField(isFinal: true)
242242
public var MIN_SUPPLEMENTARY_CODE_POINT: Int32
243243

244-
@JavaStaticField
244+
@JavaStaticField(isFinal: true)
245245
public var MIN_CODE_POINT: Int32
246246

247-
@JavaStaticField
247+
@JavaStaticField(isFinal: true)
248248
public var MAX_CODE_POINT: Int32
249249

250-
@JavaStaticField
250+
@JavaStaticField(isFinal: true)
251251
public var SIZE: Int32
252252

253-
@JavaStaticField
253+
@JavaStaticField(isFinal: true)
254254
public var BYTES: Int32
255255

256256
@JavaStaticMethod

0 commit comments

Comments
 (0)