From bfdcccd9a330c8cfb4ccd8197305975fc6419890 Mon Sep 17 00:00:00 2001 From: Alex Hoppen Date: Fri, 6 Dec 2019 08:40:18 -0800 Subject: [PATCH] In HoverResponse Decode single MarkedString as [MarkedString] with one element --- Sources/LanguageServerProtocol/Hover.swift | 13 ++++--------- Tests/LanguageServerProtocolTests/CodingTests.swift | 10 +++++----- 2 files changed, 9 insertions(+), 14 deletions(-) diff --git a/Sources/LanguageServerProtocol/Hover.swift b/Sources/LanguageServerProtocol/Hover.swift index 4c94d7a4..d4f3f12f 100644 --- a/Sources/LanguageServerProtocol/Hover.swift +++ b/Sources/LanguageServerProtocol/Hover.swift @@ -56,7 +56,6 @@ public struct HoverResponse: ResponseType, Hashable { } public enum HoverResponseContents: Hashable { - case markedString(MarkedString) case markedStrings([MarkedString]) case markupContent(MarkupContent) } @@ -96,13 +95,11 @@ extension MarkedString: Codable { extension HoverResponseContents: Codable { public init(from decoder: Decoder) throws { if let value = try? MarkupContent(from: decoder) { - self = .markupContent(value) - } else if let value = try? MarkedString(from: decoder) { - self = .markedString(value) + self = .markupContent(value) } else if let value = try? [MarkedString](from: decoder) { - self = .markedStrings(value) - } else if let value = try? MarkupContent(from: decoder) { - self = .markupContent(value) + self = .markedStrings(value) + } else if let value = try? MarkedString(from: decoder) { + self = .markedStrings([value]) } else { let context = DecodingError.Context(codingPath: decoder.codingPath, debugDescription: "Expected MarkedString, [MarkedString], or MarkupContent") throw DecodingError.dataCorrupted(context) @@ -111,8 +108,6 @@ extension HoverResponseContents: Codable { public func encode(to encoder: Encoder) throws { switch self { - case .markedString(let value): - try value.encode(to: encoder) case .markedStrings(let value): try value.encode(to: encoder) case .markupContent(let value): diff --git a/Tests/LanguageServerProtocolTests/CodingTests.swift b/Tests/LanguageServerProtocolTests/CodingTests.swift index 29da66a9..555798a5 100644 --- a/Tests/LanguageServerProtocolTests/CodingTests.swift +++ b/Tests/LanguageServerProtocolTests/CodingTests.swift @@ -216,11 +216,11 @@ final class CodingTests: XCTestCase { } """) - checkCoding(HoverResponse(contents: .markedString(.markdown(value: "test")), range: nil), json: """ - { - "contents" : "test" - } - """) + checkDecoding(json: """ + { + "contents" : "test" + } + """, expected: HoverResponse(contents: .markedStrings([.markdown(value: "test")]), range: nil)) checkCoding(HoverResponse(contents: .markedStrings([.markdown(value: "test"), .codeBlock(language: "swift", value: "let foo = 2")]), range: nil), json: """ {