From af037e044c422eb54d0ad5d13a576b15986653d2 Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 28 Apr 2026 10:07:45 +0900 Subject: [PATCH 1/2] Fix internals were imported at package level import --- .../Convenience/SwiftSyntax+Extensions.swift | 8 +-- .../InternalExtractTests.swift | 61 +++++++++++++++++-- 2 files changed, 57 insertions(+), 12 deletions(-) diff --git a/Sources/JExtractSwiftLib/Convenience/SwiftSyntax+Extensions.swift b/Sources/JExtractSwiftLib/Convenience/SwiftSyntax+Extensions.swift index 4b05971ec..61786fb5b 100644 --- a/Sources/JExtractSwiftLib/Convenience/SwiftSyntax+Extensions.swift +++ b/Sources/JExtractSwiftLib/Convenience/SwiftSyntax+Extensions.swift @@ -106,12 +106,8 @@ extension WithModifiersSyntax { } var isAtLeastPackage: Bool { - if self.modifiers.isEmpty { - return false - } - - return self.modifiers.contains { modifier in - modifier.isAtLeastInternal + self.modifiers.contains { modifier in + modifier.isAtLeastPackage } } diff --git a/Tests/JExtractSwiftTests/InternalExtractTests.swift b/Tests/JExtractSwiftTests/InternalExtractTests.swift index a2cc846d0..3712ec6e8 100644 --- a/Tests/JExtractSwiftTests/InternalExtractTests.swift +++ b/Tests/JExtractSwiftTests/InternalExtractTests.swift @@ -18,21 +18,23 @@ import Testing @Suite final class InternalExtractTests { - let text = - """ - internal func catchMeIfYouCan() - """ - @Test("Import: internal decl if configured") - func data_swiftThunk() throws { + func internalScope() throws { var config = Configuration() config.minimumInputAccessLevelMode = .internal + let text = + """ + internal func catchMeIfYouCan() + func catchMeIfYouCan2() + """ + try assertOutput( input: text, config: config, .ffm, .java, + detectChunkByInitialLines: 2, expectedChunks: [ """ /** @@ -44,7 +46,54 @@ final class InternalExtractTests { public static void catchMeIfYouCan() { swiftjava_SwiftModule_catchMeIfYouCan.call(); } + """, + """ + public static void catchMeIfYouCan2() { + swiftjava_SwiftModule_catchMeIfYouCan2.call(); + } + """, + ] + ) + } + + @Test("Import: package decl if configured") + func packageScope() throws { + var config = Configuration() + config.minimumInputAccessLevelMode = .package + + let text = + """ + package func catchMeIfYouCan() + func skipMe() + internal func skipMe2() + """ + + try assertOutput( + input: text, + config: config, + .ffm, + .java, + detectChunkByInitialLines: 2, + expectedChunks: [ + """ + /** + * Downcall to Swift: + * {@snippet lang=swift : + * package func catchMeIfYouCan() + * } + */ + public static void catchMeIfYouCan() { + swiftjava_SwiftModule_catchMeIfYouCan.call(); + } + """ + ], + notExpectedChunks: [ + """ + public static void skipMe() { + """, """ + public static void skipMe2() { + """, ] ) } From 2fa3af11535cfa9a6a76051e037c7458ff6d7891 Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 28 Apr 2026 10:08:51 +0900 Subject: [PATCH 2/2] Trim redundant expression --- .../JExtractSwiftLib/Convenience/SwiftSyntax+Extensions.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Sources/JExtractSwiftLib/Convenience/SwiftSyntax+Extensions.swift b/Sources/JExtractSwiftLib/Convenience/SwiftSyntax+Extensions.swift index 61786fb5b..76e5ba688 100644 --- a/Sources/JExtractSwiftLib/Convenience/SwiftSyntax+Extensions.swift +++ b/Sources/JExtractSwiftLib/Convenience/SwiftSyntax+Extensions.swift @@ -96,7 +96,7 @@ extension DeclModifierSyntax { extension WithModifiersSyntax { func isPublic(in type: NominalTypeDeclSyntaxNode?) -> Bool { - if let type, case .protocolDecl(let protocolDecl) = Syntax(type).as(SyntaxEnum.self) { + if let protocolDecl = type?.as(ProtocolDeclSyntax.self) { return protocolDecl.isPublic(in: nil) }