diff --git a/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator.swift b/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator.swift index 41c063048..64614318d 100644 --- a/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator.swift +++ b/Sources/JExtractSwiftLib/FFM/FFMSwift2JavaGenerator.swift @@ -85,7 +85,7 @@ package class FFMSwift2JavaGenerator: Swift2JavaGenerator { // If we are forced to write empty files, construct the expected outputs. // It is sufficient to use file names only, since SwiftPM requires names to be unique within a module anyway. - if translator.config.writeEmptyFiles ?? false { + if translator.config.effectiveWriteEmptyFiles { self.expectedOutputSwiftFileNames = Set( translator.inputs.compactMap { (input) -> String? in guard let fileName = input.path.split(separator: PATH_SEPARATOR).last else { diff --git a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaTranslation.swift b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaTranslation.swift index ddb88b9f4..53db4d40d 100644 --- a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaTranslation.swift +++ b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator+JavaTranslation.swift @@ -1162,7 +1162,6 @@ extension JNISwift2JavaGenerator { genericParameters: [SwiftGenericParameterDeclaration], genericRequirements: [SwiftGenericRequirement], ) throws -> TranslatedResult { - let arity = elements.count var outParameters: [OutParameter] = [] var elementOutParamNames: [String] = [] var elementConversions: [JavaNativeConversionStep] = [] diff --git a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator.swift b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator.swift index 07b724873..beffe9fb0 100644 --- a/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator.swift +++ b/Sources/JExtractSwiftLib/JNI/JNISwift2JavaGenerator.swift @@ -88,7 +88,7 @@ package class JNISwift2JavaGenerator: Swift2JavaGenerator { // If we are forced to write empty files, construct the expected outputs. // It is sufficient to use file names only, since SwiftPM requires names to be unique within a module anyway. - if translator.config.writeEmptyFiles ?? false { + if translator.config.effectiveWriteEmptyFiles { self.expectedOutputSwiftFileNames = Set( translator.inputs.compactMap { (input) -> String? in guard let fileName = input.path.split(separator: PATH_SEPARATOR).last else { diff --git a/Sources/SwiftJavaConfigurationShared/Configuration.swift b/Sources/SwiftJavaConfigurationShared/Configuration.swift index 7eab2fef6..ea5981f21 100644 --- a/Sources/SwiftJavaConfigurationShared/Configuration.swift +++ b/Sources/SwiftJavaConfigurationShared/Configuration.swift @@ -49,7 +49,10 @@ public struct Configuration: Codable { mode ?? .default } - public var writeEmptyFiles: Bool? // FIXME: default it to false, but that plays not nice with Codable + public var writeEmptyFiles: Bool? + public var effectiveWriteEmptyFiles: Bool { + writeEmptyFiles ?? false + } public var minimumInputAccessLevelMode: JExtractMinimumAccessLevelMode? public var effectiveMinimumInputAccessLevelMode: JExtractMinimumAccessLevelMode { diff --git a/Tests/JExtractSwiftTests/FFMNestedTypesTests.swift b/Tests/JExtractSwiftTests/FFMNestedTypesTests.swift index 4c5171c5b..1b23d2997 100644 --- a/Tests/JExtractSwiftTests/FFMNestedTypesTests.swift +++ b/Tests/JExtractSwiftTests/FFMNestedTypesTests.swift @@ -37,7 +37,7 @@ final class FFMNestedTypesTests { try st.analyze(path: "Fake.swift", text: class_interfaceFile) - let generator = FFMSwift2JavaGenerator( + let _ = FFMSwift2JavaGenerator( config: config, translator: st, javaPackage: "com.example.swift", @@ -45,10 +45,6 @@ final class FFMNestedTypesTests { javaOutputDirectory: "/fake" ) - guard let ty = st.importedTypes["MyNamespace.MyNestedStruct"] else { - fatalError("Didn't import nested type!") - } - + #expect(st.importedTypes["MyNamespace.MyNestedStruct"] != nil, "Didn't import nested type!") } - } diff --git a/Tests/JExtractSwiftTests/MethodImportTests.swift b/Tests/JExtractSwiftTests/MethodImportTests.swift index aa546f3d9..9d723c3fb 100644 --- a/Tests/JExtractSwiftTests/MethodImportTests.swift +++ b/Tests/JExtractSwiftTests/MethodImportTests.swift @@ -83,7 +83,7 @@ final class MethodImportTests { javaOutputDirectory: "/fake" ) - let funcDecl = st.importedGlobalFuncs.first { $0.name == "helloWorld" }! + let funcDecl = try #require(st.importedGlobalFuncs.first { $0.name == "helloWorld" }) let output = CodePrinter.toString { printer in generator.printJavaBindingWrapperMethod(&printer, funcDecl) @@ -117,9 +117,11 @@ final class MethodImportTests { try st.analyze(path: "Fake.swift", text: class_interfaceFile) - let funcDecl = st.importedGlobalFuncs.first { - $0.name == "globalTakeInt" - }! + let funcDecl = try #require( + st.importedGlobalFuncs.first { + $0.name == "globalTakeInt" + } + ) let generator = FFMSwift2JavaGenerator( config: config, @@ -164,9 +166,11 @@ final class MethodImportTests { try st.analyze(path: "Fake.swift", text: class_interfaceFile) - let funcDecl = st.importedGlobalFuncs.first { - $0.name == "globalTakeIntLongString" - }! + let funcDecl = try #require( + st.importedGlobalFuncs.first { + $0.name == "globalTakeIntLongString" + } + ) let generator = FFMSwift2JavaGenerator( config: config, @@ -208,9 +212,11 @@ final class MethodImportTests { try st.analyze(path: "Fake.swift", text: class_interfaceFile) - let funcDecl = st.importedGlobalFuncs.first { - $0.name == "globalReturnClass" - }! + let funcDecl = try #require( + st.importedGlobalFuncs.first { + $0.name == "globalReturnClass" + } + ) let generator = FFMSwift2JavaGenerator( config: config, @@ -252,9 +258,11 @@ final class MethodImportTests { try st.analyze(path: "Fake.swift", text: class_interfaceFile) - let funcDecl = st.importedGlobalFuncs.first { - $0.name == "swapRawBufferPointer" - }! + let funcDecl = try #require( + st.importedGlobalFuncs.first { + $0.name == "swapRawBufferPointer" + } + ) let generator = FFMSwift2JavaGenerator( config: config, @@ -299,9 +307,11 @@ final class MethodImportTests { try st.analyze(path: "Fake.swift", text: class_interfaceFile) - let funcDecl: ImportedFunc = st.importedTypes["MySwiftClass"]!.methods.first { - $0.name == "helloMemberFunction" - }! + let funcDecl: ImportedFunc = try #require( + st.importedTypes["MySwiftClass"]!.methods.first { + $0.name == "helloMemberFunction" + } + ) let generator = FFMSwift2JavaGenerator( config: config, @@ -342,9 +352,11 @@ final class MethodImportTests { try st.analyze(path: "Fake.swift", text: class_interfaceFile) - let funcDecl: ImportedFunc = st.importedTypes["MySwiftClass"]!.methods.first { - $0.name == "makeInt" - }! + let funcDecl: ImportedFunc = try #require( + st.importedTypes["MySwiftClass"]!.methods.first { + $0.name == "makeInt" + } + ) let generator = FFMSwift2JavaGenerator( config: config, @@ -391,9 +403,11 @@ final class MethodImportTests { try st.analyze(path: "Fake.swift", text: class_interfaceFile) - let initDecl: ImportedFunc = st.importedTypes["MySwiftClass"]!.initializers.first { - $0.name == "init" - }! + let initDecl: ImportedFunc = try #require( + st.importedTypes["MySwiftClass"]!.initializers.first { + $0.name == "init" + } + ) let generator = FFMSwift2JavaGenerator( config: config, @@ -444,9 +458,11 @@ final class MethodImportTests { try st.analyze(path: "Fake.swift", text: class_interfaceFile) - let initDecl: ImportedFunc = st.importedTypes["MySwiftStruct"]!.initializers.first { - $0.name == "init" - }! + let initDecl: ImportedFunc = try #require( + st.importedTypes["MySwiftStruct"]!.initializers.first { + $0.name == "init" + } + ) let generator = FFMSwift2JavaGenerator( config: config, diff --git a/Tests/SwiftJavaConfigurationSharedTests/SwiftJavaConfigurationTests.swift b/Tests/SwiftJavaConfigurationSharedTests/SwiftJavaConfigurationTests.swift index 4dbea421d..eb8c2dd4e 100644 --- a/Tests/SwiftJavaConfigurationSharedTests/SwiftJavaConfigurationTests.swift +++ b/Tests/SwiftJavaConfigurationSharedTests/SwiftJavaConfigurationTests.swift @@ -20,7 +20,7 @@ struct SwiftJavaConfigurationTests { @Test func parseJSONWithComments() throws { - let config = try readConfiguration( + let _ = try readConfiguration( string: """ // some comments