Remove dependency from SourceKitLSP on swift-docc-symbolkit

This way all dependencies on the `docc` libraries are wrapped inside the `DocCDocumentation` module.
This commit is contained in:
Alex Hoppen
2025-04-23 18:02:34 +02:00
parent bbbc93ea01
commit 024efc2fa1
3 changed files with 18 additions and 17 deletions

View File

@@ -509,7 +509,6 @@ var targets: [Target] = [
.product(name: "Crypto", package: "swift-crypto"),
.product(name: "Markdown", package: "swift-markdown"),
.product(name: "SwiftToolsSupport-auto", package: "swift-tools-support-core"),
.product(name: "SymbolKit", package: "swift-docc-symbolkit"),
]
+ swiftPMDependency([
.product(name: "SwiftPM-auto", package: "swift-package-manager")

View File

@@ -0,0 +1,17 @@
import Foundation
import SymbolKit
/// Generates a JSON string that represents an empty symbol graph for the given module name.
package func emptySymbolGraph(forModule moduleName: String) throws -> String? {
let symbolGraph = SymbolGraph(
metadata: SymbolGraph.Metadata(
formatVersion: SymbolGraph.SemanticVersion(major: 0, minor: 0, patch: 0),
generator: "SourceKit-LSP"
),
module: SymbolGraph.Module(name: moduleName, platform: SymbolGraph.Platform()),
symbols: [],
relationships: []
)
let data = try JSONEncoder().encode(symbolGraph)
return String(data: data, encoding: .utf8)
}

View File

@@ -19,7 +19,6 @@ package import LanguageServerProtocol
import Markdown
import SKUtilities
import SemanticIndex
import SymbolKit
extension DocumentationLanguageService {
package func doccDocumentation(_ req: DoccDocumentationRequest) async throws -> DoccDocumentationResponse {
@@ -107,23 +106,9 @@ extension DocumentationLanguageService {
// Create a dummy symbol graph and tell SwiftDocC to convert the module name.
// The version information isn't really all that important since we're creating
// what is essentially an empty symbol graph.
let emptySymbolGraph = String(
data: try JSONEncoder().encode(
SymbolGraph(
metadata: SymbolGraph.Metadata(
formatVersion: SymbolGraph.SemanticVersion(major: 0, minor: 0, patch: 0),
generator: "SourceKit-LSP"
),
module: SymbolGraph.Module(name: moduleName, platform: SymbolGraph.Platform()),
symbols: [],
relationships: []
)
),
encoding: .utf8
)
return try await documentationManager.renderDocCDocumentation(
symbolUSR: moduleName,
symbolGraph: emptySymbolGraph,
symbolGraph: emptySymbolGraph(forModule: moduleName),
markupFile: snapshot.text,
moduleName: moduleName,
catalogURL: catalogURL