diff --git a/Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/NestedTypes.swift b/Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/NestedTypes.swift index 252b938a..e2b2633f 100644 --- a/Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/NestedTypes.swift +++ b/Samples/SwiftJavaExtractJNISampleApp/Sources/MySwiftLibrary/NestedTypes.swift @@ -45,3 +45,9 @@ public enum NestedEnum { public init() {} } } + +public enum NamespaceEnum { + public enum Nested { + public static func something() {} + } +} diff --git a/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/NestedTypesTest.java b/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/NestedTypesTest.java index b006ea91..fb506ab3 100644 --- a/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/NestedTypesTest.java +++ b/Samples/SwiftJavaExtractJNISampleApp/src/test/java/com/example/swift/NestedTypesTest.java @@ -42,4 +42,11 @@ void testStructInEnum() { assertTrue(one.isPresent()); } } -} \ No newline at end of file + + @Test + void testNamespaceEnum() { + try (var arena = SwiftArena.ofConfined()) { + NamespaceEnum.Nested.something(); + } + } +} diff --git a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaBindingsPrinting.swift b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaBindingsPrinting.swift index 87a5d358..bd21b48f 100644 --- a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaBindingsPrinting.swift +++ b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaBindingsPrinting.swift @@ -374,7 +374,11 @@ extension JNISwift2JavaGenerator { } private func printEnumCaseInterface(_ printer: inout CodePrinter, _ decl: ImportedNominalType) { - printer.print("public sealed interface Case {}") + if decl.cases.isEmpty { + printer.print("public interface Case {}") + } else { + printer.print("public sealed interface Case {}") + } printer.println() let requiresSwiftArena = decl.cases.compactMap { diff --git a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift index 347d2024..08f9beda 100644 --- a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift +++ b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+SwiftThunkPrinting.swift @@ -296,7 +296,7 @@ extension JNISwift2JavaGenerator { ) { printer in let selfPointer = self.printSelfJLongToUnsafeMutablePointer( &printer, - swiftParentName: type.swiftNominal.name, + swiftParentName: type.swiftNominal.qualifiedName, selfPointerParam ) printer.printBraceBlock("switch (\(selfPointer).pointee)") { printer in