File: ExperimentalFeatures.swift

package info (click to toggle)
swiftlang 6.2.3-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 2,856,264 kB
  • sloc: cpp: 9,995,718; ansic: 2,234,019; asm: 1,092,167; python: 313,940; objc: 82,726; f90: 80,126; lisp: 38,373; pascal: 25,580; sh: 20,378; ml: 5,058; perl: 4,751; makefile: 4,725; awk: 3,535; javascript: 3,018; xml: 918; fortran: 664; cs: 573; ruby: 396
file content (72 lines) | stat: -rw-r--r-- 2,536 bytes parent folder | download
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
72
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 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
//
//===----------------------------------------------------------------------===//

/// An experimental feature that can be enabled by passing `--experimental-feature`
/// to `sourcekit-lsp` on the command line or through the configuration file.
/// The raw value of this feature is how it is named on the command line and in the configuration file.
public enum ExperimentalFeature: String, Codable, Sendable, CaseIterable {
  /// Enable support for the `textDocument/onTypeFormatting` request.
  case onTypeFormatting = "on-type-formatting"

  /// Enable support for the `workspace/_setOptions` request.
  ///
  /// - Note: Internal option
  case setOptionsRequest = "set-options-request"

  /// Enable the `workspace/_sourceKitOptions` request.
  ///
  /// - Note: Internal option
  case sourceKitOptionsRequest = "sourcekit-options-request"

  /// Enable the `sourceKit/_isIndexing` request.
  ///
  /// - Note: Internal option
  case isIndexingRequest = "is-indexing-request"

  /// Indicate that the client can handle the experimental `structure` field in the `window/logMessage` notification.
  case structuredLogs = "structured-logs"

  /// Enable the `workspace/_outputPaths` request.
  ///
  /// - Note: Internal option
  case outputPathsRequest = "output-paths-request"

  /// Enable the `buildServerUpdates` option in the `workspace/synchronize` request.
  ///
  /// - Note: Internal option, for testing only
  case synchronizeForBuildSystemUpdates = "synchronize-for-build-system-updates"

  /// All non-internal experimental features.
  public static var allNonInternalCases: [ExperimentalFeature] {
    allCases.filter { !$0.isInternal }
  }

  /// Whether the feature is internal.
  var isInternal: Bool {
    switch self {
    case .onTypeFormatting:
      return false
    case .setOptionsRequest:
      return true
    case .sourceKitOptionsRequest:
      return true
    case .isIndexingRequest:
      return true
    case .structuredLogs:
      return false
    case .outputPathsRequest:
      return true
    case .synchronizeForBuildSystemUpdates:
      return true
    }
  }
}