Skip to content

Commit 647d993

Browse files
committed
Correctly support $
1 parent 2a37c20 commit 647d993

File tree

2 files changed

+11
-19
lines changed

2 files changed

+11
-19
lines changed

Sources/Java2Swift/JavaToSwift.swift

Lines changed: 6 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -229,25 +229,17 @@ struct JavaToSwift: ParsableCommand {
229229
// Note that we will be translating this Java class, so it is a known class.
230230
translator.translatedClasses[javaClassName] = (translatedSwiftName, nil, true)
231231

232-
var classes: [(classToImport: JavaClass<JavaObject>?, prefix: String)] = javaClass.getClasses().map { ($0, translatedSwiftName) }
232+
var classes: [JavaClass<JavaObject>?] = javaClass.getClasses()
233233

234234
// Go through all subclasses to find all of the classes to translate
235-
while let (internalClass, prefix) = classes.popLast() {
235+
while let internalClass = classes.popLast() {
236236
if let internalClass {
237-
let (javaName, swiftName) = names(from: internalClass.getCanonicalName())
237+
let (javaName, swiftName) = names(from: internalClass.getName())
238238
// If we have already been through this class, don't go through it again
239239
guard translator.translatedClasses[javaName] == nil else { continue }
240-
let currentClassName: String
241-
// If the prefix is the part of the canonical name, continue (else use the same)
242-
// This is needed since `java.lang.Enum.EnumDesc` is one of the declared classes of all of the enums
243-
if (internalClass.getCanonicalName().contains(prefix)) {
244-
currentClassName = "\(prefix).\(swiftName)"
245-
} else {
246-
continue // If we have a class that is not a nested one, ignore it
247-
}
248-
240+
let currentClassName = swiftName
249241
let currentSanitizedClassName = currentClassName.replacing("$", with: ".")
250-
classes.append(contentsOf: internalClass.getClasses().map { ($0, currentSanitizedClassName) })
242+
classes.append(contentsOf: internalClass.getClasses())
251243
translator.translatedClasses[javaName] = (currentSanitizedClassName, nil, true)
252244
}
253245
}
@@ -270,7 +262,7 @@ struct JavaToSwift: ParsableCommand {
270262
try writeContents(
271263
swiftFileText,
272264
to: swiftFileName,
273-
description: "Java class '\(javaClass.getCanonicalName())' translation"
265+
description: "Java class '\(javaClass.getName())' translation"
274266
)
275267
}
276268
}

Sources/Java2SwiftLib/JavaTranslator.swift

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -191,7 +191,7 @@ extension JavaTranslator {
191191
/// can produce multiple declarations, such as a separate extension of
192192
/// JavaClass to house static methods.
193193
package func translateClass(_ javaClass: JavaClass<JavaObject>) throws -> [DeclSyntax] {
194-
let fullName = javaClass.getCanonicalName()
194+
let fullName = javaClass.getName()
195195
let swiftTypeName = try getSwiftTypeNameFromJavaClassName(fullName)
196196
let (swiftParentType, swiftInnermostTypeName) = swiftTypeName.splitSwiftTypeName()
197197

@@ -207,7 +207,7 @@ extension JavaTranslator {
207207
let extends: String
208208
if !javaClass.isInterface(),
209209
let superclass = javaClass.getSuperclass(),
210-
superclass.getCanonicalName() != "java.lang.Object"
210+
superclass.getName() != "java.lang.Object"
211211
{
212212
do {
213213
extends = ", extends: \(try getSwiftTypeName(superclass).swiftName).self"
@@ -287,7 +287,7 @@ extension JavaTranslator {
287287
do {
288288
let implementedInSwift = constructor.isNative &&
289289
constructor.getDeclaringClass()!.equals(javaClass.as(JavaObject.self)!) &&
290-
swiftNativeImplementations.contains(javaClass.getCanonicalName())
290+
swiftNativeImplementations.contains(javaClass.getName())
291291

292292
let translated = try translateConstructor(
293293
constructor,
@@ -321,7 +321,7 @@ extension JavaTranslator {
321321

322322
let implementedInSwift = method.isNative &&
323323
method.getDeclaringClass()!.equals(javaClass.as(JavaObject.self)!) &&
324-
swiftNativeImplementations.contains(javaClass.getCanonicalName())
324+
swiftNativeImplementations.contains(javaClass.getName())
325325

326326
// Translate the method if we can.
327327
do {
@@ -460,7 +460,7 @@ extension JavaTranslator {
460460
// Members that are native and will instead go into a NativeMethods
461461
// protocol.
462462
var nativeMembers: [DeclSyntax] = []
463-
if swiftNativeImplementations.contains(javaClass.getCanonicalName()) {
463+
if swiftNativeImplementations.contains(javaClass.getName()) {
464464
nativeMembers.append(
465465
contentsOf: javaClass.getDeclaredMethods().compactMap {
466466
$0.flatMap { method in

0 commit comments

Comments
 (0)