Files
sourcekit-lsp/Sources/LanguageServerProtocol/WorkspaceFolder.swift
Ben Langmuir 4880184603 [gardening] Move synthesized conformances to primary declaration
The style I started with (putting each conformance on its own extension)
turned out to be pointlessly verbose in practice. It also separated the
protocol from the "implentation" in the sense that the property
declarations are what determine how the conformance works.
2018-12-07 17:38:52 -08:00

38 lines
1.1 KiB
Swift

//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
/// Unique identifier for a document.
public struct WorkspaceFolder: ResponseType, Hashable {
/// A URL that uniquely identifies the workspace.
public var url: URL
/// The name of the workspace (default: basename of url).
public var name: String
public init(url: URL, name: String? = nil) {
self.url = url
self.name = name ?? url.lastPathComponent
if self.name.isEmpty {
self.name = "unknown_workspace"
}
}
}
// Encode using the key "uri" to match LSP.
extension WorkspaceFolder: Codable {
private enum CodingKeys: String, CodingKey {
case url = "uri"
case name
}
}