1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2024 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
//
//===----------------------------------------------------------------------===//
import Foundation
package enum ModuleProximity: Equatable {
/// Example: Distance 0 is this module. if you have only "import AppKit", AppKit would be 1, Foundation and
/// CoreGraphics would be 2.
case imported(distance: Int)
/// Example: Referencing NSDocument (AppKit) from a tool only using Foundation. An import to (AppKit) would have to
/// be added.
case importable
/// Example: Keywords
case inapplicable
// Completion provider doesn't understand modules
case unknown
/// Example: Circular dependency, wrong platform
case invalid
/// Example: Provider was written before this enum existed, and didn't have an opportunity to provide a value
case unspecified
package static let same = ModuleProximity.imported(distance: 0)
}
extension ModuleProximity: BinaryCodable {
package init(_ decoder: inout BinaryDecoder) throws {
self = try decoder.decodeEnumByte { decoder, n in
switch n {
case 0: return .imported(distance: try Int(&decoder))
case 1: return .importable
case 2: return .inapplicable
case 3: return .unknown
case 4: return .invalid
case 5: return .unspecified
default: return nil
}
}
}
package func encode(_ encoder: inout BinaryEncoder) {
switch self {
case .imported(let distance):
encoder.writeByte(0)
encoder.write(distance)
case .importable:
encoder.writeByte(1)
case .inapplicable:
encoder.writeByte(2)
case .unknown:
encoder.writeByte(3)
case .invalid:
encoder.writeByte(4)
case .unspecified:
encoder.writeByte(5)
}
}
}
|