Skip to content

Commit 968a580

Browse files
committed
Work around issues with Java classes named "Type" by renaming them "JavaType"
This is deeply unfortunate, but we need compile-side fixes for nested types named "Type" to work.
1 parent 60457bf commit 968a580

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

Sources/Java2Swift/JavaToSwift.swift

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -249,6 +249,8 @@ struct JavaToSwift: ParsableCommand {
249249
// Record this as a translated class.
250250
let swiftUnqualifiedName = javaClassName.javaClassNameToCanonicalName
251251
.defaultSwiftNameForJavaClass
252+
253+
252254
let swiftName = "\(currentSwiftName).\(swiftUnqualifiedName)"
253255
translator.translatedClasses[javaClassName] = (swiftName, nil, true)
254256
return nestedClass
@@ -390,10 +392,10 @@ extension String {
390392
fileprivate var defaultSwiftNameForJavaClass: String {
391393
if let dotLoc = lastIndex(of: ".") {
392394
let afterDot = index(after: dotLoc)
393-
return String(self[afterDot...]).javaClassNameToCanonicalName
395+
return String(self[afterDot...]).javaClassNameToCanonicalName.adjustedSwiftTypeName
394396
}
395397

396-
return javaClassNameToCanonicalName
398+
return javaClassNameToCanonicalName.adjustedSwiftTypeName
397399
}
398400
}
399401

@@ -425,4 +427,12 @@ extension String {
425427

426428
return false
427429
}
430+
431+
/// Adjust type name for "bad" type names that don't work well in Swift.
432+
fileprivate var adjustedSwiftTypeName: String {
433+
switch self {
434+
case "Type": return "JavaType"
435+
default: return self
436+
}
437+
}
428438
}

0 commit comments

Comments
 (0)