Skip to content

Commit 8c048cd

Browse files
committed
Omit typeErasedResultBound parameter if it can
1 parent ea43861 commit 8c048cd

6 files changed

Lines changed: 30 additions & 27 deletions

File tree

Sources/JavaStdlib/JavaLangReflect/generated/Constructor.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,7 +73,7 @@ open class Constructor<T: AnyJavaObject>: Executable {
7373
/// ```java
7474
/// public T java.lang.reflect.Constructor.newInstance(java.lang.Object...) throws java.lang.InstantiationException,java.lang.IllegalAccessException,java.lang.IllegalArgumentException,java.lang.reflect.InvocationTargetException
7575
/// ```
76-
@JavaMethod(typeErasedResult: "T!", typeErasedResultBound: JavaObject?.self)
76+
@JavaMethod(typeErasedResult: "T!")
7777
open func newInstance(_ arg0: [JavaObject?]) throws -> T!
7878

7979
/// Java method `getParameterTypes`.

Sources/SwiftJavaToolLib/JavaClassTranslator.swift

Lines changed: 16 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -989,21 +989,24 @@ extension JavaClassTranslator {
989989
}
990990
if hasTypeEraseGenericResultType {
991991
let returnType = javaMethod.getReturnType()!
992-
var boundType = try translator.getSwiftTypeNameAsString(
993-
method: javaMethod,
994-
returnType.as(Type.self),
995-
substitution: substitution,
996-
preferValueTypes: true,
997-
outerOptional: .nonoptional
998-
)
999-
// `getSwiftTypeNameAsString` does not include generic parameters for non parameterized type
1000-
if let returnClass = returnType.as(JavaClass<JavaObject>.self) {
1001-
let typeParameters = returnClass.getTypeParameters()
1002-
if !typeParameters.isEmpty {
1003-
boundType += "<\([String](repeating: "JavaObject", count: typeParameters.count).joined(separator: ", "))>"
992+
parameters.append(#"typeErasedResult: "\#(resultType)""#)
993+
if returnType.getName() != "java.lang.Object" {
994+
var boundType = try translator.getSwiftTypeNameAsString(
995+
method: javaMethod,
996+
returnType.as(Type.self),
997+
substitution: substitution,
998+
preferValueTypes: true,
999+
outerOptional: .nonoptional
1000+
)
1001+
// `getSwiftTypeNameAsString` does not include generic parameters for non parameterized type
1002+
if let returnClass = returnType.as(JavaClass<JavaObject>.self) {
1003+
let typeParameters = returnClass.getTypeParameters()
1004+
if !typeParameters.isEmpty {
1005+
boundType += "<\([String](repeating: "JavaObject", count: typeParameters.count).joined(separator: ", "))>"
1006+
}
10041007
}
1008+
parameters.append(#"typeErasedResultBound: \#(boundType)?.self"#)
10051009
}
1006-
parameters.append(#"typeErasedResult: "\#(resultType)", typeErasedResultBound: \#(boundType)?.self"#)
10071010
}
10081011

10091012
if !parameters.isEmpty {

Tests/SwiftJavaToolLibTests/Java2SwiftTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -270,7 +270,7 @@ class Java2SwiftTests: XCTestCase {
270270
public struct MyJavaObjects {
271271
""",
272272
"""
273-
@JavaStaticMethod(typeErasedResult: "T!", typeErasedResultBound: JavaObject?.self)
273+
@JavaStaticMethod(typeErasedResult: "T!")
274274
public func requireNonNull<T: AnyJavaObject>(_ arg0: T?, _ arg1: MySupplier<JavaString>?) -> T
275275
""",
276276
]
@@ -544,7 +544,7 @@ class Java2SwiftTests: XCTestCase {
544544
public struct MyJavaIntFunction<R: AnyJavaObject> {
545545
""",
546546
"""
547-
@JavaMethod(typeErasedResult: "R!", typeErasedResultBound: JavaObject?.self)
547+
@JavaMethod(typeErasedResult: "R!")
548548
public func apply(_ arg0: Int32) -> R!
549549
""",
550550
]

Tests/SwiftJavaToolLibTests/WrapJavaTests/BasicWrapJavaTests.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,7 +272,7 @@ final class BasicWrapJavaTests: XCTestCase {
272272
/// ```java
273273
/// public abstract ValueType com.example.CallMe.apply(ValueType,ValueType)
274274
/// ```
275-
@JavaMethod(typeErasedResult: "ValueType!", typeErasedResultBound: JavaObject?.self)
275+
@JavaMethod(typeErasedResult: "ValueType!")
276276
public func apply(_ arg0: ValueType?, _ arg1: ValueType?) -> ValueType!
277277
}
278278
"""

Tests/SwiftJavaToolLibTests/WrapJavaTests/GenericsSubstitutionWrapJavaTests.swift

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,15 +48,15 @@ final class GenericsSubstitutionWrapJavaTests: XCTestCase {
4848
public struct MyFunction<T: AnyJavaObject, R: AnyJavaObject> {
4949
""",
5050
"""
51-
@JavaMethod(typeErasedResult: "R!", typeErasedResultBound: JavaObject?.self)
51+
@JavaMethod(typeErasedResult: "R!")
5252
public func apply(_ arg0: T?) -> R!
5353
""",
5454
"""
5555
@JavaInterface("com.example.MyUnaryOperator", extends: MyFunction<JavaObject, JavaObject>.self)
5656
public struct MyUnaryOperator<T: AnyJavaObject> {
5757
""",
5858
"""
59-
@JavaMethod(typeErasedResult: "T!", typeErasedResultBound: JavaObject?.self)
59+
@JavaMethod(typeErasedResult: "T!")
6060
public func apply(_ arg0: T?) -> T!
6161
""",
6262
]
@@ -90,15 +90,15 @@ final class GenericsSubstitutionWrapJavaTests: XCTestCase {
9090
open class ClassFunction<T: AnyJavaObject, R: AnyJavaObject>: JavaObject {
9191
""",
9292
"""
93-
@JavaMethod(typeErasedResult: "R!", typeErasedResultBound: JavaObject?.self)
93+
@JavaMethod(typeErasedResult: "R!")
9494
open func apply(_ arg0: T?) -> R!
9595
""",
9696
"""
9797
@JavaClass("com.example.ClassUnaryOperator")
9898
open class ClassUnaryOperator<T: AnyJavaObject>: ClassFunction<T, T> {
9999
""",
100100
"""
101-
@JavaMethod(typeErasedResult: "T!", typeErasedResultBound: JavaObject?.self)
101+
@JavaMethod(typeErasedResult: "T!")
102102
open override func apply(_ arg0: T?) -> T!
103103
""",
104104
]

Tests/SwiftJavaToolLibTests/WrapJavaTests/GenericsWrapJavaTests.swift

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ final class GenericsWrapJavaTests: XCTestCase {
6363
open class ExampleSimpleClass: JavaObject {
6464
""",
6565
"""
66-
@JavaMethod(typeErasedResult: "KeyType!", typeErasedResultBound: JavaObject?.self)
66+
@JavaMethod(typeErasedResult: "KeyType!")
6767
open func getGeneric<KeyType: AnyJavaObject>(_ arg0: Item<KeyType>?) -> KeyType!
6868
""",
6969
]
@@ -102,7 +102,7 @@ final class GenericsWrapJavaTests: XCTestCase {
102102
classpath: [classpathURL],
103103
expectedChunks: [
104104
"""
105-
@JavaMethod(typeErasedResult: "KeyType!", typeErasedResultBound: JavaObject?.self)
105+
@JavaMethod(typeErasedResult: "KeyType!")
106106
open func getGeneric<KeyType: AnyJavaObject>() -> KeyType!
107107
"""
108108
]
@@ -200,11 +200,11 @@ final class GenericsWrapJavaTests: XCTestCase {
200200
classpath: [classpathURL],
201201
expectedChunks: [
202202
"""
203-
@JavaMethod(typeErasedResult: "T!", typeErasedResultBound: JavaObject?.self)
203+
@JavaMethod(typeErasedResult: "T!")
204204
open func getClassGeneric() -> T!
205205
""",
206206
"""
207-
@JavaMethod(typeErasedResult: "M!", typeErasedResultBound: JavaObject?.self)
207+
@JavaMethod(typeErasedResult: "M!")
208208
open func getMethodGeneric<M: AnyJavaObject>() -> M!
209209
""",
210210
"""
@@ -377,7 +377,7 @@ final class GenericsWrapJavaTests: XCTestCase {
377377
open class Kappa<T: AnyJavaObject>: JavaObject {
378378
""",
379379
"""
380-
@JavaMethod(typeErasedResult: "T!", typeErasedResultBound: JavaObject?.self)
380+
@JavaMethod(typeErasedResult: "T!")
381381
open func get() -> T!
382382
}
383383
""",
@@ -416,7 +416,7 @@ final class GenericsWrapJavaTests: XCTestCase {
416416
public func ofNullable<T: AnyJavaObject>(_ arg0: T?) -> Optional<T>! where ObjectType == Optional<T>
417417
""",
418418
"""
419-
@JavaStaticMethod(typeErasedResult: "T!", typeErasedResultBound: JavaObject?.self)
419+
@JavaStaticMethod(typeErasedResult: "T!")
420420
public func nonNull<T: AnyJavaObject>(_ arg0: T?) -> T! where ObjectType == Optional<T>
421421
""",
422422
]

0 commit comments

Comments
 (0)