From 92a475db9d3cbed55bd82cbbe379b36e23ddcdfd Mon Sep 17 00:00:00 2001 From: Ian Leitch Date: Sun, 20 Nov 2022 12:12:00 +0100 Subject: [PATCH] Implement indexstore_unit_reader_get_target. --- Sources/SwiftIndexStore/LibIndexStore.swift | 1 + Sources/SwiftIndexStore/SwiftIndexStore.swift | 6 ++++++ Tests/SwiftIndexStoreTests/SwiftIndexStoreTests.swift | 7 +++++++ 3 files changed, 14 insertions(+) diff --git a/Sources/SwiftIndexStore/LibIndexStore.swift b/Sources/SwiftIndexStore/LibIndexStore.swift index 35c04d2..325b57c 100644 --- a/Sources/SwiftIndexStore/LibIndexStore.swift +++ b/Sources/SwiftIndexStore/LibIndexStore.swift @@ -41,6 +41,7 @@ public struct LibIndexStore { api.unit_reader_dispose = try requireSym(dylib, "indexstore_unit_reader_dispose") api.unit_reader_get_main_file = try requireSym(dylib, "indexstore_unit_reader_get_main_file") api.unit_reader_get_module_name = try requireSym(dylib, "indexstore_unit_reader_get_module_name") + api.unit_reader_get_target = try requireSym(dylib, "indexstore_unit_reader_get_target") api.unit_dependency_get_name = try requireSym(dylib, "indexstore_unit_dependency_get_name") api.unit_dependency_get_filepath = try requireSym(dylib, "indexstore_unit_dependency_get_filepath") api.unit_dependency_get_modulename = try requireSym(dylib, "indexstore_unit_dependency_get_modulename") diff --git a/Sources/SwiftIndexStore/SwiftIndexStore.swift b/Sources/SwiftIndexStore/SwiftIndexStore.swift index d59208b..61aa6d3 100644 --- a/Sources/SwiftIndexStore/SwiftIndexStore.swift +++ b/Sources/SwiftIndexStore/SwiftIndexStore.swift @@ -70,6 +70,12 @@ public final class IndexStore { return lib.unit_reader_get_module_name(reader).toSwiftString() } + public func target(for unit: IndexStoreUnit) throws -> String? { + let reader = try createUnitReader(for: unit) + defer { lib.unit_reader_dispose(reader) } + return lib.unit_reader_get_target(reader).toSwiftString() + } + // - MARK: ForEach Functions public func forEachUnits(includeSystem: Bool = true, _ next: (IndexStoreUnit) throws -> Bool) rethrows { diff --git a/Tests/SwiftIndexStoreTests/SwiftIndexStoreTests.swift b/Tests/SwiftIndexStoreTests/SwiftIndexStoreTests.swift index 5c76c91..600faa1 100644 --- a/Tests/SwiftIndexStoreTests/SwiftIndexStoreTests.swift +++ b/Tests/SwiftIndexStoreTests/SwiftIndexStoreTests.swift @@ -72,6 +72,13 @@ final class SwiftIndexStoreTests: XCTestCase { XCTAssertEqual(moduleName, "TestModule") } + func testUnitTarget() throws { + let units = indexStore.units() + let unit = try XCTUnwrap(units.first { $0.name?.contains("ViewController") ?? false }) + let moduleName = try XCTUnwrap(indexStore.target(for: unit)) + XCTAssertNotNil(moduleName) + } + func testDependency() throws { let unit = indexStore.units().first(where: { $0.name?.contains("ViewController") ?? false })! let dependencies = try indexStore.recordDependencies(for: unit)