@@ -123,7 +123,8 @@ private extension SwiftScan {
123123 guard let moduleDetailsRef = api. swiftscan_module_info_get_details ( moduleInfoRef) else {
124124 throw DependencyScanningError . missingField ( " modules[ \( moduleId) ].details " )
125125 }
126- let details = try constructModuleDetails ( from: moduleDetailsRef)
126+ let details = try constructModuleDetails ( from: moduleDetailsRef,
127+ moduleAliases: moduleAliases)
127128
128129 return ( moduleId, ModuleInfo ( modulePath: modulePath, sourceFiles: sourceFiles,
129130 directDependencies: directDependencies,
@@ -133,12 +134,14 @@ private extension SwiftScan {
133134 /// From a reference to a binary-format module info details object info returned by libSwiftScan,
134135 /// construct an instance of an `ModuleInfo`.Details as used by the driver.
135136 /// The object returned by libSwiftScan is a union so ensure to execute dependency-specific queries.
136- func constructModuleDetails( from moduleDetailsRef: swiftscan_module_details_t )
137+ func constructModuleDetails( from moduleDetailsRef: swiftscan_module_details_t ,
138+ moduleAliases: [ String : String ] ? )
137139 throws -> ModuleInfo . Details {
138140 let moduleKind = api. swiftscan_module_detail_get_kind ( moduleDetailsRef)
139141 switch moduleKind {
140142 case SWIFTSCAN_DEPENDENCY_INFO_SWIFT_TEXTUAL:
141- return . swift( try constructSwiftTextualModuleDetails ( from: moduleDetailsRef) )
143+ return . swift( try constructSwiftTextualModuleDetails ( from: moduleDetailsRef,
144+ moduleAliases: moduleAliases) )
142145 case SWIFTSCAN_DEPENDENCY_INFO_SWIFT_BINARY:
143146 return . swiftPrebuiltExternal( try constructSwiftBinaryModuleDetails ( from: moduleDetailsRef) )
144147 case SWIFTSCAN_DEPENDENCY_INFO_SWIFT_PLACEHOLDER:
@@ -151,7 +154,8 @@ private extension SwiftScan {
151154 }
152155
153156 /// Construct a `SwiftModuleDetails` from a `swiftscan_module_details_t` reference
154- func constructSwiftTextualModuleDetails( from moduleDetailsRef: swiftscan_module_details_t )
157+ func constructSwiftTextualModuleDetails( from moduleDetailsRef: swiftscan_module_details_t ,
158+ moduleAliases: [ String : String ] ? )
155159 throws -> SwiftModuleDetails {
156160 let moduleInterfacePath =
157161 try getOptionalPathDetail ( from: moduleDetailsRef,
@@ -168,6 +172,15 @@ private extension SwiftScan {
168172 let bridgingHeaderDependencies =
169173 try getOptionalStringArrayDetail ( from: moduleDetailsRef,
170174 using: api. swiftscan_swift_textual_detail_get_bridging_module_dependencies)
175+ let bridgingHeader : BridgingHeader ?
176+ if let resolvedBridgingHeaderPath = bridgingHeaderPath {
177+ bridgingHeader = BridgingHeader ( path: resolvedBridgingHeaderPath,
178+ sourceFiles: bridgingSourceFiles ?? [ ] ,
179+ moduleDependencies: bridgingHeaderDependencies ?? [ ] )
180+ } else {
181+ bridgingHeader = nil
182+ }
183+
171184 let commandLine =
172185 try getOptionalStringArrayDetail ( from: moduleDetailsRef,
173186 using: api. swiftscan_swift_textual_detail_get_command_line)
@@ -180,15 +193,25 @@ private extension SwiftScan {
180193 using: api. swiftscan_swift_textual_detail_get_context_hash)
181194 let isFramework = api. swiftscan_swift_textual_detail_get_is_framework ( moduleDetailsRef)
182195
196+ // Decode all dependencies of this module
197+ let swiftOverlayDependencies : [ ModuleDependencyId ] ?
198+ if supportsSeparateSwiftOverlayDependencies ( ) ,
199+ let encodedOverlayDepsRef = api. swiftscan_swift_textual_detail_get_swift_overlay_dependencies ( moduleDetailsRef) {
200+ let encodedOverlayDependencies = try toSwiftStringArray ( encodedOverlayDepsRef. pointee)
201+ swiftOverlayDependencies =
202+ try encodedOverlayDependencies. map { try decodeModuleNameAndKind ( from: $0, moduleAliases: moduleAliases) }
203+ } else {
204+ swiftOverlayDependencies = nil
205+ }
206+
183207 return SwiftModuleDetails ( moduleInterfacePath: moduleInterfacePath,
184208 compiledModuleCandidates: compiledModuleCandidates,
185- bridgingHeaderPath: bridgingHeaderPath,
186- bridgingSourceFiles: bridgingSourceFiles,
187- bridgingHeaderDependencies: bridgingHeaderDependencies? . map { . clang( $0) } ,
209+ bridgingHeader: bridgingHeader,
188210 commandLine: commandLine,
189211 contextHash: contextHash,
190212 extraPcmArgs: extraPcmArgs,
191- isFramework: isFramework)
213+ isFramework: isFramework,
214+ swiftOverlayDependencies: swiftOverlayDependencies)
192215 }
193216
194217 /// Construct a `SwiftPrebuiltExternalModuleDetails` from a `swiftscan_module_details_t` reference
0 commit comments