@@ -193,6 +193,15 @@ extension JavaTranslator {
193193 package func translateClass( _ javaClass: JavaClass < JavaObject > ) -> [ DeclSyntax ] {
194194 let fullName = javaClass. getCanonicalName ( )
195195 let swiftTypeName = try ! getSwiftTypeNameFromJavaClassName ( fullName)
196+ let ( swiftParentType, swiftInnermostTypeName) = swiftTypeName. splitSwiftTypeName ( )
197+
198+ // If the swift parent type has not been translated, don't try to translate this one
199+ if let swiftParentType,
200+ !translatedClasses. contains ( where: { _, value in value. swiftType == swiftParentType } )
201+ {
202+ logUntranslated ( " Unable to translate ' \( fullName) ' parent class: \( swiftParentType) not found " )
203+ return [ ]
204+ }
196205
197206 // Superclass.
198207 let extends : String
@@ -356,13 +365,12 @@ extension JavaTranslator {
356365 staticMemberWhereClause = " "
357366 }
358367
359- // Emit the struct declaration describing the java class.
360- let ( swiftParentType, swiftInnermostTypeName) = swiftTypeName. splitSwiftTypeName ( )
368+ // Emit the struct declaration describing the java class. Add backticks to the name since the type might interfere with Swift type names
361369 let classOrInterface : String = javaClass. isInterface ( ) ? " JavaInterface " : " JavaClass " ;
362370 var classDecl =
363371 """
364372 @ \( raw: classOrInterface) ( \( literal: fullName) \( raw: extends) \( raw: interfacesStr) )
365- public struct \( raw: swiftInnermostTypeName) \( raw: genericParameterClause) {
373+ public struct ` \( raw: swiftInnermostTypeName) ` \( raw: genericParameterClause) {
366374 \( raw: members. map { $0. description } . joined ( separator: " \n \n " ) )
367375 }
368376 """ as DeclSyntax
@@ -382,6 +390,7 @@ extension JavaTranslator {
382390 classDecl = classDecl. formatted ( using: format) . cast ( DeclSyntax . self)
383391
384392 topLevelDecls. append ( classDecl)
393+
385394 let subClassDecls = javaClass. getClasses ( ) . compactMap {
386395 $0. flatMap { clazz in
387396 return translateClass ( clazz)
@@ -391,7 +400,6 @@ extension JavaTranslator {
391400 topLevelDecls. append (
392401 contentsOf: subClassDecls
393402 )
394-
395403 // Translate static members.
396404 var staticMembers : [ DeclSyntax ] = [ ]
397405
0 commit comments