Skip to content

Commit abbd8af

Browse files
get rid of some of the warnings in Java2Swift generated sources: generics
1 parent 3e7ae28 commit abbd8af

File tree

12 files changed

+176
-151
lines changed

12 files changed

+176
-151
lines changed

Sources/Java2SwiftLib/JavaClassTranslator.swift

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -104,12 +104,25 @@ struct JavaClassTranslator {
104104
}
105105

106106
let genericParameters = javaTypeParameters.map { param in
107-
"\(param.getName()): AnyJavaObject"
107+
let name = generateGenericParameterName(param.getName())
108+
translator.usedGenericParameterNames.insert(param.getName())
109+
return "\(name): AnyJavaObject"
108110
}
109111

110112
return "<\(genericParameters.joined(separator: ", "))>"
111113
}
112114

115+
/// If the name already exists, append a 1 to it.
116+
/// For example, if name = "T" and it already exists, the result will be "T1".
117+
private func generateGenericParameterName(_ baseName: String) -> String {
118+
var name = baseName
119+
let index = 1
120+
if translator.usedGenericParameterNames.contains(name) {
121+
name = "\(baseName)\(index)"
122+
}
123+
return name
124+
}
125+
113126
/// Prepare translation for the given Java class (or interface).
114127
init(javaClass: JavaClass<JavaObject>, translator: JavaTranslator) throws {
115128
let fullName = javaClass.getName()
@@ -392,7 +405,9 @@ extension JavaClassTranslator {
392405
let staticMemberWhereClause: String
393406
if !javaTypeParameters.isEmpty {
394407
let genericParameterNames = javaTypeParameters.compactMap { typeVar in
395-
typeVar.getName()
408+
let name = generateGenericParameterName(typeVar.getName())
409+
translator.usedGenericParameterNames.insert(typeVar.getName())
410+
return name
396411
}
397412

398413
let genericArgumentClause = "<\(genericParameterNames.joined(separator: ", "))>"

Sources/Java2SwiftLib/JavaTranslator.swift

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,9 @@ package class JavaTranslator {
6363
/// TODO: Make JavaClass Hashable so we can index by the object?
6464
package var nestedClasses: [String: [JavaClass<JavaObject>]] = [:]
6565

66+
/// The set of generic parameter names that have been used.
67+
package var usedGenericParameterNames: Set<String> = []
68+
6669
package init(
6770
swiftModuleName: String,
6871
environment: JNIEnvironment,
@@ -78,6 +81,7 @@ package class JavaTranslator {
7881
/// Clear out any per-file state when we want to start a new file.
7982
package func startNewFile() {
8083
importedSwiftModules = Self.defaultImportedSwiftModules
84+
usedGenericParameterNames = []
8185
}
8286

8387
/// Simplistic logging for all entities that couldn't be translated.

Sources/JavaKit/generated/JavaClass.swift

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,13 +52,16 @@ open class JavaClass<T: AnyJavaObject>: JavaObject {
5252
open func isRecord() -> Bool
5353

5454
@JavaMethod
55-
open func getClassLoader() -> JavaClassLoader!
55+
open func isSealed() -> Bool
5656

5757
@JavaMethod
58-
open func newInstance() throws -> JavaObject!
58+
open func getInterfaces() -> [JavaClass<JavaObject>?]
5959

6060
@JavaMethod
61-
open func getInterfaces() -> [JavaClass<JavaObject>?]
61+
open func getClassLoader() -> JavaClassLoader!
62+
63+
@JavaMethod
64+
open func newInstance() throws -> JavaObject!
6265

6366
@JavaMethod
6467
open func isMemberClass() -> Bool
@@ -128,17 +131,14 @@ open class JavaClass<T: AnyJavaObject>: JavaObject {
128131

129132
@JavaMethod
130133
open func getNestMembers() -> [JavaClass<JavaObject>?]
131-
132-
@JavaMethod
133-
open func isSealed() -> Bool
134134
}
135135
extension JavaClass {
136136
@JavaStaticMethod
137-
public func forName<T: AnyJavaObject>(_ arg0: String, _ arg1: Bool, _ arg2: JavaClassLoader?) throws -> JavaClass<JavaObject>! where ObjectType == JavaClass<T>
137+
public func forName<T1: AnyJavaObject>(_ arg0: String, _ arg1: Bool, _ arg2: JavaClassLoader?) throws -> JavaClass<JavaObject>! where ObjectType == JavaClass<T1>
138138

139139
@JavaStaticMethod
140-
public func forName<T: AnyJavaObject>(_ arg0: String) throws -> JavaClass<JavaObject>! where ObjectType == JavaClass<T>
140+
public func forName<T1: AnyJavaObject>(_ arg0: String) throws -> JavaClass<JavaObject>! where ObjectType == JavaClass<T1>
141141

142142
@JavaStaticMethod
143-
public func forPrimitiveName<T: AnyJavaObject>(_ arg0: String) -> JavaClass<JavaObject>! where ObjectType == JavaClass<T>
143+
public func forPrimitiveName<T1: AnyJavaObject>(_ arg0: String) -> JavaClass<JavaObject>! where ObjectType == JavaClass<T1>
144144
}

Sources/JavaKit/generated/JavaOptional.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -29,23 +29,23 @@ open class JavaOptional<T: AnyJavaObject>: JavaObject {
2929
}
3030
extension JavaClass {
3131
@JavaStaticMethod
32-
public func of<T: AnyJavaObject>(_ arg0: JavaObject?) -> JavaOptional<JavaObject>! where ObjectType == JavaOptional<T>
32+
public func of<T1: AnyJavaObject>(_ arg0: JavaObject?) -> JavaOptional<JavaObject>! where ObjectType == JavaOptional<T1>
3333

34-
public func ofOptional<T: AnyJavaObject>(_ arg0: JavaObject?) -> JavaObject? where ObjectType == JavaOptional<T> {
34+
public func ofOptional<T1: AnyJavaObject>(_ arg0: JavaObject?) -> JavaObject? where ObjectType == JavaOptional<T1> {
3535
Optional(javaOptional: of(arg0))
3636
}
3737

3838
@JavaStaticMethod
39-
public func empty<T: AnyJavaObject>() -> JavaOptional<JavaObject>! where ObjectType == JavaOptional<T>
39+
public func empty<T1: AnyJavaObject>() -> JavaOptional<JavaObject>! where ObjectType == JavaOptional<T1>
4040

41-
public func emptyOptional<T: AnyJavaObject>() -> JavaObject? where ObjectType == JavaOptional<T> {
41+
public func emptyOptional<T1: AnyJavaObject>() -> JavaObject? where ObjectType == JavaOptional<T1> {
4242
Optional(javaOptional: empty())
4343
}
4444

4545
@JavaStaticMethod
46-
public func ofNullable<T: AnyJavaObject>(_ arg0: JavaObject?) -> JavaOptional<JavaObject>! where ObjectType == JavaOptional<T>
46+
public func ofNullable<T1: AnyJavaObject>(_ arg0: JavaObject?) -> JavaOptional<JavaObject>! where ObjectType == JavaOptional<T1>
4747

48-
public func ofNullableOptional<T: AnyJavaObject>(_ arg0: JavaObject?) -> JavaObject? where ObjectType == JavaOptional<T> {
48+
public func ofNullableOptional<T1: AnyJavaObject>(_ arg0: JavaObject?) -> JavaObject? where ObjectType == JavaOptional<T1> {
4949
Optional(javaOptional: ofNullable(arg0))
5050
}
5151
}

Sources/JavaKit/generated/JavaString.swift

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -52,16 +52,16 @@ open class JavaString: JavaObject {
5252
open func getChars(_ arg0: Int32, _ arg1: Int32, _ arg2: [UInt16], _ arg3: Int32)
5353

5454
@JavaMethod
55-
open func compareTo(_ arg0: JavaObject?) -> Int32
55+
open func compareTo(_ arg0: String) -> Int32
5656

5757
@JavaMethod
58-
open func compareTo(_ arg0: String) -> Int32
58+
open func compareTo(_ arg0: JavaObject?) -> Int32
5959

6060
@JavaMethod
61-
open func indexOf(_ arg0: String, _ arg1: Int32, _ arg2: Int32) -> Int32
61+
open func indexOf(_ arg0: String, _ arg1: Int32) -> Int32
6262

6363
@JavaMethod
64-
open func indexOf(_ arg0: String) -> Int32
64+
open func indexOf(_ arg0: String, _ arg1: Int32, _ arg2: Int32) -> Int32
6565

6666
@JavaMethod
6767
open func indexOf(_ arg0: Int32) -> Int32
@@ -73,7 +73,7 @@ open class JavaString: JavaObject {
7373
open func indexOf(_ arg0: Int32, _ arg1: Int32, _ arg2: Int32) -> Int32
7474

7575
@JavaMethod
76-
open func indexOf(_ arg0: String, _ arg1: Int32) -> Int32
76+
open func indexOf(_ arg0: String) -> Int32
7777

7878
@JavaMethod
7979
open func charAt(_ arg0: Int32) -> UInt16
@@ -90,44 +90,44 @@ open class JavaString: JavaObject {
9090
@JavaMethod
9191
open func offsetByCodePoints(_ arg0: Int32, _ arg1: Int32) -> Int32
9292

93-
@JavaMethod
94-
open func getBytes() -> [Int8]
95-
9693
@JavaMethod
9794
open func getBytes(_ arg0: String) throws -> [Int8]
9895

9996
@JavaMethod
10097
open func getBytes(_ arg0: Int32, _ arg1: Int32, _ arg2: [Int8], _ arg3: Int32)
10198

10299
@JavaMethod
103-
open func regionMatches(_ arg0: Bool, _ arg1: Int32, _ arg2: String, _ arg3: Int32, _ arg4: Int32) -> Bool
100+
open func getBytes() -> [Int8]
104101

105102
@JavaMethod
106103
open func regionMatches(_ arg0: Int32, _ arg1: String, _ arg2: Int32, _ arg3: Int32) -> Bool
107104

105+
@JavaMethod
106+
open func regionMatches(_ arg0: Bool, _ arg1: Int32, _ arg2: String, _ arg3: Int32, _ arg4: Int32) -> Bool
107+
108108
@JavaMethod
109109
open func startsWith(_ arg0: String) -> Bool
110110

111111
@JavaMethod
112112
open func startsWith(_ arg0: String, _ arg1: Int32) -> Bool
113113

114114
@JavaMethod
115-
open func lastIndexOf(_ arg0: String) -> Int32
115+
open func lastIndexOf(_ arg0: Int32) -> Int32
116116

117117
@JavaMethod
118-
open func lastIndexOf(_ arg0: Int32, _ arg1: Int32) -> Int32
118+
open func lastIndexOf(_ arg0: String) -> Int32
119119

120120
@JavaMethod
121121
open func lastIndexOf(_ arg0: String, _ arg1: Int32) -> Int32
122122

123123
@JavaMethod
124-
open func lastIndexOf(_ arg0: Int32) -> Int32
124+
open func lastIndexOf(_ arg0: Int32, _ arg1: Int32) -> Int32
125125

126126
@JavaMethod
127-
open func substring(_ arg0: Int32) -> String
127+
open func substring(_ arg0: Int32, _ arg1: Int32) -> String
128128

129129
@JavaMethod
130-
open func substring(_ arg0: Int32, _ arg1: Int32) -> String
130+
open func substring(_ arg0: Int32) -> String
131131

132132
@JavaMethod
133133
open func isEmpty() -> Bool
@@ -215,39 +215,39 @@ open class JavaString: JavaObject {
215215
}
216216
}
217217
extension JavaClass<JavaString> {
218+
@JavaStaticMethod
219+
public func valueOf(_ arg0: JavaObject?) -> String
220+
218221
@JavaStaticMethod
219222
public func valueOf(_ arg0: Int64) -> String
220223

221224
@JavaStaticMethod
222-
public func valueOf(_ arg0: [UInt16]) -> String
225+
public func valueOf(_ arg0: Int32) -> String
223226

224227
@JavaStaticMethod
225-
public func valueOf(_ arg0: JavaObject?) -> String
228+
public func valueOf(_ arg0: UInt16) -> String
226229

227230
@JavaStaticMethod
228231
public func valueOf(_ arg0: [UInt16], _ arg1: Int32, _ arg2: Int32) -> String
229232

230233
@JavaStaticMethod
231-
public func valueOf(_ arg0: Float) -> String
234+
public func valueOf(_ arg0: Bool) -> String
232235

233236
@JavaStaticMethod
234237
public func valueOf(_ arg0: Double) -> String
235238

236239
@JavaStaticMethod
237-
public func valueOf(_ arg0: UInt16) -> String
238-
239-
@JavaStaticMethod
240-
public func valueOf(_ arg0: Bool) -> String
240+
public func valueOf(_ arg0: [UInt16]) -> String
241241

242242
@JavaStaticMethod
243-
public func valueOf(_ arg0: Int32) -> String
243+
public func valueOf(_ arg0: Float) -> String
244244

245245
@JavaStaticMethod
246246
public func format(_ arg0: String, _ arg1: [JavaObject?]) -> String
247247

248248
@JavaStaticMethod
249-
public func copyValueOf(_ arg0: [UInt16]) -> String
249+
public func copyValueOf(_ arg0: [UInt16], _ arg1: Int32, _ arg2: Int32) -> String
250250

251251
@JavaStaticMethod
252-
public func copyValueOf(_ arg0: [UInt16], _ arg1: Int32, _ arg2: Int32) -> String
252+
public func copyValueOf(_ arg0: [UInt16]) -> String
253253
}

Sources/JavaKitCollection/generated/BitSet.swift

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -4,38 +4,20 @@ import JavaRuntime
44

55
@JavaClass("java.util.BitSet")
66
open class BitSet: JavaObject {
7-
@JavaMethod
8-
@_nonoverride public convenience init(environment: JNIEnvironment? = nil)
9-
107
@JavaMethod
118
@_nonoverride public convenience init(_ arg0: Int32, environment: JNIEnvironment? = nil)
129

1310
@JavaMethod
14-
open func cardinality() -> Int32
15-
16-
@JavaMethod
17-
open func nextSetBit(_ arg0: Int32) -> Int32
18-
19-
@JavaMethod
20-
open func toLongArray() -> [Int64]
21-
22-
@JavaMethod
23-
open func previousSetBit(_ arg0: Int32) -> Int32
24-
25-
@JavaMethod
26-
open func previousClearBit(_ arg0: Int32) -> Int32
27-
28-
@JavaMethod
29-
open func intersects(_ arg0: BitSet?) -> Bool
11+
@_nonoverride public convenience init(environment: JNIEnvironment? = nil)
3012

3113
@JavaMethod
3214
open func size() -> Int32
3315

3416
@JavaMethod
35-
open func get(_ arg0: Int32, _ arg1: Int32) -> BitSet!
17+
open func get(_ arg0: Int32) -> Bool
3618

3719
@JavaMethod
38-
open func get(_ arg0: Int32) -> Bool
20+
open func get(_ arg0: Int32, _ arg1: Int32) -> BitSet!
3921

4022
@JavaMethod
4123
open override func equals(_ arg0: JavaObject?) -> Bool
@@ -52,29 +34,29 @@ open class BitSet: JavaObject {
5234
@JavaMethod
5335
open override func clone() -> JavaObject!
5436

55-
@JavaMethod
56-
open func clear(_ arg0: Int32)
57-
5837
@JavaMethod
5938
open func clear(_ arg0: Int32, _ arg1: Int32)
6039

6140
@JavaMethod
6241
open func clear()
6342

6443
@JavaMethod
65-
open func isEmpty() -> Bool
44+
open func clear(_ arg0: Int32)
6645

6746
@JavaMethod
68-
open func set(_ arg0: Int32, _ arg1: Int32, _ arg2: Bool)
47+
open func isEmpty() -> Bool
6948

7049
@JavaMethod
71-
open func set(_ arg0: Int32, _ arg1: Int32)
50+
open func set(_ arg0: Int32, _ arg1: Bool)
7251

7352
@JavaMethod
7453
open func set(_ arg0: Int32)
7554

7655
@JavaMethod
77-
open func set(_ arg0: Int32, _ arg1: Bool)
56+
open func set(_ arg0: Int32, _ arg1: Int32)
57+
58+
@JavaMethod
59+
open func set(_ arg0: Int32, _ arg1: Int32, _ arg2: Bool)
7860

7961
@JavaMethod
8062
open func flip(_ arg0: Int32, _ arg1: Int32)
@@ -99,6 +81,24 @@ open class BitSet: JavaObject {
9981

10082
@JavaMethod
10183
open func andNot(_ arg0: BitSet?)
84+
85+
@JavaMethod
86+
open func cardinality() -> Int32
87+
88+
@JavaMethod
89+
open func nextSetBit(_ arg0: Int32) -> Int32
90+
91+
@JavaMethod
92+
open func toLongArray() -> [Int64]
93+
94+
@JavaMethod
95+
open func previousSetBit(_ arg0: Int32) -> Int32
96+
97+
@JavaMethod
98+
open func previousClearBit(_ arg0: Int32) -> Int32
99+
100+
@JavaMethod
101+
open func intersects(_ arg0: BitSet?) -> Bool
102102
}
103103
extension JavaClass<BitSet> {
104104
@JavaStaticMethod

0 commit comments

Comments
 (0)