@@ -1001,7 +1001,6 @@ final class BackgroundIndexingTests: XCTestCase {
10011001 }
10021002
10031003 func testLibraryUsedByExecutableTargetAndPackagePlugin( ) async throws {
1004- try await SkipUnless . swiftpmStoresModulesInSubdirectory ( )
10051004 let project = try await SwiftPMTestProject (
10061005 files: [
10071006 " Lib/MyFile.swift " : """
@@ -1022,8 +1021,6 @@ final class BackgroundIndexingTests: XCTestCase {
10221021 """ ,
10231022 ] ,
10241023 manifest: """
1025- // swift-tools-version: 5.7
1026- import PackageDescription
10271024 let package = Package(
10281025 name: " MyLibrary " ,
10291026 targets: [
@@ -1049,4 +1046,51 @@ final class BackgroundIndexingTests: XCTestCase {
10491046 )
10501047 XCTAssertEqual ( definition, . locations( [ try project. location ( from: " 1️⃣ " , to: " 1️⃣ " , in: " MyFile.swift " ) ] ) )
10511048 }
1049+
1050+ func testCrossModuleFunctionalityEvenIfLowLevelModuleHasErrors( ) async throws {
1051+ try await SkipUnless . swiftPMSupportsExperimentalPrepareForIndexing ( )
1052+ var serverOptions = SourceKitLSPServer . Options. testDefault
1053+ serverOptions. experimentalFeatures. insert ( . swiftpmPrepareForIndexing)
1054+ let project = try await SwiftPMTestProject (
1055+ files: [
1056+ " LibA/LibA.swift " : """
1057+ public func test() -> Invalid {
1058+ return " "
1059+ }
1060+ """ ,
1061+ " LibB/LibB.swift " : """
1062+ import LibA
1063+
1064+ public func 1️⃣libBTest() -> Int {
1065+ return libATest()
1066+ }
1067+ """ ,
1068+ " MyExec/MyExec.swift " : """
1069+ import LibB
1070+
1071+ func test() -> Int {
1072+ return 2️⃣libBTest()
1073+ }
1074+ """ ,
1075+ ] ,
1076+ manifest: """
1077+ let package = Package(
1078+ name: " MyLibrary " ,
1079+ targets: [
1080+ .target(name: " LibA " ),
1081+ .target(name: " LibB " , dependencies: [ " LibA " ]),
1082+ .executableTarget(name: " MyExec " , dependencies: [ " LibB " ]),
1083+ ]
1084+ )
1085+ """ ,
1086+ serverOptions: serverOptions,
1087+ enableBackgroundIndexing: true
1088+ )
1089+
1090+ let ( uri, positions) = try project. openDocument ( " MyExec.swift " )
1091+ let response = try await project. testClient. send (
1092+ DefinitionRequest ( textDocument: TextDocumentIdentifier ( uri) , position: positions [ " 2️⃣ " ] )
1093+ )
1094+ XCTAssertEqual ( response, . locations( [ try project. location ( from: " 1️⃣ " , to: " 1️⃣ " , in: " LibB.swift " ) ] ) )
1095+ }
10521096}
0 commit comments