at main 1.2 kB view raw
1// SPDX-FileCopyrightText: 2025 The Project Pterodactyl Developers 2// 3// SPDX-License-Identifier: MPL-2.0 4 5import LanguageServerProtocol 6 7public struct Diagnostic: Equatable, Codable, Sendable { 8 public typealias Severity = LanguageServerProtocol.DiagnosticSeverity 9 10 public let message: String 11 public let severity: Severity 12 public let absoluteUtf16Range: Range<Int> 13 14 init(message: String, severity: Severity, absoluteRange: Range<Int>) { 15 self.message = message 16 self.severity = severity 17 self.absoluteUtf16Range = absoluteRange 18 } 19 20 init(message: String, absoluteRange: Range<Int>) { 21 self.init(message: message, severity: Severity.error, absoluteRange: absoluteRange) 22 } 23 24 func lspRange(lineMap: LineMap) -> LanguageServerProtocol.LSPRange { 25 let start = lineMap.location(at: absoluteUtf16Range.lowerBound) 26 let end = lineMap.location(at: absoluteUtf16Range.upperBound) 27 return LSPRange( 28 start: Position(line: start.line, character: start.column), 29 end: Position(line: end.line, character: end.column) 30 ) 31 } 32 33 public func lspDiagnostic(lineMap: LineMap) -> LanguageServerProtocol.Diagnostic { 34 LanguageServerProtocol.Diagnostic( 35 range: lspRange(lineMap: lineMap), 36 severity: severity, 37 message: message 38 ) 39 } 40}