@@ -22,22 +22,33 @@ struct GeneratedInterfaceInfo {
2222
2323extension SwiftLanguageService {
2424 public func openGeneratedInterface(
25- _ request: OpenGeneratedInterfaceRequest
25+ textDocument: TextDocumentIdentifier ,
26+ moduleName: String ,
27+ groupName: String ? ,
28+ symbolUSR symbol: String ?
2629 ) async throws -> GeneratedInterfaceDetails ? {
27- let name = request. name
28- let symbol = request. symbolUSR
30+ // Name of interface module name with group names appended
31+ let name = if let groupName {
32+ " \( moduleName) . \( groupName. replacing ( " / " , with: " . " ) ) "
33+ } else {
34+ moduleName
35+ }
2936 let interfaceFilePath = self . generatedInterfacesPath. appendingPathComponent ( " \( name) .swiftinterface " )
3037 let interfaceDocURI = DocumentURI ( interfaceFilePath)
3138 // has interface already been generated
3239 if let snapshot = try ? self . documentManager. latestSnapshot ( interfaceDocURI) {
3340 return await self . generatedInterfaceDetails (
34- request: request,
3541 uri: interfaceDocURI,
3642 snapshot: snapshot,
3743 symbol: symbol
3844 )
3945 } else {
40- let interfaceInfo = try await self . generatedInterfaceInfo ( request: request, interfaceURI: interfaceDocURI)
46+ let interfaceInfo = try await self . generatedInterfaceInfo (
47+ textDocument: textDocument,
48+ moduleName: moduleName,
49+ groupName: groupName,
50+ interfaceURI: interfaceDocURI
51+ )
4152 try interfaceInfo. contents. write ( to: interfaceFilePath, atomically: true , encoding: String . Encoding. utf8)
4253 let snapshot = DocumentSnapshot (
4354 uri: interfaceDocURI,
@@ -46,7 +57,6 @@ extension SwiftLanguageService {
4657 lineTable: LineTable ( interfaceInfo. contents)
4758 )
4859 let result = await self . generatedInterfaceDetails (
49- request: request,
5060 uri: interfaceDocURI,
5161 snapshot: snapshot,
5262 symbol: symbol
@@ -67,25 +77,26 @@ extension SwiftLanguageService {
6777 /// - Important: This opens a document with name `interfaceURI.pseudoPath` in sourcekitd. The caller is responsible
6878 /// for ensuring that the document will eventually get closed in sourcekitd again.
6979 private func generatedInterfaceInfo(
70- request: OpenGeneratedInterfaceRequest ,
80+ textDocument: TextDocumentIdentifier ,
81+ moduleName: String ,
82+ groupName: String ? ,
7183 interfaceURI: DocumentURI
7284 ) async throws -> GeneratedInterfaceInfo {
7385 let keys = self . keys
7486 let skreq = sourcekitd. dictionary ( [
7587 keys. request: requests. editorOpenInterface,
76- keys. moduleName: request . moduleName,
77- keys. groupName: request . groupName,
88+ keys. moduleName: moduleName,
89+ keys. groupName: groupName,
7890 keys. name: interfaceURI. pseudoPath,
7991 keys. synthesizedExtension: 1 ,
80- keys. compilerArgs: await self . buildSettings ( for: request . textDocument. uri) ? . compilerArgs as [ SKDRequestValue ] ? ,
92+ keys. compilerArgs: await self . buildSettings ( for: textDocument. uri) ? . compilerArgs as [ SKDRequestValue ] ? ,
8193 ] )
8294
8395 let dict = try await self . sourcekitd. send ( skreq, fileContents: nil )
8496 return GeneratedInterfaceInfo ( contents: dict [ keys. sourceText] ?? " " )
8597 }
8698
8799 private func generatedInterfaceDetails(
88- request: OpenGeneratedInterfaceRequest ,
89100 uri: DocumentURI ,
90101 snapshot: DocumentSnapshot ,
91102 symbol: String ?
0 commit comments