Skip to content
Open
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
56 changes: 56 additions & 0 deletions Tests/JExtractSwiftTests/MethodImportTests.swift
Original file line number Diff line number Diff line change
Expand Up @@ -668,6 +668,44 @@ final class MethodImportTests {
)
}

let overloadedInitializers_interfaceFile =
"""
import Swift

public class OverloadedInitializerClass {
public init(throwing: Swift.Bool) throws
public init?(doInit: Swift.Bool)
}
"""

let overloadedFFMInitializers_interfaceFile =
"""
import Swift

public class OverloadedFFMInitializerClass {
public init(throwing: Swift.Bool) throws
public init(doInit: Swift.Bool)
}
"""

@Test("FFM: Overloaded initializers with same Java signature get suffixed Java names")
func ffm_overloaded_initializers_suffixed() throws {
try assertOutput(
input: overloadedFFMInitializers_interfaceFile,
.ffm,
.java,
swiftModuleName: "OverloadModule",
expectedChunks: [
"public static OverloadedFFMInitializerClass initThrowing(boolean throwing, AllocatingSwiftArena swiftArena)",
"public static OverloadedFFMInitializerClass initDoInit(boolean doInit, AllocatingSwiftArena swiftArena)",
],
notExpectedChunks: [
"public static OverloadedFFMInitializerClass init(boolean throwing, AllocatingSwiftArena swiftArena)",
"public static OverloadedFFMInitializerClass init(boolean doInit, AllocatingSwiftArena swiftArena)",
]
)
}

// ==== -------------------------------------------------------------------
// MARK: JNI overloaded method disambiguation

Expand Down Expand Up @@ -776,4 +814,22 @@ final class MethodImportTests {
]
)
}

@Test("JNI: Overloaded initializers with same Java signature get suffixed Java names")
func jni_overloaded_initializers_suffixed() throws {
try assertOutput(
input: overloadedInitializers_interfaceFile,
.jni,
.java,
swiftModuleName: "OverloadModule",
expectedChunks: [
"public static OverloadedInitializerClass initThrowing(boolean throwing, SwiftArena swiftArena) throws Exception",
"public static java.util.Optional<OverloadedInitializerClass> initDoInit(boolean doInit, SwiftArena swiftArena)",
],
notExpectedChunks: [
"public static OverloadedInitializerClass init(boolean throwing, SwiftArena swiftArena)",
"public static java.util.Optional<OverloadedInitializerClass> init(boolean doInit, SwiftArena swiftArena)",
]
)
}
}
Loading