Skip to content

Commit 4e697c7

Browse files
committed
[Dependency Scanning] Add string dispose API to libSwiftScan interface
1 parent b1872b7 commit 4e697c7

File tree

3 files changed

+13
-2
lines changed

3 files changed

+13
-2
lines changed

Sources/CSwiftScan/include/swiftscan_header.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -193,6 +193,8 @@ typedef struct {
193193

194194
//=== Cleanup Functions ---------------------------------------------------===//
195195
void
196+
(*swiftscan_string_dispose)(swiftscan_string_ref_t);
197+
void
196198
(*swiftscan_string_set_dispose)(swiftscan_string_set_t *);
197199
void
198200
(*swiftscan_dependency_graph_dispose)(swiftscan_dependency_graph_t);

Sources/SwiftDriver/Jobs/PrintTargetInfoJob.swift

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -185,7 +185,8 @@ extension Driver {
185185
if let swiftScanLibPath = optionalSwiftScanLibPath,
186186
fileSystem.exists(swiftScanLibPath) {
187187
let libSwiftScanInstance = try SwiftScan(dylib: swiftScanLibPath)
188-
if libSwiftScanInstance.canQueryTargetInfo() {
188+
if libSwiftScanInstance.canQueryTargetInfo(),
189+
libSwiftScanInstance.supportsStringDispose() {
189190
let targetInfoData = try libSwiftScanInstance.queryTargetInfoJSON(invocationCommand: invocationCommand)
190191
return try JSONDecoder().decode(FrontendTargetInfo.self, from: targetInfoData)
191192
}

Sources/SwiftDriver/SwiftScan/SwiftScan.swift

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,10 @@ internal extension swiftscan_diagnostic_severity_t {
271271
api.swiftscan_diagnostic_get_severity != nil &&
272272
api.swiftscan_diagnostics_set_dispose != nil
273273
}
274+
275+
@_spi(Testing) public func supportsStringDispose() -> Bool {
276+
return api.swiftscan_string_dispose != nil
277+
}
274278

275279
@_spi(Testing) public func queryScannerDiagnostics() throws -> [ScannerDiagnosticPayload] {
276280
var result: [ScannerDiagnosticPayload] = []
@@ -328,7 +332,9 @@ internal extension swiftscan_diagnostic_severity_t {
328332
Int32(invocationCommand.count),
329333
invocationStringArray)
330334
}
331-
let targetInfoString = try toSwiftString(api.swiftscan_compiler_target_info_query(invocation))
335+
let targetInfoStringRef = api.swiftscan_compiler_target_info_query(invocation)
336+
defer { api.swiftscan_string_dispose(targetInfoStringRef) }
337+
let targetInfoString = try toSwiftString(targetInfoStringRef)
332338
let targetInfoData = Data(targetInfoString.utf8)
333339
return targetInfoData
334340
}
@@ -395,6 +401,8 @@ private extension swiftscan_functions_t {
395401
try loadOptional("swiftscan_diagnostic_get_severity")
396402
self.swiftscan_diagnostics_set_dispose =
397403
try loadOptional("swiftscan_diagnostics_set_dispose")
404+
self.swiftscan_string_dispose =
405+
try loadOptional("swiftscan_string_dispose")
398406

399407
// isFramework on binary module dependencies
400408
self.swiftscan_swift_binary_detail_get_is_framework =

0 commit comments

Comments
 (0)