@@ -1001,7 +1001,6 @@ final class BackgroundIndexingTests: XCTestCase {
1001
1001
}
1002
1002
1003
1003
func testLibraryUsedByExecutableTargetAndPackagePlugin( ) async throws {
1004
- try await SkipUnless . swiftpmStoresModulesInSubdirectory ( )
1005
1004
let project = try await SwiftPMTestProject (
1006
1005
files: [
1007
1006
" Lib/MyFile.swift " : """
@@ -1022,8 +1021,6 @@ final class BackgroundIndexingTests: XCTestCase {
1022
1021
""" ,
1023
1022
] ,
1024
1023
manifest: """
1025
- // swift-tools-version: 5.7
1026
- import PackageDescription
1027
1024
let package = Package(
1028
1025
name: " MyLibrary " ,
1029
1026
targets: [
@@ -1049,4 +1046,51 @@ final class BackgroundIndexingTests: XCTestCase {
1049
1046
)
1050
1047
XCTAssertEqual ( definition, . locations( [ try project. location ( from: " 1️⃣ " , to: " 1️⃣ " , in: " MyFile.swift " ) ] ) )
1051
1048
}
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
+ }
1052
1096
}
0 commit comments