@@ -42,13 +42,21 @@ extension JNISwift2JavaGenerator {
4242 }
4343
4444 package func writeExportedJavaSources( _ printer: inout CodePrinter ) throws {
45- let importedTypes = analysis. importedTypes. sorted ( by: { ( lhs, rhs) in lhs. key < rhs. key } )
45+ let typesToExport : [ ( key: String , value: ImportedNominalType ) ]
46+ if let singleType = config. singleType {
47+ typesToExport = analysis. importedTypes
48+ . filter { $0. key == singleType }
49+ . sorted ( by: { $0. key < $1. key } )
50+ } else {
51+ typesToExport = analysis. importedTypes
52+ . sorted ( by: { $0. key < $1. key } )
53+ }
4654
4755 var exportedFileNames : OrderedSet < String > = [ ]
4856
4957 // Each parent type goes into its own file
5058 // any nested types are printed inside the body as `static class`
51- for (_, ty) in importedTypes . filter ( { _, type in type. parent == nil } ) {
59+ for (_, ty) in typesToExport . filter ( { _, type in type. parent == nil } ) {
5260 let filename = " \( ty. effectiveJavaSimpleName) .java "
5361 logger. debug ( " Printing contents: \( filename) " )
5462 printImportedNominal ( & printer, ty)
@@ -63,17 +71,20 @@ extension JNISwift2JavaGenerator {
6371 }
6472 }
6573
66- let filename = " \( self . swiftModuleName) .java "
67- logger. trace ( " Printing module class: \( filename) " )
68- printModule ( & printer)
74+ // Skip the module-level .swift file when generating for a single type
75+ if config. singleType == nil {
76+ let filename = " \( self . swiftModuleName) .java "
77+ logger. trace ( " Printing module class: \( filename) " )
78+ printModule ( & printer)
6979
70- if let outputFile = try printer. writeContents (
71- outputDirectory: javaOutputDirectory,
72- javaPackagePath: javaPackagePath,
73- filename: filename,
74- ) {
75- exportedFileNames. append ( outputFile. path ( percentEncoded: false ) )
76- logger. info ( " [swift-java] Generated: \( self . swiftModuleName) .java (at \( outputFile) ) " )
80+ if let outputFile = try printer. writeContents (
81+ outputDirectory: javaOutputDirectory,
82+ javaPackagePath: javaPackagePath,
83+ filename: filename,
84+ ) {
85+ exportedFileNames. append ( outputFile. path ( percentEncoded: false ) )
86+ logger. info ( " [swift-java] Generated: \( self . swiftModuleName) .java (at \( outputFile) ) " )
87+ }
7788 }
7889
7990 // Write java sources list file
0 commit comments