Skip to content

Commit 2f246e4

Browse files
committed
Fix issues with nested classes
1 parent 720c2cf commit 2f246e4

File tree

3 files changed

+12
-16
lines changed

3 files changed

+12
-16
lines changed

Sources/Java2Swift/JavaToSwift.swift

Lines changed: 2 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -243,7 +243,7 @@ struct JavaToSwift: ParsableCommand {
243243
if (internalClass.getCanonicalName().contains(prefix)) {
244244
currentClassName = "\(prefix).\(swiftName)"
245245
} else {
246-
currentClassName = swiftName
246+
continue // If we have a class that is not a nested one, ignore it
247247
}
248248

249249
let currentSanitizedClassName = currentClassName.replacing("$", with: ".")
@@ -256,7 +256,7 @@ struct JavaToSwift: ParsableCommand {
256256
// Translate all of the Java classes into Swift classes.
257257
for javaClass in javaClasses {
258258
translator.startNewFile()
259-
let swiftClassDecls = translator.translateClass(javaClass)
259+
let swiftClassDecls = try! translator.translateClass(javaClass)
260260
let importDecls = translator.getImportDecls()
261261

262262
let swiftFileText = """
@@ -296,15 +296,6 @@ struct JavaToSwift: ParsableCommand {
296296
return (javaClassName, swiftName)
297297
}
298298

299-
/// Return the class path augmented with the Jar file, if there is one.
300-
var classPathWithJarFile: [String] {
301-
if jarFile {
302-
return [input] + classpath
303-
}
304-
305-
return classpath
306-
}
307-
308299
mutating func writeContents(_ contents: String, to filename: String, description: String) throws {
309300
guard let outputDir = actualOutputDirectory else {
310301
print("// \(filename) - \(description)")

Sources/Java2SwiftLib/JavaTranslator.swift

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -190,9 +190,9 @@ extension JavaTranslator {
190190
/// Translates the given Java class into the corresponding Swift type. This
191191
/// can produce multiple declarations, such as a separate extension of
192192
/// JavaClass to house static methods.
193-
package func translateClass(_ javaClass: JavaClass<JavaObject>) -> [DeclSyntax] {
193+
package func translateClass(_ javaClass: JavaClass<JavaObject>) throws -> [DeclSyntax] {
194194
let fullName = javaClass.getCanonicalName()
195-
let swiftTypeName = try! getSwiftTypeNameFromJavaClassName(fullName)
195+
let swiftTypeName = try getSwiftTypeNameFromJavaClassName(fullName)
196196
let (swiftParentType, swiftInnermostTypeName) = swiftTypeName.splitSwiftTypeName()
197197

198198
// If the swift parent type has not been translated, don't try to translate this one
@@ -393,7 +393,12 @@ extension JavaTranslator {
393393

394394
let subClassDecls = javaClass.getClasses().compactMap {
395395
$0.flatMap { clazz in
396-
return translateClass(clazz)
396+
do {
397+
return try translateClass(clazz)
398+
} catch {
399+
logUntranslated("Unable to translate '\(fullName)' subclass '\(clazz.getName())': \(error)")
400+
return nil
401+
}
397402
}
398403
}.flatMap(\.self)
399404

Tests/Java2SwiftTests/Java2SwiftTests.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -174,8 +174,8 @@ func assertTranslatedClass<JavaClassType: AnyJavaObject>(
174174

175175

176176
translator.startNewFile()
177-
let translatedDecls = translator.translateClass(
178-
try JavaClass<JavaObject>(
177+
let translatedDecls = try translator.translateClass(
178+
JavaClass<JavaObject>(
179179
javaThis: javaType.getJNIClass(in: environment),
180180
environment: environment)
181181
)

0 commit comments

Comments
 (0)