|
1 | 1 | namespace CSharpLanguageServer
|
2 | 2 |
|
| 3 | +open System.IO |
3 | 4 | open Microsoft.Extensions.Logging
|
| 5 | +open Ionide.LanguageServerProtocol |
| 6 | +open Ionide.LanguageServerProtocol.Server |
| 7 | +open Ionide.LanguageServerProtocol.Types |
| 8 | +open Ionide.LanguageServerProtocol.JsonRpc |
4 | 9 |
|
5 | 10 | open CSharpLanguageServer.Types
|
6 | 11 | open CSharpLanguageServer.Logging
|
| 12 | +open CSharpLanguageServer.RoslynHelpers |
7 | 13 |
|
8 | 14 | module Diagnostics =
|
9 | 15 | let private logger = Logging.getLoggerByName "Diagnostics"
|
10 | 16 |
|
11 |
| - let diagnoseSolution (settings: ServerSettings): int = |
12 |
| - logger.LogDebug("diagnoseSolution: loading solution, settings={settings}", settings.SolutionPath) |
| 17 | + type LspClientStub() = |
| 18 | + interface System.IDisposable with |
| 19 | + member _.Dispose() = () |
13 | 20 |
|
14 |
| - logger.LogError("diagnoseSolution: loading solution {sln}", settings.SolutionPath) |
| 21 | + interface ILspClient with |
| 22 | + member _.WindowShowMessage(p: ShowMessageParams) = async { logger.LogDebug("WindowShowMessage: {message}", p.Message); return () } |
| 23 | + member _.WindowLogMessage(p: LogMessageParams) = async { logger.LogDebug("WindowLogMessage: {message}", p.Message); return () } |
| 24 | + member _.TelemetryEvent(_: LSPAny) = async { return () } |
| 25 | + member _.TextDocumentPublishDiagnostics(_: PublishDiagnosticsParams) = async { return () } |
| 26 | + member _.LogTrace(_: LogTraceParams) = async { return () } |
| 27 | + member _.CancelRequest(_: CancelParams) = async { return () } |
| 28 | + member _.Progress(_: ProgressParams) = async { return () } |
| 29 | + member _.WorkspaceWorkspaceFolders() = async { return LspResult.Ok None } |
| 30 | + member _.WorkspaceConfiguration(_: ConfigurationParams) = async { return LspResult.Ok [||] } |
| 31 | + member _.WindowWorkDoneProgressCreate(_: WorkDoneProgressCreateParams) = async { return LspResult.Ok () } |
| 32 | + member _.WorkspaceSemanticTokensRefresh() = async { return LspResult.Ok () } |
| 33 | + member _.WindowShowDocument(_: ShowDocumentParams) = async { return LspResult.Ok { Success = false } } |
| 34 | + member _.WorkspaceInlineValueRefresh() = async { return LspResult.Ok () } |
| 35 | + member _.WorkspaceInlayHintRefresh() = async { return LspResult.Ok () } |
| 36 | + member _.WorkspaceDiagnosticRefresh() = async { return LspResult.Ok () } |
| 37 | + member _.ClientRegisterCapability(_: RegistrationParams) = async { return LspResult.Ok () } |
| 38 | + member _.ClientUnregisterCapability(_: UnregistrationParams) = async { return LspResult.Ok () } |
| 39 | + member _.WindowShowMessageRequest(_: ShowMessageRequestParams) = async { return LspResult.Ok None } |
| 40 | + member _.WorkspaceCodeLensRefresh() = async { return LspResult.Ok () } |
| 41 | + member _.WorkspaceApplyEdit(_: ApplyWorkspaceEditParams) = async { return LspResult.Ok { Applied = false; FailureReason = None; FailedChange = None } } |
| 42 | + |
| 43 | + let diagnoseSolution (settings: ServerSettings): Async<int> = async { |
| 44 | + logger.LogDebug("diagnoseSolution: settings={settings}", settings) |
| 45 | + |
| 46 | + logger.LogDebug("diagnoseSolution: loading solution..") |
| 47 | + |
| 48 | + let lspClient = LspClientStub() |
| 49 | + //let cwd = (string (Directory.GetCurrentDirectory()) |
| 50 | + let cwd = "/Users/bob/src/test-csharp-net8" |
| 51 | + let! sln = loadSolutionOnSolutionPathOrDir lspClient logger None cwd |
15 | 52 |
|
16 | 53 | let exitCode = 0
|
17 |
| - exitCode |
| 54 | + |
| 55 | + return exitCode |
| 56 | + } |
0 commit comments