//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2021 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
//
//===----------------------------------------------------------------------===//

@_spi(SourceKitLSP) package import LanguageServerProtocol

extension SemanticTokenTypes {
  // LSP doesn’t know about actors. Display actors as classes.
  package static var actor: Self { Self.class }

  /// Token types are looked up by index
  package var tokenType: UInt32 {
    UInt32(Self.all.firstIndex(of: self)!)
  }
}

extension SemanticTokensLegend {
  /// The semantic tokens legend that is used between SourceKit-LSP and the editor.
  package static let sourceKitLSPLegend = SemanticTokensLegend(
    tokenTypes: SemanticTokenTypes.all.map(\.name),
    tokenModifiers: SemanticTokenModifiers.all.compactMap(\.name)
  )
}
