diff --git a/Tests/JExtractSwiftTests/MethodImportTests.swift b/Tests/JExtractSwiftTests/MethodImportTests.swift index 298ef0738..fb333a69d 100644 --- a/Tests/JExtractSwiftTests/MethodImportTests.swift +++ b/Tests/JExtractSwiftTests/MethodImportTests.swift @@ -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 @@ -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 initDoInit(boolean doInit, SwiftArena swiftArena)", + ], + notExpectedChunks: [ + "public static OverloadedInitializerClass init(boolean throwing, SwiftArena swiftArena)", + "public static java.util.Optional init(boolean doInit, SwiftArena swiftArena)", + ] + ) + } }